diff --git a/CHANGELOG.md b/CHANGELOG.md index 64fe678102..afb5b9f471 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,17 @@ file is the human-readable summary of what changed and why. ### Desktop / Web UI +- **Session rows have a ⋮ menu** — every session in the sidebar's Recents and on + the **View all** list now carries a vertical three-dot button at its right + edge, appearing on hover. It opens the same menu the ⋯ button beside a session + title opens: **Rename**, **Share…** (only where sharing is enabled), + **Archive**, **Delete…**. Renaming edits the row's label in place — Enter + saves, Esc cancels — instead of taking you into the session first; deleting + still asks for confirmation and takes the session's children with it. Sharing + from a row opens the session and its share popover, because the share state + is not carried by the list. Previously the only way to rename, archive or + delete was to open the session and use the menu next to its title. + - **The sidebar collapses, and Search opens the recents list** — two buttons join the titlebar. The leftmost one hides and restores the sidebar, so a session can have the full window width; it remembers the choice for next launch, and it @@ -20,8 +31,6 @@ file is the human-readable summary of what changed and why. app menu now works too — it had no effect on this layout, since the command it dispatches was only ever registered by the old one. -### Desktop / Web UI - - **The sidebar is always on screen, and it carries your recent sessions** — the Projects list plus Settings and Help used to be a column belonging to the home screen, so opening a session left you with no navigation but the tab bar. @@ -34,32 +43,6 @@ file is the human-readable summary of what changed and why. screen, unchanged from today, now framed by the sidebar. Below a narrow window width the sidebar hides and the home screen keeps its previous stacked layout. -- **The desktop app opens on a new session** — launching used to drop you on a - list of past work. It now opens a fresh composer, reusing an existing empty - draft rather than accumulating one per launch. This replaces reopening the - screen the window was last on; that session is one click away in Recents, and - the tab bar still restores it. The browser UI is unaffected — there, `/` is a - URL you asked for, so it keeps showing the recents screen. - -- **The channel badge moved to the bottom of the sidebar** — the blue **DEV** - (or **BETA**) tag used to sit at the far left of the titlebar, pushing the - Home button along with it. It now sits under Help at the foot of the sidebar, - and Home leads the titlebar. On a dev build the badge still toggles the debug - bar. Release builds show no badge, as before, and the sidebar closes the gap - rather than leaving a hole where it would have been. - -- **The new-session screen sits on a card, like every other screen** — it was - painted in the same tone as the window chrome, so next to the sidebar it read - as empty space rather than as the screen you are on, while sessions and the - recents list floated on a raised white card. It now uses that same card. - -- **The Home button goes to a new session** — it used to toggle between the - recent-sessions list and whichever tab you came from, which no longer matches - what the home screen is. It (and `mod+b`) now takes you to a new session, - selecting an already-open empty draft rather than opening another, and it - lights up while you are on one. The full list is still a click away under - **View all**. - ## 1.18.4-8 ### Agent diff --git a/DIVERGENCES.md b/DIVERGENCES.md index 1f499a1efa..725ee85a54 100644 --- a/DIVERGENCES.md +++ b/DIVERGENCES.md @@ -100,6 +100,8 @@ from the squash message first, or use a plain merge. | `packages/app/src/components/titlebar.tsx` | Two changes, both to the **v2 titlebar branch only** (`useV2Titlebar()`); the legacy branch below it is untouched. (1) The Home button (and its `home.toggle` command, `mod+b`) opens a new session instead of toggling between `/` and the last active tab: `tabs.toggleHome(...)` becomes a `goHome` that selects an already-open draft if there is one and otherwise falls through to the existing `openNewTab()` project-resolution chain. Its pressed / `aria-pressed` state keys on `layout.route().type === "draft"` rather than `"home"`. The icon, label (`home.title`) and keybind are unchanged, as is `tabs.toggleHome` itself, which is simply no longer called. (2) `` is dropped from that row and the component gains an `export`, so the sidebar can render the DEV/BETA badge at its bottom instead; `Titlebar` keeps its `debugTools` prop because the legacy branch still renders the badge inline. (3) Two buttons added to the row: a sidebar collapse toggle (`sidebar-right` icon, `data-action="titlebar-sidebar-toggle"`, `pressed` while open) as its **first** child, ahead of the `windows() || linux()` `WindowsAppMenu`; and a Search button (`magnifying-glass`, `data-action="titlebar-search"`) immediately after Home, navigating to `/?focus=search`. The toggle reads the fork-only `useAppSidebar()` and is wrapped in ``, which is what keeps it out of the legacy shell. Labels reuse the existing `command.sidebar.toggle` and `home.sessions.search.placeholder` keys — no new i18n. | The home screen is a new session in this fork, so Home has to go there; toggling into the recent-sessions list contradicted that. Reuse-before-create keeps repeated presses from stacking up draft tabs — unlike the New session button, which is expected to always make a new one. Moving the badge lets Home lead the titlebar (measured: x 137 → 92 on macOS, the traffic-light inset). | Keep our `goHome` and the removed indicator. If upstream reworks the titlebar, re-apply both rather than restoring `toggleHome` or the inline badge. If upstream deletes `tabs.toggleHome`, nothing here breaks. Do not remove `Titlebar`'s `debugTools` prop — the legacy titlebar still needs it. Keep `useAppSidebar()` optional-by-design: `useV2Titlebar()` is just `newLayoutDesigns()`, so this titlebar also renders inside the legacy shell, which has no provider — swapping it for `createSimpleContext` would throw there (verified: with the new layout off, the legacy shell renders its own rail, no toggle, and no exception). | | `packages/app/src/pages/layout-new.tsx` (again) | Mounts the fork-only ``, which on desktop redirects one time per boot to a new-session draft (reusing an existing empty draft rather than stacking one up per launch). It pins its decision to the pathname the window came up on and disarms as soon as anything navigates, so it can never hijack a later visit to `/` — the sidebar's "View all" links there. Desktop-only: in the browser there is no "launch" distinct from "navigate to /", so redirecting would make the recents screen unreachable by URL and would break two `packages/app/e2e` specs that `goto("/")`. | Launching should put you in front of a prompt, the way Claude Desktop does, rather than on a list. This supersedes the desktop's restore-last-screen behaviour (`getLastActiveUrl`, `packages/desktop/src/renderer/index.tsx`); the previous session stays one click away in Recents and its tab is still restored. | Keep the mount. If upstream restructures this layout, re-add it. Do not "simplify" the boot-window guard into a plain `location.pathname === "/"` check — that is the bug it exists to prevent. | | `packages/app/src/pages/layout-new.tsx`, `packages/app/src/pages/home.tsx`, `packages/app/src/i18n/{en,es}.ts` | **Persistent app sidebar.** Upstream's project column is an `