Skip to content

Releases: archdex-art/SuperSearch

SuperSearch v0.1.17

Choose a tag to compare

@archdex-art archdex-art released this 17 Jul 10:31
8dd90d3

Fixes the actual root cause behind the "hotkey doesn't work" reports: the
capture UI itself could persist a corrupted shortcut.

Fixed

  • Rebinding the hotkey to an Option/Alt combo could silently corrupt it.
    Live log evidence: Global shortcut registration failed ... error=Found empty token while parsing hotkey: Alt+\u{a0}. The General pane's capture
    UI built the accelerator from KeyboardEvent.key — the composed
    character — but macOS recomposes many keys under Option into a different
    Unicode character than what's printed on the keycap: Option+Space's key
    is a non-breaking space (U+00A0), not a plain " ", and Option+letters
    compose accented characters (Option+C → "ç"). The capture UI showed
    "Alt+Space" (the display used the physical key label) but silently
    persisted "Alt+<NBSP>" (built from the composed character) to
    settings.json — invisible until the next boot's registration attempt
    rejected it outright. The 0.1.15/0.1.16 self-heal recovered the hotkey
    back to the default afterward, but the underlying capture bug meant
    rebinding to any Option combo reproduced it every time.
    toAccelerator now resolves letters/digits/Space from
    KeyboardEvent.code (the physical key, unaffected by modifier
    composition) instead of key. Verified live: simulated the exact
    Option+Space event macOS actually sends (code: "Space", key: "\u00A0")
    and confirmed it now captures as Alt+Space; same for Option+C
    (key: "ç") capturing as Alt+C.

SuperSearch v0.1.16

Choose a tag to compare

@archdex-art archdex-art released this 17 Jul 08:57
8dd90d3

Fixes the hotkey going completely silent instead of just "unreliable."

Fixed

  • The hotkey could register zero times instead of falling back. The
    0.1.15 self-heal only ever retried with the default shortcut, and only
    when the configured shortcut already differed from it — so a transient
    registration failure while the configured shortcut was already the
    default (the common case) left the app with no working hotkey at all
    until the next restart, no retry, no fallback. This is exactly what
    happens when an old build is still squatting on the same combo: confirmed
    live via ps aux finding a pre-0.1.15 /Applications/SuperSearch.app
    process still running (started well before the fix was pulled) still
    holding Alt+Space, which the newly-started process's own registration
    attempt then silently lost to. Registration now retries the same
    shortcut up to 3 times with a 200ms backoff before giving up on it —
    covers the OS taking a moment to release a hotkey a just-exited duplicate
    process (an old build, or a single_instance/dev-restart handoff) was
    still holding.

SuperSearch v0.1.15

Choose a tag to compare

@archdex-art archdex-art released this 17 Jul 08:31
8db7b0a

Three fixes for "the hotkey doesn't reliably summon the palette," found while
chasing a settings-persistence report back to its actual root cause.

Fixed

  • Two competing processes could run at once, each with its own cached
    settings.
    A second launch (a stray /Applications install left running
    alongside a cargo tauri dev session, or an overlapping dev restart)
    started a fully independent process — its own SettingsStore loaded once
    from disk at its own boot time, its own attempt at registering the same
    global hotkey. Two processes racing for one hotkey meant summoning "the
    palette" could nondeterministically show either one's window, and each had
    its own stale view of settings (the rev guard added in 0.1.14 only
    covers races within one process — it can't help across two with no
    shared memory). Added tauri-plugin-single-instance, registered first per
    Tauri's requirement: a second launch now just re-summons the one running
    instance's palette instead of starting a competing process. Verified live
    — launched the binary twice and confirmed via ps that the second
    process exits (defunct, status 0) instead of staying alive.
  • The hotkey could show the window without it ever actually taking
    keyboard focus.
    The palette runs under ActivationPolicy::Accessory (no
    Dock icon) — the one case where WebviewWindow::set_focus() alone is
    unreliable on macOS. set_focus() calls makeKeyAndOrderFront: on the
    window; it doesn't activate the process. Summoned from a background
    global hotkey while a different app holds focus, an accessory app's window
    can end up visually shown but not actually key, so it silently never
    receives keyboard input — indistinguishable from "the hotkey did nothing."
    show_palette now also calls activateIgnoringOtherApps: on
    NSApplication, which set_focus() never did.
  • A hotkey press during the close animation could get silently dropped.
    closingRef (read by the toggle-hotkey listener to tell "genuinely idle"
    apart from "still animating closed") was mirrored from React state via a
    useEffect, which only runs after React commits the next render. A
    hotkey re-summon landing in that gap — e.g. right after hide_on_blur
    starts a close — read the previous value of closingRef.current and hit
    the wrong branch: it called hide() again (a no-op, already closing)
    instead of cancelling the close and reopening. closingRef is now updated
    synchronously at the same call site as setClosing, closing that window
    entirely rather than narrowing it.

SuperSearch v0.1.14

Choose a tag to compare

@archdex-art archdex-art released this 17 Jul 03:03
7d6528f

Fixes an accent-color persistence race: a color chosen in Settings could
silently revert to the default on the next launch.

Fixed

  • A picked accent color could get clobbered back to the default.
    update_settings fires on every step of the Appearance accent picker
    (each HexColorPicker drag frame, and rapid preset clicks), so several
    update_settings IPC calls can be in flight at once. Tauri dispatches
    each command invocation to its own task and does not guarantee they
    complete in the order they were issued — an earlier, slower write
    (e.g. an early drag frame, or an accidental "Amber" click quickly followed
    by the intended color) could finish after the final color and silently
    overwrite settings.json back to a stale value. The running session kept
    showing the correct color (already applied locally), so nothing looked
    wrong until the next full quit-and-relaunch read the stale value back off
    disk. SettingsStore::set now takes a strictly-increasing rev the
    frontend bumps once per issued patch, and discards any write whose rev
    isn't newer than the last one actually applied — the newest issued
    change always wins on disk, regardless of which IPC call happens to land
    first. Covered by settings::tests::stale_out_of_order_write_is_discarded.

