Skip to content

fix(web): restore fork artwork on the default theme - #113

Merged
incognitojam merged 1 commit into
mainfrom
t3code/fix-default-theme-artwork
Aug 13, 2026
Merged

fix(web): restore fork artwork on the default theme#113
incognitojam merged 1 commit into
mainfrom
t3code/fix-default-theme-artwork

Conversation

@incognitojam

Copy link
Copy Markdown
Collaborator

Note

The fork's teal stage artwork was scoped to the T3 Chat theme, but the default T3 Code theme has no data-theme-id for that selector to match. Everyone on the default theme saw upstream's palette. This scopes the fork pigments to the absence of data-theme-id and covers the Dev blueprint as well as the Nightly sky.

#96 moved the Yngatech colorway out of index.css into yngatech.css and scoped it to html[data-theme-id="t3-chat"] .stage-nightly. The default T3 Code theme never carries a data-theme-id: applyThemePalette deletes the attribute whenever the preference does not resolve to a stored palette, and the settings grid renders that state as the T3 Code card. So the one theme most users run could not match the fork's own selector, and fell through to upstream's pigments — the purple Nightly sky and the blue Dev blueprint.

Scope the fork pigments to the absence of data-theme-id instead, and cover both artworks. The pigments sit on the root rather than on the artwork element because the sidebar focus rings offset against --stage-art-bottom from outside the SVG, and would otherwise stay upstream blue while the art went teal.

T3 Chat now derives its sky from its own pigments like Grove, Ocean, Ember, and Iris. The fork identity belongs to the fork's default theme, not to a named accent theme.

Before and after

Both captures use the dark default T3 Code theme at the same sidebar width and crop.

Before After
Nightly Nightly sidebar with upstream's purple sky Nightly sidebar with the fork's teal sky
Dev Dev sidebar with upstream's blue blueprint Dev sidebar with the fork's teal blueprint

Verification

  • vp test run src/components/SidebarStageBackdrop.test.tsx --project unit — 8 tests passed
  • vp fmt apps/web/src/yngatech.css --check
  • Computed custom properties in a running dev client: the default theme resolves --stage-art-top / --stage-night-top to #5cd6ce / #10484f in light and #35939c / #10484f in dark; Iris and T3 Chat still resolve to their own OKLCH color-mix values, confirming the named built-ins are untouched
  • Captures above taken from that same client, forcing each stage variant in turn

Written by an agent (T3 Code, claude-opus-5).

The Yngatech stage palette was scoped to `html[data-theme-id="t3-chat"]`,
but the default T3 Code theme carries no `data-theme-id` at all:
`applyThemePalette` deletes the attribute whenever the preference does not
resolve to a stored palette, and the settings grid renders that state as
the T3 Code card. Everyone on the default theme therefore fell through to
upstream's pigments, so Nightly showed the upstream purple sky and Dev the
upstream blue blueprint.

Scope the fork pigments to the absence of `data-theme-id`, and cover the
Dev blueprint alongside the Nightly sky. The pigments sit on the root
rather than on the artwork element because the sidebar focus rings offset
against `--stage-art-bottom` from outside the SVG and would otherwise stay
upstream blue. T3 Chat now derives from its own pigments like the rest of
the named built-ins.

## Verification

- Computed `--stage-art-top` / `--stage-night-top` in a running dev client:
  default theme resolves to `#5cd6ce` / `#10484f` light and `#35939c` /
  `#10484f` dark; Iris and T3 Chat still resolve to their own OKLCH
  color-mix values
- `vp fmt apps/web/src/yngatech.css --check`

---
Written by an agent (T3 Code, claude-opus-5).
@incognitojam
incognitojam force-pushed the t3code/fix-default-theme-artwork branch from 79154a9 to 374288f Compare August 13, 2026 13:05
@incognitojam
incognitojam enabled auto-merge (squash) August 13, 2026 13:05
@incognitojam
incognitojam merged commit 204010f into main Aug 13, 2026
11 checks passed
@incognitojam
incognitojam deleted the t3code/fix-default-theme-artwork branch August 13, 2026 13:18
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 13, 2026
> [!NOTE]
> The fork's teal stage artwork was scoped to the T3 Chat theme, but the
default T3 Code theme has no `data-theme-id` for that selector to match.
Everyone on the default theme saw upstream's palette. This scopes the
fork pigments to the absence of `data-theme-id` and covers the Dev
blueprint as well as the Nightly sky.

