Manang / Changelog

Changelog

Every release and update, newest first.

Unreleased

Unreleased — active development for beta

Added

  • Plugin marketplace (client): Plugins > Browse lists the plugin registry with search, tag filters and sort (name, newest, downloads). Clicking a plugin opens a plugin page as a tab in the editor area (like an extension page): header with icon, name, publisher, version and the actions Install, Update, Disable/Enable and Uninstall; tabs Details (readme, rendered safely), Features (commands, settings, agent tools, formats, editors, toolbars), Permissions (plain language, with what each line means), Changelog and Versions (history, withdrawn versions, Install this version); a facts column with repository link, licence, size, last updated, id, type and minimum Manang. The Plugins sidebar is now a compact list with Installed and Browse tabs; an updates badge sits on the Plugins icon and "N updates available" with Update all on Installed, each update with its own consent (and a New mark when the permissions grew). Nothing installs without the consent window.
  • manang-registry (new crate, web-capable): fetches index.json and index.json.sig, verifies the ed25519 signature over the exact bytes against embedded public keys (registry-keys, placeholder until the key is set), validates the index (schema 1, size and count limits; schema 2 gets a clear "update Manang" message), caches the last verified copy with its ETag (served offline with its date; a 304 costs nothing), and downloads archives with size and SHA-256 checks. The HTTP part is behind a Transport trait; the default native feature uses ureq on rustls/ring. MANANG_REGISTRY_URL (build time, https only) and the plugins.registry-url setting choose the registry; plugins.browse and a policy gate switch it off.
  • Registry install and update checks: plugins.browse, plugins.detail, plugins.install-from-registry, plugins.check-updates, plugins.registry-status, plugins.cancel-install, plugins.configure, and plugins.install-progress / plugins.updates events. The archive's own manifest must ask for exactly the permissions the signed index listed or nothing is installed; the source (registry, id, version) is recorded in plugins.toml. Updates are looked for when the view opens and at most once a day, never installed. See ADR 0016 and docs/user/plugins.md.
  • Optional built-in LaTeX engine (consented download): with no TeX installed, the preview, Problems, Output and Settings > LaTeX offer "Download the built-in engine (about 14 MB)". A consent window names the server, size, SHA-256, install folder and the package server; progress has Cancel; the download resumes after a drop, is checked against a size and SHA-256 embedded in the app (engines/manifest.json), is started once to prove it runs, and is installed atomically. Backend auto uses system TeX first, then the installed engine, and the compile report says which ran. New commands latex.engine-status, latex.engine-install, latex.engine-cancel, latex.engine-remove, the latex.engine-progress event, the latex.fetch-packages setting, a release-engine CI workflow and docs/ops/engine-release.md. The engine stays a separate process, never linked into the app.
  • Send feedback and Report a problem: Help > Send feedback opens a dialog with a message field and a diagnostics report (versions, plugins, the end of the log, home folders and key-like strings removed) that the person reads and copies; nothing is sent by Manang. About now shows the real version, commit, channel and system, and what is new from this changelog.
  • Self-healing fixes: the new manang-heal plugin offers deterministic one-click fixes for small compile errors (a missing \usepackage, TikZ library, \end{document}, unbalanced braces; Typst @preview imports, keyword slips and unclosed delimiters; Markdown unclosed fences and table rows). A Fix button on Problems rows, an editor quick fix (Ctrl+.), Fix all as one undoable edit, an Undo notice that also reports a fix that did not help, and heal.enabled / heal.auto-apply settings. See docs/user/fixing-errors.md.
  • Visual editor (Markdown and Typst): an opt-in Source | Visual switch (Ctrl+Alt+V, View > Visual editor; Ctrl+Shift+V was already taken by Cycle preview) shows headings, bold, italic, code, strike, links, lists, quotes, rules, front matter, formulas and images formatted over the real text, with the markers shown while the caret touches them and a formatting toolbar (bold, italic, code, strike, heading level, lists, quote, link, image or figure, formula, rule) whose every button is one undoable edit. Typst #set/#show/#let/#import stay as styled source. Copy gives the plain source. Works in live sessions. The new editor.visual-default setting lists the file types that open in Visual (empty by default). The extension is its own chunk, loaded on first use. See docs/user/visual-editor.md and ADR 0015.
  • Visual editor foundation (Rust side): manang-visual (adapter traits, a frozen binary span-table wire format, stateful session host with incremental updates, UTF-16 offsets, wasm32-capable), Markdown and Typst format adapters with toolbar edit plans (bold, italic, code, strike, heading, list, quote, link, image, figure, math, rule), the first-party visual plugin (visual.open/edit/blocks/outline/command-state/run-command plus toolbar commands; span tables cross IPC as raw bytes), and the format-adapters, editors and toolbars manifest contribution points with kernel registries and plugins.contributions. Keystroke p99 on a 1 MB document is 0.4 ms (Markdown) and 4.2 ms (Typst). See ADR 0015 and docs/plugins.md.
  • Vector Figure Studio: In-house typed SVG scene graph (v2) supporting freehand ink (perfect-freehand), geometric shapes (Rect, Ellipse, Diamond, Line), bound arrows with auto-snapping to shape anchors, container frames, selection scaling, and deterministic headless SVG export.
  • Mathematical Formulas in Figures: Dedicated Typst and LaTeX formula nodes in the Figure Studio with docked properties and custom color palette.
  • Text Diagram Support: Integrated compilers for Mermaid (.mmd), Pikchr, and ASCII art (svgbob) generating standalone SVGs; automatic diagram rendering in Markdown code fences.
  • Multi-Document Text Editor: CodeMirror 6 editor powered by manang-buffer (ropey::Rope) with coordinate mapping, line indexing, and bounded transaction undo/redo history.
  • Multi-Engine Compilation & Live Preview: Incremental compilation and live streaming SVG preview for Typst, LaTeX (via system TeX or optional worker), and Markdown.
  • Bidirectional SyncTeX Navigation: Double-click or Ctrl-click (Cmd-click on macOS) in the preview jumps directly to the matching source line; Ctrl+Alt+J (Cmd+Alt+J) jumps forward from editor to preview.
  • PDF Preview Viewer: Native PDF viewer with text layer selection and copy (Ctrl+C), find bar (Ctrl+F) with match counter, zoom presets and continuous wheel zoom, page box navigation, dark pages mode, and outline navigation.
  • Version History & Snapshots: "Save a version" (Ctrl+Alt+S), commit history timeline, split and unified diffs, author identity setup, and dirty/clean file restoration.
  • Recoverable Home Trash: Safe project deletion via project.trash, project.restore, project.purge (remove from list or move to OS trash), and project.empty-trash alongside a dedicated Trash section in the Home sidebar.
  • Starter Templates Library: 11 built-in templates across Typst, LaTeX, and Markdown with template.toml manifests and offline compilation verification.
  • Welcome Onboarding Template: Interactive onboarding starter project (templates/welcome/) featuring main.typ, modular chapter includes, bibliography, hand-crafted SVG illustration, Mermaid flowchart, and companion Markdown notes.
  • Plugin Manager & Plugins View: Plugin lifecycle management (Ctrl+Shift+X) supporting installation from local directory or .manangplugin zip archive, capability consent auditing, enable/disable toggling, and uninstallation to trash.
  • Search & Replace Panel: Multi-mode search featuring fuzzy file name search (search.files), regex and literal text content search with glob filters, line highlighting, and atomic replace preview/apply.
  • Source Control Panel: Git integration supporting staged/unstaged file groupings, unified/split diffs, commit with amend, branch switching, and remote repository sync.
  • References & Citations Panel: Automated indexing of BibTeX and CSL-JSON bibliographies, ranked search, APA and numeric/IEEE citation formatting, cursor insertion, and online verification against Crossref, OpenAlex, and arXiv.
  • Application Menu Bar: Standard desktop menu bar (File, Edit, View, Go, Build, Help) with Alt+letter mnemonics, F10 keyboard focusing, responsive narrow-window folding, and customizable keybindings in Settings.
  • AI Agent Foundations: manang-agent-core orchestration types, policy gates, OS keychain credential storage (manang-keystore), Anthropic and OpenAI-compatible streaming clients (DeepSeek preset), and Rig adapter evaluation.
  • Agent v2 (minimal, calm assistant): one constant system prompt (snapshot-tested, cache-stable) and eight tools with plain-text results capped at about 6,000 tokens (list_files, read_file, search, outline, diagnostics, bib_search, edit_text, ask_user) plus verify_citation from the citations plugin; figure tools only inside the figure studio. edit_text takes exact search/replace pairs that the host locates and validates (unique match with a closest-line hint, balanced braces and environments, citation keys that exist), a pending-proposal overlay so later reads and edits see earlier proposals, and diagnostics with with_pending that compiles a Typst scratch copy (typst.check, the preview is untouched). Slash commands (/rewrite, /shorten, /translate, /explain, /fix, /cite, plus .manang/commands/*.md), a once-per-chat project header, MANANG.md project instructions, per-message selection and @ mentions, stage 1 (clear old tool results at 60%) and stage 2 (summarise at 85%) context compaction in manang-agent-core, DeepSeek reasoning_effort fixed per chat, and a nineteen-task golden eval suite (scripted in CI, live with MANANG_EVAL_LIVE=1).
  • Realistic Offline Test Corpus: 12 offline test projects under testdata/corpus/ covering Typst, LaTeX, and Markdown with an automated compiler test harness enforcing < 5.0 s compile SLA.
  • User Documentation: 10-page non-developer user guide under docs/user/ and complete menus reference.
  • Beta Documentation & Issue Forms: Tester guide (docs/beta/tester-guide.md), living known issues list (docs/beta/known-issues.md), release notes template (docs/beta/release-notes-template.md), and GitHub issue forms (bug_report.yml, feature_request.yml, beta_feedback.yml).
  • Contributing Guide & Architecture Map: Comprehensive CONTRIBUTING.md with build instructions, port conventions, quality gates, and an exhaustive map of all crates and frontend directories.

Changed

  • Agent panel is calmer: one composer (Enter sends, / commands, @ mentions) with one quiet context line instead of a chip tray; consecutive tool calls fold into one row; reasoning is a single "Thinking" line; a proposal is one row ("Edit to main.typ, 2 changes") while the diff lives in the editor; the usage footer, chips, cards and preview button moved into one header menu. Events are consolidated to agent.text, agent.tool, agent.approval, agent.proposal, agent.usage, agent.error and agent.done.
  • Agent settings: agent.max-context-tokens became agent.context-window (default 100,000); added agent.reasoning-effort and agent.use-agents-md; agent.include-thinking is now a developer flag. The round cap per message is 12.
  • Minimum Supported Rust Version (MSRV): Elevated workspace MSRV to Rust 1.95 (edition = "2024").
  • Cargo Profiles: Optimized dependency compilation in dev profile (opt-level = 3 for external crates, opt-level = 1 for local crates) to maintain realistic preview performance.
  • Light Theme Contrast Calibration: Calibrated light theme accent token to color-mix(in srgb, #c6f135 35%, #1c1c1c) (#586725), achieving $\ge 5.02:1$ contrast ratio meeting WCAG 2.1 AA requirements.
  • Project Deletion Behavior: Converted immediate irreversible project removal into a recoverable two-step trash workflow.

Removed

  • Agent v1 prompts and tools: the per-feature system prompts and Feature modes, per-feature tool filtering, the seven context chip kinds, pinned notes, the <manang_context> envelope, the doc_read, doc_outline, doc_diagnostics, doc_propose_edit and project_search tools, and offset-based edit proposals.

Fixed

  • Linux Wayland + NVIDIA Stutter: Automatically set WEBKIT_DISABLE_DMABUF_RENDERER=1 at startup to eliminate WebKitGTK DMABUF rendering glitches under NVIDIA Wayland sessions.
  • SVG Float Jitter: Replaced floating-point output drift with stable 1-decimal coordinate formatting (format_coord) in headless figure export.
  • Project Scaffolding Escaping: Added escaping for special characters in project titles to prevent markup parse failures during scaffolding in Typst and LaTeX.