Repository navigation
Windows: the taskbar strip and its card, drawn as the notch's - #506
Merged
Merged
Conversation
…e Mac 1.24.0 gave Claude accounts a block of their own above the provider list: text boxes, a Save name button, an orange checkbox, the folder path on every row, and copy in English and Portuguese only. The Mac lists each ~/.claude-<slug> profile as a provider row like any other, so Windows now does too. Each account is a row in Connected or Not connected, with the provider's glyph, its name, a switch and a status line, and a Sign in button on the one that needs it. The default account keeps the Claude Code notification switch under it. Switching off the last Claude account takes Claude off the notch, as the provider's own switch did. As on the Mac (ClaudeProfile.discover), a folder Claude Code has not signed in to is not an account. 1.24.0 listed every folder it had registered, so an abandoned sign-in stayed as a row that could never read anything, and it renamed the real account beside it. A row after the accounts adds one now: it creates the next ~/.claude-<n> folder and opens Claude Code's sign-in there, with nothing to type. The new row shows only while that sign-in runs, counting down five minutes; if it does not finish, the folder goes again. Names follow the Mac's ClaudeProfile.displayName and displayNames: the domain of the address Claude Code records in .claude.json (Claude Gmail, Claude Acme), the folder until there is one (Claude (2)), plain Claude for a lone account, and the whole address only where two names would collide. The file is parsed again only when it changes. The notch and the taskbar take the same names. The card keeps the provider's title, Claude Usage, and when there is more than one account says whose it is on the line under it (someone@gmail.com · Max), where Claude Gmail Usage read as a product that does not exist. The new strings are translated into the eight languages Settings has. Names saved by 1.24.0 are no longer read; the field stays so 1.24.0 can still load the file.
Switching an account off writes its entry into claude_profiles, and that entry went out with an empty name. This version never reads the name, but 1.24.0 does: going back to it showed a blank name box, and its Save refused the blank. The entry now carries the account's display name.
vinzdg#495 adds its translation tables right after RESET_COPY's loop, and a DeepSeek line right above the Claude hooks switch: the two places this branch also edited, so whichever of the two merged second would conflict. The Claude row strings now sit above RESET_COPY, and the hooks switch keeps its own if line. Nothing changes on screen.
1.24.0's strip had a look of its own: it was always as wide as the Width slider and split that evenly between its rings, so two rings sat 164 px apart; it read its own windows (the weekly figure for Claude and Codex), drew hairline rings with no track until a reading came, and left Antigravity, DeepSeek, Command Code and Qoder as letters. Each cell is now the notch's, in the notch's 56-unit box: the hole, the track and reading, the weekly ring inside or outside, the activity arc stepping as the notch's does, the glyph dimmed when its window is used up or the reading is old, and the notch's figure beside the ring. The reading is ring_window's, as in the notch and the tray. Providers come in the notch's order, and a click presses the ring in while it refreshes, as on the notch. The strip is as wide as its cells. The Width setting goes; a narrower free space shrinks the whole row instead of dropping an account.
The hover card over the taskbar strip was a page of its own, with a design of its own: bars and badges, a header with refresh and close buttons, and a footer link, all carried over from a pinned details window nothing ever opens, in English and Portuguese only. The hover window now loads notch.html with only its card showing, so it is the notch's card, drawn by the same renderCard in all of Settings' languages, with the notch's tail pointing at the hovered ring. In that mode the page leaves the notch's own window alone: no hot rectangles, no zoom or DPR reports, no folding and no hover tracking of its own. The window is the card's 246 px and sits the notch's tail gap above the strip.
"Display: Original notch, Left side, Before system tray" did not say what was being chosen. The row is now "Show rings in" Notch, Taskbar left or Taskbar right, and its help line says what the rings do there: hover for the card, click to refresh, right-click for Settings. Dropdown lists also follow the chosen appearance: the page declares its colour scheme, and options get solid colours of their own instead of black text on Windows' white list.
Moving from one ring to the next made the card jump three times: it waited the first hover's 140 ms, came up at a default 360 px because the last account's height had been dropped, then moved again once the new account had measured itself. Now it moves as the Mac's card does between cells (NotchMotion.glide): one card that travels and resizes, not one leaving and another arriving. An open card switches at once, keeps its height until the new one is in, and glides to the new ring over 300 ms, its tail on the same curve. It is pinned to the strip's side of its window, so a new height moves only its far edge. A card coming up from hidden waits for the page to measure the new account, so it never shows the last one's contents for a frame.
Moving between rings of different heights flashed for a frame: the window resized for the new card, and WebView2 redraws a moment after its window changes size, so for one frame the card was drawn cut off and out of place. No timing lines the two up. The window now keeps the tallest card's room whichever card it holds, as the notch's own window does. Switching rings is a change inside the page, which lands in one frame, and a move, which never redraws. The card sits on the strip's side of that room, and the rest of the window lets clicks through: Rust follows the pointer against the card the page measured, as it does for the notch, and the pointer on the card holds it open.
The notch's card jumped to the next cell in one frame. On the Mac it is one card that travels there (NotchMotion.glide), its tail with it, and so it is here now: an open card moving to another cell glides over 300 ms on the taskbar card's curve. A card that opens still appears where it belongs, and reduced motion turns the glide off. Rust lets clicks through everything outside the hot rectangles, so while the card travels they are reported each frame, and once more where it stops.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1.24.0 (#459) added a taskbar strip with a look of its own. This makes the strip and its hover card the notch's, and gives both cards the Mac's glide between cells.
Builds on #502. Its first three commits are #502's, because both edit Settings' accounts code. Review from "Windows: the taskbar strip draws the notch's cells".
Strip
ring_window), providers and order. Antigravity, DeepSeek, Command Code and Qoder get their marks instead of letters.Card
notch.htmlwith only its card showing, so it is the notch's card, in all eight languages, with its tail on the ring. The refresh and close buttons and the footer go; they came from a details window nothing opens.Glide: an open card travels to the next ring or cell over 300 ms (
NotchMotion.glide), on the taskbar and on the notch.Settings: "Display: Original notch / Left side / Before system tray" becomes "Show rings in: Notch / Taskbar, left / Taskbar, right". Dropdown lists follow the chosen appearance.
Overlap: #495 edits the same renderer and model, and #505 the same Settings files, as with #502. Whichever lands first, I'll resolve the conflicts here.
Test plan
cargo test -p codenotch: 316 passed. Clippy: nothing new in the changed files. Page tests pass.