`#96` moved the Yngatech colorway out of `index.css` into `yngatech.css`
and scoped it to `html[data-theme-id="t3-chat"] .stage-nightly`. The
default T3 Code theme never carries a `data-theme-id`:
`applyThemePalette` deletes the attribute whenever the preference does
not resolve to a stored palette, and the settings grid renders that
state as the T3 Code card. So the one theme most users run could not
match the fork's own selector, and fell through to upstream's pigments —
the purple Nightly sky and the blue Dev blueprint.

Scope the fork pigments to the absence of `data-theme-id` instead, and
cover both artworks. The pigments sit on the root rather than on the
artwork element because the sidebar focus rings offset against
`--stage-art-bottom` from outside the SVG, and would otherwise stay
upstream blue while the art went teal.

T3 Chat now derives its sky from its own pigments like Grove, Ocean,
Ember, and Iris. The fork identity belongs to the fork's default theme,
not to a named accent theme.

## Before and after

Both captures use the dark default T3 Code theme at the same sidebar
width and crop.

| | Before | After |
| --- | --- | --- |
| Nightly | ![Nightly sidebar with upstream's purple
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-nightly.png)
| ![Nightly sidebar with the fork's teal
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-nightly.png)
|
| Dev | ![Dev sidebar with upstream's blue
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-dev.png)
| ![Dev sidebar with the fork's teal
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-dev.png)
|

## Verification

- `vp test run src/components/SidebarStageBackdrop.test.tsx --project
unit` — 8 tests passed
- `vp fmt apps/web/src/yngatech.css --check`
- Computed custom properties in a running dev client: the default theme
resolves `--stage-art-top` / `--stage-night-top` to `#5cd6ce` /
`#10484f` in light and `#35939c` / `#10484f` in dark; Iris and T3 Chat
still resolve to their own OKLCH `color-mix` values, confirming the
named built-ins are untouched
- Captures above taken from that same client, forcing each stage variant
in turn

