Skip to content

Marginalia v0.3.3

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Jul 10:51

Highlights

  • Multimodal chat input: paste or drag images into the chat composer to ask
    about your library together with a picture. Images ride the current turn
    only (never re-sent in history, so token cost stays flat) and render in the
    transcript. MARGINALIA_CHAT_VISION (auto|on|off, default auto) probes the
    chat model once per model and, for a text-only model, routes images through
    the vision profile as an injected description — automating the manual
    "describe the image first" workaround. Per-turn caps via
    MARGINALIA_CHAT_IMAGE_MAX_COUNT / MARGINALIA_CHAT_IMAGE_MAX_BYTES. Pasted
    images are persisted per turn and re-displayed as thumbnails when a session's
    transcript is reloaded (UI only — still never re-sent to the model).

  • POST /v1/settings/llm/test probes each configured LLM profile with a tiny
    chat call (bounded by a timeout) so a mistyped key/base-URL/model is caught
    at config time; a "Test connection" button surfaces per-profile status. A
    settings PUT that first makes required profiles valid now auto-reprocesses
    ingests that failed before a key existed.

  • OCR_MAX_PAGES (default 300) caps scanned-PDF OCR and records an
    ocr_page_cap partial-coverage reason when it trips.

  • Transient provider failures (rate limits, 5xx/529 overload, timeouts) are
    retried with bounded exponential backoff honoring Retry-After, so a brief
    overload no longer discards a whole agent turn's accumulated tool work.

  • CPU-bound document parsing (PDF/DOCX/PPTX/spreadsheet) runs off the event
    loop, keeping the API responsive and worker heartbeats alive during large
    ingests.

  • GUI search tokenizes multi-word queries and ranks results instead of
    matching one contiguous phrase; the per-hit related-entries walk is limited
    to the top hits so latency no longer scales with match count.

  • Release artifacts (Docker image, desktop sidecar) install from the locked
    requirements exported from uv.lock, so shipped versions match what CI
    tested; CI gained a uv.lock drift gate and a Docker build check.

  • Selective WebDAV publish no longer leaks the full folder/tag taxonomy or any
    sessions/conversations/journals — only the taxonomy and relations reachable
    from the selected entries ride along.

  • Agent per-call token budgets are sized for reasoning models (plan 2048,
    execute 4096, vision-describe 4096), which spend most of their output budget
    on hidden reasoning before any visible text — the old smaller caps were
    consumed by reasoning and truncated the plan/answer/image description to
    empty ("can't read the image" even when the model and image were fine).

  • The LLM test-connection probe treats a rate-limit (429) as reachable and no
    longer retry-storms it into a false timeout when several profiles share one
    provider account.

Artifacts

Desktop bundles built from v0.3.3.
Desktop targets: Windows x64/arm64, macOS x64/arm64, Linux x64/arm64.
Linux targets include .deb, .rpm, and AppImage assets built on Ubuntu 22.04 runners.
Each bundle ships a self-contained Python runtime; no system Python required.
Docker image: ghcr.io/shenmintao/marginalia:v0.3.3 (linux/amd64, linux/arm64)

First-Launch Notes For Unsigned Binaries

  • Windows: SmartScreen may say "Windows protected your PC". Click "More info" and then "Run anyway".
  • macOS: Gatekeeper may refuse to open the .dmg. Run xattr -dr com.apple.quarantine /Applications/Marginalia.app after dragging it across.