Releases: skycubeuk/Canv
Releases · skycubeuk/Canv
0.9.0
Canv 0.9.0
Downloads
| File | Platform |
|---|---|
Canv-0.9.0-arm64.dmg |
macOS (Apple Silicon) |
Canv-0.9.0.dmg |
macOS (Intel) |
Canv-Setup-0.9.0.exe |
Windows (NSIS installer) |
Canv-0.9.0.exe |
Windows (portable) |
Canv-0.9.0.AppImage |
Linux (x86_64) |
canv_0.9.0_amd64.deb |
Linux Debian / Ubuntu (amd64) |
canv-0.9.0.x86_64.rpm |
Linux Fedora / RHEL / openSUSE (x86_64) |
macOS builds are unsigned. On first launch right-click the app and choose Open to bypass Gatekeeper.
Features
- In-document suggestions — AI feedback now lives in your document. Rewrites and review notes no longer stay locked in a side panel; they appear in the text itself:
- Inline diffs for rewrites, with per-hunk accept/reject (✓/✗) and adaptive granularity — word-level for small edits, block-level for near-total rewrites. The diff colours adapt to the active theme.
- Span-anchored annotations — a note with an optional suggested replacement, pinned to the exact run of text it's about, with number badges linking each highlight to its card. Write your own annotations too, via the annotation bar.
- Your document text is never changed until you accept. Pending changes track as you type, and accepting brackets the edit with a history snapshot so it's easy to undo.
- A sticky accept-all / reject-all bar lets you clear a whole document's worth of suggestions at once.
- Annotations persist across sessions in a
.canvsidecar and re-attach to your text when you reopen the file. - The Runs panel stays — triggering an AI action still shows streaming feedback there with its own per-run discuss/refine thread; the document carries the actual diffs and annotations alongside it.
- Chat edits preview inline. When the assistant proposes a change to the open file, it shows as an inline diff in the document instead of an approval card. New chat tools let the assistant list, add, update, and remove annotations.
- A non-AI formatting toolbar. The floating toolbar that appears by a selection now carries a row of plain formatting controls — bold, italic, strikethrough, inline code, headings, bulleted and numbered lists, block quote, code block, and a link inserter — that wrap your selection in the matching markdown. Mod-B / Mod-I / Mod-K shortcuts are bound for bold, italic, and link.
- Read Aloud (ElevenLabs). Hear your writing read back in a natural voice — a fast way to catch awkward phrasing the eye skips over:
- Read a selection from the speaker control on the floating toolbar, with a per-reading voice override; or read a whole document from the command palette (Read aloud: document), the Recordings panel header, or the editor right-click menu (which adapts to whether you have a selection).
- Canv reads the prose, not the markup — headings and links are read as ordinary text and code blocks are skipped. It asks you to confirm before reading anything very large.
- Every reading is saved to a new Recordings panel in the left sidebar (newest first), showing the label, voice, selection-vs-document, age, and length. Play, scrub, and change speed; a now-playing pill in the status bar keeps the audio going while you switch panels, with a footer transport for control from anywhere. Delete a reading from its row.
- Recordings are kept privately in your workspace and stay out of the file tree, served through a dedicated
canv-rec://protocol confined to the recordings directory. A new Read aloud (ElevenLabs) settings section holds your key, default voice, and voice model; the key is stored locally like your other provider keys. A provider-agnosticTtsAdapterseam in the Electron main process keeps the voice service swappable.
Fixes
- Floating selection toolbar — now appears above the selected text with a short show-delay, so it no longer flickers or covers what you're selecting as you drag.
- Review note count now scales to the length of the text instead of a fixed 6–10, so a short selection no longer draws a wall of annotations.
Chores
- Docs — the user guide was regenerated for 0.9.0: a new Listening to your writing page covers Read Aloud end to end, the formatting toolbar and the toolbar's speaker control are documented, and the marketing site gains a Read-aloud feature card and capability section.
- Dependencies updated.
- CI — Node is pinned to 24.15.0 via
.nvmrc, and the Windows test suites were stabilised.
0.8.0
Canv 0.8.0
Downloads
| File | Platform |
|---|---|
Canv-0.8.0-arm64.dmg |
macOS (Apple Silicon) |
Canv-0.8.0.dmg |
macOS (Intel) |
Canv-Setup-0.8.0.exe |
Windows (NSIS installer) |
Canv-0.8.0.exe |
Windows (portable) |
Canv-0.8.0.AppImage |
Linux (x86_64) |
canv_0.8.0_amd64.deb |
Linux Debian / Ubuntu (amd64) |
canv-0.8.0.x86_64.rpm |
Linux Fedora / RHEL / openSUSE (x86_64) |
macOS builds are unsigned. On first launch right-click the app and choose Open to bypass Gatekeeper.
Features
- Extensions — a sandboxed add-on system. Install extensions per workspace to extend the app through six contribution types:
- Panels in the left sidebar or bottom dock, custom file viewers/editors (
fileHandler), language/syntax support, commands, file-tree context-menu items, and status-bar widgets. - A phased, sandboxed runtime exposing a controlled
canv.*API; bottom-dock panels also surface in the pop-out window. - Install from a folder or a packaged file, with an install-consent step that discloses each extension's capabilities (
workspace.write,activeDoc.read,net,ai, …) and the network hosts it may reach. - A two-layer trust gate — workspace trust plus per-extension trust — so opening someone else's workspace never runs code silently. Enable/disable, reload, crash recovery, and uninstall from the Extensions tab.
- Panels in the left sidebar or bottom dock, custom file viewers/editors (
- Theme system overhaul. A proper theme catalogue replaces the old dark/light radio and accent picker:
- New themes — Dracula, Synthwave '84, Solarized Dark / Light, Nord, Tokyo Night, Gruvbox, Dark 2026, and an Alucard light variant — chosen from a single dropdown in Settings → Appearance, plus a Match system option.
- Semantic colour tokens across the whole UI (enforced by a
canv/no-raw-colorlint rule). The window titlebar overlay now syncs to the active theme and persists the last pair, so launch paints in-theme from the first frame.
- @-mention file picker in chat. Type
@in the chat box to fuzzy-find a workspace file and drop a reference to it into your message — full keyboard and click flow, with parity in the popped-out dock. - Generative sites. Ask the assistant to build a small interactive view (timeline, board, chart) as a static site under
.canv/sites/; it's registered in the Sites panel and served back at a local URL. - Services & contributions architecture. A typed
ICanvServicesregistry with aServicesProvider, a contribution loader, andDisposable/DisposableStoreprimitives.App.tsxis split into focused contributions — theme/accent application, idle autosnapshot, app commands, the dock bridge, extension keybindings, and the quota-error toast. - Editor & filesystem hardening. Inline selection tracking in the floating toolbar; per-cursor-move large-string allocations eliminated; debounced word-count with a gated recompute window; autosave widened to 5s. The filesystem layer now preserves EOL/BOM, refuses non-UTF-8 and oversize files behind a single
MAX_OPEN_BYTESlimit, and threads encoding through tool writes. - Settings. A schema-driven settings form, an MCP server configuration UI, model pricing overrides, and a per-agent model picker.
- Removed: remote (SSH) workspaces. Remote-workspace support is gone — the renderer UI, Electron main support, the remote filesystem service, preload branches, and the
ssh2/ssh-configdependencies are all removed, andWorkspaceKindcollapses to a single local kind. For remote files, use a file-sync tool (rsync, sshfs, your sync of choice) with a local Canv workspace on the synced folder.
Fixes
- Sidebar provider/model picker — empty-state now hides unconfigured providers and models, and the placeholder is shortened so it no longer clips.
Chores
- App version is interpolated from
package.jsoninto the welcome chrome (migration modal and empty-state) via Vite'sdefine, so the version on screen always matches the build. - Docs — the user guide was regenerated against 0.7.x/0.8.0: new pages for connecting an AI (including local Ollama) and for extensions plus the trust model; all remote-workspace content removed; appearance/themes and the chat @-mention picker documented.
0.7.1
Canv 0.7.1
Downloads
| File | Platform |
|---|---|
Canv-0.7.1-arm64.dmg |
macOS (Apple Silicon) |
Canv-0.7.1.dmg |
macOS (Intel) |
Canv-Setup-0.7.1.exe |
Windows (NSIS installer) |
Canv-0.7.1.exe |
Windows (portable) |
Canv-0.7.1.AppImage |
Linux (x86_64) |
canv_0.7.1_amd64.deb |
Linux Debian / Ubuntu (amd64) |
canv-0.7.1.x86_64.rpm |
Linux Fedora / RHEL / openSUSE (x86_64) |
macOS builds are unsigned. On first launch right-click the app and choose Open to bypass Gatekeeper.
Features
- Revision Archaeology — a full workspace History system. A new git-backed history store (
canv-history) sits alongside your workspace and captures snapshots without polluting your own repo:- Workspace setup modal on first use, with a per-workspace config.
- Bracketed AI turns — automatic before/after snapshots around each agent run, plus an idle autosnapshot hook that captures quiet moments.
- History tab replaces the old Git tab (gated on Revision Archaeology), with snapshot list, reason badges, and computed deltas.
- Expanded snapshots show the computed delta vs the working tree, with human-readable base labels in the diff tab (not SHAs).
- File History panel — per-file revision walk in the bottom panel, openable from the Files tab's right-click "View history", with pop-out support.
- Restore preview dialog — diff a file or whole snapshot against current, then restore with an automatic
before_rollbacksafety snapshot. - Smart timestamps across the History sidebar and file-history panel — relative dates ("today 14:32", "yesterday", "Mon") with full timestamps on hover.
- Ollama provider — local, zero-cost LLMs. Full first-class adapter alongside the cloud providers:
- Non-streaming and NDJSON streaming via
/api/chat, with mid-stream abort returning partial text. /api/tagsmodel discovery, a Refresh models button in Settings, auto-refresh on startup, and a status line.- Native tool-call extraction on any NDJSON line, configurable base URL plumbed through Settings → runner → adapter.
num_ctxraised to 32 768 so chapter-length context and tool definitions both survive the prompt.- Per-action and pricing tables read from the refreshed model list — no more stale seed models.
- Non-streaming and NDJSON streaming via
- Configured-provider filtering everywhere. The sidebar workspace picker, chat picker, per-action picker, and Settings pricing tables now only list providers you have credentials for. Unconfigured providers no longer leak into pickers as ghost options.
- Windows builds. Release workflow now builds and publishes a Windows NSIS installer and a portable
.exefor every release tag. - Factory reset IPC handler to wipe Electron
userDataon demand. - Settings reshuffle. A new credentials-only Settings section; the sidebar footer owns the default provider / model picker; Chat tool budget moved into the Generation section.
Fixes
- macOS auto-stop and Windows afterPack in the Release workflow — unblocks 0.7.x packaging.
- Boot ordering — profile picker and workspace-setup modal are now gated on a workspace actually being open.
- Middle-click tab close is deferred to
onAuxClick, so it no longer triggers a paste of the X clipboard. - Electron 42 build — stub
cpu-featuresto unblock the rebuild; History tab now uses a clock glyph instead of the git-branch icon. - History polish — suppress conflict popup on restore, hide diff/restore on added rows, cancel stale
FileHistoryfetches, suppress stalesetState, includeworkspace_initingetFileHistory, aligngetSnapshotDeltapolarity withgetCurrentChanges, restore-mutex + schema validation hardening from code review. - CSP — allow
http:inconnect-srcso Ollama base URLs reach the renderer. - Lint — satisfy
react-hooks/exhaustive-depsand the set-state-in-effect rule across new history and picker code. - Site — accurate copy for the inline-diff capability card; render markdown bodies in the custom docs loader; rewrite inter-page
.mdlinks to clean URLs; move the screenshot capture brief out ofpublic/so it isn't served; clean edit URLs via loader-injectededitUrl.
Chores
- Dependency majors: Tailwind 4 (via the official upgrade tool), Electron 42, electron-builder 26, chokidar 5, Zod 4 (with symbol path-segment handling), Vitest 4, jsdom 29,
@types/jsdom28,wait-on9,@types/node25; dropped@types/diffand@types/dompurify(both self-typed now). - Docs — refreshed user guide pages.
- Tests — end-to-end history flow, Ollama streaming tool calls + mid-stream abort + non-streaming tool-call parsing, chat short-circuit on per-active key gap, adapter fixtures widened for Ollama.
- Refactors — drop
shortTime(superseded bysmartTime); match sibling adapters'wireErrorstyle; usegit.readBlobfilepath inreadBlobOidAt.
0.6.1
Canv 0.6.1
Downloads
| File | Platform |
|---|---|
Canv-0.6.1-arm64.dmg |
macOS (Apple Silicon) |
Canv-0.6.1.dmg |
macOS (Intel) |
Canv-0.6.1.AppImage |
Linux (x86_64) |
canv_0.6.1_amd64.deb |
Linux Debian / Ubuntu (amd64) |
canv-0.6.1.x86_64.rpm |
Linux Fedora / RHEL / openSUSE (x86_64) |
macOS builds are unsigned. On first launch right-click the app and choose Open to bypass Gatekeeper.
Features
- Chat-session inspector in the Output tab — open any chat session as a structured run, with a dropdown to switch between Runs and Chats.
file_metadata/markdown_metatool — a new agent-accessible tool that returns rich metadata for files in the workspace:- Frontmatter parsing for
.md/.mdxwith EOF-terminated support. - Word / character / line / paragraph counts that correctly skip fenced and inline code.
- Heading outline with slug anchors.
- First-paragraph excerpt with markdown stripping (snake_case identifiers preserved).
- Opt-in extraction of links, images, code blocks, and todo items.
- Per-file error model and input validation; binary and truncation handling for body parsing.
- Frontmatter parsing for
- Solo Author example profile — a new starter prompt profile aimed at single-author manuscript workflows.
- Concise chat responses by default — chat replies stay short unless the user explicitly asks for more depth.
Fixes
- Editor canvas now seeds from the live buffer, so it survives layout remounts (e.g. when the popout or panel toggles).
- Workspace own-write echo suppression uses file mtime instead of a wall-clock window — no more false-positive "file changed externally" prompts on tool writes.
- Settings: the editor font-size slider is now wired up, and its range is aligned with the chat font slider.
- Output tab: the Runs / Chats toggle collapsed into a single dropdown.
- Prompts:
CORRECTEDandSUGGESTED REWRITEoutputs no longer carry a trailing[Note: …]. - Solo Author profile: Grammar & Spelling no longer split into two separate actions.
Chores
- Drop unused
ErrorCodevariant from the tools layer; clarify tool descriptions; addread_failedcoverage. - Test coverage for the new markdown / file_metadata parser: EOF frontmatter, empty fenced blocks, unclosed fences, live editor buffer path, contract regression.
0.6.0
Canv 0.6.0
Downloads
| File | Platform |
|---|---|
Canv-0.6.0-arm64.dmg |
macOS (Apple Silicon) |
Canv-0.6.0.dmg |
macOS (Intel) |
Canv-0.6.0.AppImage |
Linux (x86_64) |
canv_0.6.0_amd64.deb |
Linux Debian / Ubuntu (amd64) |
canv-0.6.0.x86_64.rpm |
Linux Fedora / RHEL / openSUSE (x86_64) |
macOS builds are unsigned. On first launch right-click the app and choose Open to bypass Gatekeeper.
Features
- Multi-session chat — keep several conversations going, each locked to its own model.
- User-tunable chat font size scales the whole panel.
- Generative views (sites) — ask the AI to build a small interactive view of your work alongside the manuscript.
- Workspace serve mode — serve any workspace folder as a live-reloading website.
- Outline panel lists every heading in the active document; jump-to-heading works in preview mode too.
- Run-on-document button replaces the placeholder Run; full-document actions reach via a chevron menu.
- Run controls — live token / cost meter, smart auto-scroll, slow-mode, and a Stop that produces valid history.
- Recovery affordances on chat — inline retry, edit & retry, and retry-from-here.
- UI redesign — new top bar with sub-toolbar and run-controls menu, restyled sidebar and editor, rewritten chat panel and composer, status-bar polish.
- Theme tokens and accent picker — every colour is a semantic token; pick an accent that suits you.
- Settings cog in the status bar, next to the chat toggle.
Fixes
- Apply no longer prepends a duplicate copy of the rewrite.
- Change Workspace button restored in the file-tree header.
- File-tree state preserved when the outline panel opens.
- Per-action model overrides now honour the chosen provider and survive id collisions.
- Empty-editor focus and runs-panel font consistency.
- Click anywhere in the chat composer's blank area focuses the textarea.
- Provider errors surface so failed chat turns aren't silent.
- Retry buttons styled as actual buttons.
- Top bar polish — Files / Search / Git tabs match the dock-toggle visual; dock toggles mirror sidebar-toggle behaviour; duplicate dock controls deduped; placeholder UTF-8 label removed; workspace shows basename, not full path.
- Editor tab strip — vertical scrollbar hidden so the accent line isn't clipped; redundant sidebar toggle dropped.
- Workspace conflict popup no longer fires on tool-driven writes.
- Linux app icon now shows at runtime and in launcher entries.
- Popout window styled consistently; Run split-button visually unified; toggle semantics and accent triplet pass.
- Outline panel bullets and
[data-theme]selector fixes from the redesign review.
Chores
- Refactor
App.tsxinto 8 hooks + 2 layout components. - Refactor popout to share one bottom-panel implementation with the main window.
- Add missing
chatFontSizeprop toChatPaneltest renders.