···11+# Peek Feature Tour
22+33+A comprehensive guide to every feature in Peek, the desktop web user agent. Peek reimagines how you interact with the web -- replacing tabs with floating windows, keyboard shortcuts, and a command palette.
44+55+---
66+77+## Core
88+99+### Command Palette
1010+1111+**Summary:** The central hub for all actions in Peek. Type commands, search history, open URLs, chain operations, and access every feature from one keyboard-driven interface.
1212+1313+**Where in UI:** Global hotkey or local shortcut.
1414+1515+**How to try it:**
1616+1. Press `Option+Space` (global, works from any app) or `Cmd+K` (local, when a Peek window is focused).
1717+2. Start typing a command name (e.g., `note`, `open`, `google`).
1818+3. Commands appear as you type -- press Enter to execute, or add arguments after the command name.
1919+4. The palette also searches your URL history, so typing part of a domain or page title will surface matching pages.
2020+2121+### Open URL
2222+2323+**Summary:** Open any URL in a new floating Peek window. Automatically adds `https://` to bare domains.
2424+2525+**Where in UI:** Command palette.
2626+2727+**How to try it:**
2828+1. Open the command palette (`Option+Space`).
2929+2. Type `open example.com` or `open https://en.wikipedia.org`.
3030+3. Press Enter. A new window appears with the page loaded.
3131+3232+### Modal Window
3333+3434+**Summary:** Open a URL in a transient modal window that auto-hides when it loses focus or you press Escape.
3535+3636+**Where in UI:** Command palette.
3737+3838+**How to try it:**
3939+1. Open the command palette.
4040+2. Type `modal https://example.com`.
4141+3. Press Enter. The page opens in a modal. Click away or press Escape to dismiss it.
4242+4343+### Settings
4444+4545+**Summary:** Central configuration panel for Peek and all its extensions. Covers global preferences (shortcuts, startup behavior, session restore, tray icon, title bars, backup) and per-extension settings.
4646+4747+**Where in UI:** Keyboard shortcut or command palette.
4848+4949+**How to try it:**
5050+1. Press `Cmd+,` to open Settings.
5151+2. The sidebar lists all configurable areas: Core settings, Cmd, Editor, Groups, Peeks, Slides, Web Search, Scripts, etc.
5252+3. Each section has form controls for its preferences. Changes take effect immediately.
5353+5454+### System Tray Icon
5555+5656+**Summary:** An optional system tray icon that provides quick access to Peek. Click to open the most recent window or the command palette.
5757+5858+**Where in UI:** System tray (menu bar on macOS).
5959+6060+**How to try it:**
6161+1. Open Settings (`Cmd+,`).
6262+2. Ensure "Show tray icon" is enabled.
6363+3. Look for the Peek icon in the system tray / menu bar area. Click it.
6464+6565+### Dock Visibility
6666+6767+**Summary:** Control whether Peek always appears in the macOS Dock and app switcher, or only when windows are visible.
6868+6969+**Where in UI:** Settings > Core > "Show in dock".
7070+7171+**How to try it:**
7272+1. Open Settings.
7373+2. Toggle "Show in dock" off. Peek disappears from the Dock when no windows are open, running silently in the background.
7474+7575+### Session Restore
7676+7777+**Summary:** Peek remembers your open windows (URLs, positions, sizes) and can restore them on restart. Includes periodic autosave.
7878+7979+**Where in UI:** Settings > Core.
8080+8181+**How to try it:**
8282+1. Open Settings and ensure "Restore session on startup" is enabled.
8383+2. Open several web pages in Peek, arrange them on screen.
8484+3. Quit and relaunch Peek. Your windows reappear in their previous positions.
8585+4. The "Autosave interval" setting (default: 5 minutes) controls how frequently session state is saved.
8686+8787+### Profiles
8888+8989+**Summary:** Isolated data workspaces with separate SQLite databases, session data, and sync configurations. Development builds automatically use a `dev` profile to keep data separate from production.
9090+9191+**Where in UI:** Settings.
9292+9393+**How to try it:**
9494+1. Open Settings and look for the Profiles section.
9595+2. Create a new profile with a custom name.
9696+3. Switch to the new profile (requires app restart).
9797+4. Each profile has its own history, tags, groups, and sync settings.
9898+9999+### Database Backup
100100+101101+**Summary:** Automatic daily compressed backups of the SQLite database using `VACUUM INTO`. Configurable backup directory and retention count (default: 7 backups).
102102+103103+**Where in UI:** Settings > Core > "Backup directory". Also accessible from the Diagnostic page.
104104+105105+**How to try it:**
106106+1. Open Settings and set "Backup directory" to a folder path (e.g., `~/peek-backups`).
107107+2. Backups occur automatically on startup if more than 24 hours have passed since the last one.
108108+3. To manually trigger a backup, open the Diagnostic page (`peek://app/diagnostic.html`) and click "Backup Now".
109109+110110+### Ad Blocker
111111+112112+**Summary:** Built-in native ad and tracker blocking powered by Ghostery's adblocker-electron. Uses EasyList and EasyPrivacy filter lists.
113113+114114+**Where in UI:** Runs automatically in the background.
115115+116116+**How to try it:**
117117+1. Open any web page with ads (e.g., a news site).
118118+2. Ads and trackers are blocked at the network level before the page loads, resulting in cleaner, faster page rendering.
119119+120120+### Quit Shortcut
121121+122122+**Summary:** Configurable keyboard shortcut to quit the application.
123123+124124+**Where in UI:** Settings > Core > "Quit shortcut".
125125+126126+**How to try it:**
127127+1. Press `Cmd+Q` (default) to quit Peek.
128128+2. Change the shortcut in Settings if you prefer a different key combination.
129129+130130+---
131131+132132+## Page / Canvas
133133+134134+### Floating Page Windows
135135+136136+**Summary:** Every web page opens in its own floating, frameless window positioned on a fullscreen transparent canvas. Windows can be freely dragged, resized, and overlapped.
137137+138138+**Where in UI:** Open any URL via the command palette, history, groups, or web search.
139139+140140+**How to try it:**
141141+1. Open a page (`open example.com` in the command palette).
142142+2. The page appears as a floating window. Hold the mouse still on the page body for 2 seconds (configurable "drag hold delay" in Settings) -- the cursor changes to a hand, then drag to move the window.
143143+3. Use the corner resize handle to change dimensions.
144144+145145+### Navbar
146146+147147+**Summary:** A floating URL bar that appears above the page window. Shows the current URL with back/forward/reload controls. Auto-hides to save space; revealed by hovering the trigger zone above the page or pressing `Cmd+L`.
148148+149149+**Where in UI:** Top of any page window.
150150+151151+**How to try it:**
152152+1. Open a web page.
153153+2. Press `Cmd+L` to show the navbar and focus the URL field.
154154+3. Hover the mouse over the thin strip at the very top of the page to reveal the navbar.
155155+4. Use the back arrow, forward arrow, and reload buttons, or type a new URL.
156156+157157+### Page Navigation Shortcuts
158158+159159+**Summary:** Standard keyboard shortcuts for navigating within a page window.
160160+161161+**Where in UI:** Any page window.
162162+163163+**How to try it:**
164164+- `Cmd+[` or `Cmd+Left` -- go back in page history.
165165+- `Cmd+]` or `Cmd+Right` -- go forward.
166166+- `Cmd+R` -- reload the current page.
167167+- `Escape` -- if the webview has history, go back; otherwise close the window (behavior depends on IZUI state).
168168+169169+### Drag Hold Delay
170170+171171+**Summary:** Configurable delay before a window becomes draggable. Prevents accidental drags when clicking or selecting text. The navbar background provides instant drag (no delay).
172172+173173+**Where in UI:** Settings > Core > "Window drag hold delay".
174174+175175+**How to try it:**
176176+1. Open Settings and set "Window drag hold delay" (default: 2 seconds).
177177+2. On a page, click and hold without moving. After the delay, the cursor changes to a hand.
178178+3. Now move the mouse to drag the window.
179179+4. On the navbar background, drag is instant with no delay.
180180+181181+### Mode Indicator
182182+183183+**Summary:** A small label on each page window showing the current mode (e.g., "page", "group"). When in group mode, also displays the group name.
184184+185185+**Where in UI:** Bottom-left corner of page windows.
186186+187187+**How to try it:**
188188+1. Open a page -- the mode indicator says "page".
189189+2. Open a group (see Groups section below) -- member windows show "group" plus the group name.
190190+191191+### OAuth Detection
192192+193193+**Summary:** Automatically detects OAuth/authentication flows (Google, Microsoft, Auth0, Apple ID, etc.) and suppresses the navbar auto-show hover behavior so it does not interfere with credential entry.
194194+195195+**Where in UI:** Automatic, invisible to the user.
196196+197197+**How to try it:**
198198+1. Navigate to a login page that uses OAuth (e.g., sign in with Google).
199199+2. Hovering the trigger zone above the page will not reveal the navbar, avoiding interruption.
200200+3. You can still press `Cmd+L` to manually show the navbar.
201201+202202+---
203203+204204+## Editor
205205+206206+### Markdown Editor
207207+208208+**Summary:** A full-featured markdown editor with a three-panel layout: outline sidebar (table of contents generated from headers), CodeMirror editing area, and live preview. Supports focus mode, autosave, and resizable panels.
209209+210210+**Where in UI:** Global hotkey, local shortcut, or command palette.
211211+212212+**How to try it:**
213213+1. Press `Option+E` (global) or `Cmd+E` (local) to open the editor.
214214+2. Or type `open editor` in the command palette.
215215+3. Start typing markdown. The outline updates from your headers; the preview renders live.
216216+217217+### Vim Mode
218218+219219+**Summary:** Optional vim keybindings for the editor, including `:set wrap`/`:set nowrap` for line wrapping, `:set number`/`:set nonumber` for line numbers, and `:q` to close.
220220+221221+**Where in UI:** Settings > Editor > "Vim mode".
222222+223223+**How to try it:**
224224+1. Open Settings, go to the Editor section, and enable "Vim mode".
225225+2. Open the editor. Use vim navigation (`h`, `j`, `k`, `l`), insert mode (`i`), visual mode (`v`), and ex commands (`:w`, `:q`).
226226+3. Type `:set wrap` to enable line wrapping, `:set nowrap` to disable it.
227227+4. Type `:set number` to show line numbers, `:set nonumber` to hide them.
228228+229229+### Autosave
230230+231231+**Summary:** When editing a datastore item (note or other text), changes are automatically saved 1.5 seconds after you stop typing. The status line shows "saved", "saving", or "unsaved".
232232+233233+**Where in UI:** Automatic in the editor when editing an existing item.
234234+235235+**How to try it:**
236236+1. Open an existing note in the editor (use `edit` command or click a note in Tags view).
237237+2. Make changes. The status line updates to "unsaved", then "saving", then "saved".
238238+239239+---
240240+241241+## Organization
242242+243243+### Tags
244244+245245+**Summary:** A flexible tagging system for organizing saved items (URLs, notes, tagsets). Tags are ranked by frecency (frequency + recency). Browse all items filtered by tags, add/remove tags from the active window, and create tagsets (items that are just collections of tags).
246246+247247+**Where in UI:** Global hotkey, local shortcut, or command palette.
248248+249249+**How to try it:**
250250+1. Press `Option+T` (global) or `Cmd+T` (local) to open the Tags browser.
251251+2. Browse all saved items. Click tag buttons to filter by tag.
252252+3. To tag the current page: open the command palette and type `tag design, inspiration` (comma-separated tags).
253253+4. To view tags on the current page: type `tags` in the command palette.
254254+5. To remove a tag: type `untag design` in the command palette.
255255+6. To create a tagset: type `tagset #project, #active, #frontend` in the command palette.
256256+257257+### Groups
258258+259259+**Summary:** Save your current window layout as a named group. All open page URLs are tagged with the group name. Reopen the group later to restore all windows, including their saved screen positions and z-ordering.
260260+261261+**Where in UI:** Global hotkey, local shortcut, or command palette.
262262+263263+**How to try it:**
264264+1. Open several web pages and arrange them on screen.
265265+2. Open the command palette and type `new group research` to save all open pages to a group called "research".
266266+3. Close all windows.
267267+4. Type `open group research` in the command palette. All pages reopen in their saved positions.
268268+5. Press `Option+G` (global) or `Cmd+G` (local) to open the Groups browser for a visual overview.
269269+270270+### Notes
271271+272272+**Summary:** Quick note creation from the command palette with smart type detection. If the input is a URL, it is saved as a URL item. If it is hashtags (`#foo #bar`), it is saved as a tagset. Otherwise it is saved as a text note tagged with `note` and `from:cmd`.
273273+274274+**Where in UI:** Command palette.
275275+276276+**How to try it:**
277277+1. Open the command palette and type `note Remember to review the API docs`.
278278+2. The text is saved as a note.
279279+3. Type `note https://example.com` -- saved as a URL item.
280280+4. Type `note #project #done` -- saved as a tagset.
281281+5. Type `notes` to list recent notes.
282282+6. Type `list notes #todo` to filter notes by tag.
283283+7. Type `note` with no arguments to open a blank editor.
284284+285285+### Edit Note
286286+287287+**Summary:** Search for existing notes and open them in the editor.
288288+289289+**Where in UI:** Command palette.
290290+291291+**How to try it:**
292292+1. Open the command palette and type `edit API`.
293293+2. Matching notes appear in the dropdown. Select one to open it in the editor.
294294+295295+### URL Save
296296+297297+**Summary:** Explicitly save a URL to the datastore.
298298+299299+**Where in UI:** Command palette.
300300+301301+**How to try it:**
302302+1. Type `url https://example.com/interesting-article` in the command palette.
303303+2. The URL is saved and available in history, tags browser, and groups.
304304+305305+### History Search
306306+307307+**Summary:** Search and open pages from your saved URL history. URLs are ranked by frecency. Every saved URL also appears as a searchable entry in the command palette.
308308+309309+**Where in UI:** Command palette.
310310+311311+**How to try it:**
312312+1. Type `history wikipedia` in the command palette.
313313+2. The best frecency-ranked match opens in a new window.
314314+3. Or just start typing a URL or page title in the command palette -- history entries surface automatically.
315315+316316+---
317317+318318+## Search
319319+320320+### Web Search
321321+322322+**Summary:** Search the web directly from the command palette. Supports multiple engines (Google, DuckDuckGo, Bing, Wikipedia, Kagi) with per-engine shortcut commands. Includes search suggestions with debounce and caching.
323323+324324+**Where in UI:** Command palette.
325325+326326+**How to try it:**
327327+1. Type `web search electron framework` in the command palette. Results open in a new window using your default engine.
328328+2. Use engine-specific shortcuts: `google something`, `ddg privacy tools`, `wiki quantum physics`, `bing news`, `kagi best IDE`.
329329+3. Type `open web search` to open a dedicated search window.
330330+331331+### OpenSearch Discovery
332332+333333+**Summary:** Automatically discovers search engines from visited websites via their OpenSearch description documents. Discovered engines are saved and become usable from the command palette.
334334+335335+**Where in UI:** Automatic (configurable in Settings > Web Search > "Auto-discover search engines").
336336+337337+**How to try it:**
338338+1. Visit a website that provides an OpenSearch description (many do, such as GitHub, Stack Overflow).
339339+2. Peek detects the OpenSearch link and registers the site as a search engine.
340340+3. The new engine appears in the command palette as a shortcut command.
341341+342342+### Search Suggestions
343343+344344+**Summary:** As you type a search query, suggestions from the selected engine appear in real time. Suggestions are cached for 5 minutes.
345345+346346+**Where in UI:** Command palette when using web search commands.
347347+348348+**How to try it:**
349349+1. Type `google how to` in the command palette.
350350+2. Suggestions appear below the input as you type. Select one to search for it.
351351+3. Toggle suggestions on/off in Settings > Web Search > "Enable search suggestions".
352352+353353+### Local Search
354354+355355+**Summary:** Search across all local items (URLs, notes, tags, history) in a dedicated search window.
356356+357357+**Where in UI:** Global hotkey or command palette.
358358+359359+**How to try it:**
360360+1. Press `Option+F` (global) to open the local search window.
361361+2. Or type `localsearch` in the command palette.
362362+3. Type a query to search across all stored items.
363363+364364+---
365365+366366+## Feeds
367367+368368+### RSS/Atom Feed Reader
369369+370370+**Summary:** Subscribe to RSS and Atom feeds. Feeds are polled every 15 minutes for new entries. View entries in a dedicated reader UI, sorted by date.
371371+372372+**Where in UI:** Global hotkey or command palette.
373373+374374+**How to try it:**
375375+1. Press `Option+Shift+F` (global) to open the Feed Reader.
376376+2. Or type `new feed https://example.com/rss.xml` in the command palette to subscribe.
377377+3. Type `feeds` in the command palette to browse subscribed feeds.
378378+4. Type `refresh feeds` to manually poll all feeds for updates.
379379+380380+---
381381+382382+## Entity Recognition
383383+384384+### Automatic Entity Extraction
385385+386386+**Summary:** Automatically extracts people, places, organizations, events, emails, phone numbers, and dates from visited web pages using regex, microformat, and JSON-LD extractors. Entities are stored and searchable.
387387+388388+**Where in UI:** Automatic (runs on page load) or manual via command palette.
389389+390390+**How to try it:**
391391+1. Visit a web page with structured content (news articles, business pages, event listings).
392392+2. After a 2-second delay, entities are extracted and stored.
393393+3. Type `extract entities` in the command palette to manually trigger extraction on the current page.
394394+4. Type `open entities` or `list entities` to browse extracted entities.
395395+396396+### URL Item Enrichment
397397+398398+**Summary:** When entities are extracted, Peek also reads OpenGraph metadata (title, description, image, site name) from the page and enriches the stored URL item. This improves display in the Tags browser and other views.
399399+400400+**Where in UI:** Automatic, invisible to the user.
401401+402402+**How to try it:**
403403+1. Save a URL and visit it. The entity extraction pipeline enriches the stored item with OG metadata.
404404+2. Open the Tags browser to see enriched titles and descriptions for URL items.
405405+406406+---
407407+408408+## Scripts
409409+410410+### Userscripts / Content Scripts
411411+412412+**Summary:** Create, edit, and manage custom JavaScript scripts that run on web pages matching URL patterns. Scripts support match/exclude patterns, multiple injection timings (`document-end`, etc.), and can be enabled/disabled individually.
413413+414414+**Where in UI:** Local shortcut or command palette.
415415+416416+**How to try it:**
417417+1. Press `Cmd+Shift+S` to open the Scripts Manager.
418418+2. Or type `scripts` or `new script My Script` in the command palette.
419419+3. In the manager, create a new script. Set match patterns (e.g., `*://*.example.com/*`), write JavaScript code, and enable it.
420420+4. Visit a matching page. The script executes automatically.
421421+422422+---
423423+424424+## Window Management
425425+426426+### Window Switcher
427427+428428+**Summary:** A fullscreen transparent overlay that shows all open Peek windows, allowing quick switching between them.
429429+430430+**Where in UI:** Global hotkey or command palette.
431431+432432+**How to try it:**
433433+1. Open several pages in Peek.
434434+2. Press the Windows shortcut (configurable, check Settings > Windows) to open the overlay.
435435+3. Or type `windows` in the command palette.
436436+4. Click a window to switch to it.
437437+438438+### Center Window / Center All Windows
439439+440440+**Summary:** Center the active window (or all windows) on their respective displays.
441441+442442+**Where in UI:** Command palette.
443443+444444+**How to try it:**
445445+1. Type `center window` in the command palette to center the currently active window.
446446+2. Type `center all windows` to center every open window.
447447+448448+### Peeks (Quick Access Modals)
449449+450450+**Summary:** Assign up to 10 web pages to `Option+0` through `Option+9` hotkeys. Each one opens as a modal popup that disappears when you switch away. Optionally keep the window alive in the background and persist its state.
451451+452452+**Where in UI:** Settings > Peeks, then use assigned hotkeys.
453453+454454+**How to try it:**
455455+1. Open Settings and go to the Peeks section.
456456+2. Add a URL (e.g., `https://calendar.google.com`) and assign it to key 1.
457457+3. Enable the item. Press `Option+1` from anywhere. The page pops up instantly.
458458+4. Press Escape or switch to another app to dismiss it.
459459+460460+### Slides (Edge-Anchored Panels)
461461+462462+**Summary:** Assign web pages to slide in from screen edges (Up, Down, Left, Right) via `Option+Arrow` hotkeys. Great for dashboards, chat, or reference material that you want always accessible from a screen edge.
463463+464464+**Where in UI:** Settings > Slides, then use assigned hotkeys.
465465+466466+**How to try it:**
467467+1. Open Settings and go to the Slides section.
468468+2. Add a URL and assign it to the "Right" edge.
469469+3. Enable the item. Press `Option+Right` from anywhere. The page slides in from the right edge.
470470+471471+### Pagestream (Browsing History Stream)
472472+473473+**Summary:** A vertical, chat-like navigational interface showing your browsing history as a scrollable stream. Provides a visual timeline of pages visited.
474474+475475+**Where in UI:** Global hotkey or command palette.
476476+477477+**How to try it:**
478478+1. Press the Pagestream shortcut (configurable in Settings) to open the stream.
479479+2. Or type `pagestream` or `open pagestream` in the command palette.
480480+3. Scroll through your browsing history. Click an entry to reopen the page.
481481+482482+---
483483+484484+## Command Chaining
485485+486486+### Pipe Commands Together
487487+488488+**Summary:** Commands can produce output that feeds into other commands, forming pipelines. Commands declare what MIME types they accept and produce. The command palette shows compatible next-step commands after a producing command runs.
489489+490490+**Where in UI:** Command palette.
491491+492492+**How to try it:**
493493+1. Type `list notes #todo` in the command palette. This produces JSON output.
494494+2. Compatible commands appear: `csv` (convert to CSV), `save` (save to file), `markdown` (format as markdown), `save as note` (save as a new note).
495495+3. Select `csv` to convert the JSON to CSV format.
496496+4. Then select `save` to write the CSV to a file on disk.
497497+498498+### CSV Export
499499+500500+**Summary:** Convert JSON data to CSV format. Designed to be used in a chain after commands that produce JSON output (like `list notes`, `list tags`, `list groups`).
501501+502502+**Where in UI:** Command palette (chain step).
503503+504504+**How to try it:**
505505+1. Run `list notes` in the command palette.
506506+2. Select `csv` from the suggested chain commands.
507507+3. The data is converted to comma-separated values.
508508+509509+### Markdown Export
510510+511511+**Summary:** Format JSON items as a readable markdown document with headers, tags, metadata, and content sections. Opens an interactive editor for reviewing and editing the result.
512512+513513+**Where in UI:** Command palette (chain step).
514514+515515+**How to try it:**
516516+1. Run `list notes #project` in the command palette.
517517+2. Select `markdown` from the chain commands.
518518+3. A formatted markdown document appears in an editor window.
519519+520520+### Save to File
521521+522522+**Summary:** Save any chain output to a file on disk using a native save dialog. Accepts any MIME type. Automatically generates a filename with date and appropriate extension.
523523+524524+**Where in UI:** Command palette (chain step).
525525+526526+**How to try it:**
527527+1. Run any chain that produces output (e.g., `list groups | csv`).
528528+2. Select `save` from the chain commands.
529529+3. A native file picker appears. Choose a location and filename.
530530+531531+### Save as Note
532532+533533+**Summary:** Save text chain output as a new note in the datastore, tagged with `note` and `from:cmd`.
534534+535535+**Where in UI:** Command palette (chain step).
536536+537537+**How to try it:**
538538+1. Run a chain that produces text output (e.g., `list notes #draft | markdown`).
539539+2. Select `save as note` from the chain commands.
540540+3. The content is saved as a new note item.
541541+542542+### Open File
543543+544544+**Summary:** Open a text file from disk using the native file picker. The file content enters the chain as output, which can then be piped to `save as note`, `csv`, or other commands.
545545+546546+**Where in UI:** Command palette.
547547+548548+**How to try it:**
549549+1. Type `open file` in the command palette.
550550+2. A native file picker opens. Select a text file (markdown, JSON, CSV, etc.).
551551+3. The file content is loaded and available for chaining to downstream commands.
552552+553553+### Chain Editor
554554+555555+**Summary:** When a chain produces text output (especially via `markdown`), an interactive editor window opens where you can review, edit, and then save or close the result. Uses CodeMirror with optional vim mode.
556556+557557+**Where in UI:** Automatic after certain chain steps.
558558+559559+**How to try it:**
560560+1. Run `list notes | markdown` in the command palette.
561561+2. The Chain Editor opens with the formatted markdown. Edit as needed.
562562+3. Press Escape (or `:q` in vim mode) to close.
563563+564564+---
565565+566566+## Sync
567567+568568+### Sync Now
569569+570570+**Summary:** Manually trigger a full bidirectional sync with the server. Pulls new items from the server and pushes local changes. Reports counts of pulled, pushed, and conflicting items.
571571+572572+**Where in UI:** Command palette.
573573+574574+**How to try it:**
575575+1. Ensure sync is configured in Settings (server URL and API key).
576576+2. Type `Sync now` in the command palette.
577577+3. The command runs and reports results (e.g., "Sync completed: 3 pulled, 2 pushed").
578578+579579+---
580580+581581+## HUD (Heads-Up Display)
582582+583583+### Always-On-Top Status Overlay
584584+585585+**Summary:** A small, always-on-top overlay showing the current IZUI state (Transient/Active), mode, and window information. Automatically hides when Peek loses focus and reappears when focused.
586586+587587+**Where in UI:** Global hotkey, local shortcut, or command palette.
588588+589589+**How to try it:**
590590+1. Press `Option+H` (global) or `Cmd+H` (local) to toggle the HUD.
591591+2. Or type `hud` in the command palette.
592592+3. A small translucent panel appears in the top-left corner showing state information.
593593+4. Toggle again to dismiss.
594594+595595+---
596596+597597+## IZUI (Invocable Zoom User Interface)
598598+599599+### Transient vs Active State
600600+601601+**Summary:** Peek tracks whether you invoked it from another app (transient) or are actively working in it (active). This controls Escape key behavior: in transient mode, Escape closes immediately; in active mode, Escape navigates internally and never closes.
602602+603603+**Where in UI:** Automatic, reflected in the HUD overlay.
604604+605605+**How to try it:**
606606+1. While in another app, press `Option+Space` to invoke the command palette (transient mode).
607607+2. Press Escape -- the palette closes and focus returns to the previous app.
608608+3. While working in Peek, press `Cmd+K` to open the palette (active mode).
609609+4. Press Escape -- the palette closes but you remain in Peek.
610610+611611+---
612612+613613+## DevTools / Debugging
614614+615615+### DevTools Command
616616+617617+**Summary:** Open Chrome DevTools for the most recently active content window. Useful for inspecting web pages loaded in Peek.
618618+619619+**Where in UI:** Command palette.
620620+621621+**How to try it:**
622622+1. Open a web page in Peek.
623623+2. Type `devtools` in the command palette.
624624+3. DevTools opens in a detached window for the active page.
625625+626626+### Debug Command
627627+628628+**Summary:** Open a URL in a new window with DevTools automatically enabled and detached.
629629+630630+**Where in UI:** Command palette.
631631+632632+**How to try it:**
633633+1. Type `debug https://example.com` in the command palette.
634634+2. The page opens alongside a detached DevTools window.
635635+636636+### Diagnostic Page
637637+638638+**Summary:** An internal tool for inspecting localStorage, datastore contents, and managing backups. Useful for troubleshooting.
639639+640640+**Where in UI:** Navigate to `peek://app/diagnostic.html`.
641641+642642+**How to try it:**
643643+1. Open the command palette and type `open peek://app/diagnostic.html`.
644644+2. Use the buttons to dump localStorage, dump datastore extension settings, create backups, or list existing backups.
645645+646646+---
647647+648648+## Extensions (Advanced / Hidden)
649649+650650+### Help Docs (Easter Egg)
651651+652652+**Summary:** A hidden documentation overlay that shows animated help hints from screen edges. Disguised as "Help docs" in the extension system. Disabled by default.
653653+654654+**Where in UI:** Command palette.
655655+656656+**How to try it:**
657657+1. Type `help docs` in the command palette.
658658+2. A fullscreen transparent, click-through overlay appears with animated documentation hints.
659659+3. Type `help docs` again to toggle it off.
660660+661661+### Example Gallery
662662+663663+**Summary:** A demonstration extension showcasing the Peek API -- feature detection, image handling, and storage patterns. Useful for developers building extensions.
664664+665665+**Where in UI:** Listed in Settings as an extension.
666666+667667+**How to try it:**
668668+1. Open Settings. Look for the Example Gallery extension.
669669+2. Enable it if needed. The extension demonstrates Peek API capabilities.
670670+671671+---
672672+673673+## Keyboard Shortcut Reference
674674+675675+### Global Shortcuts (work from any app)
676676+677677+| Shortcut | Action |
678678+|----------|--------|
679679+| `Option+Space` | Open command palette |
680680+| `Option+E` | Open editor |
681681+| `Option+T` | Open tags browser |
682682+| `Option+G` | Open groups browser |
683683+| `Option+F` | Open local search |
684684+| `Option+Shift+F` | Open feed reader |
685685+| `Option+H` | Toggle HUD overlay |
686686+| `Option+0` through `Option+9` | Open assigned Peek (configurable) |
687687+| `Option+Arrow` | Open assigned Slide from screen edge (configurable) |
688688+| Windows shortcut | Open window switcher (configurable) |
689689+| Pagestream shortcut | Open pagestream (configurable) |
690690+691691+### Local Shortcuts (work when a Peek window is focused)
692692+693693+| Shortcut | Action |
694694+|----------|--------|
695695+| `Cmd+K` | Open command palette |
696696+| `Cmd+E` | Open editor |
697697+| `Cmd+T` | Open tags browser |
698698+| `Cmd+G` | Open groups browser |
699699+| `Cmd+H` | Toggle HUD overlay |
700700+| `Cmd+,` | Open settings |
701701+| `Cmd+Shift+S` | Open scripts manager |
702702+| `Cmd+Q` | Quit (configurable) |
703703+704704+### Page Window Shortcuts
705705+706706+| Shortcut | Action |
707707+|----------|--------|
708708+| `Cmd+L` | Show navbar and focus URL field |
709709+| `Cmd+R` | Reload page |
710710+| `Cmd+[` or `Cmd+Left` | Go back |
711711+| `Cmd+]` or `Cmd+Right` | Go forward |
712712+| `Escape` | Go back (if history) or close window |
713713+714714+### Editor Shortcuts (Vim Mode)
715715+716716+| Command | Action |
717717+|---------|--------|
718718+| `:set wrap` | Enable line wrapping |
719719+| `:set nowrap` | Disable line wrapping |
720720+| `:set number` | Show line numbers |
721721+| `:set nonumber` | Hide line numbers |
722722+| `:q` | Close editor |
723723+724724+---
725725+726726+## Command Palette Command Reference
727727+728728+All commands accessible from `Option+Space` or `Cmd+K`:
729729+730730+| Command | Description |
731731+|---------|-------------|
732732+| `open <url>` | Open URL in a new window |
733733+| `modal <url>` | Open URL in a transient modal |
734734+| `note <text or url>` | Save a note (auto-detects URL, tagset, or text) |
735735+| `notes` | List recent notes |
736736+| `list notes [#tag ...]` | List notes filtered by tags |
737737+| `edit [search]` | Search notes and open in editor |
738738+| `url <url>` | Save a URL to datastore |
739739+| `history [search]` | Search and open from URL history |
740740+| `tag [tags]` | Add tags to the active window URL |
741741+| `tags [search]` | Show tags for active window or search all tags |
742742+| `untag <tags>` | Remove tags from the active window URL |
743743+| `tagset <#tag1,#tag2,...>` | Create a tagset item |
744744+| `groups` | Browse saved groups |
745745+| `list groups` | List groups with item counts |
746746+| `open group <name>` | Open all URLs in a group |
747747+| `new group <name>` | Save current windows to a named group |
748748+| `web search <query>` | Search using default engine |
749749+| `google <query>` | Search Google |
750750+| `ddg <query>` | Search DuckDuckGo |
751751+| `bing <query>` | Search Bing |
752752+| `wiki <query>` | Search Wikipedia |
753753+| `kagi <query>` | Search Kagi |
754754+| `localsearch` | Open local search window |
755755+| `feeds` | Browse subscribed feeds |
756756+| `new feed <url>` | Subscribe to an RSS/Atom feed |
757757+| `refresh feeds` | Poll all feeds for updates |
758758+| `open editor` | Open the markdown editor |
759759+| `scripts` | Open scripts manager |
760760+| `new script [name]` | Create a new userscript |
761761+| `extract entities` | Extract entities from current page |
762762+| `open entities` | Open entity browser |
763763+| `list entities` | List extracted entities |
764764+| `windows` | Open window switcher overlay |
765765+| `center window` | Center active window on display |
766766+| `center all windows` | Center all windows |
767767+| `pagestream` | Open browsing history stream |
768768+| `Sync now` | Trigger manual sync |
769769+| `hud` | Toggle HUD overlay |
770770+| `help docs` | Toggle help docs overlay |
771771+| `devtools` | Open DevTools for active window |
772772+| `debug <url>` | Open URL with DevTools enabled |
773773+| `open file` | Open a text file from disk |
774774+| `csv` | Convert JSON to CSV (chain) |
775775+| `markdown` | Convert JSON to markdown (chain) |
776776+| `save [filename]` | Save chain output to file |
777777+| `save as note` | Save chain output as a note |
778778+| `lists` | Produce sample list data (chain demo) |