Skip to content

Latest commit

 

History

History
105 lines (81 loc) · 8.2 KB

File metadata and controls

105 lines (81 loc) · 8.2 KB

Feature Status

This document tracks what look supports today and what is planned next.

Product pillars

  • keyboard-first launcher UX
  • low-latency local search
  • practical ranking and personalization
  • focused built-in tools (not plugin-first)
  • predictable behavior with clear controls

Available now

Core search and launch

  • app/file/folder search from one input
  • scoped query prefixes: a", f", d", r", and rc" (recent files/folders, newest first - blends opened-through-Look with recently added/changed on disk; macOS for now)
  • path-fragment friendly matching (slash-biased queries)
  • URL-like queries (no prefix): typing a URL offers an Open in browser row (structural URLs rank first, a bare host.tld after local results); opened URLs return as frecency-ranked Recently opened rows
  • open with Enter, reveal in Finder with Cmd+F
  • copy selected file/folder path/content handle with Cmd+C
  • multi-pick files/folders with Cmd+P (toggle); picked set is mirrored to the system pasteboard for paste anywhere. Cmd+Shift+P clears the set
  • move selected file/folder (or all picked items) to the Trash with Cmd+D - recoverable, no confirmation (macOS only for now)
  • pinned Trash quick folder (type trash): Enter opens it in Finder, its preview shows the item count, and Cmd+D empties it via Finder (confirmed, since it's permanent)
  • preview pane: text/image file previews, plus folder previews listing the immediate children (folders first, capped at 30, click to open)

Clipboard and translation

  • clipboard history mode with c" prefix
  • in-memory clipboard history (recent text clips, size set by clipboard_history_limit, default 10, range 10 to 100); file/folder copies are excluded
  • quick translation with t"...
  • dictionary lookup panel with tw"...

AI answers and web suggestions (macOS, Linux, Windows)

  • optional, on by default; toggle with ai_enabled in ~/.look.config or the Settings panel
  • answer card: a question, an entity with no local match (e.g. sir alex ferguson), or an instant-answer pattern (weather/currency/crypto) shows a Spotlight-style card. Sources resolve concurrently and render as they arrive - local Calculator, then DuckDuckGo and Wikipedia. On macOS it falls back to a streaming on-device Apple Intelligence answer when no web source hits. In the knowledge-lookup view the card sits in a two-column layout with the suggestion list
  • search suggestions: Google autocomplete rows appear under the results for plain text queries (2+ chars); Enter on one runs a web search, as does Cmd+Enter on the query
  • query rewrite (macOS): when a natural-language query finds nothing locally, the on-device model rewrites it into Look's prefix grammar and re-searches - never overriding results already on screen
  • platform note: the web answer card and Google suggestions run on macOS, Linux, and Windows (the latter two via the Tauri apps/linows/ app), sharing the look-answers core engine. The on-device LLM (query rewrite + the Apple Intelligence answer fallback) is macOS-only - there is no on-device model on Linux/Windows. The ai_enabled key is shared so the same toggle gates web answers on Linux/Windows and both web + on-device features on macOS
  • network note: while AI is on, the answer card's web sources and the Google suggestions send the typed query to those services; the on-device model itself makes no network calls. All of it is off when ai_enabled = false

Command mode

  • Cmd+/ command mode entry, or inline :cmdid shortcut from the home screen (e.g. :calc 2+2, :kill chrome, :pomo); space after a known command id triggers a live switch with args pre-filled
  • built-in commands: calc, pomo, todo, kill, shell, sys
  • pomo: pomodoro focus timer with editable session list, three timer styles (Modern Ring / Vintage Dial / Minimal Text), shuffled background-music folder, menu-bar mini-timer, 5s standby fade, "ending soon" alert at 10s remaining
  • todo: daily tasks grouped by date (3 unfinished per day, 3 upcoming groups, OVERDUE badges on past days, fuzzy search over tasks and dates, manual save) plus a Stats page: weekly/monthly completion donuts, streak, 30-day trend, GitHub-style year heatmap. Today's done/total shows as a clickable stat in the home hint bar. Stored in the shared look.db (core/todo), one-year retention
  • calc parser supports exponent (^), factorial (!), constants (pi, e), math functions (sqrt, abs, round, floor, ceil), and % shorthand while keeping modulo
  • kill flow with explicit confirmation and process-by-port lookup (:3000 / port 3000)
  • warning cue when shell input contains sudo

Running apps switcher

  • an icon row rendered on the right half of the search bar: when enabled, the search field takes the left half and the running-app icons occupy the right (right-aligned, growing leftward as more apps open). Apps are capped at 9, sorted alphabetically and stable - positions don't shuffle when you switch apps
    • macOS: from NSWorkspace.shared.runningApplications, filtered to regular apps
    • Linux: from /proc scan, filtered by what GNOME Shell's Shell.AppSystem.get_running() considers a windowed app (via Look's GNOME extension on Wayland) or by wlr-foreign-toplevel / X11 client-list / desktop-hints on other compositors
    • Windows: from running-window enumeration via Win32
  • on the home screen, activation: Cmd+badge digit (macOS) / Alt+badge digit (Linux, Windows). In command mode, Cmd+1..Cmd+5 / Ctrl+1..Ctrl+5 keep their existing command-catalog semantics
  • badge labels follow an ergonomic outer-first layout: with N running apps we consume the easiest-to-reach keys first (1, 2, 3, 9, 8 before 4, then 7, then 6, then 5). 5 running apps → badges 1, 2, 3, 8, 9; 9 running apps → all of 1..9
  • focus paths: macOS = NSRunningApplication.activate() with Dock-style reopen for windowless apps; Linux = GNOME Shell extension D-Bus on GNOME Wayland, wlr-foreign-toplevel-management on sway/Hyprland, i3-msg on i3, _NET_ACTIVE_WINDOW (x11rb) on other X11 WMs; Windows = SetForegroundWindow via window handle
  • click on an icon also switches; hover shows app name + shortcut tooltip; active app has an accent ring
  • toggled on/off via Settings > Appearance > Running Apps. Persisted as running_apps_placement in ~/.look.config (none = off, any other value = on; legacy top/right/bottom still load as "on"). The window is a single fixed size and never resizes for the row
  • off hides the row and disables the activation shortcut

