Commit Graph
74 Commits
Author SHA1 Message Date
ZacharyZhang-NY 5409c02394 feat(sync): include profiles in snapshots 2026-05-16 06:31:52 -04:00
ZacharyZhang-NY 323271fc1f feat(sync): include reading list in snapshots 2026-05-16 06:17:38 -04:00
ZacharyZhang-NY b2b3d5deca feat(sync): include notes in snapshots 2026-05-16 06:07:44 -04:00
ZacharyZhang-NY bd59e74ad2 perf(shell): trim render snapshot work 2026-05-16 01:52:19 -04:00
ZacharyZhang-NY 467dcb1f87 Reflect real sync state on the Sync settings page
`SyncConnectionState` was a one-variant enum (`SignedOut`), so the
Sync page rendered "Local-only · sign-in coming soon" even after the
bearer token landed on disk and the upload thread completed. The
state machine now mirrors the actual lifecycle.

What lands:
- `SyncConnectionState` gains `SignedIn`, `AwaitingDeviceApproval`,
  `SyncReady { last_synced_at_secs }`, `SyncError { message }`.
  `SyncObjectState::Synced` joins the per-object enum so individual
  rows can advertise "Synced" once a successful upload lands.
- `BrowserCore` stores the current `SyncConnectionState` and exposes
  `set_sync_connection_state`. `sync_status` now propagates the live
  state into the snapshot the UI reads.
- `ElyShell::probe_initial_sync_state` inspects
  `<profile_data>/sync/bearer.token` synchronously at construction
  so the first render of the sync page is honest about whether the
  user is signed in.
- A `std::sync::mpsc` channel ferries upload outcomes from the
  off-thread worker back to the shell; the existing 8 ms tick
  drains it and stamps `core.set_sync_connection_state` with the
  freshest result. The UI now shows "Signed in · awaiting first
  sync", "Synced · last upload Xm ago", "Sync error · …", and the
  worker-special "Signed in · waiting for device approval" when the
  server returns `device_not_approved`.
2026-05-15 19:58:42 -04:00
ZacharyZhang-NY 05ce4afba4 Poll only visible web surfaces 2026-05-13 01:54:51 -04:00
ZacharyZhang-NY 4403eacf15 Auto-reveal hidden sidebar on cursor reach
Cursor-reach reveal now fulfils the "Slide in on cursor reach"
description on the design's Hidden-on-hover layout card.

- BrowserCore::active_space_sidebar_width() returns the current
  sidebar tier without cloning a full BrowserSnapshot, so the
  mouse_move hot path stays cheap.
- on_window_mouse_move on the shell root hits-tests the cursor x
  against REVEAL_THRESHOLD_PX (24 px from the left edge). Outside
  the reveal/collapse zones it returns immediately, so 99 % of
  mouse moves never even read the snapshot.
- When in HIDDEN mode and the cursor crosses the reveal threshold,
  expand_hidden_sidebar fires (its early-return on already-expanded
  state prevents notify spam). When the cursor passes
  COLLAPSE_THRESHOLD_PX (shell inset + default sidebar width + 24 px
  buffer), collapse_hidden_sidebar fires.
- Click-to-expand on the rail and click-on-backdrop-to-collapse
  remain as predictable fallbacks.
2026-05-09 20:06:11 -04:00
ZacharyZhang-NY 3108f3265b Add translucency setting + apply to runtime panel alpha
Domain:
- AppearanceSettings gains translucency_pct (u8, 0..=100, default 40)
  with a clamping setter and serde round-trip coverage.
- DEFAULT_TRANSLUCENCY_PCT and MAX_TRANSLUCENCY_PCT exported for the
  shell.

Core:
- BrowserCore::set_translucency_pct delegates to the appearance struct;
  the existing reset_appearance covers the reset path.
- Integration test covers persistence into snapshot.appearance.

Render:
- chrome::sidebar::panel_bg(snapshot) replaces the static PANEL_BG
  constant, mapping the user's translucency_pct linearly into the alpha
  byte 0xff..0xb3. Sidebar (expanded + compact) and main pane consume
  the helper so changing the setting at runtime updates every glass
  surface in lock-step.

Form:
- Translucency row in chrome::appearance_form mirrors the design's
  static track + thumb visual driven by the persisted percentage, plus
  three preset chips (Solid 0 / Default 40 / Glassy 75) that mutate the
  setting through shell.set_translucency_pct.