---
Written by an agent (T3 Code, claude-opus-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 13, 2026
> [!NOTE]
> The fork's teal stage artwork was scoped to the T3 Chat theme, but the
default T3 Code theme has no `data-theme-id` for that selector to match.
Everyone on the default theme saw upstream's palette. This scopes the
fork pigments to the absence of `data-theme-id` and covers the Dev
blueprint as well as the Nightly sky.

`#96` moved the Yngatech colorway out of `index.css` into `yngatech.css`
and scoped it to `html[data-theme-id="t3-chat"] .stage-nightly`. The
default T3 Code theme never carries a `data-theme-id`:
`applyThemePalette` deletes the attribute whenever the preference does
not resolve to a stored palette, and the settings grid renders that
state as the T3 Code card. So the one theme most users run could not
match the fork's own selector, and fell through to upstream's pigments —
the purple Nightly sky and the blue Dev blueprint.

Scope the fork pigments to the absence of `data-theme-id` instead, and
cover both artworks. The pigments sit on the root rather than on the
artwork element because the sidebar focus rings offset against
`--stage-art-bottom` from outside the SVG, and would otherwise stay
upstream blue while the art went teal.

T3 Chat now derives its sky from its own pigments like Grove, Ocean,
Ember, and Iris. The fork identity belongs to the fork's default theme,
not to a named accent theme.

## Before and after

Both captures use the dark default T3 Code theme at the same sidebar
width and crop.

| | Before | After |
| --- | --- | --- |
| Nightly | ![Nightly sidebar with upstream's purple
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-nightly.png)
| ![Nightly sidebar with the fork's teal
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-nightly.png)
|
| Dev | ![Dev sidebar with upstream's blue
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-dev.png)
| ![Dev sidebar with the fork's teal
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-dev.png)
|

## Verification

- `vp test run src/components/SidebarStageBackdrop.test.tsx --project
unit` — 8 tests passed
- `vp fmt apps/web/src/yngatech.css --check`
- Computed custom properties in a running dev client: the default theme
resolves `--stage-art-top` / `--stage-night-top` to `#5cd6ce` /
`#10484f` in light and `#35939c` / `#10484f` in dark; Iris and T3 Chat
still resolve to their own OKLCH `color-mix` values, confirming the
named built-ins are untouched
- Captures above taken from that same client, forcing each stage variant
in turn

---
Written by an agent (T3 Code, claude-opus-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 14, 2026
> [!NOTE]
> The fork's teal stage artwork was scoped to the T3 Chat theme, but the
default T3 Code theme has no `data-theme-id` for that selector to match.
Everyone on the default theme saw upstream's palette. This scopes the
fork pigments to the absence of `data-theme-id` and covers the Dev
blueprint as well as the Nightly sky.

`#96` moved the Yngatech colorway out of `index.css` into `yngatech.css`
and scoped it to `html[data-theme-id="t3-chat"] .stage-nightly`. The
default T3 Code theme never carries a `data-theme-id`:
`applyThemePalette` deletes the attribute whenever the preference does
not resolve to a stored palette, and the settings grid renders that
state as the T3 Code card. So the one theme most users run could not
match the fork's own selector, and fell through to upstream's pigments —
the purple Nightly sky and the blue Dev blueprint.

Scope the fork pigments to the absence of `data-theme-id` instead, and
cover both artworks. The pigments sit on the root rather than on the
artwork element because the sidebar focus rings offset against
`--stage-art-bottom` from outside the SVG, and would otherwise stay
upstream blue while the art went teal.

T3 Chat now derives its sky from its own pigments like Grove, Ocean,
Ember, and Iris. The fork identity belongs to the fork's default theme,
not to a named accent theme.

## Before and after

Both captures use the dark default T3 Code theme at the same sidebar
width and crop.

| | Before | After |
| --- | --- | --- |
| Nightly | ![Nightly sidebar with upstream's purple
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-nightly.png)
| ![Nightly sidebar with the fork's teal
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-nightly.png)
|
| Dev | ![Dev sidebar with upstream's blue
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-dev.png)
| ![Dev sidebar with the fork's teal
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-dev.png)
|

## Verification

- `vp test run src/components/SidebarStageBackdrop.test.tsx --project
unit` — 8 tests passed
- `vp fmt apps/web/src/yngatech.css --check`
- Computed custom properties in a running dev client: the default theme
resolves `--stage-art-top` / `--stage-night-top` to `#5cd6ce` /
`#10484f` in light and `#35939c` / `#10484f` in dark; Iris and T3 Chat
still resolve to their own OKLCH `color-mix` values, confirming the
named built-ins are untouched
- Captures above taken from that same client, forcing each stage variant
in turn

---
Written by an agent (T3 Code, claude-opus-5).
yngatech-nightly Bot pushed a commit that referenced this pull request Aug 14, 2026
> [!NOTE]
> The fork's teal stage artwork was scoped to the T3 Chat theme, but the
default T3 Code theme has no `data-theme-id` for that selector to match.
Everyone on the default theme saw upstream's palette. This scopes the
fork pigments to the absence of `data-theme-id` and covers the Dev
blueprint as well as the Nightly sky.

`#96` moved the Yngatech colorway out of `index.css` into `yngatech.css`
and scoped it to `html[data-theme-id="t3-chat"] .stage-nightly`. The
default T3 Code theme never carries a `data-theme-id`:
`applyThemePalette` deletes the attribute whenever the preference does
not resolve to a stored palette, and the settings grid renders that
state as the T3 Code card. So the one theme most users run could not
match the fork's own selector, and fell through to upstream's pigments —
the purple Nightly sky and the blue Dev blueprint.

Scope the fork pigments to the absence of `data-theme-id` instead, and
cover both artworks. The pigments sit on the root rather than on the
artwork element because the sidebar focus rings offset against
`--stage-art-bottom` from outside the SVG, and would otherwise stay
upstream blue while the art went teal.

T3 Chat now derives its sky from its own pigments like Grove, Ocean,
Ember, and Iris. The fork identity belongs to the fork's default theme,
not to a named accent theme.

## Before and after

Both captures use the dark default T3 Code theme at the same sidebar
width and crop.

| | Before | After |
| --- | --- | --- |
| Nightly | ![Nightly sidebar with upstream's purple
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-nightly.png)
| ![Nightly sidebar with the fork's teal
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-nightly.png)
|
| Dev | ![Dev sidebar with upstream's blue
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-dev.png)
| ![Dev sidebar with the fork's teal
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-dev.png)
|

## Verification

- `vp test run src/components/SidebarStageBackdrop.test.tsx --project
unit` — 8 tests passed
- `vp fmt apps/web/src/yngatech.css --check`
- Computed custom properties in a running dev client: the default theme
resolves `--stage-art-top` / `--stage-night-top` to `#5cd6ce` /
`#10484f` in light and `#35939c` / `#10484f` in dark; Iris and T3 Chat
still resolve to their own OKLCH `color-mix` values, confirming the
named built-ins are untouched
- Captures above taken from that same client, forcing each stage variant
in turn

---
Written by an agent (T3 Code, claude-opus-5).
incognitojam added a commit that referenced this pull request Aug 15, 2026
> [!NOTE]
> The fork's teal stage artwork was scoped to the T3 Chat theme, but the
default T3 Code theme has no `data-theme-id` for that selector to match.
Everyone on the default theme saw upstream's palette. This scopes the
fork pigments to the absence of `data-theme-id` and covers the Dev
blueprint as well as the Nightly sky.

`#96` moved the Yngatech colorway out of `index.css` into `yngatech.css`
and scoped it to `html[data-theme-id="t3-chat"] .stage-nightly`. The
default T3 Code theme never carries a `data-theme-id`:
`applyThemePalette` deletes the attribute whenever the preference does
not resolve to a stored palette, and the settings grid renders that
state as the T3 Code card. So the one theme most users run could not
match the fork's own selector, and fell through to upstream's pigments —
the purple Nightly sky and the blue Dev blueprint.

Scope the fork pigments to the absence of `data-theme-id` instead, and
cover both artworks. The pigments sit on the root rather than on the
artwork element because the sidebar focus rings offset against
`--stage-art-bottom` from outside the SVG, and would otherwise stay
upstream blue while the art went teal.

T3 Chat now derives its sky from its own pigments like Grove, Ocean,
Ember, and Iris. The fork identity belongs to the fork's default theme,
not to a named accent theme.

## Before and after

Both captures use the dark default T3 Code theme at the same sidebar
width and crop.

| | Before | After |
| --- | --- | --- |
| Nightly | ![Nightly sidebar with upstream's purple
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-nightly.png)
| ![Nightly sidebar with the fork's teal
sky](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-nightly.png)
|
| Dev | ![Dev sidebar with upstream's blue
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/before-dev.png)
| ![Dev sidebar with the fork's teal
blueprint](https://raw.githubusercontent.com/yngatech/t3code/assets/pr-restore-default-theme-artwork/after-dev.png)
|

## Verification

- `vp test run src/components/SidebarStageBackdrop.test.tsx --project
unit` — 8 tests passed
- `vp fmt apps/web/src/yngatech.css --check`
- Computed custom properties in a running dev client: the default theme
resolves `--stage-art-top` / `--stage-night-top` to `#5cd6ce` /
`#10484f` in light and `#35939c` / `#10484f` in dark; Iris and T3 Chat
still resolve to their own OKLCH `color-mix` values, confirming the
named built-ins are untouched
- Captures above taken from that same client, forcing each stage variant
in turn

---
Written by an agent (T3 Code, claude-opus-5).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 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