Axon v1.2.7
Axon v1.2.7
Axon v1.2.7 is the biggest release so far. It is less about one flashy button
and more about turning Axon into a real IDE platform: extension activation,
built-in contribution routing, terminal reliability, project-aware testing,
Problems as an editor surface, richer syntax coloring, faster workspace startup,
and a documented architecture for the editor's hardest systems.
This release includes 38 commits after a63637e.
Extension Host and Built-in Migration
- Added built-in extension activation so Axon can activate first-party features
through the same path future installable extensions will use. - Added an executable command runtime for extension-owned commands.
- Added extension lifecycle state, activation storage, contribution registry
wiring, and diagnostics around slow or failed activation. - Routed built-in workbench surfaces through contribution metadata instead of
continuing to mount every feature directly from the old renderer structure. - Moved more implementation ownership under
extensions/builtin, including
agent, terminal, Git/source control, search, settings, testing, problems,
language tools, tasks, Spotify, Markdown preview, HTML preview, and media
preview. - Added
extensions/builtin/README.mdto explain how built-in manifests,
language packages, workbench UI, and shared helpers should be organized. - Added built-in language manifests for more supported languages and tools:
Astro, Bash, CSS, Docker, GraphQL, HTML, JSON, MDX, Prisma, Svelte, Tailwind,
Vue, YAML, and the existing LSP-backed languages.
Architecture Migration
- Continued the migration into production IDE boundaries: app shell, workbench,
platform services, renderer services, built-in extensions, backend services,
and shared packages. - Moved terminal protocol/session helpers into
apps/editor/src/platformso UI
and transport are not owned by the same React component. - Moved agent workbench code under the built-in Agent extension and kept shared
agent logic in extension-ownedlibfolders. - Added built-in contribution routing helpers so Search, Settings, Git,
Terminal, Agent, Testing, Problems, Tasks, Spotify, and preview surfaces can
be resolved through declared contributions. - Documented the current architecture and migration direction in
architecture.md.
Terminal Reliability
- Reworked terminal IO so the backend does not treat websocket delivery as the
same thing as visible xterm output. - Added renderer-side acknowledgement timing after xterm writes complete, which
protects replay cursors during long-running output. - Hardened reconnect/replay behavior so long agent streams are less likely to
drop or consume output while the renderer is busy. - Added terminal session health data for received bytes, acknowledged bytes,
pending bytes, queued bytes, queue peaks, drained chunks, reconnect count, and
websocket close codes. - Reduced noisy terminal logging after startup and workspace-open fixes.
- Kept terminal UI under the built-in Terminal workbench while shared protocol
behavior lives in platform and PTY/session ownership stays inservices/core.
Problems and Testing
- Moved Problems into an editor tab opened from the status bar, instead of a
detached modal-like surface. - Kept the Problems UI as a strong diagnostics view with presentation helpers,
filtering, copy actions, and navigation back to source ranges. - Added diagnostic cache ownership and project-aware diagnostics export for
agent workflows. - Upgraded the Testing workbench with provider discovery, target listing,
details, output, and status bar access. - Made test discovery project-aware so generated folders, caches, dependency
folders, and irrelevant build output do not appear as useful test targets. - Kept test execution routed through project roots and provider commands instead
of assuming Axon's own repository layout.
LSP, Startup, and Workspace Performance
- Warmed active language-server paths earlier so hover, completion, diagnostics,
and semantic tokens can become ready closer to the moment a workspace opens. - Preserved React-aware Monaco language ids for TSX/JSX while still sending the
correct language identity into LSP requests. - Fixed React runtime resolution so valid React files do not report missing
react/jsx-runtime. - Improved package/export completion and external definition behavior as part of
the LSP cleanup work. - Unblocked workspace open services so the file tree can appear quickly without
waiting on every secondary service. - Added clearer diagnostics for LSP startup, spawn/init phases, semantic-token
legends, and service boundaries.
Rich Syntax Coloring
- Added Axon's richer syntax-coloring pipeline: Monaco tokens, TextMate/Shiki
grammar scopes, LSP semantic tokens, Axon semantic decorations, and targeted
language fallbacks. - Added the token inspector so real rendered tokens can be debugged from inside
the editor. It reports Monaco token class, rendered class/color, active theme,
active syntax count, semantic token data, expected colors, decoration class,
TextMate readiness, and grammar/CSP errors. - Fixed the renderer Content-Security-Policy so the inlined Oniguruma
WebAssembly engine can load and TextMate grammar tokenization can actually
run inside Electron. - Added a retry path for empty semantic-decoration passes during editor startup.
- Mapped Monaco bracket pair colors back to active theme bracket colors so
bracket highlighting no longer paints over the theme with unrelated bright
colors. - Expanded TextMate grammar coverage across built-in languages.
- Added Python fallbacks for imports, aliases, class-like identifiers,
constructors,self,cls, and member access. - Added shared member-access fallbacks for languages such as Go so chains like
h.applicationService.GetByID(c.Request.Context())can distinguish values,
properties, and function calls. - Added capture aliases for imported theme syntax keys such as
diff.plusand
diff.minus. - Documented the whole token-coloring architecture in
docs/TOKEN_COLORING_ARCHITECTURE.md, including the Monaco semantic
highlighting issue that has been open since 2020 and why Axon owns the final
decoration paint layer.
Markdown and Preview Surfaces
- Improved Markdown hash-link navigation so table-of-contents links scroll
within the preview pane instead of moving the Electron document. - Improved Markdown blockquote rendering so quoted preview text stays inside the
blockquote instead of looking like a separate section. - Added richer Markdown media handling for images, videos, sources, and local
preview asset resolution. - Fixed standalone Markdown preview tabs so they subscribe to the live dirty
Monaco model once it exists. A preview opened beside an editor now updates
live when the source Markdown tab changes. - Kept disk reads as preview fallbacks without letting stale disk snapshots
overwrite dirty editor content.
Source Control and Git
- Improved Source Control and Git workbench boundaries under the built-in Git
extension. - Fixed stale Git watcher refreshes so file state and source-control views do
not keep using old workspace information. - Improved media previews inside Git/source-control surfaces so binary media
files can be previewed instead of only shown as generic binary content. - Fixed the Source Control close-button behavior so the pane-level close action
closes the active file/graph preview rather than the whole modal. - Continued commit graph and Git history editor refinements behind the Git
contribution boundary.
Modals and UI
- Restored modal sizing and layout after the modal performance pass caused
Settings, Source Control, and Extensions to shrink or feel visually wrong. - Kept modal overlays lightweight so they still feel like modals without
reintroducing expensive blur or full opaque black screens. - Fixed extension modal scroll and sizing behavior so small result sets do not
collapse the modal. - Kept sidebar context menus and tab popups theme-aware.
- Added the app menu button/chrome pass for platform menu access and
traffic-light-safe UI placement.
Build, Release, and Diagnostics
- Added build diagnostics helpers so package/core build failures show clearer
phase-specific causes. - Fixed Windows package-build execution by using the current npm exec path,
avoidingnpm.cmdspawn failures. - Improved package build wiring for the workspace packages used by the extension
host. - Added extension activation logs, terminal health diagnostics, startup phase
reporting, and renderer diagnostics for hard-to-reproduce startup failures.
Commits Included
f6f3333fix: run package builds through npm execpathc47d7a1feat: wire built-in extension activation7c02f43fix: protect terminal streams from renderer lagb57fffarefactor: split terminal session manager06730dfrefactor: move agent workbench into builtin extensionb7629bdrefactor: split agent and terminal workbench boundaries770c23drefactor: move built-in workbench features into extensions8450a62feat: add extension runtime diagnostics and lsp service boundary29486d1refactor: route built-in workbench surfaces through contributions6439362refactor: move terminal io into platform service layer94febc3fix: restore dev startup and quiet workspace open7c2ae85feat: add executable extension command runtimeae92d6cfeat: mount extension view contributions in workbenchb3e2e4efix: restore modal layout and git media previewsd554b4cfeat: upgrade test explorer workbench242e477feat: harden testing workbench and react editor languages61ac921feat: route built-ins through workbench contributions7e923a3fix: improve markdown preview anchors and quotes261df54fix: prevent stale git watcher refreshesa909ea7refactor: move preview and git workbench boundaries6460abfrefactor: finish built-in workbench migrationeab7258docs: document built-in extension registrycd2ac2cfeat: add extension host lifecycle runtimeaee9041feat: strengthen problems and test panelsb38af8ffeat: move problems into editor tabs14f4a60fix: stabilize terminal output replayfb89623fix: declare editor react runtimede25e57perf: unblock workspace open services531a935fix: warm lsp and improve react token colors7f23eedfeat: add capture based token inspection0140173feat: wire semantic syntax highlightingbed3a1dfix: keep terminal output painting during agent streams2a7505bfix: harden terminal repaint diagnostics4aa358dfix: enrich semantic syntax coloring7edc732fix: paint textmate syntax before lsp overlayd9849e6fix: apply rich syntax theme pipelinef5d4dc1fix: harden rich syntax coloring pipelinefba2ff5docs: expand token coloring architecture notesd3274a7fix: keep markdown preview tabs live