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.
Files changed (287) hide show
  1. heinzel/CHANGELOG.md +386 -0
  2. heinzel/__init__.py +346 -0
  3. heinzel/__main__.py +6 -0
  4. heinzel/heads/__init__.py +5 -0
  5. heinzel/heads/_exposure.py +25 -0
  6. heinzel/heads/_presence.py +31 -0
  7. heinzel/heads/_stream.py +98 -0
  8. heinzel/heads/api/__init__.py +387 -0
  9. heinzel/heads/api/_auth.py +97 -0
  10. heinzel/heads/cli/__init__.py +443 -0
  11. heinzel/heads/cli/_art_data.py +71 -0
  12. heinzel/heads/cli/_branding.py +24 -0
  13. heinzel/heads/cli/_chat.py +233 -0
  14. heinzel/heads/cli/_command.py +204 -0
  15. heinzel/heads/cli/_join.py +258 -0
  16. heinzel/heads/cli/_journey.py +127 -0
  17. heinzel/heads/cli/_playful.py +102 -0
  18. heinzel/heads/cli/_progress.py +70 -0
  19. heinzel/heads/cli/_render.py +110 -0
  20. heinzel/heads/cli/_serve.py +239 -0
  21. heinzel/heads/cli/_setup.py +603 -0
  22. heinzel/heads/cli/_update.py +104 -0
  23. heinzel/heads/daemon/__init__.py +55 -0
  24. heinzel/heads/mcp/__init__.py +193 -0
  25. heinzel/heads/mcp/_skills.py +59 -0
  26. heinzel/heads/web/__init__.py +527 -0
  27. heinzel/heads/web/_devices.py +147 -0
  28. heinzel/heads/web/_lifecycle.py +276 -0
  29. heinzel/heads/web/_pairing.py +39 -0
  30. heinzel/heads/web/_ports.py +51 -0
  31. heinzel/heads/web/_shutdown.py +152 -0
  32. heinzel/heads/web/_stream.py +103 -0
  33. heinzel/heads/web/_terminal.py +326 -0
  34. heinzel/heads/web/_updates.py +132 -0
  35. heinzel/heads/web/static/.source-sha256 +1 -0
  36. heinzel/heads/web/static/assets/elk.bundled-DrVNm0j8.js +24 -0
  37. heinzel/heads/web/static/assets/index-WPlg-AWd.js +65 -0
  38. heinzel/heads/web/static/assets/index-oRMWxQ0X.css +1 -0
  39. heinzel/heads/web/static/favicon.ico +0 -0
  40. heinzel/heads/web/static/favicon.svg +40 -0
  41. heinzel/heads/web/static/icons/apple-touch-icon.png +0 -0
  42. heinzel/heads/web/static/icons/icon-192.png +0 -0
  43. heinzel/heads/web/static/icons/icon-512.png +0 -0
  44. heinzel/heads/web/static/icons/maskable-512.png +0 -0
  45. heinzel/heads/web/static/index.html +91 -0
  46. heinzel/heads/web/static/licenses.md +2843 -0
  47. heinzel/heads/web/static/loading-dance.svg +171 -0
  48. heinzel/heads/web/static/manifest.webmanifest +31 -0
  49. heinzel/heads/web/static/sw.js +95 -0
  50. heinzel/kernel/AGENTS.md +71 -0
  51. heinzel/kernel/CLAUDE.md +1 -0
  52. heinzel/kernel/__init__.py +535 -0
  53. heinzel/kernel/_agents.py +126 -0
  54. heinzel/kernel/_ai.py +161 -0
  55. heinzel/kernel/_bindings.py +703 -0
  56. heinzel/kernel/_boot.py +14 -0
  57. heinzel/kernel/_capabilities.py +250 -0
  58. heinzel/kernel/_chat.py +48 -0
  59. heinzel/kernel/_config.py +318 -0
  60. heinzel/kernel/_contributions.py +668 -0
  61. heinzel/kernel/_credentials.py +215 -0
  62. heinzel/kernel/_directory.py +140 -0
  63. heinzel/kernel/_discovery.py +106 -0
  64. heinzel/kernel/_duration.py +85 -0
  65. heinzel/kernel/_errors.py +9 -0
  66. heinzel/kernel/_exposure.py +93 -0
  67. heinzel/kernel/_git.py +245 -0
  68. heinzel/kernel/_identity.py +204 -0
  69. heinzel/kernel/_installation.py +282 -0
  70. heinzel/kernel/_jobs.py +25 -0
  71. heinzel/kernel/_kernel.py +617 -0
  72. heinzel/kernel/_layers.py +520 -0
  73. heinzel/kernel/_lets.py +400 -0
  74. heinzel/kernel/_local_web.py +16 -0
  75. heinzel/kernel/_module.py +860 -0
  76. heinzel/kernel/_notifications.py +102 -0
  77. heinzel/kernel/_org.py +102 -0
  78. heinzel/kernel/_paths.py +46 -0
  79. heinzel/kernel/_playbooks.py +292 -0
  80. heinzel/kernel/_presence.py +22 -0
  81. heinzel/kernel/_progress.py +41 -0
  82. heinzel/kernel/_prompter.py +357 -0
  83. heinzel/kernel/_protocols.py +848 -0
  84. heinzel/kernel/_release.py +144 -0
  85. heinzel/kernel/_session.py +75 -0
  86. heinzel/kernel/_session_io.py +174 -0
  87. heinzel/kernel/_session_store.py +477 -0
  88. heinzel/kernel/_settings.py +200 -0
  89. heinzel/kernel/_signals.py +14 -0
  90. heinzel/kernel/_skills.py +634 -0
  91. heinzel/kernel/_soundscapes.py +450 -0
  92. heinzel/kernel/_spec.py +21 -0
  93. heinzel/kernel/_telemetry.py +232 -0
  94. heinzel/kernel/_text.py +40 -0
  95. heinzel/kernel/_theme_signals.py +104 -0
  96. heinzel/kernel/_themes.py +1101 -0
  97. heinzel/kernel/assets/theme/logo/mark.svg +183 -0
  98. heinzel/kernel/assets/theme/logo/wordmark-dark.svg +186 -0
  99. heinzel/kernel/assets/theme/logo/wordmark-light.svg +186 -0
  100. heinzel/modules/__init__.py +1 -0
  101. heinzel/modules/ai/__init__.py +105 -0
  102. heinzel/modules/ai/_models.py +70 -0
  103. heinzel/modules/ai/_usage.py +221 -0
  104. heinzel/modules/ai/access/__init__.py +152 -0
  105. heinzel/modules/ai/access/_chatgpt.py +278 -0
  106. heinzel/modules/ai/access/_discovery.py +168 -0
  107. heinzel/modules/ai/access/_gateway.py +210 -0
  108. heinzel/modules/ai/access/_models.py +216 -0
  109. heinzel/modules/ai/access/_pydantic.py +270 -0
  110. heinzel/modules/ai/access/_service.py +295 -0
  111. heinzel/modules/graph/__init__.py +60 -0
  112. heinzel/modules/graph/_build.py +508 -0
  113. heinzel/modules/graph/_models.py +168 -0
  114. heinzel/modules/graph/_render.py +37 -0
  115. heinzel/modules/graph/_schedule.py +77 -0
  116. heinzel/modules/graph/_service.py +93 -0
  117. heinzel/modules/graph/templates/team-graph-keeper.prose.md +59 -0
  118. heinzel/modules/heinzel/__init__.py +336 -0
  119. heinzel/modules/heinzel/_contracts.py +596 -0
  120. heinzel/modules/heinzel/_engine.py +451 -0
  121. heinzel/modules/heinzel/_graph.py +259 -0
  122. heinzel/modules/heinzel/_measure.py +153 -0
  123. heinzel/modules/heinzel/_models.py +843 -0
  124. heinzel/modules/heinzel/_playbooks.py +318 -0
  125. heinzel/modules/heinzel/_promises.py +43 -0
  126. heinzel/modules/heinzel/_render.py +374 -0
  127. heinzel/modules/heinzel/_retention.py +180 -0
  128. heinzel/modules/heinzel/_service.py +1595 -0
  129. heinzel/modules/heinzel/_session_bodies.py +39 -0
  130. heinzel/modules/heinzel/_session_crud.py +327 -0
  131. heinzel/modules/heinzel/_session_models.py +392 -0
  132. heinzel/modules/heinzel/_session_operations.py +107 -0
  133. heinzel/modules/heinzel/_session_protocol.py +49 -0
  134. heinzel/modules/heinzel/_session_repository.py +131 -0
  135. heinzel/modules/heinzel/_starter.py +134 -0
  136. heinzel/modules/org/__init__.py +99 -0
  137. heinzel/modules/org/_agenda.py +168 -0
  138. heinzel/modules/org/_discovery.py +164 -0
  139. heinzel/modules/org/_models.py +247 -0
  140. heinzel/modules/org/_profile.py +199 -0
  141. heinzel/modules/org/_render.py +54 -0
  142. heinzel/modules/org/_sync.py +284 -0
  143. heinzel/modules/system/__init__.py +101 -0
  144. heinzel/modules/system/_github.py +75 -0
  145. heinzel/modules/system/_models.py +102 -0
  146. heinzel/modules/system/_render.py +75 -0
  147. heinzel/modules/system/_service.py +316 -0
  148. heinzel/modules/system/_update.py +564 -0
  149. heinzel/modules/system/agent/__init__.py +30 -0
  150. heinzel/modules/system/agent/_models.py +37 -0
  151. heinzel/modules/system/agent/_service.py +93 -0
  152. heinzel/modules/system/capability/__init__.py +35 -0
  153. heinzel/modules/system/capability/_models.py +55 -0
  154. heinzel/modules/system/capability/_render.py +35 -0
  155. heinzel/modules/system/capability/_service.py +167 -0
  156. heinzel/modules/system/changelog/__init__.py +141 -0
  157. heinzel/modules/system/claude/__init__.py +44 -0
  158. heinzel/modules/system/claude/_models.py +85 -0
  159. heinzel/modules/system/claude/_render.py +55 -0
  160. heinzel/modules/system/claude/_scan.py +488 -0
  161. heinzel/modules/system/claude/_service.py +58 -0
  162. heinzel/modules/system/config/__init__.py +101 -0
  163. heinzel/modules/system/config/_models.py +80 -0
  164. heinzel/modules/system/config/_render.py +28 -0
  165. heinzel/modules/system/config/_reveal.py +103 -0
  166. heinzel/modules/system/config/_schema.py +63 -0
  167. heinzel/modules/system/config/_service.py +487 -0
  168. heinzel/modules/system/connector/__init__.py +51 -0
  169. heinzel/modules/system/connector/_models.py +93 -0
  170. heinzel/modules/system/connector/_render.py +67 -0
  171. heinzel/modules/system/connector/_service.py +208 -0
  172. heinzel/modules/system/credential/__init__.py +49 -0
  173. heinzel/modules/system/credential/_models.py +48 -0
  174. heinzel/modules/system/credential/_service.py +245 -0
  175. heinzel/modules/system/daemon/__init__.py +134 -0
  176. heinzel/modules/system/daemon/_ledger.py +172 -0
  177. heinzel/modules/system/daemon/_models.py +165 -0
  178. heinzel/modules/system/daemon/_render.py +72 -0
  179. heinzel/modules/system/daemon/_runtime.py +203 -0
  180. heinzel/modules/system/daemon/_schedule.py +103 -0
  181. heinzel/modules/system/daemon/_service.py +704 -0
  182. heinzel/modules/system/daemon/_status_item.py +99 -0
  183. heinzel/modules/system/daemon/_units.py +119 -0
  184. heinzel/modules/system/directory/__init__.py +21 -0
  185. heinzel/modules/system/directory/_guess.py +138 -0
  186. heinzel/modules/system/directory/_models.py +32 -0
  187. heinzel/modules/system/doctor/__init__.py +149 -0
  188. heinzel/modules/system/doctor/demo.tape +5 -0
  189. heinzel/modules/system/expert/__init__.py +56 -0
  190. heinzel/modules/system/expert/_models.py +26 -0
  191. heinzel/modules/system/expert/_service.py +61 -0
  192. heinzel/modules/system/layer/__init__.py +68 -0
  193. heinzel/modules/system/layer/_models.py +73 -0
  194. heinzel/modules/system/layer/_render.py +68 -0
  195. heinzel/modules/system/layer/_service.py +160 -0
  196. heinzel/modules/system/notify/__init__.py +128 -0
  197. heinzel/modules/system/notify/_channels.py +92 -0
  198. heinzel/modules/system/notify/_macos.py +225 -0
  199. heinzel/modules/system/notify/_models.py +160 -0
  200. heinzel/modules/system/notify/_native.py +196 -0
  201. heinzel/modules/system/notify/_policy.py +139 -0
  202. heinzel/modules/system/notify/_render.py +89 -0
  203. heinzel/modules/system/notify/_service.py +478 -0
  204. heinzel/modules/system/notify/_store.py +143 -0
  205. heinzel/modules/system/notify/_watch.py +80 -0
  206. heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/Info.plist +28 -0
  207. heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/MacOS/notifier +0 -0
  208. heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/Resources/heinzel.icns +0 -0
  209. heinzel/modules/system/notify/macos/HeinzelNotifier.app/Contents/_CodeSignature/CodeResources +128 -0
  210. heinzel/modules/system/notify/macos/Info.plist +28 -0
  211. heinzel/modules/system/notify/macos/heinzel-swarm.svg +183 -0
  212. heinzel/modules/system/notify/macos/heinzel.svg +40 -0
  213. heinzel/modules/system/notify/macos/icon.swift +50 -0
  214. heinzel/modules/system/notify/macos/main.swift +101 -0
  215. heinzel/modules/system/plugin/__init__.py +161 -0
  216. heinzel/modules/system/plugin/_models.py +181 -0
  217. heinzel/modules/system/plugin/_render.py +120 -0
  218. heinzel/modules/system/plugin/_service.py +938 -0
  219. heinzel/modules/system/plugin/_sources.py +436 -0
  220. heinzel/modules/system/plugin/docs/__init__.py +89 -0
  221. heinzel/modules/system/plugin/docs/_build.py +50 -0
  222. heinzel/modules/system/plugin/docs/_files.py +131 -0
  223. heinzel/modules/system/plugin/docs/_models.py +269 -0
  224. heinzel/modules/system/plugin/docs/_render.py +432 -0
  225. heinzel/modules/system/plugin/docs/_service.py +692 -0
  226. heinzel/modules/system/resource/__init__.py +106 -0
  227. heinzel/modules/system/runner/__init__.py +151 -0
  228. heinzel/modules/system/runner/_access.py +109 -0
  229. heinzel/modules/system/runner/_claude.py +463 -0
  230. heinzel/modules/system/runner/_codex.py +307 -0
  231. heinzel/modules/system/runner/_command.py +266 -0
  232. heinzel/modules/system/runner/_models.py +145 -0
  233. heinzel/modules/system/runner/_process.py +155 -0
  234. heinzel/modules/system/runner/chat/__init__.py +159 -0
  235. heinzel/modules/system/runner/chat/_models.py +173 -0
  236. heinzel/modules/system/runner/chat/_policy.py +70 -0
  237. heinzel/modules/system/runner/chat/_service.py +353 -0
  238. heinzel/modules/system/runner/chat/_store.py +319 -0
  239. heinzel/modules/system/skill/__init__.py +159 -0
  240. heinzel/modules/system/skill/_export.py +241 -0
  241. heinzel/modules/system/skill/_models.py +102 -0
  242. heinzel/modules/system/skill/_service.py +293 -0
  243. heinzel/modules/system/skill/skills/explain-heinzel/SKILL.md +22 -0
  244. heinzel/modules/system/sound/__init__.py +100 -0
  245. heinzel/modules/system/sound/_models.py +137 -0
  246. heinzel/modules/system/sound/_service.py +286 -0
  247. heinzel/modules/system/sound/soundscapes/ceo-mode.toml +8 -0
  248. heinzel/modules/system/sound/soundscapes/claude-fm.toml +9 -0
  249. heinzel/modules/system/sound/soundscapes/focus.toml +9 -0
  250. heinzel/modules/system/state/__init__.py +86 -0
  251. heinzel/modules/system/state/_models.py +150 -0
  252. heinzel/modules/system/state/_render.py +28 -0
  253. heinzel/modules/system/state/_service.py +398 -0
  254. heinzel/modules/system/state/_sink.py +360 -0
  255. heinzel/modules/system/state/_streams.py +220 -0
  256. heinzel/modules/system/theme/__init__.py +105 -0
  257. heinzel/modules/system/theme/_models.py +118 -0
  258. heinzel/modules/system/theme/_service.py +396 -0
  259. heinzel/modules/system/ui/__init__.py +250 -0
  260. heinzel/modules/system/ui/_models.py +95 -0
  261. heinzel/modules/system/ui/_service.py +489 -0
  262. heinzel/modules/team/__init__.py +139 -0
  263. heinzel/modules/team/_context.py +44 -0
  264. heinzel/modules/team/_models.py +399 -0
  265. heinzel/modules/team/_render.py +82 -0
  266. heinzel/modules/team/_repo.py +57 -0
  267. heinzel/modules/team/_roster.py +95 -0
  268. heinzel/modules/team/_service.py +1001 -0
  269. heinzel/modules/team/_template.py +144 -0
  270. heinzel/modules/team/_yaml.py +162 -0
  271. heinzel/modules/telemetry/__init__.py +187 -0
  272. heinzel/modules/telemetry/_models.py +73 -0
  273. heinzel/modules/telemetry/_render.py +27 -0
  274. heinzel/modules/telemetry/_service.py +357 -0
  275. heinzel/py.typed +0 -0
  276. heinzel/skills/hz/SKILL.md +57 -0
  277. heinzel/skills/hz-init/SKILL.md +38 -0
  278. heinzel/skills/hz-init/scripts/install.sh +56 -0
  279. heinzel/skills/hz-uninstall/SKILL.md +18 -0
  280. heinzel/skills/hz-uninstall/scripts/uninstall.sh +56 -0
  281. heinzel/testing.py +261 -0
  282. heinzel-0.7.14.dist-info/METADATA +403 -0
  283. heinzel-0.7.14.dist-info/RECORD +287 -0
  284. heinzel-0.7.14.dist-info/WHEEL +4 -0
  285. heinzel-0.7.14.dist-info/entry_points.txt +6 -0
  286. heinzel-0.7.14.dist-info/licenses/ATTRIBUTIONS.md +9047 -0
  287. 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))