Repository navigation
Releases
Releases · JustinNeumann/dieter-addon
0.6.431.49
- The page opens on live data. The web host disconnected Dieter's core from the gateway and the daemon two
minutes after the last tab was hidden, and Home Assistant loads the panel's frame afresh each time it is opened, so
almost every open reconnected from scratch first (session, machines, devices, then the machine streams): 2–5 s on
"connecting" or on old data after the page itself had started in under a second. The core now connects when the
add-on starts and stays connected. With the embedded gateway (the default) the gateway and the daemon are on the
same machine, so this costs next to nothing; with an external gateway it is one more device that stays online.- The web host's
DIETER_WEB_HOST_IDLE_MS(milliseconds, not an add-on option) still sets a grace instead. - The log says how long connecting took (
core connecting (took … ms)).
- The web host's
0.6.431.48
- Fix: scheduled runs sent no push. A schedule's run has the card id
c_sched_<hex>, and the web host's Home
Assistant relay let onlyc_<hex>through, so itsdieter_turn_finished,dieter_card_reviewand
dieter_questionwere refused (home assistant relay: refused POST events/…, 403 in the operator's log). They
now reach Home Assistant like any other card's.
0.6.431.47
- The page opens where you left it. Home Assistant loads the add-on's frame afresh each time you come back to it
from another panel or dashboard (the add-on's panel, or a dashboard view that embeds it), and the page started over
at the Inbox. It now keeps its place (the open tab and each tab's screens: a conversation and its pane, a board,
Mail, a Dreamfall board, a tool page) in the browser's storage and goes back there on a load without a deep link.- Per browser and per address: the Companion app, a desktop browser, local and Nabu Casa each keep their own.
- A deep link (a push,
?route=) still opens its target; a conversation that is gone since leaves the place. - Sheets (New task, Share) and terminals, screens and open files are not kept: the page opens on the screen
below them.
0.6.431.46
- Fix: New project (Projects → Add) could not create a project and did not say why.
- A failed Create now shows the daemon's reason in the sheet; before it went to the snackbar behind the sheet's
scrim, so the button looked dead. - A relative path on the add-on's machine is a folder in
/data/projects(the daemon took it from its working
directory,/, e.g./talk-tv-factory); the sheet shows the path it creates or opens. Other machines need an
absolute path, and~or..are refused with a hint. - The add-on's machine is picked when the sheet opens, and the sheet says that a project is a Git working tree:
Create a new Git repository starts a local one without a remote. - The page builds the sheet from the add-on's copy (
web/src/uiOverrides); the build fails when the fork changes
itsProjectEditor.ktuntil the copy has the change.
- A failed Create now shows the daemon's reason in the sheet; before it went to the snackbar behind the sheet's
0.6.431.45
- Fix: Prevent OOM kills and orphaned agent processes from interrupting active turns.
- Concurrency and available-memory gate (
patches/turn-resilience.mjs,runner.mjs): bounds concurrent active
agent turns across the host (defaultMaxSlotsbased on system RAM, e.g. 4 on an 8 GB Raspberry Pi) and waits for
MemAvailableheadroom on slots1..N-1while keeping slot0unconditionally open, preventing bursts of
simultaneously started cards from exhausting RAM and swap. - Prioritize add-on infrastructure over expendable agent subprocesses under OOM (
raiseOomScoreAdj): harness
workers (runner.mjs) raise their/proc/self/oom_score_adjto500and agent CLI children (agy,claude,
codex,bridge.mjs) to600, so the Linux kernel OOM killer never kills the web host, operator, ordieter
daemon (oom_score_adj: 200) ahead of an agent worker. - Clean worker and provider-bridge teardown on daemon crash (
runner.mjs,local-sandbox.mjs,
antigravity-runtime.mjs,Supervisor.kt):runner.mjsguardsprocess.stdoutagainst unhandledEPIPEerrors and detects parent daemon death
(process.ppid), unwinding the active session and stopping sandbox child processes instead of crashing and
stranding children.local-sandbox.mjsprefixesexecwhen launching--bridge-state-dirprovider bridges under/bin/sh -lcso
node bridge.mjsis the process-group leader (PID == PGID) recorded inbridge-meta.json.antigravity-runtime.mjsawaitsagytermination indoStop()anddoDestroy(), escalating fromSIGTERMto
SIGKILLifagydoes not exit within the grace window.DaemonSupervisorreaps any lingering worker process groups (.dieter-worker-*.pid), provider bridges
(bridge-meta.json), and orphaned headless agent CLIs whenever the daemon exits or on operator startup.
- Concurrency and available-memory gate (
0.6.431.44
- Fix: Exclude staged runtimes, card worktrees, and build caches from Home Assistant backups.
backup_excludepreviously only excludeddieter/runtime/harness/**andprojects/**, leaving
dieter/worktrees/**(~7.3 GB),dieter/harness-staged/**(~2.1 GB),dieter/runtime/**, and agent tool/build
caches (.cache/**,.gradle/**,.npm/**,.kotlin/**,.codex/.tmp/**,.ai-sdk-harness/.agent-runs/**) in
the add-on archive and pushing automatic Home Assistant backups past the 5 GB Home Assistant Cloud upload limit.
0.6.431.43
- Fix: Usage shows when a limit resets as a local day and time to the minute.
- The Claude and OpenAI windows printed the daemon's raw timestamp (
resets 2026-11-08T19:59:59.664282+00:00),
which also squeezed the window name into one letter per line. They now readresets Sun 8 Nov 21:00, in the
browser's time zone. The page build patches the fork'sUsageScreen.ktfor this (AddonRules.resetClock).
- The Claude and OpenAI windows printed the daemon's raw timestamp (
0.6.431.42
- Fix: Ollama task titles now rename standalone chats, keep the task's language, and recover when Ollama fails.
- Both
dieter card showanddieter chat showwrap the conversation under"card", whereasTitles.retitle
previously looked up.obj(kind)("chat"), which was alwaysnullfor standalone chats and aborted before
renaming. - Tightened the
ai_task.generate_datainstructions to ignore any Home Assistant system language setting and keep
the exact language of the task text (preventing English prompts from getting German titles). - Invalidates
OllamaEntity's 10-minute cache immediately whenaiTitlefails, patches the board state on rename,
cancels pending model titles on manual rename (Cards.update), and falls back topeers/identity.json/
daemon/identity.jsoninSettings.localDaemonIdwhile the daemon is starting.
- Both
0.6.431.41
- Deduplicate empty auto-registered projects and extra local checkouts during gateway mode reconciliation.
- When a replica already holds both a canonical project and an empty duplicate project pointing at the same local
repository path (such as when0.6.431.39auto-registered empty projects before store adoption),adoptStore
now archives the empty duplicate project, retires its initial board, and detaches its checkout in CRDT so the
embedded gateway does not sync empty duplicates back. - Ensures each surviving local project has at most one active local checkout (preferring checkouts referenced by
cards, chats, and schedules) soAccountViewandsharedProjectsalways resolveproject.path.
- When a replica already holds both a canonical project and an empty duplicate project pointing at the same local
0.6.431.40
- Adopt projects, boards, cards, chats, checkouts, schedules, and Dreamfall pipelines across gateway modes (
external↔embedded).- Switching between
externalandembeddedgateway modes now adopts the previous mode's CRDT peer replica records
(project/*,board/*,label/*,assignment/*,checkout/*,item/*,schedule/*, andkv.*including
Dreamfall pipelines) into the active mode's account scope, re-signs owner-bound records (checkout.registration,
item.identity,item.summary,schedule.summary) with the active mode's daemon identity, and updates local
card markdown files (/data/dieter/cards/*.md,/data/dieter/archived-cards/*.md), checkouts
(/data/dieter/checkouts/*.json), andschedules.db. - If
0.6.431.39previously initialized an emptyembeddedreplica (with 0 items and duplicate auto-registered
projects) before adoptingexternalitems, the empty replica is automatically reset and replaced with the full
canonical projects, boards, cards, chats, and Dreamfall pipelines fromexternalmode.
- Switching between