Skip to content

Feral v2026.06.29

Choose a tag to compare

@github-actions github-actions released this 29 Jun 16:35

Power-user preview — Windows, macOS (Apple Silicon + Intel), Linux.

Looking for testers and contributors. This is the first public preview
of Feral's self-improvement engine (RSI) and the redesigned Memory view.
Both are early-stage — see "Known issues" below for what to expect.

Highlights

  • Memory Layers — a clean, non-technical view of everything Feral
    remembers about you, grouped by recency (Today / This Week / This Month /
    Older). Live dream-cycle history and a status pill for the self-improvement
    engine live on the same page.
  • RSI — Recursive Self-Improvement (Faza 1). Feral tunes its own
    parameters (temperature, system prompt, tool preferences, context budget)
    while you're away. An evolutionary algorithm evaluates candidate
    configurations against a frozen test suite and ratchets improvements to a
    git branch. Dream cycles run automatically during idle periods.
  • GPU acceleration that's actually reliable. Vulkan on Windows/Linux and
    Metal on macOS, with automatic CPU fallback when the GPU is unavailable.
    CUDA detection on NVIDIA, Vulkan dev-launcher with auto-CPU-offload for
    embedding on AMD, and auto-reload of the last model on startup.
  • Inference deadlines. Time-to-first-token, total, and stall timers with
    heartbeat progress. The streaming indicator now shows the prefill phase and
    live tok/s, so you always know if the model is loading or stuck.
  • Onboarding "Choose your brain". Pick a provider during setup: OpenAI,
    Anthropic, Google Gemini, DeepSeek, Groq, Mistral, OpenRouter, Kimi, GLM,
    MiniMax, or any custom OpenAI-compatible endpoint. BYOK keys are stored
    locally and never proxied.
  • Token economy. Tools are advertised only when needed (on-demand memory
    and skill drawers), so the system prompt doesn't waste tokens on capability
    you'll never invoke. Cloud fallback when no local model is available.

Added

  • Memory Layers page (/memory-layers) with recency grouping, a stats
    hero, an RSI status pill, and a "Feral's Dreams" panel showing recent
    self-improvement episodes with token counts and ratchet progress.
  • RSI engine (Faza 1) — event bus, population manager, eval worker,
    ratchet handler, mutation grammar, selection handler, recalcitrance
    tracker, and GoalMode orchestrator, wired sidecar → Rust → UI.
  • Inference deadline enforcement — TTFT, total, and stall timers with
    heartbeat progress; streaming indicator now shows prefill phase + tok/s.
  • GPU detection improvements — CUDA feature auto-cap on the context
    pool, Vulkan dev launcher with auto-CPU-offload for the embedding model,
    auto-reload of the last model on startup.
  • Onboarding "Choose your brain" step with provider selection (BYOK or
    local model).
  • On-demand tool drawers for memory and skills — tools advertised only
    when needed, reducing prompt token waste.
  • Cloud fallback for inference when local models aren't available.
  • Workspace scanner improvements — detect hardcoded secrets, API keys,
    and code security anti-patterns.
  • Live smoke tests for the dream-cycle pipeline and real-GGUF model
    load (FERAL_SMOKE_GGUF-gated).
  • Boot stability probe — automated observation of startup panics and
    steady-state health.

Fixed

  • lopdf CVE-2026-0187 (severity 7.5 high) — upgraded pdf-extract to
    0.12.0, which pulls lopdf 0.42.0 (fixes stack overflow in deeply nested
    PDF objects). cargo audit is now clean.
  • Memory Layers scrollbar — the scroll area used to extend into the
    titlebar and overlap the window controls; now respects the AppShell
    titlebar spacer.
  • Memory Layers theme — was hardcoded to a dark palette that clashed
    with light mode; now uses the project's theme tokens and adapts to
    light/dark automatically.
  • ControlsPopover visibility on light themebg-white/alpha made it
    invisible; switched to theme tokens.
  • FractalMemory.clusterLeaves — was silently dropped by the
    feat/reactive-pixel-tree merge; restored. Drill-down tests pass again.
  • Prune-emission contractrebuild() no longer emits prune events
    (eviction is a separate path); test aligned to match.
  • workspace-roots.test.ts — fixed hardcoded ; path separator that
    only worked on Windows; now uses delimiter from node:path.

Changed

  • Memory Layers visualization simplified. Three iterations of a
    painterly tree didn't match the hand-painted references, so we replaced
    the whole renderer with a clean tiered list view that surfaces what users
    actually care about: what Feral remembers, when, and how much it's
    improving. Net −1,184 lines.

Known issues

  • RSI evals can return empty content on cloud-hosted endpoints. Tracked
    as emptyResponses in dream.jsonl; the engine scores these as 0 and
    moves on, so RSI itself is not blocked. Local GGUF models (Qwen, Llama
    instruct) are unaffected.
  • RSI improves configuration, not weights. Visible gains accumulate
    over many dream cycles, not overnight. The eval suite is intentionally
    basic (fact lookups, simple math, JSON format checks) — it will be
    expanded in a future release.
  • macOS is not Apple-notarized yet. First launch on macOS requires
    xattr -cr /Applications/Feral.app from Terminal to clear the
    quarantine flag. We'll fix this once we have a Developer ID.
  • Windows ships .exe (NSIS) only in this release. The .msi target
    is paused because WiX 3 rejects any product version whose major component
    exceeds 255, and our CalVer year (2026) trips that limit. We'll restore
    the .msi alongside a WiX 4 upgrade or a custom ProductVersion fragment.

Internal

For contributors and reviewers:

  • dream.jsonl telemetry now records errors (capped at 5 per cycle)
    and emptyResponses counts. Previously both were silently lost.
  • Bridge error loggingscoreGenome, fetchTier0, and invokeAgent
    adapters log bridge failures to stderr with method, outcome count, and
    genome ID. Previously swallowed.
  • GoalMode error propagation — failed-eval error messages are collected
    in GoalResult.errors and carried through the sidecar → dream-cycle →
    telemetry chain.
  • RSI candidate branch formatgenome/<id> was rejected by Rust's
    git validator (single-segment name required); now genome-<id> (dash).
  • Sidecar rebuild — bundles the new engine modules and all fixes.
    Tests: 1255/1255 pass.