Skip to content

fix: keep lobster theme nodes across a control UI reload - #3

Merged
steipete merged 2 commits into
openclaw:mainfrom
SebTardif:fix/tidepool-f002
Oct 7, 2026
Merged

steipete merged 2 commits into
openclaw:mainfrom
SebTardif:fix/tidepool-f002

Conversation

@SebTardif

@SebTardif SebTardif commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Reloading the Lobster Control UI plugin activates its replacement before disposing the previous activation. The previous cleanup looked up nodes by ID and removed the replacement font link and artwork style.

Each activation now installs and owns its own DOM nodes, and disposal removes only those objects. The plugin remains self-contained. Maintainer follow-up simplifies the DOM adapter, documents reload behavior, and incorporates the regression-test CI wiring landed in #2.

Validation: reproduced the baseline failure against the real activation source with a synthetic document (both nodes disappeared after old disposal); all four ownership regression tests pass. A clean Linux environment passed pnpm install --frozen-lockfile && pnpm test && pnpm build. Independent Codex review found no actionable P0–P2 findings. CI: https://github.com/openclaw/tidepool/actions/runs/37597849171

Thanks @SebTardif for the fix and original live reload investigation. Theme selection and full gateway appearance rendering were not revalidated in this maintenance pass.

The disposer removed font and artwork nodes by id. The host activates
the replacement before disposing the previous owner, so the new
activation reused those nodes and the old disposer deleted them.
Install fresh nodes and remove only the ones this activation created.

Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
@clawsweeper

clawsweeper Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Oct 4, 2026
@clawsweeper

clawsweeper Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed October 7, 2026, 5:07 AM ET / 09:07 UTC (Revision 8).

ClawSweeper review

What this changes

The Lobster theme gives each activation its own font and artwork elements, adds cleanup regression tests, and documents reload behavior.

Merge readiness

✅ Ready for maintainer review

This PR remains necessary: current main still removes Lobster’s replacement styling during reload. The focused repair preserves the previously demonstrated behavior, with no blocking findings.

Priority: P2
Reviewed head: 2e7533d02e9e3422d66df62f563003a944d248f0

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused ownership repair with preserved browser reload evidence and supplemental regression coverage.
Proof confidence 🐚 platinum hermit (4/6) Sufficient (terminal): Preserved from the completed review: a real Chrome gateway reload showed replacement Lobster font and artwork elements surviving old-owner disposal. The ownership helper is unchanged and the latest adapter simplification preserves its native operations; the raw trace was not independently re-viewed in this cycle. No stored-data contract changes.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (terminal): Preserved from the completed review: a real Chrome gateway reload showed replacement Lobster font and artwork elements surviving old-owner disposal. The ownership helper is unchanged and the latest adapter simplification preserves its native operations; the raw trace was not independently re-viewed in this cycle. No stored-data contract changes.
Evidence reviewed 7 items Pinned introduced repair: The complete pinned delta changes five files. Cleanup retains exact element references; font URLs, artwork contents, configuration, dependencies, and persisted formats remain unchanged.
Current main still needs this change: Main reuses existing Lobster elements and subsequently removes them by ID. The GitHub branch endpoint confirmed the pinned main SHA; the releases endpoint returned no releases. The merged Red Hat repair does not fix this separate plugin.
Dependency lifecycle contract: The target directly imports openclaw/plugin-sdk/control-ui and declares OpenClaw 2026.9.5 compatibility. That dependency revision initializes the replacement before disposing the previous owner, confirming the lifecycle relevant to this repair.
Findings None None.
Security None None.

How this fits together

The Lobster plugin adds fonts and background artwork to OpenClaw’s Control UI when custom plugin UI is enabled. Reloading activates a replacement before disposing the previous activation.

flowchart LR
 A[Plugin reload] --> B[Lobster activation]
 B --> C[Create font and artwork elements]
 C --> D[Replace previous elements]
 D --> E[Dispose previous activation]
 E --> F[Replacement styling remains]
Loading

Before merge

None.

Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Production and test LOC production +50/-19; tests +123/-0 The production growth isolates element ownership for focused lifecycle regression coverage.

Technical review

Best possible solution:

Keep activation-owned cleanup inside the Lobster plugin so replacement fonts and artwork survive reloads.

Do we have a high-confidence way to reproduce the issue?

