Commit Graph
67 Commits
Author SHA1 Message Date
ZacharyZhang-NY 85d1e09916 Add a draggable sidebar resize handle
User reports the sidebar can't be resized. Until now sidebar width
was only mutable through the COLLAPSED/DEFAULT toggle and through
typed settings. Real browsers (Arc, Dia, Zen) all let you drag the
right edge of the sidebar to size it live.

Wire it through the existing space.sidebar_width_px:

* `ElyShell.sidebar_resize_origin: Option<(f32, u16)>` records the
  cursor-x and width-px at the moment the handle is grabbed.
* `begin_sidebar_resize` / `end_sidebar_resize` set and clear it.
* Window-level `on_mouse_move` consults the origin first; while held,
  it forwards the delta to `set_active_sidebar_width` clamped to
  220–480 px so you can't accidentally annihilate either pane.
* Window-level `on_mouse_up` releases the drag.
* The handle itself is a 6 px transparent strip pinned to the right
  edge of the expanded sidebar, `cursor_col_resize`, with a soft white
  hover. mouse-down captures the origin; the rest is window events.

cargo test --workspace: 440 passed, 0 failed.
2026-05-09 21:16:23 -04:00
ZacharyZhang-NY dbba9fedd0 Use design's omnibar placeholder copy
The design's TopBar.url placeholder reads `Search ELY or type a
command…`. We were shipping `Search or enter address`, the generic
URL-bar string from when the omnibar didn't yet host commands.

Match the design copy so the empty-state on `ely://new-tab` matches
home.jsx and command.jsx exactly.
2026-05-09 20:47:23 -04:00
ZacharyZhang-NY 49e4816bce Wire ↑↓↵ keyboard navigation in the command overlay
The footer chips already advertised ↑↓ to navigate and ↵ to open;
they now match reality.

- chrome::command_match exposes COMMAND_ACTIONS / matching_actions
  alongside the tab/history/bookmark match helpers and a
  CommandSelection enum + visible_command_rows that returns the flat
  ordered list of activatable rows. command_overlay drops its private
  copies of the action const and matcher and consumes them from the
  shared module so render and key handling share one source of truth.