SuperSearch v0.1.13

Choose a tag to compare

@archdex-art archdex-art released this 16 Jul 22:36
bdede01

Extends the base theme to the main palette window (it only ever reached the
Settings window before), surfaces failed open/launch actions instead of
silently closing, and removes a rendering artifact around the palette.

Fixed

  • Theme choice didn't apply to the palette. Each Tauri window is its own
    webview with an independent document; picking Light in Settings only
    ever set data-theme on the Settings window's own document; the main
    palette never called applyTheme() at all, so it always rendered the dark
    default no matter what was chosen — looking like the setting kept
    resetting on every summon. The palette now applies the persisted theme on
    boot and live on every settings-changed broadcast, the same way it
    already did for accent color. Converted the palette's own hardcoded
    white/* and hsla(32,14%,6%,…) tokens (App.tsx, CommandItem.tsx,
    DetailPane.tsx, categories.ts) to the ink/canvas semantic colors
    introduced in 0.1.12 so Light actually repaints it, not just Settings.
  • Failed file/app opens closed the palette with zero feedback.
    execute_action always reported acknowledged: true even when the
    underlying open/xdg-open call failed (bad or stale path, no default
    handler, a permission gate, …), and the frontend never inspected the
    response before closing — a failed open and a successful one looked
    identical to the user. Added an explicit success field to
    ExecuteActionResponse; the palette now only closes on success and
    otherwise keeps the panel open with an inline error banner naming the
    actual OS-level failure.
  • Translucent rectangle around the palette. The panel's ambient
    box-shadow (blur-90px/spread--20px) reached far past the 12px padding
    around it, but the window itself is transparent with no native shadow —
    so the shadow's soft gradient got hard-clipped at the window's true
    rectangular bounds instead of fading out, showing as a faint rectangular
    edge floating around the rounded card. Shrunk the shadow to fit inside
    the existing padding so it now fades to nothing before it ever reaches
    the window edge.

SuperSearch v0.1.12

Choose a tag to compare

@archdex-art archdex-art released this 16 Jul 21:54
3d2614f

Fixes two settings-window bugs found during a UI pass, and adds a real
light/dark base theme alongside the existing accent picker.

Fixed

  • Behavior toggle switch overflowed its track. The switch thumb had no
    base horizontal anchor (left), so the browser fell back to a
    static-position heuristic that rendered it flush against — and partly
    outside — the track's right edge in the checked state. Anchored with
    left-0 so translate-x-* offsets are relative to a known origin.
  • Global hotkey capture looked stuck on "Listening…". The bound toggle
    shortcut stays registered as an OS-level global hotkey the entire time the
    settings window is open, so pressing that combo (or anything already
    intercepted) while recording a new one never reached the capture
    keydown listener — the OS grabbed it first. The settings window now
    suspends the active global hotkey for the duration of a capture session
    (suspend_toggle_shortcut) and re-arms it on cancel, failure, or unmount
    (resume_toggle_shortcut); a successful capture re-registers the new
    combo instead, via the existing update_settingsrebind_toggle path.

Added

  • Base theme selector. Appearance now has a Dark/Light theme picker
    alongside Accent Color, independent of it. Every settings-window surface
    reads its ink/canvas colors from CSS variables (--ink-rgb,
    --canvas-rgb) flipped by theme.ts:applyTheme(), so switching themes
    repaints the whole window instantly — no reload.

SuperSearch v0.1.10

Choose a tag to compare

@github-actions github-actions released this 16 Jul 17:57
Add Settings window: accent color, extension folder install (v0.1.10)

New decorated preferences window (open_settings_window), separate from the
frameless palette overlay — toggles macOS Dock/activation policy while open,
hides (not destroys) on close to preserve state.

- accent_color setting overrides the built-in amber identity; applied via
  theme.ts:applyAccent() and live-repainted through settings-changed events.
- Native folder picker for installing an extension from a directory.
- Bump crate/bundle version to 0.1.10 (tauri.conf.json + Cargo.toml).

SuperSearch v0.1.6

Choose a tag to compare

@github-actions github-actions released this 15 Jul 14:54
cad85e0

Static aurora rim

Follow-up polish on 0.1.5: the panel's gradient border no longer rotates —
it's a fixed diagonal sweep (violet top-left → amber bottom-right) plus a
matching static glow under the panel shadow. Calmer for a tool opened
dozens of times a day.

See CHANGELOG.md for details.

Note: unsigned builds (no signing credentials configured) — expect
Gatekeeper/SmartScreen warnings on first launch.

SuperSearch v0.1.5

Choose a tag to compare

@github-actions github-actions released this 15 Jul 14:14
be27dde

Command palette redesign

Master-detail layout, category color coding, and a new violet/amber
"aurora" visual identity — structurally inspired by list+detail launchers
(type filter, context-aware action bar) without reusing any specific
product's theme.

See CHANGELOG.md for details.

Note: these builds are unsigned (no Apple/Windows signing credentials
configured — see RELEASING.md). Expect Gatekeeper/SmartScreen warnings on
first launch.

SuperSearch v0.1.4

Choose a tag to compare

@github-actions github-actions released this 14 Jul 10:15
028f1b7
v0.1.4: UI responsiveness (typing jitter + action freezes), full-scre…