v1.2.9
Axon v1.2.9
Axon v1.2.9 is a security, terminal integrity, and editor performance release.
It hardens the local Core boundary while removing the extra work that made file
loading and editing feel slower after the security pass.
This release includes the six commits after the v1.2.8 tag.
Security Boundary
- Bound axon-core to IPv4 loopback and authenticated HTTP and WebSocket traffic
with a secret generated for each app launch. - Removed the Core bearer token from the renderer. An allow-listed main-process
proxy now owns authenticated Core requests and cancellation. - Added short-lived, single-use terminal tickets bound to the approved working
directory instead of placing the launch token in a WebSocket URL. - Added persistent per-renderer workspace capabilities for filesystem, settings,
terminal, and Core operations. - Canonicalized existing and not-yet-created paths through their nearest real
ancestor, preventing symlink parents from escaping an approved workspace. - Restricted CORS, WebSocket origins, Electron navigation, and local asset
types, and prevented destructive operations against workspace roots.
Terminal Integrity
- Kept terminal sessions alive independently of the visible renderer and added
acknowledged replay cursors for reconnects. - Drained queued WebSocket frames before closing a completed shell so final
command output is not lost. - Preserved PTY bytes returned with EOF and clamped acknowledgements to the
stream bounds owned by Core. - Added high-volume, final-output, reconnect, origin, and accounting regression
coverage for the terminal eating-output failure class.
File and Editing Performance
- Replaced the renderer-to-Core-to-filesystem read/write round trip with direct,
capability-checked main-process text I/O, retaining UTF-8, binary, size, and
workspace validation. - Mounted only the active tab initially and kept an editor warm only after it
has actually been visited. - Limited file watchers and initial language-server synchronization to active
editors instead of every restored tab. - Removed eager startup of every relevant language server and deferred
non-critical extension activation until after the first paint. - Coalesced React content snapshots, LSP full-text synchronization, semantic
decoration refreshes, and Go whole-file syntax scans away from each keystroke. - Split Shiki into a shared tokenizer engine and per-language lazy grammar
chunks, keeping unrelated grammars out of the first edited file.
Editor Workflows
- Rebuilt split-pane dividers as sibling flex controls with an eight-pixel drag
target, pointer capture, exact pixel movement, and a minimum pane width. - Added native Save As and connected Open Recent to the existing folder picker.
- Added a bounded one-pass workspace replace operation in Core with generated,
binary, and oversized-file exclusions plus atomic writes. - Corrected JSON object-key semantic classification so keys use property colors
while quoted values remain strings. - Added the missing Node TypeScript project ownership for
vitest.config.ts,
removing repeated falsenode:pathdiagnostics.
Fonts and Themes
- Bundled Inter Variable for Axon Sans and IBM Plex Sans Variable for Zed Sans,
making both UI choices distinct on every supported platform. - Kept System UI as a separate native option and migrated old fallback-only
family names to their supported replacements. - Deduplicated themes by stable theme ID across bundled, workspace, and user
extension sources. Later sources remain the effective override without
producing repeated Settings options. - Shared the canonical theme list across renderer startup, Settings, Welcome,
derived theme state, and Monaco registration.
Validation
- Added security path-policy, terminal integrity, semantic-token, font, and
extension-theme conflict tests. - Kept TypeScript project checks, ESLint, Go tests, Go vet, line-count guards,
language-server checks, and production builds passing for the release. - The renderer entry remains about 415 KB after minification; UI fonts are
emitted as separate WOFF2 assets and language grammars remain lazy chunks. - Added the root MIT License for GordenArcher and Axon Editor Group and aligned
the root/editor package metadata with that license. - Synchronized all 636 required npm language-server package paths with the
release allow-list after the dependency graph changed, restoring packaged
bundle verification on macOS, Windows, and Linux. - Added a packaging-only language-server verification step to normal CI so the
same closure mismatch fails before the next release tag is created.
Commits Included
1e59c2edocs: add contributor workflow guidec6a25b9docs: update extension api repo link71c0b1bfix: secure core transport and preserve terminal output5da1731perf: secure and accelerate Axon editor workflows33cd96cfix: include Vitest configuration in Node project7372595fix: deduplicate themes and bundle UI fonts
The release still inherits upstream audit advisories from bundled language
servers. Axon's build patches the vulnerable runtime copies that have compatible
fixed versions; Svelte language-server and OpenTelemetry advisories require
upstream or breaking upgrades and remain tracked separately.