Yes, source establishes the path: activate Lobster twice, then dispose the first activation; main’s ID-based cleanup removes the reused elements. This review did not execute target code.

Is this the best way to solve the issue?

Yes, exact element ownership is a narrow repair consistent with the host lifecycle and the repository’s self-contained plugin design.

AGENTS.md: not found in the target repository.

Codex review notes: model internal, reasoning medium; reviewed against 2f843aab51eb.

Labels

Label changes:

No label changes.

Label justifications:

  • P2: This repairs a bounded reload defect in optional Lobster theme styling.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): Preserved from the completed review: a real Chrome gateway reload showed replacement Lobster font and artwork elements surviving old-owner disposal. The ownership helper is unchanged and the latest adapter simplification preserves its native operations; the raw trace was not independently re-viewed in this cycle. No stored-data contract changes.
  • proof: sufficient: Contributor real behavior proof is sufficient. Preserved from the completed review: a real Chrome gateway reload showed replacement Lobster font and artwork elements surviving old-owner disposal. The ownership helper is unchanged and the latest adapter simplification preserves its native operations; the raw trace was not independently re-viewed in this cycle. No stored-data contract changes.

Evidence

What I checked:

  • Pinned introduced repair: The complete pinned delta changes five files. Cleanup retains exact element references; font URLs, artwork contents, configuration, dependencies, and persisted formats remain unchanged. (plugins/lobster-theme/src/control-ui-nodes.ts:20, 2e7533d02e9e)
  • Current main still needs this change: Main reuses existing Lobster elements and subsequently removes them by ID. The GitHub branch endpoint confirmed the pinned main SHA; the releases endpoint returned no releases. The merged Red Hat repair does not fix this separate plugin. (plugins/lobster-theme/src/control-ui.ts:35, 2f843aab51eb)
  • Dependency lifecycle contract: The target directly imports openclaw/plugin-sdk/control-ui and declares OpenClaw 2026.9.5 compatibility. That dependency revision initializes the replacement before disposing the previous owner, confirming the lifecycle relevant to this repair. (ui/src/plugins/control-ui-runtime.ts:299, ec9c1a13db89)
  • Previously accepted real browser proof: The completed review at fix: keep lobster theme nodes across a control UI reload #3 (comment) records a macOS Chrome trace against OpenClaw 2026.9.5: after plugins.controlUi.reload, old elements were disconnected and distinct replacement font and artwork elements remained connected. This review inspected that retained assessment; the original raw browser trace is not supplied in the current body or scratch directory. Palette painting was explicitly outside that proof. (96aaf54434b2)
  • Proof continuity across the latest change: The earlier ownership helper matches the current helper. The latest Lobster runtime change replaces a forwarding DOM adapter with the document itself, preserving the same native element operations. New README and changelog text do not expand the runtime behavior. (plugins/lobster-theme/src/control-ui.ts:29, 2e7533d02e9e)
  • Feature-history routing: Main-line blame, raw commit inspection, and GitHub commit metadata connect steipete to the existing Lobster source and merged feat: add the Lobster theme plugin #1. Deeper local follow-history and head blame encountered unavailable promisor objects; GitHub source inspection supplied the earlier helper comparison. (plugins/lobster-theme/src/control-ui.ts:15, 523c316407ff)

Likely related people:

  • unknown: The claimed source-line change could not be verified from bounded local history. (role: source history unknown; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (7 earlier review cycles)
  • reviewed 2026-10-04T02:52:06.746Z sha 96aaf54 :: needs real behavior proof before merge. :: none
  • reviewed 2026-10-04T18:22:53.057Z sha 96aaf54 :: needs real behavior proof before merge. :: none
  • reviewed 2026-10-05T18:38:13.390Z sha 96aaf54 :: needs real behavior proof before merge. :: none
  • reviewed 2026-10-06T15:48:01.103Z sha 96aaf54 :: needs real behavior proof before merge. :: none
  • reviewed 2026-10-06T21:02:07.962Z sha 96aaf54 :: needs real behavior proof before merge. :: none
  • reviewed 2026-10-06T21:32:30.433Z sha 96aaf54 :: needs maintainer review before merge. :: none
  • reviewed 2026-10-07T03:38:30.974Z sha 96aaf54 :: needs maintainer review before merge. :: none

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Oct 6, 2026
@steipete
steipete merged commit 7fc69d2 into openclaw:main Oct 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants