Repository navigation
Give the shell the desk-by-the-window personality - #12
Merged
Merged
Conversation
The shell is two colors, oat or walnut with moss, and it needs a few more tones to feel like a desk by a window. Candle, dusk and night are small accent families (a text-safe line color and a subtle fill each) for the sun and moon icons and the drawings that follow. The ambient group holds the window-light and evening-sky stops for the desk canvas, plus a spark color for the sun disc and stars. Every new pairing has a contrast pair in tokens.json: the accents on the four surfaces and on their own fills, text on each fill and on both ambient stops, and the focus ring. The ambient stops also get a ceiling (at most 1.3:1 against the sunken canvas) so the wash stays quiet. To express that, brand-tokens now accepts an optional max next to min. Under forced colors the accents become CanvasText and the fills and ambient tokens become Canvas, so gradients flatten and stars vanish. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The shell has no pictures, so it reads as flat. These inline SVG components are the set the brand direction calls for: an arched window (a sunset by day, stars and a crescent moon at night), a potted plant with a trailing vine, a lit candle, a stack of books, an open notebook with the logo's moss stroke, the signature ink stroke, a field of twelve stars, a desk scene built from the parts, three empty-state compositions, and a small sun and moon mark for the theme previews. Each drawing is hidden from screen readers and cannot take focus, uses only token colors through CSS classes, draws 1.5 px lines that stay that wide at any size, and stays under 3 KB of markup. Glows are flat radial gradients, never blur. Each fades in once over the fast duration, and not at all with reduced motion. Under a Windows contrast theme every drawing becomes plain outlines in the text color and the stars are hidden. Component tests cover all of that in both themes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The page canvas was a flat sunken rectangle, which is the natural place for the time of day to show. By day a warm wash falls from the top corner, as if from a window. In the evening the canvas becomes a sky that deepens from night through the canvas color to a dusk horizon, with twelve faint stars pinned to its top, behind the page card. The washes stay within 1.3:1 of the sunken canvas and only show around the card, never behind text: the card is opaque and the star field sits under it. The sky follows the theme on the root element, so it changes with the crossfade and never lags a frame behind. Always paper white lights the whole page area, so the stars are left out there, and a Windows contrast theme gets a flat canvas. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The first-run setup was three plain cards on a flat backdrop, and the welcome step left about 360 px of empty card between its text and the button. The welcome step now shows the desk by the window between its sentence and its note, with its text centered to match the title. Each step title signs off with the ink stroke, and the backdrop carries the window light by day or the evening sky at night, always around the card and never behind text. The notebook color chips in step 3 share the width evenly, so they are the same size. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The title bar toggle was a gray sun or moon. The sun is now candle colored and the moon night colored, both well above the 3:1 an icon needs on the app surface and on its hover and pressed fills. The three theme cards share a row down to the compact size instead of wrapping two and one at 820 px, and each preview carries a small mark in a bottom corner: a low sun for Light, a moon and stars for Dark, and one of each for Match Windows. The marks sit below the preview lines, are hidden under a Windows contrast theme, and stay out of the screen reader and Tab order like the rest of the preview. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
"No notebooks yet" was a bare sentence. It now has a small bookshelf with a leaning book and a sprig above it, and the sentence is unchanged. With notebooks present, the notebooks pane footer holds a small potted plant opposite Trash. It sits in the fixed footer so it never covers a row, and it hides when the footer is narrower than 200 px, in compact, and when the pane has no notebooks (that pane has its own drawing). The Saved cloud in the title bar is now the success green, the one good state, while Saving, Offline and the error keep their quiet colors. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The tree gives every notebook a color chip, but the palette, the quick switcher and the breadcrumb were all one color. A page or notebook result now has a small 8 px dot in its notebook's color before the title, and the breadcrumb's first crumb has the same dot. The dots reuse the pen colors the tree already uses, are hidden from screen readers (the name is unchanged, and the path still says which notebook), and keep their own color under a Windows contrast theme. To carry the color, a palette result can now name an ink. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
"No page open" and "Trash is empty" were bare text, and Trash was a 12 px caption on the sunken canvas with no card and a focus ring the full width of the pane. "No page open" now has an open notebook with a candle beside it above its sentence. Trash moves onto a paper card like a page, shows a lit candle beside a tidy stack of books when empty, sets its sentence at body size, and fits the heading's focus ring to the heading text. The sentences are unchanged and carry the meaning; the drawings are hidden from screen readers. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
About was a list of facts under a heading. It now starts with the heading's ink stroke, then the 48 px logo mark with a small window beside it (a sunset by day, stars and a moon in the evening), then the facts. The drawings are hidden from screen readers, and the text is unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
BRAND.md still said illustrations are only for empty states and drew everything from two colors. Section 1 now says what the personality looks like by day and in the evening. Section 4 gains a "Warm accents and ambient light" subsection with each new token, its single job, the rule that candle, dusk and night are never status colors or button fills, and the 1.3:1 ceiling on the washes. Section 7 says glows are flat gradients, section 8 replaces the illustration paragraph (where drawings go, the size and weight limits, the motif set), section 9 says drawings fade in once and never loop, and sections 11 and 13 add the empty-state and ambient canvas rows and the new things to avoid. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The new look is only worth having if it never costs the writing surface anything. Five new screen states (the three setup steps, the empty Trash, and Appearance) join the focus walk and the axe run at every size and theme. A new behavior spec checks, in both themes and at two sizes, that no drawing's box meets a text box on eight screens, that nothing loops once a page has settled, that the fade-in is gone with reduced motion, that the canvas sits behind an opaque page card with the stars under it, and that the plant stays out of the compact layout. The forced-colors spec checks that a Windows contrast theme gets a flat canvas, no stars, and plain outlines in the text color. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The shelf's third book was rotated 14 degrees about its bottom-right corner, which swung its bottom-left corner 2.4 units below the shelf line, so it drew through the shelf. It now pivots on its bottom-left corner (48, 70.4) by 17.7 degrees, the angle at which its left edge rests on the moss book's top-right corner (39, 41.4); its bottom-right corner lifts 3 units and no point sits below the shelf. The same audit found the welcome scene's book stack 0.7 units and its notebook 0.2 units below the desk line, and the candle's saucer floating just above its foot. They now sit on their lines. New component tests trace each outline: the leaning book stands on its lower corner, touches the moss book without entering it, and every book, pot, notebook and candle stands on its shelf, desk or sill. The guide records the rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In the welcome scene the plant on the sill covers the window's lower left pane, and one star sat about a unit under a leaf, touching it once the strokes were drawn; another sat close above the top leaf. Both move into open sky. The day sun almost kissed the window's middle bar, so it sits 1.5 units lower and sets a little further behind the hills. The guide adds that nothing crowds another shape. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The empty-state drawings kept 6 units of blank paper at each end of their shelf, so the shelf started 5 pixels right of the heading and sentence it sits with. They are cropped to 110 pixels, and the shelf now starts where the text starts. The About logo sat inline in its span, so the text line under it made the span taller and lifted the mark about 4 pixels above the middle of the window beside it; it is a block now, and a test holds the two level. The footer plant stood flush at the end of the footer, much closer to the edge than the Trash icon is at the start; it is inset to match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The notebook-color dot sat inline before a page's title, so the detail line under it (the notebook and section) started under the dot rather than under the title's text, and a wrapped title ran back under it. The dot now hangs in front: the title's text, its wrapped lines and the detail all start at the same place. A test measures the starts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The title bar had padding only at its start, so in the evening theme the pressed toggle's fill ran into the window's right edge and lost its rounded corners. The bar's end now keeps 4 pixels, the same inset the toggle has from the top, and a test holds it there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The candle's body ended level with the dish's rim, about 4.4 units above the dish floor, so it floated with clear rows of pixels underneath. Its bottom now follows the saucer curve, 0.2 to 0.3 above it. The vine's tail dipped 1.2 below the pot's foot, which in the desk scene put it 0.74 units into the window sill. It now ends just above the sill. The plant's left leaf touched the window's middle bar, so the two strokes merged. It now joins the stem 4 units lower, about 4 px clear of the bar. Tests now stand the whole plant on the sill, keep the left leaf more than 3 units from the bar, and seat the candle's body in its dish. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The star at (84, 37) sat inside the moon's disc, in the mouth of the crescent, 1.4 px from the lower horn at the About size. It now sits at (88, 47), 7.8 units outside the moon's outline. At the About size the strokes are 2.4 units wide, so the sun's top left only 0.68 px of sky under the middle bar. Its centre drops from 69.5 to 72, leaving about 2.3 px there and 3.9 px in the welcome scene; the centre stays above the hills, so more than half the disc still shows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The breadcrumb's notebook dot sat 4 px from the Forward button and 9 px from its own label, so it read as part of the button group. It now has 4 px on both sides, which puts it 8 px from the button and 5 px from the name, the same dot-to-label gap the tree uses. The command palette's dot gets the same 5 px gap, and its hanging indent follows so wrapped titles and details still line up with the title text. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Centering the whole welcome block put its title 81 px lower than the title on steps 2 and 3, so the header jumped on Get started, and the block sat 9 px low because the content padding is uneven. The welcome grid now keeps the header at the top, the note at the bottom, and centers the desk scene in the room between them. A component test checks that the title stays put when moving to the next step. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The sill's bottom line ends at y 101.5 in a 102-unit box. Lines keep their 1.5 px width at any size, so at the 64 px About drawing the stroke reached 102.7 units and lost 0.44 px, leaving a one-pixel sill. The standalone window now uses a 100 x 103 box and defaults to 103 px tall. WindowArt and the desk scene keep their own boxes. A component test checks every window line, stroke included, stays inside the drawing at 64 and 103 px. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The card starts 32 px down the canvas, and three top-band stars sat within a few pixels of that edge: at 1280 wide the star at x 418 touched it and looked like a stray pixel on the card. Those three now sit at y 22 to 24, at least 6 px above the edge. The field also scaled up on canvases wider than 1280 px, which pushed stars down onto the edge, so it is now drawn at 1:1 and centered instead. A component test checks every star stays 5 px clear of the edge at 600 to 2560 px wide. BRAND.md records both rules: lines stay inside their drawing's box, stroke included, and stars stay clear of the card. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Vite links each chunk's style sheet before the entry's, so ui.css and theme.css, which open with @layer components and @layer states, loaded ahead of the order statement in styles/layers.css. The browser fixed the order from first use, so base rules beat components, states and forced colors: inset focus rings fell back to the base outside ring and got clipped, and touch density left buttons at 32 px. A small build plugin now starts every emitted style sheet with the order statement from layers.css, so the order holds whichever file loads first, including sheets lazy chunks add later. An inline style in index.html could make Tauri add a style nonce, which would switch off 'unsafe-inline' for style attributes. Two Playwright checks pin the fixed behavior: a focused tree row's -2px ring offset and 44 px title bar buttons with touch density. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At 820x620 the shortcut tables' 55vh height pushed the Close button below the dialog's visible area, and the dialog became a second scroller around the table scroller. The scroller's height now also leaves room for the dialog's title, filter and actions in the window's height. The scroller is also positioned now. The visually hidden table heads are absolutely positioned, and escaped the scroller, so the dialog had a 3261 px scroll height and could scroll into blank space. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
While a row listened for a new shortcut, the field sat in the keys column and the actions cell beside it stood empty. At 820 px the field was 161 px wide, so its "Waiting for a shortcut" placeholder was cut and the hint wrapped to three lines. The capturing row now spans the keys and actions columns with one cell. A colgroup sets the column widths, so that row moves no other row even when it is the first in its table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At 820x620 the palette's 60vh list carried its bottom edge onto the window's, cutting its rounded corners and shadow, and any shorter window pushed it past the edge. The list's height now also leaves room for the palette's top line, input, chips and a 16 px margin below it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A control that Tab brought in below the fold of Settings, the setup steps or the shortcut tables sat flush with the scroller's bottom edge, so the bottom of its focus ring was cut. These scrollers now set an 8 px scroll padding, as the trees and the page already do. Two controls sat against a scroller's edge with no room for their outside ring: Settings' first section link and the notebooks drawer's Trash button. The section list now pads its block ends, with the header and main column adjusted so nothing moves, and the drawer's scroller reaches 4 px into the drawer's padding and pads its content back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The shared disabled rule gave every disabled button a subtle border, so a disabled icon button gained a box that the enabled one lacks. In the title bar, Go back and Go forward read as a bare arrow beside a boxed one, with the emphasis on the button that does nothing. The subtle border now applies only to the secondary, primary and filled danger buttons, which have a border when enabled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Step 3, "Where to keep things", scrolled inside the 600 px card at 1280x800: its notebook color chips were cut by the footer while 80 px of empty window sat above and below the card. The card is now 672 px tall, so step 3 fits. Every step keeps the same height and title position, and in a short window the card is still capped by its maximum height. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The three theme cards stop at their full width, and the start-aligned row left its 6 px of slack on the right only, so the cards sat 3 px left of the card's center under a centered heading, ink stroke and subtitle. The setup step now centers the row. Settings, Appearance keeps it start-aligned with the text above it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The visually hidden table heads are absolutely positioned, and on the Settings page their container wasn't positioned, so they escaped the Settings scroller and stretched the document by about 2,500 px. Wheeling past the end of the list, or scrolling a far row into view, then scrolled the whole window: title bar, nav and content left the screen. The groups container is now positioned, as the dialog's scroller was. The geometry spec now also fails when the document scrolls down, not only sideways, on every registered screen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The name column took half of each table and the actions column a fixed
11rem, which left the keys about 90 px at 820x620. Key caps ran under
the Change buttons ("Ctrl+Shift+DownChange"), and "Ctrl+Y or
Ctrl+Shift+Z" broke over two lines in the dialog while the actions
column beside it stood mostly empty.
The name column now takes a third and the actions column 10rem, which
still holds Change and Reset side by side. Names wrap more gracefully
than chords do. The cell rules that repeated the column widths are gone,
since the columns set them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At 820x620 the Settings column is 532 px, and the eight 80 px text size cards wrapped six and two, leaving 175% and 200% alone on a second row. The size groups are now inline-size containers, and when a group of eight steps has less than the 696 px a single row needs, it becomes a grid of four columns. That covers the medium size class and the narrow end of expanded, where the same wrap would happen. The interface size group, with five steps, still fits on one row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each radio card hugged its own label and description, so the two shortcut set cards were 289 and 446 px wide and stacked with ragged right edges at 820x620. The Appearance choices were ragged too: Page color 146/160, Reduce motion 137/178, Size of buttons 101/93/72. The shortcut sets now share two equal columns, at most 44rem together, with the descriptions wrapping inside, and stack in compact. The Appearance choices that aren't equal steps lay their cards out as equal grid columns at the widest card's width, shrinking together when the column is narrower. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One panel had three right edges. The Find by shortcut switch's track stopped 9 px short of the table rules, inside its invisible 8 px hover padding and 1 px border, and in the dialog the tables stopped 4 px short of the Close button, held off by the scroller's end padding. When the switch ends the toolbar row, its hover area now hangs out past the end, as Settings hangs switches out at the start edge, and the dialog's scroller has no end padding. The Change buttons sit 8 px inside their cells, which leaves their focus rings room. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With no matches the palette showed the field and the filter chips, then empty space: "No results" only went to the screen reader announcer. The list area now shows it, in secondary text with an option's padding, once every provider has answered. The ranking carries a settled flag for that, so a slow provider's pending answer never flashes "No results." first. The empty listbox takes no room, so the line sits where the first result would. The string gets a full stop, to match "No destinations match." Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The section nav sat inside the Settings scroller and scrolled away with the content. Once a long section such as Shortcuts (3,255 px) or About was scrolled, the 240 px nav column was an empty strip, and changing section meant scrolling back to the top. The nav now sticks to the top of the scroller. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A fixed 200 px minimum height left 27 px under the caption against 17 px above the preview. At first run the Match Windows caption, "Preselected because Windows is set to Light.", takes two lines and made the row 208 px; choosing another card swapped in "Follows Windows" and the row jumped back to 200 px. The cards now take their content's height, so the padding is even. In setup, outside compact, every caption keeps room for two lines, so the row keeps its height whichever card is chosen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The three 200 px cards and their gaps made a row 648 px wide, centered in the 654 px column, so their outer edges sat 3 px inside the edges the Back and Continue buttons and the fields use. In setup the cards now have no maximum width, so they fill the column (202 px each) and the edges meet. Settings keeps its 200 px cards. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A section's dot is 8 px and a section group's square 12 px, so in the same level of the notebooks tree "Lectures" and "Labs" started their names at x 64 and "Exam prep" at 68. The dot now takes 2 px of margin on each side, the square's 12 px slot, so every name starts at 68. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Restart to update, What's new, and Later sat 4 px apart, where the dialogs and the setup footer use 12 px and BRAND.md asks for 12 to 16 px between related items. The popover's action row now uses the 12 px gap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Command bar tools without a shortcut, such as New notebook, Reveal in tree, and Pane widths, showed a tooltip with the same words as the button, and the title bar's save status had a native title equal to its visible "Saved". A tool and a bottom bar action now get a tooltip only when it adds the shortcut, and the save status keeps its title only in the icon presentation, where the text is hidden. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A row with two chords broke after "or" when its keys didn't fit, so "Ctrl+Shift+Right or" ended one line and "Ctrl+Alt+]" stood alone on the next. Each chord after the first is now one unit with the "or" before it, so a wrap reads "Ctrl+Shift+Right", then "or Ctrl+Alt+]". At 820x620 that still happens for Make subpage and Promote, the two longest pairs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In the medium size class the notebooks tree lives in a modal drawer, and while a modal layer is open the dispatcher ran only commands that allow it. So F2, Delete, Ctrl+Shift+M and Ctrl+N did nothing in the drawer, though its context menus listed them and the same commands ran from the menus. The focus zone also read "dialog" there, so a command would have acted on the open page instead of the focused row. A modal layer now runs the commands of the scopes it holds itself, with the scopes they sit in short of global: the drawer holds the tree, which sits in the workspace. A region inside a dialog keeps its focus zone. Plain dialogs hold no scopes and block as before, and global commands still need to allow the modal layer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second polish review found defects the geometry spec had no check for. On every registered screen it now also fails when a table cell's contents run past the cell (the key caps under the Change buttons), a wrapped choice leaves its last row less than half as full as its first (175% and 200% alone), or the cards of one choice in the main content differ in width (the shortcut sets at 289 and 446 px). The centering check covers grid cards that center with justify-items. New tests check that the setup theme cards meet the footer's edges and keep their height when the choice changes, and that the Settings section list stays in view while a long section scrolls. The geometry tests get 60 s, since the shortcut list's focus walk takes about 25. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This round's fixes follow three rules the brand guide didn't state yet: the cards of one choice share one width and wrap evenly, a button that shows its name gets a tooltip only to add its shortcut, and the palette says "No results." where the results would be. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The repo checks warned about a 34-word sentence in the setup styles, a 91-word paragraph at the top of the geometry spec, and its measure function at 51 lines. The sentence and paragraph are split, and measure returns its result on one line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The drawings read as pale outlines because their fills were the near-white subtle accents. Five new drawing tints (art.moss, clay, candle, dusk, night) give them soft color in both themes: each book has its own spine color, the pots and the candle dish are clay, each flame has a warm candle glow, the notebook has warm paper pages, the day window holds a sunset band from paper light to candle and dusk behind the sun, and the evening window deepens from night to indigo under the moon and stars. The tints flatten to the canvas under Windows contrast themes, where the glow is hidden so no flame gets an outlined circle. BRAND.md gains a drawing tints table, splits section 8 into icon, logo, illustration and geometry parts, and raises the markup budget to 6 KB to fit the gradients. Tests check every tint, the sky stops, the spines, the pot, the glow and the forced-colors halo. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The drawings were small enough to miss. The welcome desk is now shown at one and a half times its drawn size (360 x 225), the three empty-state drawings at 176 px wide instead of 110, the About window at 112 px tall instead of 64, and the notebooks pane plant at 42 x 50 instead of 28 x 38. The line stays 1.5 px at every size. Each drawing also holds more of the desk-by-the-window vocabulary, inside drawings that already existed: a moss vine twines along the window frame, the book stack is four high, a second, shorter candle stands on the desk, the shelf's potted plant trails a tendril down to the shelf, the footer plant trails a short vine with three leaves, and the open notebook has a moss cover and rests on its spine. The geometry tests split into their own file with shared helpers and now also check that each book rests on the one below, that both candles stand on the desk without overlapping dishes, that the shelf tendril lies on the shelf, that the vine keeps clear of the stars and moon, and the new sizes. BRAND.md records the sizes in a table. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The canvas behind the page card was a near-flat wash. By day it now has a warmer pool of window light from the top corner and, lower on the desk, a soft patch of light crossed by the faint shadow of the window's bars (two thin bars at 5 percent of the text color that fade at their ends). In the evening the sky runs from night indigo through dusk to a low sunset band at the horizon, and the star field grows from 12 to 25 slightly brighter stars, three of them larger. The setup backdrop gets the same light and sky. A new ambient.glow token carries the warmest light: the patch by day and the sunset band at night. The background-tone ceiling in the token check rises from 1.3 to 1.5, just above the sunset band's 1.4959, and every text pairing on the new tone keeps the canvas targets. The page card stays plain paper, and Windows contrast themes still flatten the canvas and hide the stars. Tests cover the glow's pairings and ceiling, the canvas layers in both themes around a plain card, and the stars' count, sizes and opacity. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
On review beside the earlier screenshots, the round patch of light with its centered cross read as a plus sign, and it repeated on every setup step beside the card. The patch on the page canvas is now wider than it is tall, as light falls on a flat desk, and its cross-bar shadows span the patch at 4 percent of the text color instead of 5. The setup backdrop keeps only the warmer pool from the corner by day and the dusk sky with its sunset band at night, so the steps stay calm. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The two bars formed a centered cross inside the round glow, so the patch read as a plus sign or crosshair rather than window light, and it competed with the page. Because the bars were sized in percent, the cross grew with the window (about 647 by 359 px at 1920 wide), and at narrower widths or with a tall page the card cut it so a bar seemed to drop out of the card's edge. Keep the patch and the corner pool, remove both bar layers and the --pane-shadow token, and cap the patch at 420 by 300 px with min() so it stays a patch of light on a wide window. BRAND.md and the ambient spec now describe and expect two radial layers by day. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Four stars sat below the card's top edge on the assumption that the card would cover them. The field is centered on the canvas, but the card's side edges move with the canvas width (min(100% - 64px, 72ch)), so at 1280 one star was 4.1 px from the left edge, and at 1290, 1308, and from 1336 up, stars landed on a side edge and showed as specks on the card. Move those four into the band above the card (cy + r at most 27), each at least 33 px from its neighbors, and tighten the geometry test so every star must clear the top edge by 5 px from above at 600, 1280, 1920, and 2560 px. The header comment, the CSS comment (which still said twelve stars), and BRAND.md now say the stars stay above the card. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
CommandPalette.test measured the notebook-color dot with a Range over its empty contents. An empty element has no text to give a Range a size, and browsers disagree on where to put it: here it is 0,0, so "dot left of title" passed by accident, while on CI's Chrome it landed on the title and failed with 0 < 0. The dot is now measured as the box it is: it has a width and ends at or before the title text. The title and detail still have to start at the same place. The start-up CSS passed its 15 KB gzipped budget (15.6 KB measured) once the brand fills, candles, vine, stars and ambient tokens landed, which stopped ui-web at the bundle check since 29cb72c, before Playwright ran. That growth is the brand work, so the budget moves to 16 KB, leaving roughly 0.4 KB of headroom as a guard. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Two tests measured before their subject had settled, which a fast machine hides and a slow runner does not. The palette's dot test took the first Mitosis option that appeared. Each letter searches again, so on a slow runner that option is listed for a part of the word and then replaced when the list is rebuilt for all of it. The test then measured a detached node, where every rectangle is zero (the "0 is not less than 0" and "width 0" failures). It now waits for the count announcement, which comes once every provider has answered for the whole word, and measures the option the list kept. The settings scroll test scrolled as soon as the Shortcuts heading had focus, but a section loads on its own after its heading. With nothing under the heading there was nothing to scroll, so the heading stayed in view. It now waits for the section's first table. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Conflicts: app/bundle-budget.json kept both sides' limits; PageView.tsx and PageView.module.css combined main's page changes with the brand empty-page treatment; EmptyPageArt.tsx was removed in favour of the brand illustration. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Measured after merging main: start-up JavaScript 183.1 KB gzipped (limit 180 -> 185) and start-up CSS 17.5 KB (limit 16 -> 18). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
After merging main, the page in editing mode had no background, so the ambient spec found a transparent card. The editing sheet now uses the page surface colour. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Gives the shell the "desk by the window" personality from the owner's direction: calm like before, but warm, with a few accents and small drawings that sit beside the work and never on it.
Changes
brand-tokenscheck gets amaxceiling, so the ambient washes stay within 1.3:1 of the sunken canvas.Tests
maxceiling cases in the style-rule tests.ambient.spec.tschecks no drawing meets text, no looping animation, no fade-in with reduced motion, and the canvas behind an opaque card; forced-colors checks for flat canvas and outlines.checks --base main(0 errors).Screenshots
1280x800 (
wide) and 820x620 (compact), light and dark, named<screen>-<theme>-<size>.png. The before and after sets are kept next to the proposal in the scratchpad (brand/before/andbrand/after/):🤖 Generated with Claude Code