Skip to content

feat(gateway): add configurable Control UI title#51067

Open
ryan-dyer-sp wants to merge 3 commits into
openclaw:mainfrom
ryan-dyer-sp:feat/51052
Open

feat(gateway): add configurable Control UI title#51067
ryan-dyer-sp wants to merge 3 commits into
openclaw:mainfrom
ryan-dyer-sp:feat/51052

Conversation

@ryan-dyer-sp

@ryan-dyer-sp ryan-dyer-sp commented Mar 20, 2026

Copy link
Copy Markdown

Summary

Describe the problem and fix in 2–5 bullets:
Allow users to set a custom browser tab title for the Control UI via the gateway.controlUi.title config option. Useful when running multiple OpenClaw instances to distinguish between tabs.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

User-visible / Behavior Changes

List user-visible changes (including defaults/config).
Title in browser tab is configurable.

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No
  • Data access scope changed? No
  • If any Yes, explain risk + mitigation:

Repro + Verification

Environment

  • OS: Ubuntu
  • Runtime/container: 2026.3.7
  • Model/provider:
  • Integration/channel (if any):
  • Relevant config (redacted):

Human Verification (required)

What you personally verified (not just CI), and how:

  • Verified scenarios:
    Changed title via the config variable and left at no config. Appropriate title in browser tab
image

Real behavior proof

  • Behavior or issue addressed: Browser tab title for the Control UI is hardcoded. Users running multiple OpenClaw instances cannot distinguish between tabs.
  • Real environment tested: Ubuntu, OpenClaw 2026.3.7, local gateway with Control UI enabled.
  • Exact steps or command run after this patch:
    1. Set gateway.controlUi.title: "Rainman" in config and run openclaw gateway run
    2. Open the Control UI in a browser
    3. Observe the browser tab title
    4. Remove the config key and restart; observe default title
  • Evidence after fix: Browser tab showing configured and default titles
  • Observed result after fix: Browser tab shows the configured title when gateway.controlUi.title is set, and falls back to the default "OpenClaw Control" when the key is absent.
  • What was not tested: Multi-instance scenarios with different titles simultaneously open in the same browser.

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.

Compatibility / Migration

  • Backward compatible? No. Rollback with title config in place will trigger crash for failing to validate the schema
  • Config/env changes? To use the functionality, yes?
  • Migration needed? No
  • If yes, exact upgrade steps:

Failure Recovery (if this breaks)

  • How to disable/revert this change quickly: Remove the title from configuration.
  • Files/config to restore:
  • Known bad symptoms reviewers should watch for:

Risks and Mitigations

List only real risks for this PR. Add/remove entries as needed. If none, write None.

None

@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui gateway Gateway runtime size: S labels Mar 20, 2026
@greptile-apps

greptile-apps Bot commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a gateway.controlUi.title config option that lets operators set a custom browser tab title for the Control UI — useful when running multiple OpenClaw instances simultaneously. The implementation is minimal and clean: the config field is wired through the Zod schema, the TypeScript type, the bootstrap config contract, the server-side JSON response, and the client-side bootstrap loader, with two new unit tests covering both the set and unset cases.

  • src/config/types.gateway.ts / zod-schema.ts: title?: string added to GatewayControlUiConfig and its Zod schema.
  • src/gateway/control-ui-contract.ts: title?: string added to ControlUiBootstrapConfig (the JSON shape served to the UI).
  • src/gateway/control-ui.ts: Passes config?.gateway?.controlUi?.title (may be undefined) into the satisfies ControlUiBootstrapConfig spread; undefined is omitted by JSON.stringify, which is correct.
  • ui/src/ui/controllers/control-ui-bootstrap.ts: Sets document.title only when the bootstrap response includes a non-falsy title, leaving the default HTML title intact otherwise.
  • vitest.config.ts: Registers the updated test file in the Vitest include list.

