Skip to content

feat(web): channel artwork choice on Latest, plus nightly or dev art on any channel - #26138

Merged
maria-rcks merged 1 commit into
mainfrom
t3/channel-artwork-any-channel
Oct 27, 2026
Merged

maria-rcks merged 1 commit into
mainfrom
t3/channel-artwork-any-channel

Conversation

@maria-rcks

Copy link
Copy Markdown
Collaborator

On Latest the environment identification setting was hidden, so the channel artwork could not be turned on. Dev and Nightly could only show their own art.

  • EnvironmentIdentificationMode gains nightly-artwork and dev-artwork. The default artwork still follows the running channel, so Latest stays off by default and Dev/Nightly look the same as before.
  • Settings > Appearance > Advanced always shows the row. On Latest it offers None (default), Nightly artwork, Dev artwork. On Dev it offers Dev artwork (default), Nightly artwork, Version pill, None; Nightly mirrors that.
  • Custom palette themes still fall back to the pill for every artwork mode.

Verified on a local dev server with VITE_HOSTED_APP_CHANNEL=latest and on the dev channel. On Latest, picking Nightly artwork renders the night sky header. The choice persists into Dev, which offers the extra Nightly option. An older build reading the stored nightly-artwork value still loads settings normally and shows no art. Desktop was not run; mobile does not read this setting.

Before, Latest: Advanced has no environment identification row.

Latest before: Appearance Advanced section with no environment identification row

After, Latest: the row defaults to None, with Nightly and Dev artwork choices.

Latest after: environment identification menu showing None, Nightly artwork, Dev artwork

Latest after choosing Nightly artwork: night sky art in the sidebar header

After, Dev: Nightly artwork is available next to the default Dev artwork.

Dev after: menu showing Dev artwork, Nightly artwork, Version pill, None with Nightly selected

Claude Opus 5.5 (claude-opus-5-5) in T3 Code via Claude Code.

🤖 Generated with Claude Code

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Oct 27, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 8261150

Macroscope's review found this PR approvable — Adds optional Dev or Nightly artwork across release channels, including Latest, while preserving existing defaults. The change is limited to appearance settings and decorative rendering, with existing theme restrictions retained.

You can add or adjust custom eligibility rules. Learn more.

