Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c13a021
feat: default sidebar v2 on for nightly and dev builds (#4491)
t3dotgg Jul 28, 2026
dd5ea32
fix(web): 33 web UI fixes (#4700)
maxktz Jul 28, 2026
b0c4992
Make mobile Thread List v2 the default (#4717)
juliusmarminge Jul 28, 2026
d25b157
Fix mobile showcase workflow without Clerk (#4718)
juliusmarminge Jul 28, 2026
e00781a
Fix relay credential lookup for unlinked environments (#4692)
juliusmarminge Jul 28, 2026
9cf9fc9
Settle merged PR threads immediately (#4704)
t3dotgg Jul 28, 2026
362f127
feat(web): add maria's sidebar header artwork toggle (#4652)
maxktz Jul 28, 2026
4f584da
feat(web): add appearance settings category (#4715)
maxktz Jul 28, 2026
9ccfd9d
fix(desktop): allow updater-controlled relaunch (#4721)
0x4bs3nt Jul 28, 2026
3c50a64
fix(web): prevent diff panel scroll jumping (#4724)
0x4bs3nt Jul 28, 2026
55dd016
Link inline code file paths in chat markdown (#4726)
juliusmarminge Jul 28, 2026
f1a68ac
Fix Android showcase capture and rebuild v2 queued rows (#4730)
juliusmarminge Jul 28, 2026
887dd6e
perf(server): negotiate permessage-deflate on the websocket (#4705)
t3dotgg Jul 28, 2026
b64ae88
docs: overhaul agent guidance (#4782)
t3dotgg Jul 28, 2026
2deea7a
Prevent sidebar row labels from truncating (#4789)
juliusmarminge Jul 28, 2026
8829e2f
perf(server): gzip large thread snapshots (#4788)
t3dotgg Jul 28, 2026
f2d2fb2
fix(web): stashed prompts now survive switching providers (#4787)
t3dotgg Jul 28, 2026
38a6e3c
Fix Git ref refresh resource storms (#4727)
juliusmarminge Jul 28, 2026
5fcdefd
perf(server): trim stale context-window rows and drop dead replay RPC…
t3dotgg Jul 28, 2026
1ba3d01
fix(web): defer command palette filesystem navigation (#2109)
juliusmarminge Jul 28, 2026
2919147
fix(release): skip scripts during Vercel installs (#4796)
t3dotgg Jul 28, 2026
936593c
refactor(client): share filesystem browse navigation (#4797)
juliusmarminge Jul 28, 2026
8fe8f9a
fix(mobile): defer filesystem navigation (#4799)
juliusmarminge Jul 28, 2026
8650f05
refactor(server): use native HTTP compression streams (#4798)
juliusmarminge Jul 29, 2026
60af905
Remove Connect waitlist and add GA announcement tooling (#4691)
juliusmarminge Jul 29, 2026
1b61ce1
Fix Connect sign-in settings label (#4806)
juliusmarminge Jul 29, 2026
694f8d1
chore(release): prepare v0.0.30
t3-code[bot] Jul 29, 2026
8b27132
Merge branch 'main' into claude/sync-upstream-v0.0.30
NoahHendrickson Jul 29, 2026
2a6d5f1
fix(fork): absorb upstream v0.0.30 into fork surfaces
NoahHendrickson Jul 29, 2026
755e8c7
fix(fork): land review feedback on the v0.0.30 sync
NoahHendrickson Jul 29, 2026
458acfc
fix(fork): land multi-agent review findings on the v0.0.30 sync
NoahHendrickson Jul 29, 2026
ac649cb
docs(fork): record the prompt-stash data-loss keep as a pending relea…
NoahHendrickson Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions .fork/customizations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,12 @@
Fork Workflow section pointing to .fork/AGENTS.md, which defines the
branch model (work from custom, never touch main) and the placement
ladder for fork changes.
AGENTS.md also carries the fork-authored Change Scope section, fenced as
fork-change-scope, and it must sit ahead of upstream's first section
heading: it is the scope contract an agent reads before upstream's own
guidance, not an appendix. Upstream owns the rest of the document — a sync
takes upstream's rewrite wholesale and re-seats these two fenced sections,
Change Scope at the top and Fork Workflow at the bottom.
CLAUDE.md is a Tier-4 inline edit the fork owns outright, and it
deliberately diverges from the blob upstream ships. Upstream's committed
symlink target carries a trailing newline, so it names a file that cannot
Expand Down Expand Up @@ -370,6 +376,25 @@
- apps/web/src/__fork_guards__/sidebarV2Rain.test.ts
- apps/web/src/__fork_guards__/sidebarV2CardRows.test.ts

- id: sidebar-v2-error-tooltip
intent: >
The thread tooltip shows the session's actual last error, not a literal.
Upstream's v0.0.30 tooltip restyle (dd5ea3248) flattened the line to the
string "Error occurred", which removed the only place the sidebar
surfaced what failed — diagnosing a dead session meant opening it, and
this fork's users drive many agents at once from that sidebar. The
message wraps rather than truncating: an error's tail (exit codes,
paths) is routinely the useful half, and the tooltip is already the
row's overflow surface. A sync that reintroduces the literal is a
regression even though it renders fine.
tier: 4
files: []
shadows: []
watch:
- apps/web/src/components/SidebarV2.tsx
verify:
- apps/web/src/__fork_guards__/sidebarV2ErrorTooltip.test.ts

- id: sidebar-v2-dev-server-pulse
intent: >
The thread card's branch/worktree mark pulses working-green to foreground
Expand Down Expand Up @@ -611,6 +636,21 @@
scroll gutter too; fork-sidebar-chrome now compensates for that gutter in
the list's own end padding, so a scrollbar term reappearing here would
double-count it and walk both icons back off the column.

Upstream v0.0.30 reworked its own card's status slot toward the same goal
(an absolute actions overlay with focus-within:static and a min-w-8 slot)
and put the "Settle" text label back on the card action. Both were
declined at the sync: the fork's shared-grid-cell already solves the
overlap upstream was chasing — the cell is as wide as whichever state is
showing, so the title truncates against the real width — and the text
label is what this entry removed in the first place (at 282px it pushed
the actions over the title, which now shares their line). A sync that
reintroduces either is resolving the conflict backwards. Upstream's
matching restyle of sidebarMenuButtonVariants ([&>svg] muted at
opacity-60) was kept for upstream surfaces but is displaced on the fork's
chrome rows, whose buttons re-assert the /80 tint at full opacity —
parent-level [&>svg] outweighs the icon's own class, so without that the
fork tint is silently dead and the duotone glyphs double-fade.
tier: 4
files:
# Owned by fork-sidebar-chrome, which sets these rows' metrics; this entry
Expand Down Expand Up @@ -747,6 +787,27 @@

The raster-vs-SVG history and the reason Nightly is unreachable in practice
are in .fork/notes/FORK-CUSTOMIZATION-DECISIONS.md.

Upstream v0.0.30 layered an environmentIdentificationMode setting
(artwork / pill / none) over the same surfaces. The fork's header art
ignores it — brand chrome is not identification and must not gate on a
setting whose off states would strip the packaged app's header — but the
pill half is honored: "Version pill" renders upstream's badge in this
header, white-on-art rather than secondary-on-plain, because upstream only
ever drew the pill here and dropping it would make that option do nothing
anywhere. artwork/none keep governing the composer send button exactly as
upstream wrote it; the standalone auth screen never read the mode —
upstream gates that art on the build channel alone — so the setting's
only fork-visible effects are the composer button and this pill. The
same release also moved
upstream's search/scope controls into SidebarContent's fixedHeader slot;
the fork declines that mechanism — its own rows sit as siblings above the
self-scrolling list group, which pins them identically — and a sync must
not re-adopt fixedHeader here just to shrink a conflict. The header's
stage label now comes from upstream's useEnvironmentStageLabel, which
replaced the fork's local hook when upstream's became an exact equivalent
(both delegate to resolveServerBackedAppStageLabel with the fork's
APP_STAGE_LABEL fallback).
tier: 4
files:
- apps/web/src/custom/SidebarHeaderBackdrop.tsx
Expand Down
11 changes: 11 additions & 0 deletions .fork/notes/RELEASE-NOTES-PENDING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Pending release-note lines

Lines to fold into the next fork release's notes, then delete from here.
Each entry names the sync or PR that created the obligation.

- **v0.0.30 sync (PR #33):** Prompt stashes saved before this release are
cleared on first launch. Upstream moved the stash store to a new
storage key and deliberately deletes the old one at startup without
migrating (localStorage quota rationale, `promptStashStore.ts`); the
sync keeps that behavior. Users with stashed prompts they care about
should send or copy them before upgrading.
Loading
Loading