Confidence Score: 5/5

  • This PR is safe to merge — it's a small, backward-compatible additive feature with no breaking changes.
  • The change is minimal and confined to a single config path. Existing behaviour is unaffected when the option is omitted (undefined is dropped from JSON, and the UI's truthiness guard leaves document.title untouched). No security concerns: document.title is plain-text-only. New tests cover both branches. All type constraints are satisfied end-to-end.
  • No files require special attention.

Last reviewed commit: "feat(gateway): add c..."

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ad06058ce3

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread ui/src/ui/controllers/control-ui-bootstrap.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1dd9f6c4a9

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/config/zod-schema.ts
@clawsweeper

clawsweeper Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 6, 2026, 9:22 AM ET / 13:22 UTC.

Summary
The branch adds gateway.controlUi.title to config schema/type/help/labels/docs, includes it in the Control UI bootstrap JSON, and applies it to document.title in the browser loader.

PR surface: Source +11, Docs +1, Generated 0. Total +12 across 9 files.

Reproducibility: not applicable. as a bug reproduction; this is a feature/config PR. Current main still has a fixed Control UI browser title with no accepted gateway.controlUi.title key, while the PR screenshot shows the desired after-fix behavior.

Review metrics: 1 noteworthy metric.

  • Config Surface: 1 added strict config key. gateway.controlUi.title changes the operator config contract and rollback behavior, so maintainers should notice the compatibility decision before merge.

Root-cause cluster
Relationship: canonical
Canonical: #51067
Summary: This PR is the canonical static gateway.controlUi.title implementation candidate, while dynamic browser-title work overlaps the surface but not the static config decision.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Risk before merge

  • [P1] Merging would add one new strict gateway.controlUi.title config key; users who adopt it must remove it before rolling back to older releases that reject unknown config keys.
  • [P1] The static configured-title policy overlaps with open dynamic session/agent title work, so maintainers need one precedence rule before accepting a permanent user-visible title surface.

Maintainer options:

  1. Close Until Product Sponsorship (recommended)
    Close the external PR because the unresolved risk is the new strict config surface and title precedence policy, not a narrow code defect.
  2. Require Maintainer-Sponsored Refresh
    If maintainers want static titles, reopen or request a refreshed branch that preserves docs, rollback guidance, and explicit precedence with dynamic title work.
  3. Accept Rollback Constraint Explicitly
    Maintainers may intentionally accept that older releases reject configs containing gateway.controlUi.title, but that needs to be a visible product decision before merge.

Next step before merge

  • [P2] No repair lane: the remaining blocker is maintainer sponsorship of a new static config surface and title precedence policy, not a narrow mechanical defect.

Maintainer decision needed

  • Question: Should OpenClaw accept a static gateway.controlUi.title operator config key, and should it override dynamic session- or agent-derived browser titles when both exist?
  • Rationale: The code path is mechanically sound, but accepting a new strict config key and a title precedence policy is a product/config-surface decision that automation should not infer from an external PR alone.
  • Likely owner: steipete — They are the strongest available routing candidate from recent config/docs history and related title discussion mentions.
  • Options:
    • Close Until Sponsored (recommended): Close this PR now and invite a maintainer-sponsored follow-up if static instance-wide titles become an accepted product direction.
    • Sponsor Static Title Config: A maintainer can reopen or ask for a refreshed PR that keeps this implementation shape and documents configured-title precedence over dynamic titles.
    • Prefer Dynamic Titles: Keep browser-title work on the dynamic session/agent-title path and avoid adding a new operator config key for static titles.

Security
Cleared: No concrete security or supply-chain concern found; the diff adds config/bootstrap/UI wiring and assigns plain document.title without new dependencies, scripts, permissions, secrets handling, or network calls.

Review details

Best possible solution:

Close this PR until a maintainer sponsors the static title config surface; if sponsored later, the implementation should keep the bootstrap JSON approach, retain docs/rollback guidance, and explicitly define precedence with dynamic session-title work.

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

Not applicable as a bug reproduction; this is a feature/config PR. Current main still has a fixed Control UI browser title with no accepted gateway.controlUi.title key, while the PR screenshot shows the desired after-fix behavior.

Is this the best way to solve the issue?

No as a repository outcome without maintainer sponsorship. The bootstrap JSON approach is safer than the earlier HTML-interpolation attempt, but the best solution requires an explicit product decision on whether this static config key should exist and how it composes with dynamic title work.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 9344bb8b48da.

Label changes

Label changes:

  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes manual gateway steps and an inspected screenshot that directly shows the configured browser tab title and default fallback after the patch.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.
  • remove status: ⏳ waiting on author: Current PR status label is status: 👀 ready for maintainer look.

Label justifications:

  • P3: This is a low-risk Control UI ergonomics feature, not an urgent reliability, security, or data-loss fix.
  • merge-risk: 🚨 compatibility: The PR adds a strict config key whose adoption affects validation and rollback behavior for existing operators.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes manual gateway steps and an inspected screenshot that directly shows the configured browser tab title and default fallback after the patch.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes manual gateway steps and an inspected screenshot that directly shows the configured browser tab title and default fallback after the patch.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes manual gateway steps and an inspected screenshot that directly shows the configured browser tab title and default fallback after the patch.
Evidence reviewed

PR surface:

Source +11, Docs +1, Generated 0. Total +12 across 9 files.

View PR surface stats
Area Files Added Removed Net
Source 7 11 0 +11
Tests 0 0 0 0
Docs 1 1 0 +1
Config 0 0 0 0
Generated 1 2 2 0
Other 0 0 0 0
Total 9 14 2 +12

What I checked:

  • Repository policy applied: Root and scoped docs/gateway/ui AGENTS.md were read; root policy treats config/default additions as compatibility-sensitive and requires config schema/help/metadata/docs alignment before merge. (AGENTS.md:24, 9344bb8b48da)
  • Current main lacks the feature: Current main's strict gateway.controlUi schema includes existing Control UI keys such as chatMessageMaxWidth but no title, so this PR is not redundant with main. (src/config/zod-schema.ts:1096, 9344bb8b48da)
  • Current bootstrap omits title: The current Control UI bootstrap response sends identity, media, embed, width, seam color, time format, and terminal fields, but no browser title field. (src/gateway/control-ui.ts:1019, 9344bb8b48da)
  • Current UI loader is the right consumer: Current main loads and normalizes bootstrap config through ui/src/app/config.ts; the PR's current diff now targets that loader for the title assignment. (ui/src/app/config.ts:197, 6807ae77eff5)
  • Docs follow-up was addressed: The current PR diff adds public Gateway configuration reference text for controlUi.title, including the default and rollback warning that earlier reviews requested. Public docs: docs/gateway/configuration-reference.md. (docs/gateway/configuration-reference.md:606, 6807ae77eff5)
  • Real behavior proof inspected: The PR body includes manual gateway steps and a screenshot showing a configured Rainman tab title beside the default OpenClaw/OpenClaw Control fallback, which directly demonstrates the changed browser-title behavior. (6807ae77eff5)

Likely related people:

  • steipete: Peter Steinberger recently authored config/docs-adjacent changes and was pulled into the related static-title discussion; this is the strongest maintainer-routing signal for a product/config decision. (role: recent area contributor; confidence: high; commits: f53346944db0, f46fc8c7ad41; files: src/config/zod-schema.ts, src/config/types.gateway.ts, docs/gateway/configuration-reference.md)
  • Val Alexander: Authored the closest existing gateway.controlUi.chatMessageMaxWidth path that carries config through schema, bootstrap payload, UI state, docs, and validation. (role: adjacent config-to-bootstrap contributor; confidence: high; commits: 5fce2f6b0fb1; files: src/config/types.gateway.ts, src/config/zod-schema.ts, src/gateway/control-ui-contract.ts)
  • shakkernerd: Authored the current Control UI architecture refactor that moved bootstrap config consumption into ui/src/app/config.ts, the browser-side file this PR now extends. (role: recent UI architecture contributor; confidence: medium; commits: 65e12328aa20; files: ui/src/app/config.ts)
  • Piotr Durlej: Recent current-main blame for the Control UI bootstrap response and UI config normalization runs through this broad repo update, so they are a secondary history signal rather than the product owner. (role: recent adjacent contributor; confidence: low; commits: f46fc8c7ad41; files: src/gateway/control-ui.ts, ui/src/app/config.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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.

How this review workflow works
  • 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.
Review history (6 earlier review cycles)
  • reviewed 2026-07-03T05:59:01.535Z sha 1323bf6 :: found issues before merge. :: [P2] Document gateway.controlUi.title in the public config reference
  • reviewed 2026-07-05T05:05:45.856Z sha 1323bf6 :: found issues before merge. :: [P2] Document the new Control UI title config
  • reviewed 2026-07-05T07:35:09.686Z sha 1323bf6 :: found issues before merge. :: [P2] Document the new Control UI title config
  • reviewed 2026-07-05T15:32:25.437Z sha 1323bf6 :: found issues before merge. :: [P2] Document the new Control UI title config
  • reviewed 2026-07-05T17:33:41.072Z sha 1323bf6 :: found issues before merge. :: [P2] Document the new Control UI title config
  • reviewed 2026-07-05T17:51:49.247Z sha 1323bf6 :: found issues before merge. :: [P2] Document the new Control UI title config

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot added triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. labels May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 11, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
SymbolStar pushed a commit to SymbolStar/openclaw that referenced this pull request May 12, 2026
…rt static <title>; fix check-lint

- Revert ui/index.html <title> to 'OpenClaw Control' so smoke checks
  (scripts/e2e/parallels/macos-smoke.ts and
  scripts/openclaw-cross-os-release-checks.ts) pass without modification.
  The runtime hook in app-lifecycle.ts overrides it after mount when the
  toggle is enabled.

- Add Appearance > Browser tab toggle (Agent name / Static). Default:
  Agent name (preserves the per-agent title sync from the original PR).
  Persists via the existing UiSettings localStorage store as
  documentTitleSyncEnabled.

- syncDocumentTitleFromHost now reads host.settings.documentTitleSyncEnabled;
  when off, restores the static 'OpenClaw Control' title.

- Replace 'TODO(openclaw#51067)' comment with a non-TODO note to satisfy the
  no-warning-comments oxlint rule that failed check-lint.
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@clawsweeper

clawsweeper Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

✨ Hatched: 🥚 common Sunspot Review Wisp

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🥚 common.
Trait: purrs at green checks.
Image traits: location branch lighthouse; accessory shell-shaped keyboard; palette amber, ink, and glacier blue; mood sparkly; pose sitting proudly on a smooth stone; shell soft velvet shell; lighting clean product lighting; background miniature CI buoys.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Sunspot Review Wisp in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

@ryan-dyer-sp

Copy link
Copy Markdown
Author

@clawsweeper review

@clawsweeper

clawsweeper Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

ryan-dyer-sp and others added 3 commits July 6, 2026 07:38
…itle)

Allow users to set a custom browser tab title for the Control UI via
the gateway.controlUi.title config option. Useful when running multiple
OpenClaw instances to distinguish between tabs.

Closes openclaw#51052

Co-Authored-By: Claude Opus 4.6 <[email protected]>
@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui docs Improvements or additions to documentation gateway Gateway runtime merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS stale Marked as stale due to inactivity 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.

[Feature]: Add configurable Control UI title (gateway.controlUi.title)

1 participant