- ElyShell tracks command_selected_index with command_select_next /
  command_select_prev (cyclic, no notify when index doesn't change)
  and activate_selected_command which dispatches the right shell call
  for the currently selected CommandSelection variant and dismisses
  the overlay. Dismissing command mode resets the index to 0.

- The shell root captures key_down via on_command_overlay_key_down.
  When the live snapshot's command_query starts with '>', up / down
  / enter run the matching helper and the event stops propagating so
  the omnibar input doesn't move its caret.

- Each rendered row receives a `selected` flag. The selected row gets
  the design's tinted bg + accent-bar on the left edge so the active
  result is unambiguous at any keyboard step.
2026-05-09 20:12:31 -04:00
ZacharyZhang-NY 9a2f9f2d74 Add hidden-on-hover sidebar mode
Domain ships HIDDEN_SIDEBAR_WIDTH_PX = 8 alongside the existing
collapsed/default tiers. ElyShell tracks sidebar_hover_expanded with
expand_hidden_sidebar / collapse_hidden_sidebar helpers; switching
back to a non-hidden width via the layout cards or core API resets
the flag automatically so the sidebar can never be both hidden and
expanded after a mode change.

Renderer:
- render_sidebar takes a sidebar_hidden flag and routes to a thin
  8 px clickable rail (hover bg + click expands) when the active
  space's width is at HIDDEN.
- While the rail is expanded, render_browser overlays a transparent
  backdrop + the full default-width sidebar absolutely positioned in
  the shell inset, so the main pane content never reflows.
- collapsed_sidebar_active still drives the COLLAPSED-tier compact
  sidebar; the hidden tier is opted out of that path.

Appearance form:
- Layout cards section gains the design's third "Hidden on hover"
  card with a 6 px sliver preview that mutates the active space to
  HIDDEN_SIDEBAR_WIDTH_PX. LayoutMode now derives id/width/preview
  from a small enum so adding a fourth mode would be one match arm.

The hover-expanded state never persists into the domain; once the
user switches modes or clicks the backdrop, it collapses cleanly.
2026-05-09 20:01:31 -04:00
ZacharyZhang-NY c98ca18613 Add workspace switcher disclosure list
Clicking the picker pill now opens an in-flow space-list disclosure
beneath the workspace row instead of cycling to the next space. The
list shows every space's emoji glyph + name, highlights the active one
with the accent check, and on row click switches to that space and
closes the disclosure.

Sidebar disclosure rules:
- The chevron flips ChevronDown → ChevronUp when open so the affordance
  reads at a glance.
- A "Manage spaces" footer routes to ely://settings/spaces and closes
  the picker.
- ElyShell carries a workspace_picker_open: bool with toggle / close /
  select_space_from_picker helpers; render_sidebar_header receives a
  &ElyShell so it can read the open flag without leaking shell internals
  to free helpers.

The existing SelectNextSpace shortcut still routes through
cycle_to_next_space, so the keyboard cycle behaviour is unchanged.
2026-05-09 19:49:37 -04:00
ZacharyZhang-NY 797560d71c Replace translucency presets with a real continuous slider
ElyShell now hosts a translucency_slider: Entity<SliderState> bound to
0..=100 step 1, defaulting to DEFAULT_TRANSLUCENCY_PCT. A subscription
on SliderEvent::Change writes the rounded value into the core via
set_translucency_pct, so dragging the thumb mutates the persisted
appearance setting in real time.

The appearance form swaps the static track-and-thumb visual for the
gpui_component Slider (160 wide) plus a live percentage readout. The
three preset chips move below the row as fast-set buttons that go
through a new set_translucency_pct_from_preset helper which writes
both core and the SliderState so the thumb tracks the chip choice.

reset_appearance now resets the slider to DEFAULT_TRANSLUCENCY_PCT
alongside resetting the core, keeping every UI source of truth in
lock-step.
2026-05-09 19:46:43 -04:00
ZacharyZhang-NY 70b50f9852 Wire plugin marketplace search to filter the grid
Replaces the static "Install plugin · N active" hero button with the
design's pair: a glass search input + a primary Install action. The
input is bound to a new InputState on ElyShell (plugin_search_input);
on every render the catalog reads its current value and filters the
plugin grid by case-insensitive contains on name, author, and
description. An empty-needle render shows every installed plugin so
the page still works at rest.

When the search yields no matches, the grid swaps to an empty-state
copy that quotes the user's needle. Install action moves into a
trailing dark chip that calls choose_plugin_package, preserving the
existing file-picker flow.
2026-05-09 19:30:17 -04:00
ZacharyZhang-NY dcd4bb4c48 Add layered dawn wallpaper to shell background
Designs call for a radial-gradient dawn (cream base + pink upper-right
glow + blue lower-left glow). GPUI 0.2.2 only supports linear gradients,
so the wallpaper is composed of a cream base layer with two diagonal
linear gradients that fade to transparent at ~60% — the perceived effect
matches the design's softness without needing radial-gradient support.

Wallpaper is isolated to chrome::wallpaper so future appearance themes
(violet, mint, slate) extend the enum without touching the shell.
2026-05-09 17:52:56 -04:00
ZacharyZhang-NY 3caf207129 update 2026-05-09 16:27:40 -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 8b9c4579c1 Add active profile local data export 2026-05-09 08:23:37 -04:00
ZacharyZhang-NY 1eb8e271f5 Add bookmark import export packages 2026-05-09 02:07:37 -04:00
ZacharyZhang-NY fb6677aec2 Add shortcut profile import export 2026-05-09 01:30:20 -04:00
ZacharyZhang-NY d193f5a400 Add settings reset defaults 2026-05-09 01:14:15 -04:00
ZacharyZhang-NY 7797203bbf Add private window entry point 2026-05-09 00:31:40 -04:00
ZacharyZhang-NY 79d9646ab8 Pass site permission grants to sidecar snapshots 2026-05-09 00:01:14 -04:00
ZacharyZhang-NY 0203840b68 Wire elyspace import export UI 2026-05-08 23:22:55 -04:00
ZacharyZhang-NY d769b45f54 Wire plugin file install command 2026-05-08 21:20:29 -04:00
ZacharyZhang-NY 21a72e157a Bridge web surface keyboard input 2026-05-08 14:49:57 -04:00
ZacharyZhang-NY b786073826 Bridge Servo click input 2026-05-08 14:23:12 -04:00
ZacharyZhang-NY 7178174e20 Add Servo scroll snapshots 2026-05-08 13:54:56 -04:00
ZacharyZhang-NY 8068d4ba32 Stabilize PRD site rendering refresh 2026-05-08 13:36:15 -04:00
ZacharyZhang-NY 2fb6b15e2d Render Servo sidecar frames in shell 2026-05-08 12:43:38 -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 f23e5d4105 Show archive context in shell 2026-05-08 10:01:26 -04:00
ZacharyZhang-NY b11668e75e Add space trash recovery 2026-05-08 09:17:59 -04:00
ZacharyZhang-NY cdb82bcace Add space switching shortcuts 2026-05-08 08:57:18 -04:00
ZacharyZhang-NY 43ab4be548 Add sidebar collapse shortcut 2026-05-08 08:36:58 -04:00
ZacharyZhang-NY 20020185d0 Add tab group collapse controls 2026-05-08 07:24:01 -04:00
ZacharyZhang-NY 818e8e550d Add note removal 2026-05-08 06:59:03 -04:00
ZacharyZhang-NY e13557814d Add reading list progress actions 2026-05-08 06:23:21 -04:00
ZacharyZhang-NY fc00840697 Add bookmark metadata editor 2026-05-08 06:14:31 -04:00
ZacharyZhang-NY 349597d283 Add recent history clear confirmation 2026-05-08 04:31:19 -04:00
ZacharyZhang-NY 71750114a6 Add domain history clear confirmation 2026-05-08 04:21:02 -04:00
ZacharyZhang-NY 02279f8984 Add profile history clear confirmation 2026-05-08 04:10:04 -04:00
ZacharyZhang-NY 177399dd1c Add site permission clear confirmation 2026-05-08 03:58:21 -04:00
ZacharyZhang-NY ada0a82da8 Add profile sync policy controls 2026-05-08 03:44:36 -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 e2d8b0cc6e Add downloads settings page 2026-05-08 03:24:59 -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 8b75b33761 Add sidebar tab archive settings 2026-05-08 02:40:16 -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 a6077fa00a Add task manager internal page 2026-05-08 01:03:59 -04:00
ZacharyZhang-NY ec0ba6b758 Add profiles settings page 2026-05-08 00:09:03 -04:00