Commit Graph
144 Commits
Author SHA1 Message Date
ZacharyZhang-NY c95e3665c6 Omnibar Enter navigates the current tab instead of spawning a new one
`submit_command` matched every browser's "Enter to navigate" intent
to `open_tab(url)`, which always inserts a new `BrowserTab`. So
typing `google.com` and hitting Enter on a new-tab page would leave
both the new-tab and a fresh google.com tab in the sidebar.

Mirror the same in-place navigation rule the shell-level code now
uses: `navigate_active_tab(url)` for the Navigate and Search
intents, with `open_tab` as the fallback when there's no active tab
yet. Tab count only goes up when the user explicitly hits + New Tab.

cargo test --workspace: 440 passed, 0 failed.
2026-05-09 22:50:01 -04:00
ZacharyZhang-NY f8e05604ed Navigate the active tab in place instead of spawning a new tab
Root cause of "settings opens new tab for every click": every
internal navigation went through `open_internal_tab → open_url →
core.open_tab(url)`, and `open_tab` unconditionally inserts a new
`BrowserTab`. So three settings sub-page clicks left four tabs in
the sidebar, which is the screenshot the user keeps sending.

Real browsers navigate the active tab in place for in-app links and
spawn new tabs only on `+ New Tab` (or Cmd-click). Wire it through:

* `BrowserTab::set_url(url)` mutates the tab's URL and bumps
  `last_active_at`. Title stays put — the page renderer can refresh
  it from the new URL.
* `BrowserCore::navigate_active_tab(url)` finds the active tab,
  calls `set_url`, marks it Ready, records the history entry, and
  bumps activity. Returns `TabNotFound` if there's no active tab.
* `ElyShell::navigate_active_tab` calls the core method and falls
  back to `open_tab` if there's no active tab to navigate. The
  shell's `open_internal_tab` (used by settings nav, home pills,
  sidebar Settings + Profile rows, command-overlay routes, etc.)
  now routes through this in-place path.
* `open_url` keeps the explicit "spawn a new tab" semantics for
  `+ New Tab` and the deep-link router.

Settings, plugin marketplace, history, profile picker — every
sidebar nav now stays in one tab.

cargo test --workspace: 440 passed, 0 failed.
2026-05-09 22:42:25 -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 189b9b8b89 Add current page download pipeline 2026-05-09 12:54:24 -04:00
ZacharyZhang-NY 1faa7423c1 Add Servo page zoom support 2026-05-09 12:32:44 -04:00
ZacharyZhang-NY a1aa38dbb2 Add expired space trash purge 2026-05-09 11:38:45 -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 726471ea64 Split tab favorite tests 2026-05-09 03:58:11 -04:00
ZacharyZhang-NY 130cf8ec83 Add auth callback internal page 2026-05-09 03:41:13 -04:00
ZacharyZhang-NY 1eb8e271f5 Add bookmark import export packages 2026-05-09 02:07:37 -04:00
ZacharyZhang-NY b3907f42a8 Add site compatibility diagnostics page 2026-05-09 01:43:10 -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 97a06d7b52 Add active tab reorder commands 2026-05-09 00:16:12 -04:00
ZacharyZhang-NY 0203840b68 Wire elyspace import export UI 2026-05-08 23:22:55 -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 74205c098b Expand settings scoped search 2026-05-08 21:28:26 -04:00
ZacharyZhang-NY d769b45f54 Wire plugin file install command 2026-05-08 21:20:29 -04:00
ZacharyZhang-NY b9f57921cd Add advanced settings surface 2026-05-08 20:57:19 -04:00
ZacharyZhang-NY 47bfea6c8b Add updates settings surface 2026-05-08 20:53:38 -04:00
ZacharyZhang-NY 277ae8c689 Add appearance settings surface 2026-05-08 20:48:50 -04:00
ZacharyZhang-NY 3df998876b Harden PRD live-site smoke 2026-05-08 20:37:42 -04:00
ZacharyZhang-NY 8e450496e0 Lock private profile sync state 2026-05-08 20:19:09 -04:00
ZacharyZhang-NY b4355d0f82 Add bookmark thumbnail metadata 2026-05-08 11:47:38 -04:00
ZacharyZhang-NY 2410e71006 Add tab group archive command coverage 2026-05-08 11:39:16 -04:00
ZacharyZhang-NY 24bdf3d2dc Add tab group ordering commands 2026-05-08 11:31:34 -04:00
ZacharyZhang-NY 0e01395a5d Add tab group color command 2026-05-08 11:13:39 -04:00
ZacharyZhang-NY 5588237a1f Add tab group rename command 2026-05-08 11:05:54 -04:00
ZacharyZhang-NY fb33771c8f Add tab group refresh command 2026-05-08 10:57:57 -04:00
ZacharyZhang-NY 475be06edc Add tab group close command 2026-05-08 10:49:45 -04:00
ZacharyZhang-NY a05b662fd6 Add tab group sleep command 2026-05-08 10:40:24 -04:00
ZacharyZhang-NY f167b7999b Add domain tab auto grouping 2026-05-08 10:32:09 -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 6bf1b674ac Pause sync for private profiles 2026-05-08 09:32:57 -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