Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
8522061
feat(bot): add rule engine with schedule and interactive buttons
dgrieser Jun 24, 2026
30f871c
feat(bot): honor action/buttons in schedule_reply and limit threading
dgrieser Jun 24, 2026
0803afc
feat(bot): add typed button actions, default button and escalation ha…
dgrieser Jun 24, 2026
346e034
feat(opsgenie): enable OpsGenie message template and make OpsGenie a …
dgrieser Jun 24, 2026
b40415b
feat(news): add schedule and button details to news message
dgrieser Jun 24, 2026
ba1f338
feat(ui): add web configuration UI for rule management
dgrieser Jun 24, 2026
b0cdfcb
Complete refactor
dgrieser Jun 25, 2026
6cf19de
feat(ui): add allowedIngress UI config, strict email auth, button fixes
dgrieser Jun 25, 2026
2cfc45f
chore(ignore): add .env-dev to gitignore
dgrieser Aug 7, 2026
01d4e0f
feat(helmfile): add dev environment for independent instance
dgrieser Aug 7, 2026
d10f109
fix(helm): enforce pinned image tags and update chart version
dgrieser Aug 7, 2026
6f88347
feat(deploy): add deployment scripts for dev and prod environments
dgrieser Aug 7, 2026
5155135
feat(helm): support configurable slash commands per instance
dgrieser Aug 7, 2026
747bd10
feat(instances): support per-instance bot naming for dev/prod separation
dgrieser Aug 7, 2026
a98ce67
feat(assets): add hutbot icon assets
dgrieser Aug 7, 2026
1b73401
feat(assets): add large background image for hutbot development
dgrieser Aug 10, 2026
bb2812e
docs: add Hutbot_DEV Slack app link and clarify dev setup
dgrieser Aug 10, 2026
0fd2fd7
fix(hutbot): enforce pinned image tags and improve button concurrency
dgrieser Aug 11, 2026
3c664bb
feat(persistence): support nested configs with new default field names
dgrieser Aug 11, 2026
76efc56
feat(routing): handle bot channel membership changes
dgrieser Aug 11, 2026
782bac7
feat(bot): improve config display and timezone-aware scheduling
dgrieser Aug 11, 2026
609b070
feat(helm): add instance-wide timezone and locale defaults
dgrieser Aug 11, 2026
911976f
fix(info): improve action description labels and null formatting
dgrieser Aug 11, 2026
87acf9e
fix(dispatch): handle invalid wait-time input and improve error handling
dgrieser Aug 11, 2026
40be80e
feat(hutbot): add 'all day' work hours and group help commands
dgrieser Aug 11, 2026
4a815bb
feat(scheduling): preserve original wait time in scheduled replies
dgrieser Aug 11, 2026
c9e629b
feat(k8s): expose running version in help and news messages
dgrieser Aug 11, 2026
2a414cb
feat(slack): add date/time template variables and bot handle resolution
dgrieser Aug 12, 2026
7bcdb88
fix(messaging): split long Slack messages to avoid code fence truncation
dgrieser Aug 12, 2026
2ea26ab
feat(commands): unify action and target into single command
dgrieser Aug 12, 2026
fd07003
feat(scheduling): unify schedule timezone with date/time setting
dgrieser Aug 12, 2026
1328457
feat(scheduling): merge cron expression into trigger configuration
dgrieser Aug 12, 2026
1ad224f
feat(commands): add clear command for pattern and opsgenie-message
dgrieser Aug 13, 2026
77aded1
fix(commands): allow optional 'set' keyword for setter commands
dgrieser Aug 13, 2026
92aa49f
refactor(buttons): unify button timeout and default into escalation s…
dgrieser Aug 13, 2026
ead3347
feat(config): replace `set escalation none` with `clear escalation`
dgrieser Aug 13, 2026
d973ede
fix(commands): require escalation for delay buttons
dgrieser Aug 13, 2026
6420d68
fix(routing): correctly identify app bot users as bots
dgrieser Aug 14, 2026
21cddef
feat(commands): refine work hours and config display
dgrieser Aug 14, 2026
a73568a
fix(buttons): remove message action, unify with ack, and add post-pre…
dgrieser Aug 14, 2026
956b8b1
style(buttons): update button note formatting and emojis
dgrieser Aug 15, 2026
3b8e74e
fix(buttons): update button note format and separator
dgrieser Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 39 additions & 3 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,37 @@ on:
- main
tags:
- 'v*.*.*'
pull_request:

permissions:
contents: read
packages: write

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install dependencies
run: pip install --no-cache-dir -r requirements-dev.txt

- name: Import smoke test (catch circular imports)
run: python -c "import hutbot, hutbot.state, hutbot.actions, hutbot.buttons, hutbot.scheduling, hutbot.routing, hutbot.commands.dispatch, hutbot.webui_backend"

- name: Run tests
run: python -m pytest

build-and-push:
needs: test
if: github.event_name == 'push'
runs-on: ubuntu-latest

steps:
Expand All @@ -29,11 +53,23 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# Tag pushes (v*.*.*) publish immutable release tags only, so deployments can
# pin an exact version. Pushes to main additionally move the `main`/`latest`
# floating tags, which are for convenience only and must not be deployed.
- name: Compute image tags
id: tags
run: |
image=ghcr.io/mittwald/hutbot
if [ "$GITHUB_REF_TYPE" = "tag" ]; then
tags="$image:$GITHUB_REF_NAME,$image:${GITHUB_REF_NAME#v}"
else
tags="$image:$GITHUB_REF_NAME,$image:latest"
fi
echo "tags=$tags" >> "$GITHUB_OUTPUT"

- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: |
ghcr.io/mittwald/hutbot:latest
ghcr.io/mittwald/hutbot:${{ github.ref_name }}
tags: ${{ steps.tags.outputs.tags }}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ employees.json
.env
.codex
scheduled_replies.json
button_states.json
.env-dev
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ RUN pip install --no-cache-dir -r requirements.txt

COPY . .

ENTRYPOINT ["python", "bot.py"]
EXPOSE 8080

ENTRYPOINT ["python", "-m", "hutbot"]
382 changes: 375 additions & 7 deletions README.md

Large diffs are not rendered by default.

Binary file added assets/hutbot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hutbot.xcf
Binary file not shown.
Binary file added assets/hutbot_dev_large_bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hutbot_large.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hutbot_large_bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hutbot_medium.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading