heinzel 0.7.14__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- heinzel/CHANGELOG.md +386 -0
- heinzel/__init__.py +346 -0
- heinzel/__main__.py +6 -0
- heinzel/heads/__init__.py +5 -0
- heinzel/heads/_exposure.py +25 -0
- heinzel/heads/_presence.py +31 -0
- heinzel/heads/_stream.py +98 -0
- heinzel/heads/api/__init__.py +387 -0
- heinzel/heads/api/_auth.py +97 -0
- heinzel/heads/cli/__init__.py +443 -0
- heinzel/heads/cli/_art_data.py +71 -0
- heinzel/heads/cli/_branding.py +24 -0
- heinzel/heads/cli/_chat.py +233 -0
- heinzel/heads/cli/_command.py +204 -0
- heinzel/heads/cli/_join.py +258 -0
- heinzel/heads/cli/_journey.py +127 -0
- heinzel/heads/cli/_playful.py +102 -0
- heinzel/heads/cli/_progress.py +70 -0
- heinzel/heads/cli/_render.py +110 -0
- heinzel/heads/cli/_serve.py +239 -0
- heinzel/heads/cli/_setup.py +603 -0
- heinzel/heads/cli/_update.py +104 -0
- heinzel/heads/daemon/__init__.py +55 -0
- heinzel/heads/mcp/__init__.py +193 -0
- heinzel/heads/mcp/_skills.py +59 -0
- heinzel/heads/web/__init__.py +527 -0
- heinzel/heads/web/_devices.py +147 -0
- heinzel/heads/web/_lifecycle.py +276 -0
- heinzel/heads/web/_pairing.py +39 -0
- heinzel/heads/web/_ports.py +51 -0
- heinzel/heads/web/_shutdown.py +152 -0
- heinzel/heads/web/_stream.py +103 -0
- heinzel/heads/web/_terminal.py +326 -0
- heinzel/heads/web/_updates.py +132 -0
- heinzel/heads/web/static/.source-sha256 +1 -0
- heinzel/heads/web/static/assets/elk.bundled-DrVNm0j8.js +24 -0
- heinzel/heads/web/static/assets/index-WPlg-AWd.js +65 -0
- heinzel/heads/web/static/assets/index-oRMWxQ0X.css +1 -0
- heinzel/heads/web/static/favicon.ico +0 -0
- heinzel/heads/web/static/favicon.svg +40 -0
- heinzel/heads/web/static/icons/apple-touch-icon.png +0 -0
- heinzel/heads/web/static/icons/icon-192.png +0 -0
- heinzel/heads/web/static/icons/icon-512.png +0 -0
- heinzel/heads/web/static/icons/maskable-512.png +0 -0
- heinzel/heads/web/static/index.html +91 -0
- heinzel/heads/web/static/licenses.md +2843 -0
- heinzel/heads/web/static/loading-dance.svg +171 -0
- heinzel/heads/web/static/manifest.webmanifest +31 -0
- heinzel/heads/web/static/sw.js +95 -0
- heinzel/kernel/AGENTS.md +71 -0
- heinzel/kernel/CLAUDE.md +1 -0
- heinzel/kernel/__init__.py +535 -0
- heinzel/kernel/_agents.py +126 -0
- heinzel/kernel/_ai.py +161 -0
- heinzel/kernel/_bindings.py +703 -0
- heinzel/kernel/_boot.py +14 -0
- heinzel/kernel/_capabilities.py +250 -0
- heinzel/kernel/_chat.py +48 -0
- heinzel/kernel/_config.py +318 -0
- heinzel/kernel/_contributions.py +668 -0
- heinzel/kernel/_credentials.py +215 -0
- heinzel/kernel/_directory.py +140 -0
- heinzel/kernel/_discovery.py +106 -0
- heinzel/kernel/_duration.py +85 -0
- heinzel/kernel/_errors.py +9 -0
- heinzel/kernel/_exposure.py +93 -0
- heinzel/kernel/_git.py +245 -0
- heinzel/kernel/_identity.py +204 -0
- heinzel/kernel/_installation.py +282 -0
- heinzel/kernel/_jobs.py +25 -0
- heinzel/kernel/_kernel.py +617 -0
- heinzel/kernel/_layers.py +520 -0
- heinzel/kernel/_lets.py +400 -0
- heinzel/kernel/_local_web.py +16 -0
- heinzel/kernel/_module.py +860 -0
- heinzel/kernel/_notifications.py +102 -0
- heinzel/kernel/_org.py +102 -0
- heinzel/kernel/_paths.py +46 -0
- heinzel/kernel/_playbooks.py +292 -0
- heinzel/kernel/_presence.py +22 -0
- heinzel/kernel/_progress.py +41 -0
- heinzel/kernel/_prompter.py +357 -0
- heinzel/kernel/_protocols.py +848 -0
- heinzel/kernel/_release.py +144 -0
- heinzel/kernel/_session.py +75 -0
- heinzel/kernel/_session_io.py +174 -0
- heinzel/kernel/_session_store.py +477 -0
- heinzel/kernel/_settings.py +200 -0
- heinzel/kernel/_signals.py +14 -0
- heinzel/kernel/_skills.py +634 -0
- heinzel/kernel/_soundscapes.py +450 -0
- heinzel/kernel/_spec.py +21 -0
- heinzel/kernel/_telemetry.py +232 -0
- heinzel/kernel/_text.py +40 -0
- heinzel/kernel/_theme_signals.py +104 -0
- heinzel/kernel/_themes.py +1101 -0
- heinzel/kernel/assets/theme/logo/mark.svg +183 -0
- heinzel/kernel/assets/theme/logo/wordmark-dark.svg +186 -0
- heinzel/kernel/assets/theme/logo/wordmark-light.svg +186 -0
- heinzel/modules/__init__.py +1 -0
- heinzel/modules/ai/__init__.py +105 -0
- heinzel/modules/ai/_models.py +70 -0
- heinzel/modules/ai/_usage.py +221 -0
- heinzel/modules/ai/access/__init__.py +152 -0
- heinzel/modules/ai/access/_chatgpt.py +278 -0
- heinzel/modules/ai/access/_discovery.py +168 -0
- heinzel/modules/ai/access/_gateway.py +210 -0
- heinzel/modules/ai/access/_models.py +216 -0
- heinzel/modules/ai/access/_pydantic.py +270 -0
- heinzel/modules/ai/access/_service.py +295 -0
- heinzel/modules/graph/__init__.py +60 -0
- heinzel/modules/graph/_build.py +508 -0
- heinzel/modules/graph/_models.py +168 -0
- heinzel/modules/graph/_render.py +37 -0
- heinzel/modules/graph/_schedule.py +77 -0
- heinzel/modules/graph/_service.py +93 -0
- heinzel/modules/graph/templates/team-graph-keeper.prose.md +59 -0
- heinzel/modules/heinzel/__init__.py +336 -0
- heinzel/modules/heinzel/_contracts.py +596 -0
- heinzel/modules/heinzel/_engine.py +451 -0
- heinzel/modules/heinzel/_graph.py +259 -0
- heinzel/modules/heinzel/_measure.py +153 -0
- heinzel/modules/heinzel/_models.py +843 -0
- heinzel/modules/heinzel/_playbooks.py +318 -0
- heinzel/modules/heinzel/_promises.py +43 -0
- heinzel/modules/heinzel/_render.py +374 -0
- heinzel/modules/heinzel/_retention.py +180 -0
- heinzel/modules/heinzel/_service.py +1595 -0
- heinzel/modules/heinzel/_session_bodies.py +39 -0
- heinzel/modules/heinzel/_session_crud.py +327 -0
- heinzel/modules/heinzel/_session_models.py +392 -0
- heinzel/modules/heinzel/_session_operations.py +107 -0
- heinzel/modules/heinzel/_session_protocol.py +49 -0
- heinzel/modules/heinzel/_session_repository.py +131 -0
- heinzel/modules/heinzel/_starter.py +134 -0
- heinzel/modules/org/__init__.py +99 -0
- heinzel/modules/org/_agenda.py +168 -0
- heinzel/modules/org/_discovery.py +164 -0
- heinzel/modules/org/_models.py +247 -0
- heinzel/modules/org/_profile.py +199 -0
- heinzel/modules/org/_render.py +54 -0
- heinzel/modules/org/_sync.py +284 -0
- heinzel/modules/system/__init__.py +101 -0
- heinzel/modules/system/_github.py +75 -0
- heinzel/modules/system/_models.py +102 -0
- heinzel/modules/system/_render.py +75 -0
- heinzel/modules/system/_service.py +316 -0
- heinzel/modules/system/_update.py +564 -0
- heinzel/modules/system/agent/__init__.py +30 -0
- heinzel/modules/system/agent/_models.py +37 -0
- heinzel/modules/system/agent/_service.py +93 -0
- heinzel/modules/system/capability/__init__.py +35 -0
- heinzel/modules/system/capability/_models.py +55 -0
- heinzel/modules/system/capability/_render.py +35 -0
- heinzel/modules/system/capability/_service.py +167 -0
- heinzel/modules/system/changelog/__init__.py +141 -0
- heinzel/modules/system/claude/__init__.py +44 -0
- heinzel/modules/system/claude/_models.py +85 -0
- heinzel/modules/system/claude/_render.py +55 -0
- heinzel/modules/system/claude/_scan.py +488 -0
- heinzel/modules/system/claude/_service.py +58 -0
- heinzel/modules/system/config/__init__.py +101 -0
- heinzel/modules/system/config/_models.py +80 -0
- heinzel/modules/system/config/_render.py +28 -0
- heinzel/modules/system/config/_reveal.py +103 -0
- heinzel/modules/system/config/_schema.py +63 -0
- heinzel/modules/system/config/_service.py +487 -0
- heinzel/modules/system/connector/__init__.py +51 -0
- heinzel/modules/system/connector/_models.py +93 -0
- heinzel/modules/system/connector/_render.py +67 -0
- heinzel/modules/system/connector/_service.py +208 -0
- heinzel/modules/system/credential/__init__.py +49 -0
- heinzel/modules/system/credential/_models.py +48 -0
- heinzel/modules/system/credential/_service.py +245 -0
- heinzel/modules/system/daemon/__init__.py +134 -0
- heinzel/modules/system/daemon/_ledger.py +172 -0
- heinzel/modules/system/daemon/_models.py +165 -0
- heinzel/modules/system/daemon/_render.py +72 -0
- heinzel/modules/system/daemon/_runtime.py +203 -0
- heinzel/modules/system/daemon/_schedule.py +103 -0
- heinzel/modules/system/daemon/_service.py +704 -0
- heinzel/modules/system/daemon/_status_item.py +99 -0
- heinzel/modules/system/daemon/_units.py +119 -0
- heinzel/modules/system/directory/__init__.py +21 -0
- heinzel/modules/system/directory/_guess.py +138 -0
- heinzel/modules/system/directory/_models.py +32 -0
- heinzel/modules/system/doctor/__init__.py +149 -0
- heinzel/modules/system/doctor/demo.tape +5 -0
- heinzel/modules/system/expert/__init__.py +56 -0
- heinzel/modules/system/expert/_models.py +26 -0
- heinzel/modules/system/expert/_service.py +61 -0
- heinzel/modules/system/layer/__init__.py +68 -0
- heinzel/modules/system/layer/_models.py +73 -0
- heinzel/modules/system/layer/_render.py +68 -0
- heinzel/modules/system/layer/_service.py +160 -0
- heinzel/modules/system/notify/__init__.py +128 -0
- heinzel/modules/system/notify/_channels.py +92 -0
- heinzel/modules/system/notify/_macos.py +225 -0
- heinzel/modules/system/notify/_models.py +160 -0
- heinzel/modules/system/notify/_native.py +196 -0
- heinzel/modules/system/notify/_policy.py +139 -0
- heinzel/modules/system/notify/_render.py +89 -0
- heinzel/modules/system/notify/_service.py +478 -0
- heinzel/modules/system/notify/_store.py +143 -0
- heinzel/modules/system/notify/_watch.py +80 -0
- heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/Info.plist +28 -0
- heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/MacOS/notifier +0 -0
- heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/Resources/heinzel.icns +0 -0
- heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/_CodeSignature/CodeResources +128 -0
- heinzel/modules/system/notify/macos/Info.plist +28 -0
- heinzel/modules/system/notify/macos/heinzel-swarm.svg +183 -0
- heinzel/modules/system/notify/macos/heinzel.svg +40 -0
- heinzel/modules/system/notify/macos/icon.swift +50 -0
- heinzel/modules/system/notify/macos/main.swift +101 -0
- heinzel/modules/system/plugin/__init__.py +161 -0
- heinzel/modules/system/plugin/_models.py +181 -0
- heinzel/modules/system/plugin/_render.py +120 -0
- heinzel/modules/system/plugin/_service.py +938 -0
- heinzel/modules/system/plugin/_sources.py +436 -0
- heinzel/modules/system/plugin/docs/__init__.py +89 -0
- heinzel/modules/system/plugin/docs/_build.py +50 -0
- heinzel/modules/system/plugin/docs/_files.py +131 -0
- heinzel/modules/system/plugin/docs/_models.py +269 -0
- heinzel/modules/system/plugin/docs/_render.py +432 -0
- heinzel/modules/system/plugin/docs/_service.py +692 -0
- heinzel/modules/system/resource/__init__.py +106 -0
- heinzel/modules/system/runner/__init__.py +151 -0
- heinzel/modules/system/runner/_access.py +109 -0
- heinzel/modules/system/runner/_claude.py +463 -0
- heinzel/modules/system/runner/_codex.py +307 -0
- heinzel/modules/system/runner/_command.py +266 -0
- heinzel/modules/system/runner/_models.py +145 -0
- heinzel/modules/system/runner/_process.py +155 -0
- heinzel/modules/system/runner/chat/__init__.py +159 -0
- heinzel/modules/system/runner/chat/_models.py +173 -0
- heinzel/modules/system/runner/chat/_policy.py +70 -0
- heinzel/modules/system/runner/chat/_service.py +353 -0
- heinzel/modules/system/runner/chat/_store.py +319 -0
- heinzel/modules/system/skill/__init__.py +159 -0
- heinzel/modules/system/skill/_export.py +241 -0
- heinzel/modules/system/skill/_models.py +102 -0
- heinzel/modules/system/skill/_service.py +293 -0
- heinzel/modules/system/skill/skills/explain-heinzel/SKILL.md +22 -0
- heinzel/modules/system/sound/__init__.py +100 -0
- heinzel/modules/system/sound/_models.py +137 -0
- heinzel/modules/system/sound/_service.py +286 -0
- heinzel/modules/system/sound/soundscapes/ceo-mode.toml +8 -0
- heinzel/modules/system/sound/soundscapes/claude-fm.toml +9 -0
- heinzel/modules/system/sound/soundscapes/focus.toml +9 -0
- heinzel/modules/system/state/__init__.py +86 -0
- heinzel/modules/system/state/_models.py +150 -0
- heinzel/modules/system/state/_render.py +28 -0
- heinzel/modules/system/state/_service.py +398 -0
- heinzel/modules/system/state/_sink.py +360 -0
- heinzel/modules/system/state/_streams.py +220 -0
- heinzel/modules/system/theme/__init__.py +105 -0
- heinzel/modules/system/theme/_models.py +118 -0
- heinzel/modules/system/theme/_service.py +396 -0
- heinzel/modules/system/ui/__init__.py +250 -0
- heinzel/modules/system/ui/_models.py +95 -0
- heinzel/modules/system/ui/_service.py +489 -0
- heinzel/modules/team/__init__.py +139 -0
- heinzel/modules/team/_context.py +44 -0
- heinzel/modules/team/_models.py +399 -0
- heinzel/modules/team/_render.py +82 -0
- heinzel/modules/team/_repo.py +57 -0
- heinzel/modules/team/_roster.py +95 -0
- heinzel/modules/team/_service.py +1001 -0
- heinzel/modules/team/_template.py +144 -0
- heinzel/modules/team/_yaml.py +162 -0
- heinzel/modules/telemetry/__init__.py +187 -0
- heinzel/modules/telemetry/_models.py +73 -0
- heinzel/modules/telemetry/_render.py +27 -0
- heinzel/modules/telemetry/_service.py +357 -0
- heinzel/py.typed +0 -0
- heinzel/skills/hz/SKILL.md +57 -0
- heinzel/skills/hz-init/SKILL.md +38 -0
- heinzel/skills/hz-init/scripts/install.sh +56 -0
- heinzel/skills/hz-uninstall/SKILL.md +18 -0
- heinzel/skills/hz-uninstall/scripts/uninstall.sh +56 -0
- heinzel/testing.py +261 -0
- heinzel-0.7.14.dist-info/METADATA +403 -0
- heinzel-0.7.14.dist-info/RECORD +287 -0
- heinzel-0.7.14.dist-info/WHEEL +4 -0
- heinzel-0.7.14.dist-info/entry_points.txt +6 -0
- heinzel-0.7.14.dist-info/licenses/ATTRIBUTIONS.md +9047 -0
- heinzel-0.7.14.dist-info/licenses/LICENSE +21 -0
heinzel/CHANGELOG.md
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Heinzelmännchen, newest first. Versions follow [Semantic Versioning](https://semver.org); entries are generated by [git-cliff](https://git-cliff.org) from [conventional commits](https://www.conventionalcommits.org).
|
|
4
|
+
|
|
5
|
+
## [0.7.14](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.14) - 2026-10-26
|
|
6
|
+
|
|
7
|
+
Settings now use readable section labels instead of raw configuration keys.
|
|
8
|
+
|
|
9
|
+
### 🐛 Bug fixes
|
|
10
|
+
|
|
11
|
+
- **web:** Polish settings, clock ticker, and notification ding ([#190](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/190)) ([ab415cb](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/ab415cb7dfa4e9fe6ead2ecf890c7da894733597))
|
|
12
|
+
- **plugin:** Repair macOS Tailscale CI failures ([#191](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/191)) ([3e262f8](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/3e262f84053bebd34f9b59ad2c78cb05243a16c5))
|
|
13
|
+
- **web:** Hide raw configuration section markers ([#192](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/192)) ([2f0c6e3](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2f0c6e3d00c7c6cbd2febc08f3779c527e01e36b))
|
|
14
|
+
|
|
15
|
+
## [0.7.13](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.13) - 2026-10-26
|
|
16
|
+
|
|
17
|
+
A more flexible web UI brings the World Clock, condition-aware status, plugin-contributed navigation and settings, improved sound controls, and Tailscale sharing. CEO mode joins the built-in soundscapes.
|
|
18
|
+
|
|
19
|
+
### ✨ Features
|
|
20
|
+
|
|
21
|
+
- **web:** Complete plugin-driven shell and world clock ([#188](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/188)) ([2cdeb3a](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2cdeb3afd49b708a068cc15b6f9b08d99581d18a))
|
|
22
|
+
|
|
23
|
+
## [0.7.12](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.12) - 2026-10-26
|
|
24
|
+
|
|
25
|
+
Adds a generated plugin gallery and consistent extension documentation, with recorded CLI and web examples showing what installed plugins contribute.
|
|
26
|
+
|
|
27
|
+
### ✨ Features
|
|
28
|
+
|
|
29
|
+
- **docs:** Plugin pages from the kernel, recordings and a site ([#135](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/135)) ([50c4555](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/50c4555a9d82f0d3196c2e4fb3fc133173df5b6c))
|
|
30
|
+
|
|
31
|
+
## [0.7.11](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.11) - 2026-10-25
|
|
32
|
+
|
|
33
|
+
Documents the proposed onboarding journey from a team invitation to a first useful result, preserving the design decisions for future implementation.
|
|
34
|
+
|
|
35
|
+
### 📚 Documentation
|
|
36
|
+
|
|
37
|
+
- **adr:** Perfect onboarding, one invite line ending in a first win ([#32](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/32)) ([116c779](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/116c779e30836d5d6ef55cb8f34a4f2ec8f3c776))
|
|
38
|
+
|
|
39
|
+
## [0.7.10](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.10) - 2026-10-25
|
|
40
|
+
|
|
41
|
+
Chat session lists now retain their context, and Heinzel settings receive the same confirmation protection as workflow settings. Scheduled next-run times follow daylight-saving transitions and stay strictly in the future without repeating the first occurrence of a clock-change hour.
|
|
42
|
+
|
|
43
|
+
### 🐛 Bug fixes
|
|
44
|
+
|
|
45
|
+
- **heinzel:** Recover chat context and scheduling safeguards ([#113](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/113)) ([7f0e7b1](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/7f0e7b175286cdc8cc6a0bd4da7dca3a8e12e6c4))
|
|
46
|
+
|
|
47
|
+
## [0.7.9](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.9) - 2026-10-25
|
|
48
|
+
|
|
49
|
+
Video playback now stays beneath menus, settings and footer details while keeping the same playing frame when docked or floating. The collapsed sidebar keeps your profile control visible, and the app shell no longer scrolls controls out of view.
|
|
50
|
+
|
|
51
|
+
### 🐛 Bug fixes
|
|
52
|
+
|
|
53
|
+
- **web:** Keep media beneath controls and profile visible ([#171](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/171)) ([6349811](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/6349811ad9c861d8a0c209d868ee51fd2efc2ce4))
|
|
54
|
+
|
|
55
|
+
## [0.7.8](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.8) - 2026-10-25
|
|
56
|
+
|
|
57
|
+
Development builds now use the native TypeScript compiler while API client generation keeps its compatible TypeScript interface. Node.js type definitions match the supported runtime, and typed plugin contribution queries work with the upgraded compiler.
|
|
58
|
+
|
|
59
|
+
### 🏗️ Build and CI
|
|
60
|
+
|
|
61
|
+
- **web:** Use native TypeScript with compatible schema tooling ([#136](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/136)) ([29bb929](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/29bb929269b1fac2147b954198be68ce9000d096))
|
|
62
|
+
|
|
63
|
+
## [0.7.7](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.7) - 2026-10-25
|
|
64
|
+
|
|
65
|
+
App icons now use an opaque white background with artwork matching Heinzelmännchen. Updated asset URLs refresh existing browser and installed-app icons, while cache cleanup leaves unrelated applications untouched.
|
|
66
|
+
|
|
67
|
+
### 🐛 Bug fixes
|
|
68
|
+
|
|
69
|
+
- **web:** Use opaque white icons and version their cache URLs ([#174](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/174)) ([37102e6](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/37102e67d8b4688ffb3cf2c7176e096c19c741ea))
|
|
70
|
+
|
|
71
|
+
## [0.7.6](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.6) - 2026-10-25
|
|
72
|
+
|
|
73
|
+
You can now opt in to syncing presence and adoption information to your own state repository. Synchronization checks repository ownership and handles retries and recovery without treating unconfigured jobs as successful activity.
|
|
74
|
+
|
|
75
|
+
### ✨ Features
|
|
76
|
+
|
|
77
|
+
- **system:** Push presence and adoption to your own state repository ([#134](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/134)) ([503c552](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/503c552255a3d9262767918670e64be11fa00bdd))
|
|
78
|
+
|
|
79
|
+
## [0.7.5](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.5) - 2026-10-25
|
|
80
|
+
|
|
81
|
+
Every release now requires a summary of what changed for users. Blank summaries are rejected before release work begins, and release prose is passed safely through both local and GitHub release commands.
|
|
82
|
+
|
|
83
|
+
### 🐛 Bug fixes
|
|
84
|
+
|
|
85
|
+
- **release:** Require a user-facing release summary ([#179](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/179)) ([7d61ece](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/7d61ece5e90342781eec4a43d19afdff5657b806))
|
|
86
|
+
|
|
87
|
+
## [0.7.4](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.4) - 2026-10-25
|
|
88
|
+
|
|
89
|
+
Themes can now provide their own Heinzelmännchen artwork, with validated local assets and consistent avatar movement. This makes themed characters look and animate correctly throughout the app.
|
|
90
|
+
|
|
91
|
+
### ✨ Features
|
|
92
|
+
|
|
93
|
+
- **web:** Load original avatar layers from themes ([#175](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/175)) ([bbcf6ea](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/bbcf6ea9e2ea7d64d1fb9085fd04179ac56b3762))
|
|
94
|
+
|
|
95
|
+
## [0.7.3](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.3) - 2026-10-25
|
|
96
|
+
|
|
97
|
+
### ✨ Features
|
|
98
|
+
|
|
99
|
+
- **kernel:** Add durable session checkpoints and metadata index ([#165](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/165)) ([f99b704](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f99b704801bef6b6d39be442371a84e4189078b6))
|
|
100
|
+
- **heinzel:** Add checkpointed typed turn engine ([#167](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/167)) ([1e1106d](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/1e1106d852c0b71ad8da0af48272eb37085ed35a))
|
|
101
|
+
- **kernel:** Read session bodies without writer locks ([#169](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/169)) ([3b05a3d](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/3b05a3d3d6e7ea5869cef91cd69ec49ee54556b6))
|
|
102
|
+
- **heads:** Authenticate private operations with scoped principals ([#168](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/168)) ([8be74e6](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/8be74e6c9fb17bf13c92ffd5170b546fe9328b03))
|
|
103
|
+
- **heinzel:** Persist personal session identity and appearance ([#172](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/172)) ([ff48160](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/ff481604375a11cebb3a14de83106586ad706f02))
|
|
104
|
+
- **plugin:** Declare navigation and typed private actions ([#173](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/173)) ([6a1fd8e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/6a1fd8e126f8048d23c81de9e04b744e2f923d0b))
|
|
105
|
+
|
|
106
|
+
### 🐛 Bug fixes
|
|
107
|
+
|
|
108
|
+
- **web:** Clarify settings and unify product branding ([#170](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/170)) ([85c4794](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/85c4794951ef2d78f150b89abd1e38f4b81e07f9))
|
|
109
|
+
- **web:** Restore search focus after startup ([#176](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/176)) ([5b649bc](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/5b649bc57d8d715fdf9ae69108b74811a77b34a2))
|
|
110
|
+
|
|
111
|
+
### 📚 Documentation
|
|
112
|
+
|
|
113
|
+
- Document plugin extension points and rich views ([#166](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/166)) ([1a79867](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/1a79867102c7c2599de88f87a0d9629e66b15b4c))
|
|
114
|
+
|
|
115
|
+
## [0.7.2](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.2) - 2026-10-25
|
|
116
|
+
|
|
117
|
+
World Clock gains an interactive globe. Themes can dress the Heinzelmaennchen for winter, Settings have clearer groups, and the sound player keeps playing while docked or floating. This release also repairs cross-platform checks and local endpoint handling.
|
|
118
|
+
|
|
119
|
+
### ✨ Features
|
|
120
|
+
|
|
121
|
+
- **web:** Settings in four groups, one place per setting ([#157](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/157)) ([1ad6901](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/1ad6901c7652706e20a4e3d7a21ce8cce1099110))
|
|
122
|
+
- **web:** The header Heinzelmännchen comes alive with idle moves ([#159](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/159)) ([2a6f414](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2a6f41415cd9e255b7d1b150f910dd7e995bb919))
|
|
123
|
+
- **clock:** An interactive World Clock in the right panel ([#162](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/162)) ([00dc822](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/00dc8220e4ba52d2fcf1cf745e6260b18bbbe93d))
|
|
124
|
+
- **system:** Snowy core avatars with a checked theme palette ([#163](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/163)) ([c3e8372](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/c3e837217d107b7432a4c45d84fd788222396bac))
|
|
125
|
+
|
|
126
|
+
### 🐛 Bug fixes
|
|
127
|
+
|
|
128
|
+
- Restore update checks and local endpoint detection ([#161](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/161)) ([bc88fb0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/bc88fb022be2acf364cf93d38ea98227ffe26167))
|
|
129
|
+
- **web:** The mini-player keeps playing when it docks or undocks ([#160](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/160)) ([c51f0e6](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/c51f0e68acd3a3f5927a3a0f43374d98aad10eb0))
|
|
130
|
+
|
|
131
|
+
### 🧪 Testing
|
|
132
|
+
|
|
133
|
+
- Fake the contrib listing in plugin-search tests ([#158](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/158)) ([f32cbe5](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f32cbe5d35cff74e9a87f1f613d395b7ea698b96))
|
|
134
|
+
|
|
135
|
+
## [0.7.1](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.1) - 2026-10-25
|
|
136
|
+
|
|
137
|
+
### ✨ Features
|
|
138
|
+
|
|
139
|
+
- **plugin:** List contrib in Discover, auto-reload after changes ([#143](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/143)) ([a524b85](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/a524b85eeed26ba38a317f18dc9d93cd0dda33d0))
|
|
140
|
+
- **web:** Today grid, notifications teaser, graphic widgets, 24h times ([#147](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/147)) ([7adf304](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/7adf3048ac57629b796a39b5d5ab1bccb7b4a475))
|
|
141
|
+
- **system:** A second core soundscape, Focus ([#148](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/148)) ([7558034](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/755803495bfdcd1e0e5a81ba626ae651b0637cd1))
|
|
142
|
+
- **web:** Heinzel face icon, responsive footer, white app icons ([#149](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/149)) ([6a1fc72](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/6a1fc72e2b8ecfcdae4aa93d1f34d6620402339a))
|
|
143
|
+
- **web:** Friendly error screen and backoff while hz is down ([#150](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/150)) ([22859c3](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/22859c3358f6fd3d14ece608f59d21dfdaaee8ee))
|
|
144
|
+
- **web:** The sidebar clock goes through all your time zones ([#151](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/151)) ([bfec547](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/bfec547ec802ef3ba83b4d079e21b098bc17766f))
|
|
145
|
+
- **web:** World Clock with the globe, one clean search field ([#152](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/152)) ([5de2d77](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/5de2d77637766dbd061a4be5eaf4728c8cbbc3ec))
|
|
146
|
+
- **web:** Dockable sound mini-player and a fuller sound popover ([#153](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/153)) ([e1df943](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/e1df943ad213576af37cac65c176d199b54a7ae7))
|
|
147
|
+
- **web:** Footer items are icons with a pane; Types and Artifacts ([#154](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/154)) ([e6b865d](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/e6b865d4d70f2f6ba4fc1f15fe6e3aa1abde51f9))
|
|
148
|
+
|
|
149
|
+
### 🐛 Bug fixes
|
|
150
|
+
|
|
151
|
+
- **system:** Hz update upgrades the installed plugins too ([#155](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/155)) ([7671c8f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/7671c8fadd496c300165cf60b2e5a32b1d083faf))
|
|
152
|
+
|
|
153
|
+
### 📚 Documentation
|
|
154
|
+
|
|
155
|
+
- Plugins ship soundscapes like themes ([#145](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/145)) ([bbf3b80](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/bbf3b800a9e830d2bf573352d2997652f0cd1a7f))
|
|
156
|
+
|
|
157
|
+
### ♻️ Refactoring
|
|
158
|
+
|
|
159
|
+
- Weather leaves the core; it lives in the contrib plugin ([#146](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/146)) ([802b3c8](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/802b3c8ef08d9da705786d4474be64df591794fa))
|
|
160
|
+
|
|
161
|
+
## [0.7.0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.7.0) - 2026-10-25
|
|
162
|
+
|
|
163
|
+
### ✨ Features
|
|
164
|
+
|
|
165
|
+
- **ai:** Record what every run spends; hz ai usage ([#97](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/97)) ([f36c803](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f36c80387b2bb8db1a2048d0c86c71561d2bb8db))
|
|
166
|
+
- **system:** List the MCP servers and skills you already gave Claude ([#132](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/132)) ([fcfe072](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/fcfe0726bd93c6ec41d7886b2f8d9892fbbf8f21))
|
|
167
|
+
- **web:** The Inventory group is now Artifacts ([#88](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/88)) ([e9d66ec](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/e9d66ec76e0d8df07dd71f99c42269911ea39fd5))
|
|
168
|
+
- **web:** A splash screen while hz starts ([#100](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/100)) ([218531a](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/218531a53da4610ab92a8db2fa8275e6d99d522f))
|
|
169
|
+
- **web:** AI access in Settings, next to the theme ([#98](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/98)) ([02af3bc](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/02af3bc7f623d2ddb7dbc7415c826f4b4324aa64))
|
|
170
|
+
|
|
171
|
+
### 🐛 Bug fixes
|
|
172
|
+
|
|
173
|
+
- **system:** Notify install updates the app, says it in plain words ([#108](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/108)) ([3fa9c1b](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/3fa9c1bd20385262b6239cd83c0cdc82edb684d8))
|
|
174
|
+
- **web:** The terminal fills its panel and full screen ([#109](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/109)) ([61622cd](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/61622cdc1aa848ddba16da8f4db6e2f236990547))
|
|
175
|
+
- **system:** Mail is never bound automatically ([#91](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/91)) ([2902beb](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2902beb125a7f3cb0edeff3a0dc72e8cc4dffaa7))
|
|
176
|
+
- **ci:** Stop tracking a .venv symlink that breaks every install ([#141](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/141)) ([7bd73ee](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/7bd73ee7967dfd18ac3969005a10537d481ee702))
|
|
177
|
+
|
|
178
|
+
### 📚 Documentation
|
|
179
|
+
|
|
180
|
+
- Tell agents how to pick up work ([#138](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/138)) ([decaf56](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/decaf560cf7a02413b42a190c9b782c263334281))
|
|
181
|
+
- **agents:** Pick the model and effort by how hard the work is ([#99](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/99)) ([854f176](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/854f176692c36b0ae88bc9d84bde08433cb7f27c))
|
|
182
|
+
|
|
183
|
+
### 🧪 Testing
|
|
184
|
+
|
|
185
|
+
- Remove the patterns CodeQL flags in three tests ([#124](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/124)) ([c40bc2e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/c40bc2e0273a26a8247d8ff055525304ef238b24))
|
|
186
|
+
- **web:** Give each web test 20 s before vitest gives up ([#87](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/87)) ([ca27a59](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/ca27a59196408a754433e89d90ac2e8eeecd8f5e))
|
|
187
|
+
|
|
188
|
+
### 🏗️ Build and CI
|
|
189
|
+
|
|
190
|
+
- Run the Claude review on the API key ([#139](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/139)) ([53d9c85](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/53d9c851e8467901e8ef45904663abfe02066316))
|
|
191
|
+
|
|
192
|
+
### 🧹 Miscellaneous
|
|
193
|
+
|
|
194
|
+
- Integrate the open pull requests ([#140](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/140)) ([df1a922](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/df1a922d3278580734f30a142a9b648b1158c8c1))
|
|
195
|
+
|
|
196
|
+
## [0.6.0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.6.0) - 2026-10-25
|
|
197
|
+
|
|
198
|
+
### ✨ Features
|
|
199
|
+
|
|
200
|
+
- **heinzel:** The workflow module becomes the heinzel module ([#94](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/94)) ([16b789d](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/16b789d6fbc0331c1bb82cd68c8479d606bbdbfc))
|
|
201
|
+
- **web:** Dress the avatar with accessories as data ([#131](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/131)) ([e726462](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/e726462d4ab273ba1acd3bc0a941f2a7fe89d008))
|
|
202
|
+
- **system:** Discover lists each plugin of a monorepo ([#112](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/112)) ([130cc33](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/130cc33549df1bfe2a1d15565ab9879170c45df9))
|
|
203
|
+
- **web:** Heinzelmännchen in the empty, busy and done moments ([#121](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/121)) ([60a5029](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/60a50291c82a0cbcdc818ebe92b2b9ea703102fc))
|
|
204
|
+
|
|
205
|
+
### 🐛 Bug fixes
|
|
206
|
+
|
|
207
|
+
- **web:** Hz ui stops cleanly on Ctrl-C ([#93](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/93)) ([62ff55f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/62ff55f5f34492714f5612bacb84e14aea2049d8))
|
|
208
|
+
|
|
209
|
+
### 🧪 Testing
|
|
210
|
+
|
|
211
|
+
- Timing assertions run in CI only, tick test pins its clock ([#126](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/126)) ([d0fd683](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/d0fd683749ae2d9e4e0924fc57afebb0c689a435))
|
|
212
|
+
- **system:** The daemon tick test no longer depends on the clock ([#117](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/117)) ([d977efa](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/d977efa52d5d567ad371db02ab3f6b44a411e2b1))
|
|
213
|
+
|
|
214
|
+
## [0.5.0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.5.0) - 2026-10-25
|
|
215
|
+
|
|
216
|
+
### 🛡️ Security
|
|
217
|
+
|
|
218
|
+
- **security:** State how reports and contributions are handled ([#123](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/123)) ([add31c9](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/add31c9836feeb3de0854d7eac913a02bf38d79b))
|
|
219
|
+
|
|
220
|
+
### ✨ Features
|
|
221
|
+
|
|
222
|
+
- **web:** A team graph of kept promises, laid out by elk ([#77](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/77)) ([b80b4c0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b80b4c0a75c944835504a4623461b3176a741500))
|
|
223
|
+
- **graph:** Telemetry and a team graph of kept promises ([#80](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/80)) ([b5f9d27](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b5f9d27a2f3384893844c37e13bafa26e2f06bb4))
|
|
224
|
+
- **web:** Theme previews, themed corners and icons, chat beside Home ([#82](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/82)) ([750cae4](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/750cae484b472dc4ac0c6aeec4c2d987b94c4ba2))
|
|
225
|
+
- **system:** Connectors show sign-in, test live and bind when alone ([#84](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/84)) ([a62edbb](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/a62edbb5c6039085d0f582ff4cab515e34164982))
|
|
226
|
+
- **web:** An onboarding wizard for the first run ([#89](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/89)) ([b90ea36](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b90ea36526a479ebe42009b9c141d915e31e99e9))
|
|
227
|
+
- **ai:** AI access is one choice, like the theme ([#92](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/92)) ([e7b840a](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/e7b840af45821dda0ac3a25bd6ba82c04ea20a5d))
|
|
228
|
+
- **web:** One Heinzel icon everywhere ([#95](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/95)) ([5f8b0ce](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/5f8b0cebba314a9f6f2906f4be19c723f9c594c7))
|
|
229
|
+
- **ai:** The Codex CLI as AI access option and agent runner ([#130](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/130)) ([9c86166](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/9c861660f1d1c5becda91e2c3248c00e36b2213d))
|
|
230
|
+
- **system:** Themes that follow the time of day and the weather ([#120](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/120)) ([b490d75](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b490d75ca0e8c9d3d3f13802ec2817a2ec7bd67a))
|
|
231
|
+
|
|
232
|
+
### 🐛 Bug fixes
|
|
233
|
+
|
|
234
|
+
- **system:** An honest notification test, with a fix per way ([#86](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/86)) ([dc5912e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/dc5912e7135bc5c3acdaabdd2ef5a1648710b12f))
|
|
235
|
+
- **system:** Update moves a tag-pinned install to the latest release ([#90](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/90)) ([2c44b5e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2c44b5e49c7bdfbcc1c854cbff9a56de68db98fb))
|
|
236
|
+
- **system:** Update follows releases, main is opt-in, no downgrade ([#107](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/107)) ([1b06631](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/1b0663177250915fe8ffaedc3db7851b8d2e96e3))
|
|
237
|
+
- **system:** Daemon shows as Heinzelmännchen with icon in Login Items ([#110](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/110)) ([15e7841](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/15e7841e7ae317901d17ad8a4cd19d46a5c20284))
|
|
238
|
+
- **web:** Onboarding sends the test notice and installs the daemon ([#114](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/114)) ([2896a2c](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2896a2c478d5440ebe1942d9698550497f751f15))
|
|
239
|
+
- **web:** Module titles keep their capitals (AI, not Ai) ([#116](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/116)) ([1f879a4](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/1f879a4ae13092ec7e80045d21cf7a98fbb606ac))
|
|
240
|
+
- **web:** Install first-party plugins from Discover by name ([#115](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/115)) ([3564906](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/35649067de2506a29feb5a40e866b6dad1c62460))
|
|
241
|
+
|
|
242
|
+
### 📚 Documentation
|
|
243
|
+
|
|
244
|
+
- **adr:** Durable Heinzelmännchen, Pydantic AI turns, heinzel module ([#76](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/76)) ([d7b5914](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/d7b5914403413d96554d5dbbc7d2b697055b37e5))
|
|
245
|
+
- ATTRIBUTIONS.md and a thank-you to the open-source community ([#78](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/78)) ([073e7f9](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/073e7f9e83e98faa484f60f9847bafd2a50dd804))
|
|
246
|
+
- One README badge for Ruff and uv ([#79](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/79)) ([e8d5ac8](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/e8d5ac83684a3d2aec64bbaa1c314b963df142f6))
|
|
247
|
+
- The OpenSSF Best Practices badge ([#81](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/81)) ([191aaef](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/191aaef1c75c88ddd2cfacd021d65d9d7f67ba36))
|
|
248
|
+
- **adr:** Durable turns: pi's queues, a journal, Reactor's rechecks ([#96](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/96)) ([7b23171](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/7b23171b5ee689131ad98be462391dc8d760eb95))
|
|
249
|
+
- **plugin:** Community plugins live in heinzel-contrib ([#101](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/101)) ([eae280d](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/eae280d1610e258ac760e2a2516aa59ffa6c295e))
|
|
250
|
+
|
|
251
|
+
### 🏗️ Build and CI
|
|
252
|
+
|
|
253
|
+
- Run macOS on one Python on pull requests ([#127](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/127)) ([aa0293a](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/aa0293aaadeccca22e0e34234f70c80de6601aa3))
|
|
254
|
+
|
|
255
|
+
## [0.4.0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.4.0) - 2026-10-24
|
|
256
|
+
|
|
257
|
+
hz becomes an app you live in: a Claude-style web UI you can install to the Dock, with a chat that acts on hz once you confirm, a terminal, a notification center and desktop notifications from the daemon. Plugins bring themes (type, density, fonts) and can be installed from the app.
|
|
258
|
+
|
|
259
|
+
### ✨ Features
|
|
260
|
+
|
|
261
|
+
- **cli:** Expert mode; newcomers see the everyday commands ([#65](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/65)) ([04f2c79](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/04f2c799ee12f67c9d17f08d3bbfaf059d2bb7f8))
|
|
262
|
+
- **system:** Proactive desktop notifications from the daemon ([#67](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/67)) ([44efd86](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/44efd86dc6c06186a02c57fe658c861385019651))
|
|
263
|
+
- **system:** Themes for the web app, offered by plugins ([#70](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/70)) ([b564301](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b56430164ff8a24102e0e77e8f51597cfc2ab9ba))
|
|
264
|
+
- **org:** Show the meeting now and the next one for the footer ([#69](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/69)) ([ab63c8d](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/ab63c8d6f2e97f4b9024e5a07687a4a396d50814))
|
|
265
|
+
- **web:** An installable app with notifications ([#72](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/72)) ([0ef8276](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/0ef82765ef28d5e30fc7958adc34875658abc740))
|
|
266
|
+
- **system:** Themes set type, density and their own fonts ([#73](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/73)) ([d9f1ac8](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/d9f1ac896d0a8ccaa33c1b35159f8226182c6577))
|
|
267
|
+
- **chat:** A chat that knows where you are and acts once you confirm ([#71](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/71)) ([45bd67f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/45bd67f2bfca66c0c890f1579f665f1d51dbe958))
|
|
268
|
+
- **web:** Claude-style UI, settings dialog and a terminal ([#68](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/68)) ([fea22b9](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/fea22b9b3d1aa9a939a38a6469553b36da9dd401))
|
|
269
|
+
- **system:** Manage plugins from the web app after a confirmation ([#74](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/74)) ([aba0d61](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/aba0d61d90972e64f9b47cdebefd6942b7fa3c5b))
|
|
270
|
+
|
|
271
|
+
### 🐛 Bug fixes
|
|
272
|
+
|
|
273
|
+
- **system:** Let changelog --newer use a GitHub token so CI's e2e passes ([#66](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/66)) ([dd01e4f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/dd01e4fc62057fcb1df4b7c3f39cd3ed5d7d2644))
|
|
274
|
+
|
|
275
|
+
### 📚 Documentation
|
|
276
|
+
|
|
277
|
+
- Onboarding guides for managers and for joining a team ([#64](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/64)) ([458e4ff](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/458e4ff9aa9fec5e8b37c35f0c3250313de0227f))
|
|
278
|
+
|
|
279
|
+
## [0.3.0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.3.0) - 2026-10-24
|
|
280
|
+
|
|
281
|
+
A web UI, onboarding, and integrations through the vendors' own CLIs. hz ui opens a local web app: navigation and search, settings, the contract graph, team roster, inventory, doctor and an AI chat. hz join <team repo> recognises you from your gh and Google logins and matches the team roster; hz team creates and manages team repositories, and hz org sync applies the team's recommendations you accept. GitHub, Atlassian, Google Workspace (Docs, Sheets, Drive, Calendar, Gmail), Zoom (from its summary emails) and mail are first-party plugins that work as an ordinary employee through gh, acli and gws. Plugins bring playbooks with template contracts; contracts form a graph (hz workflow graph) and can look ahead; drafts expire after 90 days. hz system changelog --newer shows what a release brings before you update.
|
|
282
|
+
|
|
283
|
+
### 🛡️ Security
|
|
284
|
+
|
|
285
|
+
- **security:** Refuse commit emails made from the machine's hostname ([#14](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/14)) ([fa6bdd3](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/fa6bdd36c2937adc489b361f588ec11e19317635))
|
|
286
|
+
- **security:** Attach in-toto provenance; fuzz the contract parser ([#23](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/23)) ([fb2e490](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/fb2e490771f54e1d41f5642c7b8722657387b809))
|
|
287
|
+
|
|
288
|
+
### ✨ Features
|
|
289
|
+
|
|
290
|
+
- **workflow:** New, drafts and next steps that say what to run ([#24](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/24)) ([86388b7](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/86388b76449e3d836e2fe7980195e48d15f43dc8))
|
|
291
|
+
- **kernel:** Chat, meetings and calendar capability protocols ([#18](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/18)) ([dc5aa77](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/dc5aa7724098c941a743891ca1398f9c6d06d9ac))
|
|
292
|
+
- **cli:** Show plugin versions and links, check for updates hourly ([#21](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/21)) ([e944e23](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/e944e23a8c3760b1c1550a479b469bdf2468a7ce))
|
|
293
|
+
- **kernel:** Modules declare interactive setup steps; add hz setup ([#26](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/26)) ([f6fb4bf](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f6fb4bfe0167251cc223f6aec42d7ebcd2dafbf4))
|
|
294
|
+
- **kernel:** Adapters can name hosts their settings decide ([#27](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/27)) ([fa47b11](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/fa47b1150834229d30b06ee3f1a2e87950752094))
|
|
295
|
+
- **plugin:** Ship GitHub, Atlassian and clock as first-party plugins ([#35](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/35)) ([4f0764f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/4f0764f57af871f571a40e199d949a2cf9f52eea))
|
|
296
|
+
- **kernel:** Plugins bring playbooks: asset types, hints, templates ([#38](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/38)) ([3e87f8e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/3e87f8eb47be14365894b1720d9f284fb3479e64))
|
|
297
|
+
- **org:** Your profile, asked once by hz setup ([#41](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/41)) ([a0ce994](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/a0ce99484780d7834be28427bce822adb1afebce))
|
|
298
|
+
- **kernel:** Mail capability; meetings may come from summary emails ([#36](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/36)) ([da28a81](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/da28a81a834bf9a5ee208386fbd50a6927f0a395))
|
|
299
|
+
- **workflow:** Expire run records and drafts after 90 days by default ([#39](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/39)) ([b1ae096](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b1ae096fa76ff1c2d74661c3d841abddf694b66a))
|
|
300
|
+
- **atlassian:** Read Jira and Confluence through the acli CLI ([#40](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/40)) ([94b28d9](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/94b28d93cf0ab9bb3a17865a783c9a42648ef121))
|
|
301
|
+
- **kernel:** Directory capability; guess reporting lines from 1:1s ([#45](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/45)) ([9ff981e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/9ff981e5fc9e74ea8fe67b007a5ed4ba4018670e))
|
|
302
|
+
- **github:** Talk to GitHub through the gh CLI ([#49](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/49)) ([334fe90](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/334fe903836744a99e7637e9fc39e559b4b05fde))
|
|
303
|
+
- **zoom:** Read meetings from Zoom summary emails ([#48](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/48)) ([36dbfe8](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/36dbfe8d5a24a89fbf714503c30eec5d3537fd0d))
|
|
304
|
+
- **team:** Create, join and add to a team repository ([#46](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/46)) ([0567afb](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/0567afbf52aefedb6f7238c4be3da9ff81d64a32))
|
|
305
|
+
- **workflow:** Forward windows and the contract graph ([#53](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/53)) ([19dc057](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/19dc0579d065f65050f0b66b00d4ce3580eacb59))
|
|
306
|
+
- **system:** Show what newer releases bring before updating ([#57](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/57)) ([142e645](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/142e6451176772a465ae7127564e3748f954dfee))
|
|
307
|
+
- **org:** Recommendations you accept with hz org sync ([#51](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/51)) ([84fd327](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/84fd327b51397acb8bf345ecf3b34ec062243478))
|
|
308
|
+
- **setup:** One guided journey, resumable and pre-answerable ([#59](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/59)) ([066be74](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/066be74b17ac468aa7aca1f83720237cceb1e4ad))
|
|
309
|
+
- **web:** A React web head served by the API head, starting with doctor ([#60](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/60)) ([99cc7bb](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/99cc7bb727e19a20f2e2fe8ffb6a841772037540))
|
|
310
|
+
- **google:** Read Google Docs, Sheets, Drive, Calendar and Gmail ([#47](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/47)) ([8d72494](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/8d72494810a6eee66451c665bc0dc9cdbfb5cfef))
|
|
311
|
+
- **kernel:** Plugins are layers, stacked general to specific ([#61](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/61)) ([feafa02](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/feafa0220e52bfd1724563f1f20777fe04b92d0c))
|
|
312
|
+
|
|
313
|
+
### 🐛 Bug fixes
|
|
314
|
+
|
|
315
|
+
- **system:** Show a working config set command when a value is invalid ([#15](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/15)) ([3ec75e4](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/3ec75e47d01aff0c5eeaacd547840977c046fa78))
|
|
316
|
+
- **ci:** Run scripts through bash in workflows, never by path ([#13](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/13)) ([ff37d4b](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/ff37d4bda6e5319d612d8cf03cafb6facc9148ef))
|
|
317
|
+
- **template:** Let plugin tests use fake tokens (ruff S105, S106) ([#16](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/16)) ([784beeb](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/784beeb69704a81551b7110e3a061aa663273ab2))
|
|
318
|
+
- **ci:** Skip Claude review on bot-triggered runs ([#28](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/28)) ([0dec498](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/0dec498aa0a070ede6a7517eb21810f3b58165ea))
|
|
319
|
+
- **release:** Keep hand-written intros when regenerating the changelog ([#29](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/29)) ([2337d19](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2337d1935c425dc5d688f69d653c6e5a3bd73c93))
|
|
320
|
+
- **kernel:** Reject a bare carriage return in config files ([#30](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/30)) ([f8fca54](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f8fca5470a7010d3355ad79ffe1dcac7c3662360))
|
|
321
|
+
- **kernel:** Capability hints end with a working hz command ([#34](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/34)) ([3fcfc87](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/3fcfc87731527087a50894f5c297c75350073136))
|
|
322
|
+
- **cli:** Setup asks only on a terminal, keeps modules' command paths ([#56](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/56)) ([ecccff3](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/ecccff3ce809332f8021e748759b03ada3163b35))
|
|
323
|
+
- **dx:** Make pr explains rebased branches and takes a body file ([#44](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/44)) ([a53ad19](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/a53ad19fc8f6675b2394afc9738fd7ff6bdecbaa))
|
|
324
|
+
|
|
325
|
+
### ⚡ Performance
|
|
326
|
+
|
|
327
|
+
- **dx:** Run check-fast's unit tests in parallel ([#17](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/17)) ([1dd5d15](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/1dd5d15938228b2ae312b19d28726f243291c95e))
|
|
328
|
+
|
|
329
|
+
### 📚 Documentation
|
|
330
|
+
|
|
331
|
+
- Show one generated badge set on every top-level page ([#20](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/20)) ([41c868a](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/41c868aef3dcbd75ee5f019518505fb8d67408a1))
|
|
332
|
+
- Coding agents use the CLI or MCP ([#22](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/22)) ([c035077](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/c0350774e77ec0112f8872565c1b7ddc08f572e7))
|
|
333
|
+
- **adr:** Integrations go through vendor CLIs as an ordinary employee ([#37](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/37)) ([f946b6e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f946b6ec0eb094231a0415234e7549cd185b726f))
|
|
334
|
+
- **adr:** Drafts are approved in place ([#55](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/55)) ([5be7090](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/5be7090745514c1aefe96f684cad6513ef3b5e79))
|
|
335
|
+
- **adr:** Layers and playbooks are plugins ([#42](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/42)) ([5d7c7e1](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/5d7c7e11bbd4e0b39a2431eb3f6234dac913078a))
|
|
336
|
+
- **adr:** Accept vendor CLIs as the integration transport ([#58](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/58)) ([f002279](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f00227979d90f2afc3ad50a6600cc6d0b3760cf1))
|
|
337
|
+
- **adr:** A web head, a React app served by the API head ([#54](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/54)) ([8c44191](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/8c441915a6f32df90b3498888d67293341289a28))
|
|
338
|
+
|
|
339
|
+
### 🧪 Testing
|
|
340
|
+
|
|
341
|
+
- **kernel:** Keep the config property tests inside the unit time budget ([#33](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/33)) ([d81c869](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/d81c8691e79aba3e7a908aea6d833397d0cda3d3))
|
|
342
|
+
- **dx:** Make template-test audits the rendered plugin by default ([#50](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/50)) ([febbef9](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/febbef9cd8a0b6a686c1be56cafa227f5f20fc50))
|
|
343
|
+
|
|
344
|
+
### 🏗️ Build and CI
|
|
345
|
+
|
|
346
|
+
- **dx:** Run scripts with PEP 723 inline metadata ([#19](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/19)) ([957512f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/957512fa48e56459de1e5ae4106214a7f9d3e458))
|
|
347
|
+
- **dx:** Assemble the README demo from module snippets ([#25](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/25)) ([5d8353b](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/5d8353b7593faeb23230b75b7462e4578efd856d))
|
|
348
|
+
- **dx:** Make install sets up every build tool on macOS and Linux ([#43](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/43)) ([50f4e4f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/50f4e4fc87d7ea7326a683825c35eb275177fe79))
|
|
349
|
+
- Run the coverage suite in parallel so it fits its time limit ([#52](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/52)) ([9026a85](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/9026a85d9f8231915d5e69124664ecdde2253456))
|
|
350
|
+
|
|
351
|
+
## [0.2.0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.2.0) - 2026-10-24
|
|
352
|
+
|
|
353
|
+
Heinzelmännchen now works for you while you're away. A daemon on your machine runs jobs on a schedule and leaves
|
|
354
|
+
a receipt for every run; workflow contracts, Markdown files with frontmatter, compile to those jobs. Modules declare
|
|
355
|
+
the capabilities they need (`tracker:read`, `documents:read,write`) and configuration binds adapters to them; agent
|
|
356
|
+
runners for Claude Code and any command-line agent draft the results. Credentials live in the OS keychain, `hz` tells
|
|
357
|
+
you when a newer release exists, and nothing is sent home. Adapters for GitHub and Atlassian ship as plugins.
|
|
358
|
+
|
|
359
|
+
### ✨ Features
|
|
360
|
+
|
|
361
|
+
- **system:** Check for a newer release ([#8](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/8)) ([0ce849f](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/0ce849f2469d253a245ed8c8591ae6934b735a5e))
|
|
362
|
+
- **system:** Credentials in the OS keychain ([#6](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/6)) ([be8bdc6](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/be8bdc6cd5a86236cd3b11f93c0f7d4e33a19318))
|
|
363
|
+
- **system:** Local daemon head with jobs, ticks and receipts ([#7](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/7)) ([2b160b2](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/2b160b28ddf88bbc73d9cbe2648ba6446cdb2e3f))
|
|
364
|
+
- **kernel:** Capability protocols, dependencies and agent runners ([#9](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/9)) ([700780e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/700780ec4078243bdfa8f514a1e061de9f83f463))
|
|
365
|
+
- **workflow:** Contracts compile to daemon jobs ([#11](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/11)) ([b673212](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b67321229f712be40a6537fd98c5928629507d9f))
|
|
366
|
+
|
|
367
|
+
### 🐛 Bug fixes
|
|
368
|
+
|
|
369
|
+
- **release:** Regenerate derived files after the version bump ([#3](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/3)) ([f1afc3e](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/f1afc3e22fc3d500347050af51d1fbedc137f805))
|
|
370
|
+
- **deps:** Audit plugins without the git-pinned heinzel package ([#4](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/4)) ([ddc5eef](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/ddc5eef07ee1a183a86754e4c93bb8d2467173f7))
|
|
371
|
+
- **template:** Plugins start at version 0.0.0 for bump-my-version ([#5](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/5)) ([79a6a88](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/79a6a88e715e80633c57711e137f5b9d4ed738e0))
|
|
372
|
+
|
|
373
|
+
### 🧹 Miscellaneous
|
|
374
|
+
|
|
375
|
+
- **dx:** Codify CI parity checks (terminal, pre-push, audit) ([#10](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/pull/10)) ([4b11ac4](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/4b11ac40f00a22a6388f8e7297a83cb04d824e96))
|
|
376
|
+
|
|
377
|
+
## [0.1.0](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/releases/tag/v0.1.0) - 2026-10-24
|
|
378
|
+
|
|
379
|
+
The first release: the foundation the workflows will build on. A kernel that discovers modules and the lets they
|
|
380
|
+
advertise; every operation as a CLI command, an MCP tool and a REST endpoint; layered configuration, health checks
|
|
381
|
+
and plugin management with a template and a first-party `clock` plugin; agent skills for coding agents; and releases
|
|
382
|
+
with provenance attestations and an SBOM. What comes next is in the [roadmap](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/blob/main/INTENT.md#where-we-are).
|
|
383
|
+
|
|
384
|
+
### ✨ Features
|
|
385
|
+
|
|
386
|
+
- Heinzelmännchen foundation ([b40f8eb](https://github.com/helmut-hoffer-von-ankershoffen/heinzel/commit/b40f8eb09950070326ca21765b9a2ceca180d2a5))
|