Skip to content

v1.2.9

Choose a tag to compare

@github-actions github-actions released this 10 Jul 16:14
· 80 commits to main since this release

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 false node:path diagnostics.

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

  • 1e59c2e docs: add contributor workflow guide
  • c6a25b9 docs: update extension api repo link
  • 71c0b1b fix: secure core transport and preserve terminal output
  • 5da1731 perf: secure and accelerate Axon editor workflows
  • 33cd96c fix: include Vitest configuration in Node project
  • 7372595 fix: 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.