Strict UX rule preserved: alpha never drops below 0xb3 so panels stay
readable without backdrop blur (which GPUI 0.2.2 doesn't expose).
2026-05-09 19:39:11 -04:00
ZacharyZhang-NY 53dc40986a Wire AppearanceSettings into BrowserCore + snapshot
BrowserCore now owns an AppearanceSettings, exposes it through
BrowserSnapshot.appearance, and offers set_wallpaper_theme,
set_theme_mode, set_reduce_motion, reset_appearance mutators. Defaults
match the domain defaults (Dawn / System / motion-on) so existing
behaviour is unchanged for callers who don't touch appearance.

Integration tests cover initial snapshot defaults, mutation persistence
across snapshots, and reset behaviour.
2026-05-09 18:48:10 -04:00
ZacharyZhang-NY 8b9c4579c1 Add active profile local data export 2026-05-09 08:23:37 -04:00
ZacharyZhang-NY 2b6de367b0 Add privacy local data inventory 2026-05-09 07:22:14 -04:00
ZacharyZhang-NY a8d2688020 Record local diagnostics events 2026-05-09 06:12:05 -04:00
ZacharyZhang-NY 4e85f31dac Add diagnostics privacy controls 2026-05-09 04:47:45 -04:00
ZacharyZhang-NY e30fce9213 Add update policy controls 2026-05-09 04:13:41 -04:00
ZacharyZhang-NY 1eb8e271f5 Add bookmark import export packages 2026-05-09 02:07:37 -04:00
ZacharyZhang-NY d193f5a400 Add settings reset defaults 2026-05-09 01:14:15 -04:00
ZacharyZhang-NY 96732c8932 Gate plugins in private profiles 2026-05-09 00:44:15 -04:00
ZacharyZhang-NY 7797203bbf Add private window entry point 2026-05-09 00:31:40 -04:00
ZacharyZhang-NY 058d377eab Add elyspace core import export model 2026-05-08 23:05:53 -04:00
ZacharyZhang-NY 784fe5a288 Move space navigation into state module 2026-05-08 22:49:57 -04:00
ZacharyZhang-NY 82e2ccd16d Use stable profile for spaces created from private context 2026-05-08 22:44:07 -04:00
ZacharyZhang-NY 60426b6c18 Clear private profile download index on exit 2026-05-08 22:35:42 -04:00
ZacharyZhang-NY 2bd94710df Add active profile site data clearing 2026-05-08 21:40:18 -04:00
ZacharyZhang-NY 3df998876b Harden PRD live-site smoke 2026-05-08 20:37:42 -04:00
ZacharyZhang-NY 24bdf3d2dc Add tab group ordering commands 2026-05-08 11:31:34 -04:00
ZacharyZhang-NY 3c380e1455 Add sleeping tab recovery 2026-05-08 10:23:58 -04:00
ZacharyZhang-NY 1ec3bfcc3d Add crashed tab recovery 2026-05-08 10:14:00 -04:00
ZacharyZhang-NY 3fe2346305 Add space default profile control 2026-05-08 09:25:25 -04:00
ZacharyZhang-NY b11668e75e Add space trash recovery 2026-05-08 09:17:59 -04:00
ZacharyZhang-NY e839b05415 Add space order controls 2026-05-08 09:07:20 -04:00
ZacharyZhang-NY cdb82bcace Add space switching shortcuts 2026-05-08 08:57:18 -04:00
ZacharyZhang-NY adf5b27207 Add tab group sidebar support 2026-05-08 07:16:17 -04:00
ZacharyZhang-NY 7e68857eb8 Add page notes panel 2026-05-08 06:53:31 -04:00
ZacharyZhang-NY 668557773b Track tab sort keys 2026-05-08 05:47:50 -04:00
ZacharyZhang-NY bce489c119 Track space sort keys 2026-05-08 05:40:46 -04:00
ZacharyZhang-NY 820054ff23 Track space sidebar width 2026-05-08 05:35:32 -04:00
ZacharyZhang-NY d45dced4a7 Bind spaces to default profiles 2026-05-08 05:21:42 -04:00
ZacharyZhang-NY 02279f8984 Add profile history clear confirmation 2026-05-08 04:10:04 -04:00
ZacharyZhang-NY 38a847c27e Add sync object pause controls 2026-05-08 03:39:18 -04:00
ZacharyZhang-NY 569851eae9 Add favorite limit settings 2026-05-08 03:31:41 -04:00
ZacharyZhang-NY 6ba7fd611c Add privacy history settings 2026-05-08 03:19:43 -04:00
ZacharyZhang-NY 4bdbf5e0c5 Add general new tab settings 2026-05-08 03:13:37 -04:00
ZacharyZhang-NY 6750f60d52 Add search engine settings 2026-05-08 03:04:33 -04:00
ZacharyZhang-NY 7f479ff9e1 Add idle tab auto archive policy 2026-05-08 02:27:29 -04:00
ZacharyZhang-NY 080d9de7a8 Restore archived split views as groups 2026-05-08 02:06:43 -04:00
ZacharyZhang-NY 23b108c8dd Add split view panes 2026-05-08 01:47:19 -04:00
ZacharyZhang-NY 84149ea4df Add site permission settings 2026-05-08 01:24:10 -04:00
ZacharyZhang-NY b8d2b291b2 Add reading list internal page 2026-05-08 00:57:59 -04:00
ZacharyZhang-NY e225fac222 Add bookmarks internal page 2026-05-08 00:44:43 -04:00
ZacharyZhang-NY 479737a8b2 Add sync settings status page 2026-05-08 00:16:56 -04:00