Releases: ekorbia/ekorbia-desktop
Releases · ekorbia/ekorbia-desktop
Release list
Ekorbia v0.7.1
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
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, not76B). - 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
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
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.enandsmall.enare 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
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
(e2bfor ≤8 GB up to31bfor 64 GB+), and downloads it — plus the
nomic-embed-textembedding 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/showprobe and sendsthink: falseby 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 underui/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 on127.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
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 —
.msiand NSIS.exeinstallers, both with
the WebView2 bootstrapper embedded so Windows 10 systems without
WebView2 still launch. Acrylic / Mica vibrancy on the overlay window
viawindow-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 textualCtrl+...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 insidesetup().
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 directfetch()from the WebView. The motivation is Windows:
WebView2 enforces Chromium's Private Network Access preflight on
any fetch from the app'stauri://localhostorigin to 127.0.0.1,
and Ollama doesn't reply with the required
Access-Control-Allow-Private-Network: trueheader — 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, viareqwest), the streaming chat
loop becomes a TauriChannel<T>rather than aReadableStream,
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 intauri.conf.jsonwas 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.exerunning 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 matrix —
ci.ymlnow runscargo fmt --check,
clippy, andcargo test --libon 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 pipeline —
release.ymlwas 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.desktopin the README's local-storage section to
match the realtauri.conf.jsonidentifier. Linux and Windows data
directory paths now also documented. README.mdinstall section — split into per-OS subsections
with platform-specific first-launch instructions (Gatekeeper on
macOS, AppImage chmod /.debinstall 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
/maimruntime detection. - Windows screenshot capture (Phase W3) —
ms-screenclip:URI or
thexcapcrate. - Windows code signing (Phase W4) — EV certificate or Azure Trusted
Signing.
Ekorbia v0.3.0-rc2
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 —
.msiand NSIS.exeinstallers, both with
the WebView2 bootstrapper embedded so Windows 10 systems without
WebView2 still launch. Acrylic / Mica vibrancy on the overlay window
viawindow-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 textualCtrl+...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 insidesetup().
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 directfetch()from the WebView. The motivation is Windows:
WebView2 enforces Chromium's Private Network Access preflight on
any fetch from the app'stauri://localhostorigin to 127.0.0.1,
and Ollama doesn't reply with the required
Access-Control-Allow-Private-Network: trueheader — 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, viareqwest), the streaming chat
loop becomes a TauriChannel<T>rather than aReadableStream,
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 intauri.conf.jsonwas 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.exerunning 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 matrix —
ci.ymlnow runscargo fmt --check,
clippy, andcargo test --libon 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 pipeline —
release.ymlwas 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.desktopin the README's local-storage section to
match the realtauri.conf.jsonidentifier. Linux and Windows data
directory paths now also documented. README.mdinstall section — split into per-OS subsections
with platform-specific first-launch instructions (Gatekeeper on
macOS, AppImage chmod /.debinstall 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
/maimruntime detection. - Windows screenshot capture (Phase W3) —
ms-screenclip:URI or
thexcapcrate. - Windows code signing (Phase W4) — EV certificate or Azure Trusted
Signing.
Ekorbia v0.2.0
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 indb.rsruns
afterexecute_batch(SCHEMA)toALTER TABLE ADD COLUMNany new columns
on upgraded installs. Idempotent via PRAGMA introspection; fresh installs
no-op through it.
Ekorbia v0.1.0
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 asStopped. - 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
withnomic-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; aVISIONbadge 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
.mdfiles 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_filetool 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.shand uploaded
manually to ekorbia.com.