Skip to content

0.1.5 - 2026-09-16

Choose a tag to compare

@github-actions github-actions released this 16 Sep 11:55

Release Notes

Added

  • The Tier-1 skill catalog rides the system prompt — every connection begin (the initial spawn AND an in-place engine rebuild) composes a begin-time catalog snapshot into the system prompt (flux-chat/src/skills.rs, new; the skill-format authority stays in flux-tools): the model sees what skills exist without spending a skill_list round-trip. skill_list remains the live rescan, skill_read the progressive-disclosure loader — the catalog is the passive overview, never a gate.
  • skill_read activation dedup is transcript-derived — a SkillActivationIndex re-derives each chat's already-activated skill keys from the history at the two assembly points, hashed on the skill-format authority's normalization (frontmatter-stripped manifest body; raw bytes otherwise): re-reading an activated skill collapses to a dedup note instead of a second full injection, and fork / engine rebuild / restart inherit the dedup for free — no dedicated persistence, no directory watch (an accepted tradeoff, docs/decisions T-13).
  • The flux-server CLI is complete — --version/-V follows the workspace release; every flag gains an FLUX_* environment fallback (--host→FLUX_HOST, --port→FLUX_PORT, --db-path→FLUX_DB_PATH, --preamble→FLUX_PREAMBLE, --no-web→FLUX_NO_WEB, --web-assets-dir→FLUX_WEB_ASSETS_DIR; precedence: CLI flag > env > default); --generate-completions <bash|zsh|fish|powershell|elvish> prints the completion script to stdout and exits before ANY logging or server setup (the stream stays clean for >> ~/.bash_completion); --help wraps to terminal width (wrap_help) and ends in copy-pasteable examples.
  • The saved-model list is session-level — preloaded at session attach (handlers.session_resumed, re-pulled on every reconnect) so the ContextMeter and the cost estimate read it without any dialog ever being opened; the pickers and the Providers panel only READ the store (mutation broadcasts keep it fresh) — the panel is an editor, not the loader.

Changed

  • The web UI component library is unified — components/ui is ONE library: control primitives split into button/fields/badge/spinner behind an index barrel with the Radix wrappers as siblings (the monolithic ui.tsx deleted; imports unchanged); the Settings family extracted from dialogs/ to components/settings/ (SettingsDialog + the Providers/Mcp/Skills panels + ModelSection + the shared building blocks, ex integration-ui.tsx), and dialogs/ keeps the promise-shaped family (registry.tsx, ex impl.tsx, + ConfirmDialog/NewChatDialog/QuestionCard); tests re-pointed.
  • --fx-* text tokens are WCAG-AA calibrated — faint lifts from ~3:1 to 4.5+ on panel/elev (light #6b7772, dark #7d8b87) without merging into muted; light semantics + code voice clear 4.5 on inset; the audit is recorded in tokens.css comments. Alongside: empty-state rhythm (a larger brand wave, tuned spacing, the prompt rows borrowing the sidebar's 2px selection-rail vocabulary — inset shadow, no layout shift) and type/radius discipline (the topbar unread badge on the token scale, FileIcon radius on xs, the provider chip back to the control radius).
  • The models.dev catalog is served through an Arc — cache hits clone the Arc, never the multi-MB catalog map (thousands of models) per hit.
  • Tests are hermetic by construction — the proxy/FLUX_*-stripping ctor guard (a host http_proxy hijacked in-process reqwest clients into 502s — 17 phantom grpc failures — and FLUX_* vars leaked through the env into e2e server children) and the proxy-proof loopback test client moved into a dedicated DEV-DEPENDENCY-ONLY crate, flux-test-support (test_env_guard!; the var list lives once, and the crate docs forbid regular dependencies — the guard mutates process env). Wired into flux-server (main.rs + the separate connect_e2e.rs binary, replacing two copy-pasted ctor modules), flux-provider (lib tests + the separate tests/models.rs binary) and flux-mcp's Streamable HTTP test; scripts/test.sh still scopes no_proxy to loopback for the workspace run.

Fixed

  • Switching between already-open conversations no longer flashes — two compounding causes, both removed. (1) chat_close is a full exit (unsubscribe + release), so every switch back re-claimed, the server re-delivered the FULL history snapshot, and the client tore the pane down and rebuilt it unconditionally — 60× markdown+highlight on the main thread plus a whole-page msgIn replay, landing right after the pane had already faded in. renderHistoryMessages now keeps a per-pane fingerprint of the rendered snapshot (message count + last row id/content-length — the transcript is append-only) and skips the entire rebuild when the incoming snapshot is identical: DOM, scroll position, stick state and any "load earlier" pages survive untouched (a rebuild used to drop the loaded earlier pages on every switch). The DOM-presence gate keeps a wiped stale pane (whose cursor survives in the WeakMap) on the full-render path, and snapshots changed elsewhere while away (another window streamed) miss the fingerprint and re-render exactly as before. (2) switchToChat faded the target pane in from opacity 0 WHILE the outgoing pane faded out, dipping both to ~50% opacity at the transition midpoint — the background bleeding through read as the flash. A populated target now reveals instantly (the outgoing pane dissolves on top of it — a true crossfade); only a blank pane (first open / post-evict, still awaiting its snapshot) keeps the fade-in.

Install flux-server 0.1.5

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/km0e/flux/releases/download/v0.1.5/flux-server-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/km0e/flux/releases/download/v0.1.5/flux-server-installer.ps1 | iex"

Download flux-server 0.1.5

File Platform Checksum
flux-server-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
flux-server-x86_64-apple-darwin.tar.xz Intel macOS checksum
flux-server-x86_64-pc-windows-msvc.zip x64 Windows checksum
flux-server-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
flux-server-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum