Skip to content

Releases: FyrbyAdditive/FyxLocal

FyxLocal 0.6.4

13 Jun 12:21

Choose a tag to compare

What's new in 0.6.4

A localisation-and-polish release: Norwegian (Bokmål) joins the supported languages, new chats are now properly titled in your language from the moment they're created, and a couple of first-launch rough edges are smoothed.

Norwegian (Bokmål)

  • Full Norwegian localisation. The entire interface, plus the model-facing prompts, tool descriptions, and date/time context, are now available in Bokmål. FyxLocal uses it automatically when your Mac's language is Norwegian (the nb, no, and nn locales all map to Bokmål).
  • This brings the supported languages to English, British English, Swedish, Danish, and Norwegian.

Polish

  • Localised new-chat titles. A brand-new chat now shows its title in your language (e.g. "Ny chat") the instant it's created, instead of an English "New chat" until the auto-titler ran. Auto-titling after the first reply still works, and now correctly recognises the default title in every language — including chats that outlive a system-language change.
  • A comfortable first-launch window. On a fresh install the window now opens at a sensible size with everything visible, rather than at its cramped minimum (it still remembers whatever size you set afterwards, and is clamped to your screen).
  • Cleaner first run. New installs start with no pre-filled provider, guiding you straight to Settings → Providers to add your own.
  • Completeness pass. A handful of recently-added interface strings that had slipped through untranslated are now localised across every language.

Install

Download FyxLocal-0.6.4.dmg, open it, and drag FyxLocal to Applications.

Requires macOS 26 (Apple Silicon). The build bundles the Qwen3-Embedding-0.6B and Qwen3-Reranker-0.6B models for fully on-device RAG, which is the bulk of the download size.

FyxLocal 0.6.3

12 Jun 19:20

Choose a tag to compare

What's new in 0.6.3

A feature release: native Ollama support, a top-to-bottom interface refresh, and Word exports that actually carry your formatting.

Ollama, natively

  • New "Ollama" provider type. Point it at your local Ollama (http://localhost:11434, no API key) and pick a model — FyxLocal speaks Ollama's native API directly rather than its OpenAI-compatibility shim.
  • Real model metadata. Models are listed with their true context window and capabilities (vision, tools, thinking) read straight from Ollama, so context budgeting and the image/attach affordances are correct per model — no guessing.
  • Native streaming + thinking. Replies stream over Ollama's NDJSON protocol, including live reasoning ("thinking") for models that support it.
  • Graceful with limited models. A model that can't call tools no longer errors out — tools are simply skipped for it, and a one-time, dismissable note tells you why (re-evaluated when you switch models mid-chat).
  • Right-sized context. Long chats request the model's full context window from Ollama instead of silently truncating at its small default.

A cooler, calmer interface

A visual refresh that keeps the minimal layout but makes it feel modern — no clutter added.

  • Floating glass composer. The message box now floats as a single frosted card with a hairline edge that brightens on focus, and a gradient send button that gives a little bounce when you send.
  • Cleaner conversation. Your messages sit in soft right-aligned bubbles; assistant replies are clean full-width text marked by a small gradient sparkle. The "thinking" indicator gently shimmers while the model reasons.
  • Refined details throughout. Cool-slate surfaces, hairline-edged code/quote/table cards with spring-animated expand, a gradient sidebar selection, and matching empty-state and notice styling — all adapting to light and dark mode.

High-fidelity Word export

  • Markdown becomes real formatting. Exporting a chat to Word now converts the content properly — headings, bold/italic/strikethrough, inline code, fenced code blocks, ordered and nested bullet lists, block quotes, tables, hyperlinks, and horizontal rules all render as native Word styles instead of raw markdown symbols pasted into the page.
  • Markdown, plain-text, and JSON exports are unchanged.

Install

Download FyxLocal-0.6.3.dmg, open it, and drag FyxLocal to Applications.

Requires macOS 26 (Apple Silicon). The build bundles the Qwen3-Embedding-0.6B and Qwen3-Reranker-0.6B models for fully on-device RAG, which is the bulk of the download size.

FyxLocal 0.6.2

11 Jun 21:46

Choose a tag to compare

What's new in 0.6.2

A correctness-and-compatibility release. The theme is making every provider behave: extended thinking and parallel tool calls now work end-to-end, Anthropic-compatible gateways like DeepSeek connect properly, and a cluster of mid-conversation errors (model switching, tool replay, deprecated parameters) are gone. Plus a smoother transcript and clearer error messages.

Provider updates

  • Extended thinking + tools (Anthropic). Thinking blocks are now captured with their signatures and replayed correctly through tool loops, and the request honours Anthropic's thinking constraints (token budget vs. max tokens, temperature handling) — combinations that previously errored on the second round-trip now complete.
  • Parallel tool calls (OpenAI Chat Completions). Multiple tool calls in a single streamed turn are all decoded and completed with their full arguments — before, only the first call survived and the rest came through truncated.
  • DeepSeek (and similar gateways) in Anthropic mode. Model listing falls back to the gateway's host-root /models endpoint when the base path doesn't serve it, so connecting and picking a model works against gateways that don't perfectly mirror the Anthropic API. (Fixes #2.)
  • Chat Completions parity. Tool strict mode is now sent, and reasoning tokens are read back from usage.

Fewer mid-chat errors

  • Switch models freely. A chat that started with images can be moved to a text-only model without a 400 — history images become a short text placeholder for models that can't accept them, and switch back to a vision model to send the real images again.
  • Tool history stays valid. When a model writes commentary between a tool call and its result, the replayed history keeps the call and result together, fixing a "tool role / no previous tool call" 400 on OpenAI-compatible servers.
  • No more deprecated-parameter failures. Auto-generated chat titles and conversation summaries no longer send a temperature that the newest Anthropic models reject — so new chats get proper titles instead of staying "New chat".

Polish

  • Smoother scrolling. Images in the transcript are decoded off the main thread and cached, so two-finger scrolling past an image no longer hitches.
  • Readable errors. When a request fails, the chat shows the API's actual message (e.g. "temperature is deprecated for this model.") instead of a raw JSON blob.
  • Tidier settings. The per-provider sampling card now only shows the knobs that provider's API actually supports — no more dead controls.
  • Sampling controls. Stop sequences, frequency/presence penalties, and a seed are configurable per provider where the API supports them.

Security & internals

  • Hardened MCP launcher. Child MCP servers no longer inherit dynamic-linker injection variables (DYLD_* / LD_*), and a server's working directory is validated before launch.
  • Safer persistence. State is written before blob garbage-collection runs, closing a window where a crash could leave a chat referencing deleted image/file data.

Install

Download FyxLocal-0.6.2.dmg, open it, and drag FyxLocal to Applications.

Requires macOS 26 (Apple Silicon). The build bundles the Qwen3-Embedding-0.6B and Qwen3-Reranker-0.6B models for fully on-device RAG, which is the bulk of the download size.

FyxLocal 0.6.1

11 Jun 09:23

Choose a tag to compare

What's new in 0.6.1

A small, focused follow-up to the big 0.6.0 RAG release. The headline is multi-select in the conversation sidebar for bulk export and delete; the rest is internal cleanup.

Manage chats in bulk

  • Multi-select the sidebar with native macOS ⌘-click and ⇧-click. The detail pane follows your most-recent selection.
  • Bulk export — pick several chats and send them straight into the export wizard, pre-filled to your selection.
  • Bulk delete — remove several chats at once, behind a count-based confirmation, freeing any attached image/file blobs.
  • The right-click menu adapts. Right-clicking inside a multi-selection offers just Export N chats / Delete N chats (acting on the whole set); right-clicking a row outside the selection keeps the normal single-row menu. Drag-to-reorder is paused while more than one chat is selected, since the target would be ambiguous.

Under the hood

  • Dead code removed. Dropped the unused RemoteEmbedder and an unused query-prefix embedding helper — neither had production callers. No behaviour change; RAG embeds exactly as before.
  • Accurate third-party notices. THIRD_PARTY_NOTICES.md now lists the two models actually bundled today — Qwen3-Embedding-0.6B (8-bit) and Qwen3-Reranker-0.6B (both Apache-2.0) — instead of the long-since-removed 4B embedder.

Install

Download FyxLocal-0.6.1.dmg, open it, and drag FyxLocal to Applications.

Requires macOS 26 (Apple Silicon). The build bundles the Qwen3-Embedding-0.6B and Qwen3-Reranker-0.6B models for fully on-device RAG, which is the bulk of the download size.

FyxLocal 0.6.0

05 Jun 22:16

Choose a tag to compare

What's new in 0.6.0

A big RAG release: hybrid search + an on-device reranker + clickable citations-grade retrieval, a much smaller download thanks to a new embedding model, plus attachments, per-message actions, and a new OpenAI Chat Completions provider. Existing collections are upgraded automatically.

Retrieval, rebuilt

  • Hybrid search. Document search now combines keyword (BM25/FTS5) and semantic (vector) retrieval, fused with Reciprocal Rank Fusion — so exact terms (an error code, a proper noun, a config key) are found alongside meaning-based matches. Existing collections gain keyword search automatically, with no re-import.
  • On-device reranker. A bundled Qwen3-Reranker-0.6B runs locally to re-order results by relevance after retrieval, sharpening which passages the model actually sees. Toggle it in Settings → Document search (RAG); it runs entirely on your Mac, nothing leaves the device. Falls back gracefully if unavailable.

Smaller, faster embeddings — with automatic migration

  • The on-device embedder is now Qwen3-Embedding-0.6B (8-bit), replacing the 4B model. This cuts the download substantially (the old 4B weights alone were ~2.3 GB) while keeping quality strong for retrieval.
  • Your documents are untouched. On first launch after upgrading, FyxLocal re-indexes your existing collections from their stored text using the new model — shown in a progress sheet. No re-importing, no manual steps; document search is ready when it finishes.

Attachments & a new provider

  • Image + text-file attachments in the composer: drag-and-drop or attach images (for vision-capable models) and text/code files, shown as removable chips before you send.
  • OpenAI Chat Completions provider. A new provider type alongside OpenAI Responses and Anthropic — for endpoints (including many OpenAI-compatible gateways) that speak the Chat Completions API, with image input where the model supports it.

Per-message actions

  • Hover any message (or right-click) for Copy, Edit, Regenerate, and Delete:
    • Copy a reply's text.
    • Edit one of your messages and re-send from that point.
    • Regenerate an assistant reply.
    • Delete a message (freeing any attached image/file blobs).
    • Edits/regenerations/deletes that would discard later turns ask you to confirm first.

Fixes & polish

  • The streaming "Thinking" box is now left-aligned, so reasoning is readable as it streams instead of shifting around.
  • Internal: a regression test pins state.json back-compat so future upgrades can't silently drop your saved data.

Install

Download FyxLocal-0.6.0.dmg, open it, and drag FyxLocal to Applications.

Requires macOS 26 (Apple Silicon). The build bundles the Qwen3-Embedding-0.6B and Qwen3-Reranker-0.6B models for fully on-device RAG, which is the bulk of the download size.

FyxLocal 0.5.2

03 Jun 18:37

Choose a tag to compare

What's new in 0.5.2

F-Chat is now FyxLocal. This release is the rebrand — a new name, identity, and bundle — together with the upgrade machinery to carry existing users across cleanly, plus a few UI refinements.

Rebranding to FyxLocal

  • The app, its bundle identifier (com.fyrbyadditive.fyxlocal), data directory, and all user-facing text are updated to reflect the rebranding
  • Your data comes with you. On first launch after upgrading, FyxLocal automatically migrates your existing F‑Chat data — conversations, settings, RAG index, skills — and copies your saved API keys and OAuth tokens across to the new identity. No re-entry needed.

Permissions you'll be re-asked for

Because macOS ties permissions to an app's identity, the rename means a few have to be granted again:

  • Apple tools turned off after the update. Calendar, Reminders, Contacts and Maps are disabled on upgrade so you consciously re-enable them in Settings → Tools, which re-triggers the macOS permission prompt.
  • Local network access. macOS will ask again for permission to find devices on your local network the next time FyxLocal connects to a locally-hosted model (vLLM, Ollama, LM Studio) or a local MCP server. Click Allow when prompted.
  • A one-time update notice appears on first launch summarising exactly what changed and what you may need to re-enable. Combined updates show all their notices together.

UI refinements

  • Inspector: the Agent picker is folded into the Conversation section to save space.
  • Sidebar: the Collections and Settings labels at the bottom now align correctly.

Under the hood

  • A small, versioned migration framework drives the upgrade steps (data directory, Keychain, tool/permission resets) as separate, testable units, with the on-launch notice generated from them.
  • Test-suite tidy-up: removed trivial placeholder tests and de-flaked the sandbox network-isolation test so the full suite runs reliably.

Install

Download FyxLocal-0.5.2.dmg, open it, and drag FyxLocal to Applications.

Requires macOS 26 (Apple Silicon). The build bundles the Qwen3-Embedding-4B model for on-device RAG, which is the bulk of the download size.

F-Chat 0.5.1

03 Jun 12:08

Choose a tag to compare

What's new in 0.5.1

A maintenance release: a crash fix for stdio MCP servers, broader English/Danish localization, and a single source of truth for all model-facing prompt text.

Fixes

  • stdio MCP launch no longer crashes in certain situations (and now finds npx) — pointing an MCP server at an absolute path like /opt/homebrew/bin/npx previously may have hard-crashed the app with no crash report, and a bare npx was "command not found". Both are fixed: child processes are launched with a usable PATH (so npx can find its node), the command is validated before launch, and a broken pipe to a dead child now surfaces as a clear in-app error instead of silently killing the app via SIGPIPE. The child's own error output (e.g. "node: command not found") is shown in the connection status. (Closes #1)

Localization

  • Danish (da) is now a fully supported language for the model-facing prompts (system prompt, tool descriptions, summarizer/titler), matching the existing Danish UI.
  • Separate UK English (en-GB) alongside US/base English — a Mac set to British English gets British spelling. Other English regions and the default fall back to base English.
  • Localization follows your macOS system language; there's no separate in-app switch.

Under the hood

  • One source of truth for prompt text — all model-facing strings (system prompt, tool/RAG guidance, tool descriptions, temporal text) moved out of scattered hand-written switch statements into a single string catalog. Adding a language is now a column in one file rather than an 18-site edit, and a coverage test guarantees no language is left half-translated.
  • Time zone in the daily context — the date the model is given each turn now names the system time zone (e.g. Europe/London (BST)) so it reports calendar and reminder times in your local zone, while staying stable across re-sends so the server-side prefix cache isn't invalidated.

Install

Download F-Chat-0.5.1.dmg, open it, and drag F-Chat to Applications.

Requires macOS 26 (Apple Silicon). The build bundles the Qwen3-Embedding-4B model for on-device RAG, which is the bulk of the download size.

F-Chat 0.5.0

02 Jun 16:49

Choose a tag to compare

What's new in 0.5.0

This release adds a suite of native local macOS integrations, conversation search, and a security + code-quality pass.

  • Calendar tool: read your macOS Calendar (“what’s on this week?”) and PROPOSE creating, editing, or deleting events. Writes never happen silently — each change is staged and shown for you to confirm in the chat before it commits. EventKit-backed; off by default, with a separate “Allow calendar changes” toggle.
  • Reminders tool: read your Reminders and propose adding, editing, deleting, or completing them — same stage-and-confirm model as Calendar, with an optional alert when you set a due time.
  • Maps tool: search Apple Maps, geocode/reverse-geocode, get directions + ETA, and answer “where am I?” / “near me”, all rendered as an interactive map inline in the chat (pins + route). On-device MapKit + Core Location — no API key. Location is requested only for “near me”.
  • Contacts tool: read-only lookup of your macOS Contacts (“find Alice’s email”). It never changes your contacts.
  • Cross-chat search: a search field in the sidebar filters conversations by title and message text.
  • Tools settings, reorganised: built-in tools are now grouped into collapsible Apple / Web / Utilities sections, with each tool’s write permission nested as a child toggle under its parent.

Privacy & permissions

  • The Apple integrations are opt-in per tool and request the relevant macOS permission only when enabled (Calendar / Reminders full-access, Contacts, Location when-in-use). The required hardened-runtime entitlements and usage-description strings are included so the prompts appear correctly.
  • No destructive action without confirmation: Calendar/Reminders writes are proposed and require an explicit in-chat Confirm; reads and Maps/Contacts are read-only.

Security & quality

  • Skill-import hardening: skill archives are now guarded against zip-slip / path traversal — entries with .. components or absolute paths can’t write outside the skill directory (verified by an end-to-end malicious-archive test). This adds to the existing SSRF, OAuth/redirect, XXE-safe parsing, and resource-bound defenses.
  • Internal de-duplication: shared single sources of truth for token-count formatting, flexible ISO-8601 date parsing, JSON string escaping, and the tool error-output helper — fewer places for a fix to be missed.

F-Chat 0.4.1

31 May 11:31

Choose a tag to compare

What's fixed in 0.4.1

  • Deleting the selected conversation now works: deleting the top (selected) chat in the sidebar did nothing — the confirmation appeared but the chat stayed. The selection change and the row removal were happening in the same SwiftUI update, which coalesced into one diff that re-anchored the selection and dropped the deletion. Selection is now cleared before the row is removed and re-applied as a separate update.
  • Deleting the last provider no longer reappears: removing the final provider and relaunching used to re-create a default one. A persisted empty providers list is now respected; defaults are only seeded on a genuine first run.

F-Chat 0.4.0

31 May 00:51

Choose a tag to compare

What's new in 0.4.0

  • MCP (Model Context Protocol): connect external tool servers over stdio and streamable HTTP, managed in Settings → MCP with lazy connect-on-first-use. HTTP servers support first-class auth — static API token (Bearer / Basic) or full OAuth 2.1 (PKCE + dynamic client registration + RFC 8707 resource binding) via ASWebAuthenticationSession, with tokens in the Keychain and eager + lazy refresh.
  • Agent Skills: import third-party skill packages (or create your own); the model uses them via a sandboxed code-execution runtime (sandbox-exec, deny-by-default, no network, scrubbed environment) with a bundled Python. Enable per-chat in the Inspector or apply to every chat.
  • Anthropic Messages API as a selectable provider type, alongside the OpenAI Responses API.
  • Import conversations exported from ChatGPT and Claude (.zip or .json) via a cherry-pick wizard — reachable from the sidebar toolbar or File ▸ Import Chats from File…
  • Export conversations to Markdown, JSON, Word (.docx), or plain text — single-chat from the context menu, or many at once via the export wizard.
  • Danish localisation: full UI translation (English / Swedish / Danish), enforced by the localisation-coverage test.
  • Settings in the main window: ⌘, and About F-Chat now open Settings in the main window pane instead of a separate window.
  • Drag-to-reorder conversations in the sidebar.

Release readiness

  • Security hardening from two internal reviews: web_fetch SSRF guard (scheme/host allowlist + DNS check), OAuth/MCP endpoint + redirect validation, sanitised tool-error JSON, markdown link-scheme allowlist, resource bounds on untrusted imports (MCP tool lists, chat exports, zip extraction), skill-metadata prompt-injection sanitisation, and XXE-safe document parsing.
  • No more silent state loss: an undecodable state.json is now backed up (not overwritten) and the app starts fresh, so data is recoverable.

Internals

  • Bundle identifier is now com.fyrbyadditive.fchat (OAuth URL type …fchat.oauth; callback scheme fchat:// unchanged). The Keychain service name moves with it, so saved keys/tokens are re-entered once.
  • Message image/attachment bytes moved out of state.json into a content-addressed blob store (smaller state file, lazy load, auto-migration of old inline data).
  • Streaming is resilient to a single malformed event, cancels promptly per-event, and compaction indices are bounds-checked.
  • 411 tests across 79 suites.