Settings and runtime config

  • in-app settings panel (Cmd+Shift+,)
  • local config file ~/.look.config
  • runtime reload (Cmd+Shift+;)
  • 7 built-in theme presets (Catppuccin, Tokyo Night, Rose Pine, Gruvbox, Dracula, Kanagawa, Custom)
  • query alias presets in ~/.look.config for app + System Settings intent expansion (alias_note, alias_code, alias_term, alias_chat, alias_music, alias_brow)
  • in-app config reset (Settings > Advanced > Create Fresh Config) with confirmation popup
  • semantic color system with auto-derived text colors in Custom mode
  • indexing, UI, privacy/logging, launch-at-login controls
  • immediate validation feedback for invalid settings input
  • advanced extra scan directory controls (file_scan_extra_roots) with overlap/risky-root validation

Backend and persistence

  • SQLite-backed candidate + usage storage
  • startup/index refresh pipeline for apps/files/settings
  • dirty-aware incremental indexing via file-system events (Cmd+Space refresh-on-dirty)
  • usage-event feedback loop for ranking updates
  • Rust core + FFI bridge to Swift app shell

In progress / near-term

  • better coverage for deeper System Settings pages
  • safer shell policy controls (more explicit execution guardrails)
  • richer benchmark reporting (p50/p95/p99) for query/index paths
  • tighter ranking calibration across title/subtitle/path signals

Planned direction

  • optional extension/plugin injection model (without bloating base UX)
  • broader platform support after macOS quality stabilizes (Windows first)

Out of scope for v1

  • cloud-first workflows
  • semantic/vector retrieval
  • full content indexing of file bodies
  • mandatory plugin ecosystem for core workflow