Skip to content

UI revamp: SF Symbol icons, top-center dock, board settings, adaptive ink & spotlight collaboration#18

Merged
pedrobritx merged 6 commits into
mainfrom
claude/peaceful-galileo-nb6bgl
Jun 11, 2026
Merged

UI revamp: SF Symbol icons, top-center dock, board settings, adaptive ink & spotlight collaboration#18
pedrobritx merged 6 commits into
mainfrom
claude/peaceful-galileo-nb6bgl

Conversation

@pedrobritx

Copy link
Copy Markdown
Owner

Summary

A full HIG-inspired UI revamp across six commits (one per area, each leaving the app working):

1. SF Symbol icon system

  • All UI icons replaced with the supplied SF Symbol artwork, rendered as CSS mask-image spans tinted by currentColor — pixel-faithful SF look that adapts to theme/hover/active states behind the unchanged <Icon name/> API.
  • Hand-drawn SVGs remain only where no SF glyph exists (grip, sticky, shapes combo, rounded rect, elbow arrow, grid pickers), plus per-icon optical-scale corrections for SF exports with uneven padding.

2. Tools dock

  • Defaults to top-center (still draggable + persisted; double-click grip recenters).
  • New order: hand · select · pen · highlighter · eraser · text · sticky · shapes · color · insert media.
  • New insert-media button: import images/PDFs/audio, embed YouTube/Google Drive (shared EmbedDialog with the app menu).
  • Popovers resolve placement automatically (placement="auto") from the dock's on-screen position — they open downward at the top, flip upward when the dock is dragged low, with a mirrored speech-bubble tail.

3. Board settings & menu reorg

  • Board-synced background presets (Default / Paper Sand / Grey / Light Blue / Light Green, each with light+dark variants) and grid styles (dotted / squared / ruled / plain), stored in a Yjs settings map — synced to collaborators, persisted via IndexedDB/autosave/snapshots, intentionally outside the undo scope.
  • App menu reorganized into HIG sections: File (incl. Copy share link), Edit, View (zoom, appearance, background swatches, grid picker, collaborator-cursor toggle), Arrange.
  • Text & sticky shapes gain a synced align field with left/center/right controls in the selection inspector; the edit overlay matches.

4. Adaptive ink

  • Near-neutral ink (pen strokes, text, outlines, lines/arrows, and their in-flight previews) flips between near-black and near-white at render time based on the effective paper luminance — like Apple Freeform. Stored colors untouched; chromatic inks, highlighters, fills, stickies and PDF exports keep authored colors.

5. Collaboration bar & spotlight (FigJam-inspired)

  • Top-right bar: peer avatar stack (click to follow), Spotlight toggle, share popover (copy link + owner public/private switch, absorbing the old BoardAccessIndicator).
  • Presenters broadcast viewport centre+scale via awareness (10 Hz); peers auto-follow with a smooth RAF lerp and a "Following — tap to stop" pill. Manual pan/zoom breaks follow and suppresses re-grab until the presenter re-toggles.

6. Motion polish

  • Popovers scale-fade toward their anchor (180 ms ease-out, direction-aware), dock/pill entrances, focus-visible rings, full prefers-reduced-motion support.

Verification

Driven live with Playwright against pnpm dev (screenshots in session):

  • ✅ Dock top-center with SF icons in the new order; active tool tints white-on-accent.
  • ✅ Shapes/import popovers open below the top dock; flip above after dragging the dock to the bottom; double-click grip recenters.
  • ✅ Menu sections File/Edit/View/Arrange with 5 background swatches + 4 grid styles.
  • ✅ Paper Sand + squared grid render; near-black stroke flips to near-white in dark mode; settings + stroke + theme survive reload (IndexedDB).
  • ✅ Collab bar top-right with share → Copy link (local-only mode reduces to share, as designed).
  • pnpm typecheck and pnpm build green (icon PNGs emitted/inlined correctly).

Not exercised live: multi-client spotlight/follow (needs a reachable Supabase Realtime backend; the sandbox blocks TLS). The flow is guarded for local-only mode and worth a two-browser smoke test on a deployed environment.

Notes

  • PDF export intentionally keeps authored colors (renders on its own surface).
  • Native video file upload remains unsupported by the import pipeline; the insert menu routes video through YouTube/Drive embeds.

https://claude.ai/code/session_014knToCSeCGKvjWxJjCopQ6


Generated by Claude Code

claude added 6 commits June 11, 2026 00:10
Icons now render the supplied SF Symbol PNGs as mask-images tinted by
currentColor, behind the unchanged <Icon name/> API. Hand-drawn SVGs
remain only for glyphs with no SF counterpart (grip, sticky, shapes,
rounded, arrow-elbow, grid pickers). Adds optical-scale corrections for
glyphs with uneven intrinsic padding.

https://claude.ai/code/session_014knToCSeCGKvjWxJjCopQ6
…to-flip popovers

The dock now defaults to top-center (still draggable + persisted) and is
ordered hand, select, pen, highlighter, eraser, text, sticky, shapes,
color, insert-media. Popovers resolve placement automatically from the
dock's on-screen position so menus always open into visible space, with
a mirrored speech-bubble tail when opening downward. The new insert
button imports images/PDFs/audio and embeds YouTube/Drive links through
an EmbedDialog shared with the app menu.

https://claude.ai/code/session_014knToCSeCGKvjWxJjCopQ6
…ggle, text align

Adds a board-level settings map in the Yjs doc (background preset + grid
style) mirrored into a settings store; the BackgroundLayer now paints the
paper color and dotted/squared/ruled/plain grids with contrast derived
from the effective background. The app menu gains HIG-style sections:
File (with Copy share link), Edit, View (zoom, appearance, background
swatches, grid picker, collaborator-cursor toggle) and Arrange. Text and
sticky shapes get a synced align field, editable from the selection
inspector and honored by the edit overlay.

https://claude.ai/code/session_014knToCSeCGKvjWxJjCopQ6
… paper

Near-neutral ink (pen strokes, text, shape outlines, lines, arrows and
their in-flight previews) flips between near-black and near-white at
render time based on the effective board background's luminance, like
Apple Freeform. Stored colors are untouched; chromatic inks,
highlighters, fills, stickies and exports keep authored colors. The text
edit overlay applies the same mapping so editing stays WYSIWYG.

https://claude.ai/code/session_014knToCSeCGKvjWxJjCopQ6
Adds a FigJam-inspired CollabBar showing connected peers as an avatar
stack (click to follow a peer), a Spotlight toggle, and a share popover
with copy-link plus the owner's public/private switch (absorbing the old
BoardAccessIndicator). Presenters broadcast their viewport centre+scale
via awareness at 10 Hz; other clients auto-follow with a smooth RAF lerp
and a 'Following — tap to stop' pill. Any manual pan/zoom breaks follow
and suppresses re-grab until the presenter re-toggles. Identity now
carries the avatar into presence.

https://claude.ai/code/session_014knToCSeCGKvjWxJjCopQ6
…duced motion

Popovers scale-fade in toward their anchor (180ms ease-out, direction
aware via resolved placement), the dock and follow pill get gentle
entrances, focus-visible outlines cover buttons and inputs, and
prefers-reduced-motion disables all of it.

https://claude.ai/code/session_014knToCSeCGKvjWxJjCopQ6
@pedrobritx pedrobritx marked this pull request as ready for review June 11, 2026 00:40
@pedrobritx pedrobritx merged commit 415c21f into main Jun 11, 2026
4 checks passed
@pedrobritx pedrobritx deleted the claude/peaceful-galileo-nb6bgl branch June 11, 2026 00:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants