Skip to content

task-dock: yield to the new composer session controls; re-verify against Hermes 284d220ba4 - #25

Merged
thomasbek3 merged 1 commit into
masterfrom
compat/hermes-20260911
Sep 12, 2026
Merged

thomasbek3 merged 1 commit into
masterfrom
compat/hermes-20260911

Conversation

@thomasbek3

Copy link
Copy Markdown
Owner

Hermes 0.21.2 put session automation controls (goal / loop / heartbeat) into the same composer status stack as the stock Tasks widget. Task Dock's unanchored /Tasks \d+\/\d+/ scan matched prose inside those controls (a loop until clause, a goal criterion) and hid them. Header matching is now anchored, the app's own status-stack widgets are skipped, and markLiveSources refuses to hide anything inside or containing one — Task Dock yields, never the reverse.

Also: pl-0.5 went unused upstream so it no longer exists in the compiled sheet (swapped for px-0.5, same geometry), and the docs still told people to install desktop plugins per profile when the root is now app-level.

Full re-verification against 284d220ba4 (1221 commits on from the previous stamp): SDK exports, plugin contract, runtime-loader allowlist, desktopPluginsRoot/readPluginSource, every DOM anchor and data-slot, the Bot Chat caption and routines-pane gate, both Python plugins' doctor runs. 61 JS + 36 + 7 + 26 Python tests, installer/bind/manifest all green.

🤖 Generated with Claude Code

…kit against Hermes 284d220ba4

Hermes 0.21.2 added session automation controls (goal / loop / heartbeat) into
the same composer status stack that carries the stock Tasks widget. Task Dock
scanned that whole subtree for an UNANCHORED /Tasks \d+\/\d+/ against
textContent, and those controls render user- and agent-authored prose in plain
spans, so a loop "until" clause or a goal criterion reading "Tasks 3/3 done"
was taken for a Tasks header: the control's body got stamped as a captured
source, hidden by the plugin's own display:none rule, and a dock was published
from someone's sentence.

- Header discovery now anchors (/^Tasks \d+\/\d+/). A real header IS the label;
  the running spinner's braille frames trail it, so anchoring is safe.
- The app's own status-stack widgets (session-control-*, composer-subagents,
  composer-subagent-detail, subagent-transcript) are skipped during the scan,
  and markLiveSources refuses to hide a node that sits inside or contains one.
  If stock markup ever reshapes, the dock duplicates rather than swallows.
  Both helpers fail open on a selector throw, so an older engine behaves as before.
- computer-viewer: pl-0.5 -> px-0.5 (pr-1 still overrides the right half, so the
  geometry is unchanged). A disk plugin's classes are never scanned by the app's
  Tailwind build, and pl-0.5 went unused upstream, silently zeroing that padding.
- Docs: the desktop-plugin root is no longer profile-scoped (fs-ipc resolves
  <HERMES_HOME>/desktop-plugins and migrates anything left under profiles/*);
  AGENTS.md and the computer-viewer README said otherwise. The Python halves
  are still per-profile.

Re-verified against hermes-agent 284d220ba4 (v0.21.2, 2026-09-11), 1221 commits
on from the previous stamp: zero SDK exports removed, plugin contract unchanged,
runtime-loader allowlist and the desktopPluginsRoot/readPluginSource bridge
intact, every DOM anchor and data-slot still produced, Bot Chat caption and the
routines-pane gate unchanged, both Python plugins pass doctor. READMEs stamped.

3 new tests (61 JS total), all suites green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@thomasbek3
thomasbek3 merged commit 5917aae into master Sep 12, 2026
2 of 6 checks passed
@thomasbek3
thomasbek3 deleted the compat/hermes-20260911 branch September 12, 2026 04:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant