Skip to content

Releases: ekorbia/ekorbia-desktop

Ekorbia v0.7.1

Choose a tag to compare

@github-actions github-actions released this 25 Jul 23:20

Fixed

  • Comparison chats no longer go blank when a column finishes. A
    side-by-side comparison could crash to a black screen the moment one
    model's reply completed; the columns now render their token footer
    cleanly.
  • Comparison columns now follow along as they answer. Each column
    auto-scrolls to keep the latest text in view while a reply streams past
    the bottom of the viewport — the same behaviour single-model chats
    already had.
  • Sidebar rows now keep up with the conversation. A chat's one-line
    preview and its spot in the list refresh the moment you send or receive a
    message, instead of only catching up the next time the list happened to
    reload — most visibly when switching Spaces.
  • The private-chat button is always available. It used to disappear
    while you were inside a Space; now it's there wherever you are. A private
    chat stays ephemeral and Space-agnostic — it opens a scratch conversation
    that isn't saved and doesn't inherit the Space.

Ekorbia v0.7.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 16:26

Added

  • Qwen3.5 in the model catalog. Two new one-click models on the bundled
    engine — Qwen3.5 4B (2.7 GB) and Qwen3.5 9B (5.7 GB).

Changed

  • Less backend jargon, friendlier defaults. Themes now have plain names
    (Midnight, Warm, Daylight, Slate, Dusk, Sand) plus a Match System
    appearance that follows macOS; the status bar and model pickers read
    Local · Private instead of raw engine names, and the picker shows what
    the active model supports.
  • Technical details are hidden by default — per-message token/timing
    footers and capability badges now live behind Settings → Show technical
    details
    , one click away on any message.
  • Subtly colored toolbar icons for a warmer, less utilitarian navigation.
  • A content-forward sidebar. Chat history rows are now roomier cards
    showing the title, a one-line preview of the latest message, and a
    relative time.
  • A friendlier new-chat screen. An empty chat opens with a time-of-day
    greeting and starter cards that drop one of your saved prompts into the
    composer (and focus it), falling back to a starter phrase if the prompt
    isn't in your library.
  • A simpler Settings panel — six focused tabs instead of seven. Keyboard
    shortcuts get their own Hotkeys tab (with a one-click Reset to
    defaults
    ), and the separate Prompts, Memory, and Attachments tabs merge
    into a single Files tab.
  • A tidier prompts panel — the tag filters now start collapsed, behind a
    larger, easier-to-hit toggle.
  • Clearer input placeholders. Empty fields now read as faint, italic hint
    text instead of real-looking values; example values are prefixed with
    "e.g."; and settings that have a default (Top-K, folder file types, …) show
    it as a "Defaults to …" helper line with the field left blank.
  • A trimmed watch recipe gallery — now Downloads, Blog/feed, and Custom.
    The Price and Job-listings starter recipes were removed; set those up as a
    Custom URL watch instead (their prompts stay in your library).
  • Saved files are easier to keep together. A new chat's save-location
    prompt now defaults to your last-used output folder (one click to reuse it),
    and the Files panel notes that each chat keeps its own saved files.
  • A richer saved-files list. Each row in the Files panel now shows a
    two-line preview of the file's contents, with its name, size, and age on the
    top line; files deleted outside Ekorbia are flagged deleted from disk
    with a one-click Remove, and file sizes read clearly (76 B, not 76B).
  • A livelier waiting state. While a model prepares its reply, an empty
    message now shows animated dots and a rotating label (Thinking… → Still
    thinking… → Almost there…
    ) instead of a bare dot; the bundled engine still
    surfaces its real progress ("loading model…").
  • Clearer message details. The per-message Details line now labels its
    numbers (1,731 in · 1,118 out) and adds throughput (tok/s); on the
    bundled engine the input shows against the context window as a budget
    (1,731 / 8,192 ctx), so you can see how full a chat's context is getting.
  • Watches are grouped by watch. The Watches panel no longer splits into a
    list on top and one merged activity feed below — each watch is now a section
    with its own summaries nested directly beneath it, and clicking a watch's
    header collapses or expands just that section.
  • A friendlier model catalog. Settings → Models leads with the best pick
    for your Mac, ranks the rest by fit, and folds the long list behind a filter
    and a "show more" so it stays scannable. Adding your own model is now one
    field — paste a Hugging Face link (page or download) and Ekorbia names it for
    you, no separate "local name" to invent.
  • Browse Hugging Face for models. Paste a repo id (org/model) into
    Add from a link and click Browse: Ekorbia lists the repo's quants
    with sizes, flags a sensible default, pairs a vision projector automatically,
    and verifies each download against Hugging Face's published checksums
    the same integrity guarantee as the built-in catalog.

Fixed

  • No more crash on quit after using voice. Once the on-device speech model
    had loaded (hovering the mic is enough to prewarm it), quitting could abort
    with a native crash instead of closing cleanly; Ekorbia now releases the
    model before shutdown.
  • The Backend settings tab's Save button was invisible (amber text on an
    amber fill) on light themes.
  • Watches no longer show a phantom "Cancelled by user". Running a watch
    while its automatic check was already underway could collide, flagging one
    file as cancelled (though nobody cancelled it) and then summarizing it a
    second time. A watch now runs one pass at a time, so triggers overlap
    cleanly instead of fighting.

Ekorbia v0.6.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 00:43

Added

  • Ekorbia runs models itself — no Ollama, no terminal. A bundled
    inference engine ships with the app and is the default for new installs.
    First launch recommends a model sized for your Mac and downloads it with
    one click; you're chatting in a couple of minutes. (Already using Ollama?
    Nothing breaks — you get a one-time offer to keep it or switch, and it
    stays available under Settings → Backend.) The bundled engine is
    macOS-only in this release; Linux and Windows continue to use Ollama or
    a custom endpoint.
  • Built-in model catalog. The model manager downloads curated
    Gemma 4 models (official quantization-aware builds, vision included)
    and the RAG embedding model in-app — checksummed, resumable, no
    terminal required.
  • Custom inference backends. Point Ekorbia at any OpenAI-compatible
    server (LM Studio, llama.cpp's llama-server, vLLM) in Settings →
    Backend; Ollama is now optional.

Changed

  • Switching inference backend re-checks your document embeddings. A
    different engine produces different vectors, so Ekorbia now flags
    attachments indexed on your previous backend and offers the usual
    one-click re-index — keeping document search accurate after a switch.
  • Visual refresh, with the default One Dark theme using a slate
    palette and brighter accents (the old look is still available as a new
    Warm Dark theme).
  • Interface polish across the chrome — a glowing model-status pill,
    tinted capability badges and chips, softer rows, primary buttons with
    an accent glow, and a gentle popover motion.

Fixed

  • The message footer's response time is now the model's actual
    generation time.
    It's read from the server's own timings, so a first
    message that had to load the model no longer shows an inflated number.
  • No more light/dark flash at startup. The window backing and the
    first painted frame now match your saved theme — previously the app
    could flash between light and dark while loading.
  • The macOS app icon now sits properly in the Dock. It was rendered
    full-bleed (oversized, with visible corners against the Dock's icon
    style); the icon set is rebuilt on Apple's standard icon grid with
    correct margins and transparent corners.
  • Model-written files now save reliably — previously a save could
    fail with a foreign-key error even though the file was already on disk.
  • Capability badges (TOOL/VISION) now appear reliably — a startup
    race could leave them, and tool use, switched off for a capable model.

Ekorbia v0.5.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 18:58

Added

  • Voice input — push-to-talk dictation in the composer. Click the mic
    button (between the prompt button and the model picker), speak, then click
    again to insert the transcript at your cursor; Esc cancels. Speech is
    transcribed entirely on your machine with
    whisper.cpp — nothing is
    uploaded. First use downloads a small English model (base.en, ~142 MB;
    tiny.en and small.en are also offered) with a cancellable progress bar;
    manage them under Settings → Voice. Metal-accelerated on Apple Silicon
    (a few hundred milliseconds for a short dictation). macOS-first; the mic
    permission prompt appears the first time you record.
  • Voice input in the quick-query overlay — the same mic button in the
    Spotlight-style overlay, so you can dictate a quick question without
    switching to the main window. Recording keeps the overlay open (it won't
    auto-dismiss mid-dictation).
  • Multilingual dictation + translate-to-English. Alongside the English
    models, multilingual Whisper models (base, small, large-v3-turbo)
    cover 99 languages. Settings → Voice adds a language picker
    (auto-detect or a specific language) and a Translate to English toggle;
    both apply to multilingual models (English-only models always transcribe
    English).
  • Hands-free auto-stop. Dictation can stop on its own a moment after you
    finish speaking (energy-based voice-activity detection) instead of needing a
    second click — toggle it under Settings → Voice ("Stop automatically
    when I pause," on by default).
  • Auto-send after dictation. With this on (default), a finished dictation
    submits the message for you — speak and it sends, no Enter or click. Works in
    the composer and the overlay; Esc during recording still cancels without
    sending. Toggle under Settings → Voice ("Send automatically after
    dictation").
  • Global voice hotkey. A system-wide, rebindable shortcut (default ⌘⇧V on
    macOS, Alt+Shift+V on Windows) opens the quick-query overlay already
    listening — dictate from any app without clicking. Rebind under
    Settings → General → Voice input.

Ekorbia v0.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Jun 00:00

A "works without a terminal" release: guided first-run, in-app model
management, watch recipes, and a fully-offline UI. macOS remains the
primary platform.

Added

  • Guided first-run setup. Launch with no model installed and Ekorbia
    detects your machine's memory, recommends a right-sized Gemma 4
    (e2b for ≤8 GB up to 31b for 64 GB+), and downloads it — plus the
    nomic-embed-text embedding model if you want folder search — in-app
    with a progress bar. No terminal required.
  • In-app model manager — download and delete models without a
    terminal.
    A new Settings → Models tab (also reachable via
    Manage models… in the composer's model picker, a Download a
    model…
    button when no models are installed, and from the startup
    "Model not found" dialog) lists installed models with their on-disk
    sizes, deletes them with a confirmation, and pulls new ones with a
    live, cancellable progress bar.
  • Watch recipes, a Today digest, and a Downloads watch. Creating a
    watch now starts from one-click recipes — Summarise new downloads,
    Watch a price, Watch job listings, Follow a blog, or Custom — that
    pre-fill the form (kind, prompt, cadence, and a model picker that
    defaults to a model you actually have pulled). The Watches panel gained
    an All / Today toggle and a Chat about today button that opens a
    chat seeded with the last 24 hours of summaries. Folder watches can skip
    files already present, so pointing one at a busy folder like Downloads
    doesn't summarise the whole backlog at once.
  • Faster replies from reasoning models. Ekorbia detects
    thinking-capable models (qwen3.x, deepseek-r1, gpt-oss, …) via Ollama's
    /api/show probe and sends think: false by default, so they answer
    right away instead of streaming a long hidden chain-of-thought first.

Changed

  • Replaced chat groups with Spaces. A Space is a named workspace
    that bundles a default model, optional pinned files and folders,
    optional pinned prompts (any of which can be locked to enforce
    always-attached + composer-undetachable status), and an optional
    Space-scoped memory file.
  • All UI assets are now vendored — the app runs fully offline.
    React, ReactDOM, Babel-standalone, marked, highlight.js, DOMPurify,
    and the Inter / JetBrains Mono / Instrument Serif fonts now ship
    inside the app under ui/vendor/ (pinned versions + checksums in
    ui/vendor/README.md) instead of loading from unpkg.com and Google
    Fonts at runtime. The only network traffic Ekorbia produces is to
    the local Ollama server on 127.0.0.1:11434. React also moves from
    the development UMD build to the production build (smaller, faster;
    React errors now surface as minified error codes — see
    react.dev/errors). A new Playwright spec (offline-boot.spec.js)
    boots the UI with all non-localhost requests blocked and fails if
    any external request is even attempted.

Ekorbia v0.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Jun 01:17

First release candidate for cross-platform support. macOS remains the
primary platform; Linux and Windows are new for this release.

Added

  • Linux support.deb (Debian / Ubuntu / Mint), .rpm
    (Fedora / RHEL / openSUSE), and .AppImage (any modern x86_64
    distro) bundles published from the release pipeline. Built on Ubuntu
    22.04 for broad glibc compatibility. Full chat, attachments, folder
    RAG, watches, prompts, memory file, chat-tool file saves, OS
    notifications (libnotify), and full-text history search all work.
    See the feature matrix for
    what's deferred (overlay, screenshot capture).
  • Windows support.msi and NSIS .exe installers, both with
    the WebView2 bootstrapper embedded so Windows 10 systems without
    WebView2 still launch. Acrylic / Mica vibrancy on the overlay window
    via window-vibrancy. Same full feature set as Linux plus the
    Quick Query overlay; screenshot capture is the only deferred feature.
  • Platform-aware UI — Quick-query overlay default hotkey is ⌘⇧Space
    on macOS and Alt+Space on Windows (Win-key combos are heavily
    reserved by the OS for input-method switching, so we follow the
    PowerToys Run / Raycast Windows convention). Cmd / Ctrl glyphs in
    inline hints (⌘↵, ⌘K, ⌘N, ⌘\) flip to textual Ctrl+... on
    Linux and Windows. The onboarding tour adapts its slide-2 hotkey
    content to whichever hotkeys are actually wired up on the current
    platform.
  • Defensive hotkey registration — global-shortcut registration
    failures (OS conflict, locked combination, system policy) are now
    logged and the slot left empty rather than killed inside setup().
    Pre-W1 a registration failure would bubble out of setup() via ?
    and crash the app on launch with a blank window flash — visible only
    to Windows testers where the (previously default) Win+Shift+Space
    combination is reserved.
  • Ollama transport routed through Rust backend (Phase B). Every
    Ollama HTTP call — /api/tags, /api/ps, /api/generate,
    /api/chat (streaming) — now goes through a Tauri command instead
    of a direct fetch() from the WebView. The motivation is Windows:
    WebView2 enforces Chromium's Private Network Access preflight on
    any fetch from the app's tauri://localhost origin to 127.0.0.1,
    and Ollama doesn't reply with the required
    Access-Control-Allow-Private-Network: true header — so every
    fetch silently fails and Ekorbia would conclude "Ollama not
    running" even when it was. Routing through Rust bypasses the
    browser network stack entirely. As a side benefit, all network
    I/O is now in one place (Rust, via reqwest), the streaming chat
    loop becomes a Tauri Channel<T> rather than a ReadableStream,
    and mid-stream cancellation runs through a small per-request flag
    registry. Same behaviour on every platform; the Windows fix comes
    along for free.
  • Closing the main window now fully exits on Windows + Linux. The
    hidden overlay window in tauri.conf.json was keeping Tauri's
    "exit when all windows close" rule from firing — clicking X on
    Windows would dismiss the visible UI but leave a "ghost"
    ekorbia.exe running in Task Manager (and a stray process on
    Linux). We now intercept the main window's close event and call
    app.exit(0) explicitly on non-macOS platforms. macOS keeps the
    Dock-stays-alive convention: close ≠ quit, Cmd+Q to fully exit.
  • Cross-platform CI matrixci.yml now runs cargo fmt --check,
    clippy, and cargo test --lib on macOS, Ubuntu 22.04, and Windows.
    The UI test suite (Node helpers + Playwright WebKit) runs on macOS
    only since WebKit is the closest engine to WebKitGTK / WKWebView and
    duplicating it elsewhere adds no signal.
  • Three-stage release pipelinerelease.yml was restructured
    into create-draft → build matrix (3 OSes in parallel) →
    SHA256SUMS + publish. A single tag push produces a draft GitHub
    Release with all five bundles attached, then flips it to published
    once every build succeeds. Prerelease tags (any tag containing -)
    are automatically marked as pre-releases.

Changed

  • App identifier in user-facing docs — corrected dev.ekorbia.desktop
    com.ekorbia.desktop in the README's local-storage section to
    match the real tauri.conf.json identifier. Linux and Windows data
    directory paths now also documented.
  • README.md install section — split into per-OS subsections
    with platform-specific first-launch instructions (Gatekeeper on
    macOS, AppImage chmod / .deb install on Linux, SmartScreen on
    Windows). Build-from-source dependencies tabled per OS.

Deferred (planned for later 0.3.x releases)

  • Linux overlay (Phase L2) — transparent always-on-top window with
    Wayland support story.
  • Linux screenshot capture (Phase L3) — grim+slurp / gnome-screenshot
    / maim runtime detection.
  • Windows screenshot capture (Phase W3) — ms-screenclip: URI or
    the xcap crate.
  • Windows code signing (Phase W4) — EV certificate or Azure Trusted
    Signing.

Ekorbia v0.3.0-rc2

Ekorbia v0.3.0-rc2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Jun 00:41

First release candidate for cross-platform support. macOS remains the
primary platform; Linux and Windows are new for this release.

Added

  • Linux support.deb (Debian / Ubuntu / Mint), .rpm
    (Fedora / RHEL / openSUSE), and .AppImage (any modern x86_64
    distro) bundles published from the release pipeline. Built on Ubuntu
    22.04 for broad glibc compatibility. Full chat, attachments, folder
    RAG, watches, prompts, memory file, chat-tool file saves, OS
    notifications (libnotify), and full-text history search all work.
    See the feature matrix for
    what's deferred (overlay, screenshot capture).
  • Windows support.msi and NSIS .exe installers, both with
    the WebView2 bootstrapper embedded so Windows 10 systems without
    WebView2 still launch. Acrylic / Mica vibrancy on the overlay window
    via window-vibrancy. Same full feature set as Linux plus the
    Quick Query overlay; screenshot capture is the only deferred feature.
  • Platform-aware UI — Quick-query overlay default hotkey is ⌘⇧Space
    on macOS and Alt+Space on Windows (Win-key combos are heavily
    reserved by the OS for input-method switching, so we follow the
    PowerToys Run / Raycast Windows convention). Cmd / Ctrl glyphs in
    inline hints (⌘↵, ⌘K, ⌘N, ⌘\) flip to textual Ctrl+... on
    Linux and Windows. The onboarding tour adapts its slide-2 hotkey
    content to whichever hotkeys are actually wired up on the current
    platform.
  • Defensive hotkey registration — global-shortcut registration
    failures (OS conflict, locked combination, system policy) are now
    logged and the slot left empty rather than killed inside setup().
    Pre-W1 a registration failure would bubble out of setup() via ?
    and crash the app on launch with a blank window flash — visible only
    to Windows testers where the (previously default) Win+Shift+Space
    combination is reserved.
  • Ollama transport routed through Rust backend (Phase B). Every
    Ollama HTTP call — /api/tags, /api/ps, /api/generate,
    /api/chat (streaming) — now goes through a Tauri command instead
    of a direct fetch() from the WebView. The motivation is Windows:
    WebView2 enforces Chromium's Private Network Access preflight on
    any fetch from the app's tauri://localhost origin to 127.0.0.1,
    and Ollama doesn't reply with the required
    Access-Control-Allow-Private-Network: true header — so every
    fetch silently fails and Ekorbia would conclude "Ollama not
    running" even when it was. Routing through Rust bypasses the
    browser network stack entirely. As a side benefit, all network
    I/O is now in one place (Rust, via reqwest), the streaming chat
    loop becomes a Tauri Channel<T> rather than a ReadableStream,
    and mid-stream cancellation runs through a small per-request flag
    registry. Same behaviour on every platform; the Windows fix comes
    along for free.
  • Closing the main window now fully exits on Windows + Linux. The
    hidden overlay window in tauri.conf.json was keeping Tauri's
    "exit when all windows close" rule from firing — clicking X on
    Windows would dismiss the visible UI but leave a "ghost"
    ekorbia.exe running in Task Manager (and a stray process on
    Linux). We now intercept the main window's close event and call
    app.exit(0) explicitly on non-macOS platforms. macOS keeps the
    Dock-stays-alive convention: close ≠ quit, Cmd+Q to fully exit.
  • Cross-platform CI matrixci.yml now runs cargo fmt --check,
    clippy, and cargo test --lib on macOS, Ubuntu 22.04, and Windows.
    The UI test suite (Node helpers + Playwright WebKit) runs on macOS
    only since WebKit is the closest engine to WebKitGTK / WKWebView and
    duplicating it elsewhere adds no signal.
  • Three-stage release pipelinerelease.yml was restructured
    into create-draft → build matrix (3 OSes in parallel) →
    SHA256SUMS + publish. A single tag push produces a draft GitHub
    Release with all five bundles attached, then flips it to published
    once every build succeeds. Prerelease tags (any tag containing -)
    are automatically marked as pre-releases.

Changed

  • App identifier in user-facing docs — corrected dev.ekorbia.desktop
    com.ekorbia.desktop in the README's local-storage section to
    match the real tauri.conf.json identifier. Linux and Windows data
    directory paths now also documented.
  • README.md install section — split into per-OS subsections
    with platform-specific first-launch instructions (Gatekeeper on
    macOS, AppImage chmod / .deb install on Linux, SmartScreen on
    Windows). Build-from-source dependencies tabled per OS.

Deferred (planned for later 0.3.x releases)

  • Linux overlay (Phase L2) — transparent always-on-top window with
    Wayland support story.
  • Linux screenshot capture (Phase L3) — grim+slurp / gnome-screenshot
    / maim runtime detection.
  • Windows screenshot capture (Phase W3) — ms-screenclip: URI or
    the xcap crate.
  • Windows code signing (Phase W4) — EV certificate or Azure Trusted
    Signing.

Ekorbia v0.2.0

Choose a tag to compare

@github-actions github-actions released this 26 May 01:01

Added

  • Chat groups (sidebar folders) — organise the history sidebar into
    user-defined folders that sit above the date buckets (Today / Yesterday /
    …). Click "+ New group" to create one; drag any chat onto a folder header
    to file it, or drag it back into the date sections to unfile. Right-click a
    chat for a context menu.
  • Compare 2-3 models side-by-side — new comparison-chat mode. Pick 2 or 3
    installed models from the sidebar's columns button, send one prompt, see all
    responses stream into adjacent columns in parallel. Click "Keep this" on the
    preferred response to transition the chat to a normal single-model
    conversation with the kept model.
  • Model + tokens footer on every assistant message — subtle monospace
    line showing which model produced the response and its token counts, so
    scrolling back through a chat where you switched models mid-conversation
    makes attribution obvious.
  • Database migrations — new apply_migrations() step in db.rs runs
    after execute_batch(SCHEMA) to ALTER TABLE ADD COLUMN any new columns
    on upgraded installs. Idempotent via PRAGMA introspection; fresh installs
    no-op through it.

Ekorbia v0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 May 01:48

First public release. Local-first AI desktop built on Tauri 2 + Ollama.

Added

Chat

  • Multi-tab chat with independent conversation history per tab.
  • Private (ephemeral) chats — messages, attachments, and file saves
    never touch the database; the conversation lives in memory only and
    disappears when the tab closes.
  • Streaming responses with a mid-generation Stop button that freezes
    partial output and marks the message as Stopped.
  • Markdown rendering for assistant replies with syntax-highlighted code
    blocks (highlight.js github-dark) and per-block Copy buttons. User
    messages stay as plain text.
  • Edit & retry: click the pencil on any past user message to edit and
    resend (truncates the conversation from that point); click the retry
    icon on the last assistant reply to regenerate.
  • Chat export to Markdown (clean role-tagged sections) or JSON (full
    row preservation including tool calls).
  • Click-to-rename chats inline in the chat header.

Attachments + local RAG

  • File attachments: .txt, .md, .pdf, and images via the paperclip
    button.
  • Folder attachments via the folder button — chunked, embedded locally
    with nomic-embed-text (or any embedding model you pull), and
    retrieved per-query.
  • Incremental folder re-index — modify one file in a 500-file folder
    and only that file is re-embedded.
  • Citations: assistant replies emit [N] markers that match a Sources
    footer of clickable file chips. Shift-click any chip to reveal in
    Finder.
  • Vision routing: images route through vision-capable models (Gemma 4,
    llava, etc.) as base64; a VISION badge on the chip indicates the
    active model can see them.
  • Stale-embeddings banner with one-click "Re-index all" when the
    embedding model changes in Settings.

Prompt library

  • File-system-backed prompt store: prompts live as .md files with
    YAML frontmatter under ~/Documents/Ekorbia/Prompts/. Git-friendly,
    shareable, editable in any editor.
  • Configurable prompts folder via Settings (Browse / Reveal / Reset).
  • Five colored Favorites for quick personal-bucket filtering.
  • Flat free-text tag filters with full-text search across name, body,
    and tags.
  • Sort by Recent / A→Z / Z→A / Favorite.
  • 28 built-in prompts ship with the app; restorable via Settings.
  • Slash-trigger picker in the composer.

Quick-query overlay

  • Spotlight-style overlay (⌘⇧Space by default, customisable) that pops
    up over any app without stealing focus.
  • Inline model + single-prompt pickers, with searchable prompt list.
  • Streaming responses just like the main composer.
  • "Send to main" continues an overlay session as a full multi-turn
    chat in the main window.
  • Auto-hides on blur or Esc.

Screenshot capture

  • ⌘⇧1 (customisable) invokes macOS's native region selector.
  • Captured PNG opens in a fresh chat tab with the image attached as a
    vision attachment.
  • Auto-switches to a vision-capable model when needed, with a toast
    notification.

Watch (ambient background work)

  • Three watch kinds: Folder (poll a folder, summarise new files),
    RSS (poll a feed, summarise new entries with article-body
    link-follow), and URL (poll a page, summarise on change — both
    snapshot and diff modes).
  • Per-watch poll cadence with sensible defaults (folder=30s, RSS=10min,
    URL=30min).
  • Optional CSS selector on URL watches to narrow extraction past
    nav/footer noise.
  • Test button in the watch form probes the source once and reports
    entry count or character count.
  • Edit watches via the pencil icon — change name, prompt, model,
    cadence, or any field without delete-and-recreate.
  • OS notifications opt-in per-watch (macOS Notification Center, Linux
    libnotify, Windows toast). Events coalesce per poll cycle.
  • Activity feed in the right-side Watches tab with kind glyphs and
    live processing indicators.
  • "Chat with notes" opens a new chat with accumulated notes as system
    context.
  • Cancel-on-disable: toggling a watch off immediately stops any in-
    flight processing for that watch.
  • "Create and run" / "Save and run" in the watch form to bypass the
    first poll-interval wait.

Files panel (chat-generated outputs)

  • Tool-capable models can call a write_file tool to save outputs
    (HTML, CSS, JS, Python, scripts, configs) into a per-chat output
    directory.
  • First-save permission modal lets you pick the output folder or block
    saves entirely for that chat.
  • Files panel (third right-sidebar tab) lists every saved file grouped
    by path, with size, age, version count, and Reveal / Open buttons.

Memory file

  • A single user-edited markdown file injected as a system message on
    every chat send. Read-only from the model's perspective.
  • Configurable path in Settings; defaults to
    ~/Documents/Ekorbia/memory.md.
  • Soft cap at ~10 KB with an inline warning above that.

Search

  • Full-text search across all chat history (BM25-ranked) via SQLite
    FTS5.
  • Highlighted hits both in the sidebar results and in the parent chat
    when opened.

Model integration

  • Live Ollama model picker — lists all locally pulled models, switch
    mid-session; selection sticks across launches and falls back to an
    installed model if the previous pick is no longer pulled.
  • Capability detection: tool support and vision support inferred per
    model.

Onboarding

  • First-launch tour highlighting the main UI elements.

Documentation

  • mdBook-based user documentation under docs/ (theme: One Light,
    Ekorbia-tinted), built via ./scripts/build-docs.sh and uploaded
    manually to ekorbia.com.