@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB −6 B (−0.1%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.3 KiB 1.2 KiB −6 B (−0.5%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 21.6 KiB 21.6 KiB 0 B (0.0%) 24.4 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.1 KiB 5.0 KiB −6 B (−0.1%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.3 KiB 1.3 KiB −6 B (−0.5%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.9 KiB 21.9 KiB 0 B (0.0%) 24.4 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 5808469 · PR result: 8261150 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@coderabbitai

coderabbitai Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 5808469 and 8261150.

Files selected for processing: 8
  • apps/web/src/components/AppSidebarLayout.tsx
  • apps/web/src/components/SidebarStageBackdrop.tsx
  • apps/web/src/components/chat/ComposerPrimaryActions.tsx
  • apps/web/src/components/settings/AppearanceSettingsPanel.tsx
  • apps/web/src/components/settings/settingsSearch.ts
  • apps/web/src/components/sidebar/SidebarChrome.tsx
  • apps/web/src/hooks/useSettings.ts
  • packages/contracts/src/settings.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Walkthrough

Environment identification now supports Nightly and Dev artwork modes. The sidebar backdrop resolver, its consumers, and the appearance settings use the selected mode. Theme fallback and settings search terms are also updated.

Changes: Environment identification

Layer / File(s) Summary
Mode contract and backdrop resolution
packages/contracts/src/settings.ts, apps/web/src/components/SidebarStageBackdrop.tsx
The mode contract adds nightly-artwork and dev-artwork. The resolver and hook accept an EnvironmentIdentificationMode and select a backdrop variant based on the mode.
Backdrop mode consumers
apps/web/src/components/AppSidebarLayout.tsx, apps/web/src/components/chat/ComposerPrimaryActions.tsx, apps/web/src/components/sidebar/SidebarChrome.tsx
These components pass the selected environment identification mode to the backdrop hook or resolver.
Appearance options and theme fallback
apps/web/src/components/settings/AppearanceSettingsPanel.tsx, apps/web/src/hooks/useSettings.ts, apps/web/src/components/settings/settingsSearch.ts
The appearance panel displays stage-specific choices and always renders the setting row. Theme fallback also applies to modes other than pill and none, and search terms include “latest”.

Priority: Low

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Feature

Possibly related PRs

  • pingdotgg/t3code#25651: Reorganizes the same environment-identification controls in AppearanceSettingsPanel.

Suggested labels: size:M

Suggested reviewers: juliusmarminge, t3dotgg

Merge Risk: Minimal · up to 82611

The artwork choices remain available as intended, and no issue requiring a fix before merge was established.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Description check Warning The description follows the template's intent and covers the problem, the change, and verification. The Problem and Change content is in the Latest-channel bullets and the opening paragraph. Verificat… Add a Scope and approval section. Link the triaged issue or the discussion that has explicit maintainer approval, including the approval comment. If no prior approval exists, explain why this change qualifies as focused configuration of an …
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title "feat(web): channel artwork choice on Latest, plus nightly or dev art on any channel" matches the main change. The diff adds nightly-artwork and dev-artwork modes to EnvironmentIdentificatio…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title "feat(web): channel artwork choice on Latest, plus nightly or dev art on any channel" matches the main change. The diff adds nightly-artwork and dev-artwork modes to EnvironmentIdentificationMode, makes the settings row always render, and passes the full mode through the sidebar and backdrop helpers. The title is specific and follows the conventional commit format. It is long at 83 characters, but it still conveys the primary change.

Full details: Description check

Explanation

The description follows the template's intent and covers the problem, the change, and verification. The Problem and Change content is in the Latest-channel bullets and the opening paragraph. Verification is detailed: it names the local dev server with VITE_HOSTED_APP_CHANNEL=latest, the observed Nightly artwork rendering, the persistence into Dev, and the older-build check. It also includes before/after screenshots, as the template requires for UI changes. The Scope and approval section is missing. The template asks for a linked triaged issue or maintainer-approved discussion, or an explanation of why the change qualifies as focused configuration of an established capability. The description does not include either. The model attribution at the end satisfies the template's agent note.

Resolution

Add a Scope and approval section. Link the triaged issue or the discussion that has explicit maintainer approval, including the approval comment. If no prior approval exists, explain why this change qualifies as focused configuration of an established capability. Explain what the existing environment identification option already controls, and why the new options stay within that capability. The template states that adding a setting alone does not count as an approval exemption.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@maria-rcks
maria-rcks merged commit bbd9593 into main Oct 27, 2026
30 checks passed
@maria-rcks
maria-rcks deleted the t3/channel-artwork-any-channel branch October 27, 2026 21:47
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 28, 2026
## What's Changed
* fix(mobile): center Android sheets and fit book-mode sheets in the left pane by @PixPMusic in pingdotgg/t3code#18492
* fix(mobile): keep the collapsed Android rail square by @PixPMusic in pingdotgg/t3code#26039
* fix(web): closing the last Browser tab hides the right panel again by @juliusmarminge in pingdotgg/t3code#26058
* refactor(web): pull requests Cmd+F focuses the topbar search directly by @juliusmarminge in pingdotgg/t3code#26045
* refactor(web): install draft model reconciliation at app start by @juliusmarminge in pingdotgg/t3code#26046
* perf(mobile): project favicons mount their image in one commit by @juliusmarminge in pingdotgg/t3code#26047
* refactor(web): the upload queue alone records finished file uploads on drafts by @juliusmarminge in pingdotgg/t3code#26050
* feat(mobile): Usage uses the width on iPad and unfolded phones by @juliusmarminge in pingdotgg/t3code#26061
* fix(gitcafe): PR panel follows renumbered pull requests by @juliusmarminge in pingdotgg/t3code#26079
* chore(infra): bump Alchemy to 2.0.0-beta.84 by @juliusmarminge in pingdotgg/t3code#26057
* refactor(mobile): stop writing the resolved project filter back from an effect by @juliusmarminge in pingdotgg/t3code#26049
* fix(mobile): a pairing link fills the open Add environment form instead of stacking another by @juliusmarminge in pingdotgg/t3code#26052
* fix(mobile): snooze menu times advance with the clock by @juliusmarminge in pingdotgg/t3code#26043
* fix(clients): prompt links find projects cloned from git.cafe by @juliusmarminge in pingdotgg/t3code#26042
* fix(server): retry Codex capacity failures with empty input by @Yash-Singh1 in pingdotgg/t3code#25611
* fix(server): recover handoffs when target context is exhausted by @Yash-Singh1 in pingdotgg/t3code#25610
* fix(web): chips drop their pill and stay readable on every theme by @flamboh in pingdotgg/t3code#25066
* fix(mobile): switching pull request tabs no longer jumps the page by @flamboh in pingdotgg/t3code#26064
* feat(mobile): report crashes to Axiom with symbolicated stacks by @gabrielelpidio in pingdotgg/t3code#19093
* fix(web): chip palette test follows the single design by @juliusmarminge in pingdotgg/t3code#26131
* feat(server): /mcp narrows a client's modes from T3-Mode-Limit by @juliusmarminge in pingdotgg/t3code#16653
* feat(server): t3_thread_launch takes clientRequestId by @juliusmarminge in pingdotgg/t3code#16654
* feat(server): link to another environment by @juliusmarminge in pingdotgg/t3code#16655
* feat(server): agents use linked environments through any T3 tool by @juliusmarminge in pingdotgg/t3code#16684
* feat(server): work a linked environment starts stays within its link by @juliusmarminge in pingdotgg/t3code#16695
* feat(web,mobile): linked environments in Connections by @juliusmarminge in pingdotgg/t3code#16698
* feat(server): delegate_task to a linked environment by @juliusmarminge in pingdotgg/t3code#16719
* feat(server,web,mobile): an agent sets up a link to another environment by @juliusmarminge in pingdotgg/t3code#17129
* feat(server,web,mobile): @-mention a machine, and linked environments become a Labs beta by @juliusmarminge in pingdotgg/t3code#17130
* fix(mobile): dragging a microphone or environment route now saves its new place by @juliusmarminge in pingdotgg/t3code#26096
* feat(web): channel artwork choice on Latest, plus nightly or dev art on any channel by @maria-rcks in pingdotgg/t3code#26138
* feat(mobile): browse ZIP attachments with the shared archive reader by @Bil0000 in pingdotgg/t3code#19463
* fix(server): Claude --settings launch args merge with T3's settings instead of being dropped by @t3dotgg in pingdotgg/t3code#22864
* feat(server,web): see and stop the dev servers a thread started by @t3dotgg in pingdotgg/t3code#22542
* fix(web): composer no longer jumps when a second line is added by @maria-rcks in pingdotgg/t3code#26155
* feat(web,mobile): queued messages show who sent them by @juliusmarminge in pingdotgg/t3code#26159
* fix(preview): agent and browser panel show the same page after a late desktop attach by @t3dotgg in pingdotgg/t3code#22877
* fix(web): pairing, connect, error, and Clerk sign-in surfaces match the app's dialog style by @maria-rcks in pingdotgg/t3code#25281
* fix(server): parallel worktree launches no longer fail on .git/config lock by @juliusmarminge in pingdotgg/t3code#25700
* fix(task-cache): the hook test waits for every flusher it starts by @juliusmarminge in pingdotgg/t3code#26148
* chore(lint): every React effect states its reason at the call site by @juliusmarminge in pingdotgg/t3code#26161
* test(server): the link-card retry test names a new MCP credential by @juliusmarminge in pingdotgg/t3code#26143
* perf(web): stop measuring table cells while replies stream by @t3dotgg in pingdotgg/t3code#26152
* feat(desktop): add a remote server by clicking its t3code://pair link by @t3dotgg in pingdotgg/t3code#24111
* fix(server): agent questions stay answerable after a server restart by @SunkenInTime in pingdotgg/t3code#19229
* chore(lint): the effect lint error walks the alternatives before the suppression by @juliusmarminge in pingdotgg/t3code#26181
* fix(web): settings avatar no longer hugs the modal corner by @t3dotgg in pingdotgg/t3code#26180
* fix(mobile): shared file names can no longer write outside the Android cache by @juliusmarminge in pingdotgg/t3code#26175
* fix(server): repository lookups no longer send GitHub tokens to arbitrary hosts by @juliusmarminge in pingdotgg/t3code#26176
* fix(github): long period runs no longer freeze reference autolinking by @juliusmarminge in pingdotgg/t3code#26177
* fix(mobile): Android diff ellipsis no longer measures text quadratically by @juliusmarminge in pingdotgg/t3code#26174
* fix(server): Codex works again after its app-server is killed by @t3dotgg in pingdotgg/t3code#26188


**Full Changelog**: pingdotgg/t3code@v0.1.4-nightly.20261027.3783...v0.1.4-nightly.20261027.3796

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.4-nightly.20261027.3796
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant