Skip to content

Commit 4030266

Browse files
RoyLinRoyLin
authored andcommitted
chore(release): prepare 0.10.12
1 parent 2f8d0ff commit 4030266

5 files changed

Lines changed: 53 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ concurrency:
1515
cancel-in-progress: false
1616
env:
1717
# Immutable commit in A3S-Lab/a3s containing the Web workspace sources.
18-
A3S_WEB_SOURCE_REF: dadabffcadc86b643da8622607823f6d32583e06
18+
A3S_WEB_SOURCE_REF: f5db7e68b5e91d21b5c0fbe003aae92b3d4efb75
1919
# Exact companion prerequisite; preflight rejects an absent or incomplete release.
2020
A3S_WEBVIEW_VERSION: 0.1.5
2121
A3S_CODE_CORE_VERSION: 6.5.1

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.10.12] - 2026-07-28
11+
12+
### Added
13+
14+
- Added a persistent, resizable A3S Work live-preview panel for static sites,
15+
loopback development servers, text, images, PDFs, and supported Office files.
16+
Static sites reload after debounced workspace changes and provide responsive
17+
device, zoom, refresh, pause, and external-window controls.
18+
- Added `/preview <path|localhost-url>`, `/preview status`, and `/preview stop`
19+
to the Code TUI. The workspace IDE also opens the selected item with `p`, and
20+
`:preview` saves a dirty editor buffer before opening it.
21+
22+
### Security
23+
24+
- Confined file previews to canonical active-workspace paths, blocked traversal,
25+
hidden and sensitive files, escaping symbolic links, and oversized assets,
26+
and limited URL previews to HTTP(S) loopback hosts. Static HTML runs in an
27+
opaque-origin CSP sandbox, and preview descriptors and content now expire at
28+
their declared deadline.
29+
- Kept native preview-window ownership separate from the shared Web process.
30+
Preview replacement, stop, and TUI exit close only the exact tracked window,
31+
and the window receives no A3S OS access or refresh token.
32+
1033
### Fixed
1134

1235
- Kept structured generation compatible with Kimi thinking-only models by

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "a3s"
3-
version = "0.10.11"
3+
version = "0.10.12"
44
edition = "2021"
55
description = "a3s — A3S coding agent CLI; `a3s code` launches the interactive TUI"
66
license = "MIT"

README.md

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,28 @@ never terminated. Port binding and asset validation happen before
564564
configuration-heavy session restoration, so conflicts and broken installations
565565
fail quickly without unrelated restore warnings.
566566

567+
Open a workspace artifact or local development server from inside the TUI:
568+
569+
```text
570+
/preview site/index.html
571+
/preview docs/Product brief.pdf
572+
/preview localhost:5173
573+
/preview status
574+
/preview stop
575+
```
576+
577+
`/preview` reuses a compatible managed Web instance for the current workspace
578+
or starts one on an ephemeral loopback port. It opens Work's persistent preview
579+
panel in a native `a3s-webview` window when available and uses the system browser
580+
as a fallback. Replacing a preview, `/preview stop`, and TUI exit close only the
581+
exact native preview window; the shared Web service remains running. A browser
582+
fallback is user-owned and cannot be closed safely by the TUI.
583+
584+
Inside `/ide`, press `p` on the selected workspace item. In an open editor, run
585+
`:preview`; a dirty buffer is saved through the normal workspace path before
586+
the preview opens. Static sites reload after debounced workspace changes, while
587+
loopback URLs retain their development server's own navigation and HMR.
588+
567589
Web tasks, visible messages, titles, goals, effort, model selection, and
568590
execution mode are saved under `~/.a3s/code-web` and restored before the API
569591
starts accepting requests. Set `A3S_CODE_WEB_STATE_DIR` to isolate that store.
@@ -872,6 +894,7 @@ input prefixes:
872894
/tasks
873895
/permissions
874896
/ide
897+
/preview site/index.html
875898
/login
876899
/agent
877900
/mcp
@@ -893,7 +916,7 @@ input prefixes:
893916
| Coding loop | Chat with the coding agent, stream semantic tool cards, choose Default, Plan, or Auto execution, inspect and control pending follow-ups with `/queue`, and inspect or safely cancel delegated work with `/tasks` or `Ctrl+B`. Run direct shell turns with `!`, run a durable Ultracode `/goal`, and fork, rewind, or clear sessions when needed. `/relay` pins the current session, searches a bounded 64-row catalog per source, preserves semantic selection across refreshes, shows saved state, model, age, unfinished runs, and live background-agent counts, or hands the latest task from a workspace-scoped external transcript to the active session. |
894917
| Permission review | Gated calls enter a FIFO approval queue backed by the authoritative tool name and arguments. The overlay can allow once, grant that exact capability for the current session, atomically add the reviewed capability to `.a3s/permissions.acl`, or collect denial feedback for the agent. `/permissions` searches session and project grants, opens their canonical arguments, and revokes only after a second matching action. Project rules are bounded, parsed and generated with `a3s-acl`, reject symbolic-link targets, and remain narrower than hard workspace guardrails. Revocation affects future checks, not tools already running. |
895918
| Execution modes | Default runs bounded workspace file changes directly. A shared Rust guardrail silently admits a narrow, proven read-only host Bash subset; unproven commands, protected metadata, mutating Git operations, and annotated external side effects enter HITL, while critical commands fail closed. Plan exposes only read-only discovery tools and denies Bash. Auto never enters HITL: it admits only Rust-proven read-only Bash and denies other host commands, protected metadata, and mutating Git operations. A queued turn retains the mode captured when it was submitted. |
896-
| Workspace UI | `/ide` opens a superfile-style tree and editor with terminal-stable file marks, `/config` edits the active config in the same editor, `Ctrl+T` opens the complete semantic transcript, and file edits render bounded diffs through the shared `DiffView` component. Diff headers use green `+N` and red `-N` counts; Markdown uses Codex-spaced section headings, responsive tables, syntax highlighting, and terminal hyperlinks. |
919+
| Workspace UI | `/ide` opens a superfile-style tree and editor with terminal-stable file marks, `p` previews the selected item, and `:preview` saves and previews the open buffer. `/preview <path\|localhost-url>` opens the same persistent Work surface from the transcript. `/config` edits the active config in the shared editor, `Ctrl+T` opens the complete semantic transcript, and file edits render bounded diffs through the shared `DiffView` component. |
897920
| Models and effort | `/model` switches configured providers, OS gateway models, and signed-in account tabs. Codex account discovery delegates refresh and entitlement checks to the installed Codex CLI, so an expired identity token does not hide models while reusable account access remains. WorkBuddy `hy3` tagged calls are converted into native tool events without exposing protocol markup in streamed messages. `/effort` scales thinking budget, tool-round budget, auto-continuation, and model-agnostic rigor guidance from `low` through `max` and `ultracode`. A3S Code 5.2.4 structured calls use native JSON Schema or forced-tool output only when the active client advertises that capability; unknown custom OpenAI-compatible endpoints retain the bounded prompt fallback instead of receiving an assumed `tool_choice`. |
898921
| Dynamic workflows | `ultracode` and `?` DeepResearch can use `DynamicWorkflowRuntime`, a local A3S Flow-backed workflow runner. It records workflow/step history while PTC scripts perform ordinary tool work. This is separate from `/flow`, which is OS Workflow as a Service for persisted workflow assets. |
899922
| Local and remote parallelism | Local subagent fan-out uses the host-side `parallel_task` tool. QuickJS/PTC scripts do not call `parallel_task` directly; dynamic workflows schedule a Flow step named `parallel_task`, and the host executes it natively. After `/login`, the signed-in `runtime` tool is available to workflow steps and model turns for OS Runtime batch execution. |
@@ -1038,6 +1061,7 @@ permissions, tools, panels, and follow-up evidence are needed.
10381061
| --- | --- | --- |
10391062
| Repository orientation | Start with `/init`, ask for a map of the codebase, attach files with `@`, and open `/ide` when you need to browse or edit directly. | `/init`, `/ide`, `@<path>`, `/ctx`, `/help` |
10401063
| Focused coding | Ask for a change, review streamed reads/searches/diffs, approve gated writes, and let the agent run focused checks before summarizing what changed. | Tool cards, approval overlay, `DiffView`, `Ctrl+T`, `! <command>` |
1064+
| Artifact inspection | Keep a static site, local development server, document, image, PDF, or source file visible in Work while coding continues; use the IDE shortcuts when already browsing or editing. | `/preview <target>`, `/preview status`, `/preview stop`, IDE `p`, editor `:preview` |
10411065
| Debugging and verification | Let the model inspect logs, grep call sites, run shell or test commands, and keep the exact tool evidence visible in the semantic transcript. | `grep`, `read`, `bash`, `git`, `Ctrl+T`, `a3s top` |
10421066
| Context carry-over | Search previous sessions, attach relevant transcript windows, save durable facts, and compact when the context meter gets high. | `/ctx <query>`, `/ctx <n>`, `/ctx save <n>`, `/memory`, `/sleep`, `/compact` |
10431067
| Deep work | Raise `/effort`, use `ultracode` for complex turns, and let the host decide whether planning, goal tracking, dynamic workflow execution, or parallel fan-out is justified. | `/effort`, `/goal`, `dynamic_workflow`, `task`, `parallel_task` |
@@ -1127,7 +1151,7 @@ cells adding or doubling their own outer padding.
11271151
| System agent island | Enabled by default. `/island on`, `/island off`, and `/island status` persist or inspect the user preference, and the expanded island also offers `Turn off`. A fresh exact non-idle A3S lifecycle or recognized coding-agent process requests one native per-user window at the physical screen's top center; the shared lock prevents multiple `a3s code` TUIs from rendering duplicate islands. On notched Macs, native safe-area geometry makes the surface meet the physical top edge while its compact content occupies the two unobstructed side wings. A dedicated handle moves the window; periodic centering stops after a successful drag, and expand/collapse preserves the moved surface's top-center. Live `All`, `Needs you`, `Running`, and `Recent` filters preserve parent context and show direct-child progress. Every row shows state and elapsed time with an original vendor-colored robot; terminal durations freeze. Exact approval rows display a bounded reason, expose larger `Allow` / `Always` / `Deny` controls, and offer a direct reply composer; live parent rows can also accept replies or expose `Stop`, while running children may expose `Cancel`. Recognized Codex and other process-only rows are labeled `detected / process`, count as running evidence, trigger and keep the island visible, and never receive controls. Any exact planning/working row or recognized process enables the diffuse multicolor neon breathing border. The standalone Tao/Wry helper embeds offline HTML/CSS/JavaScript and does not use the GUI crate, React, or Next.js. Standard Wayland compositors may constrain exact global placement. |
11281152
| Tool calls | Live tool status appears inline while running. Inline `program` calls summarize structured intent, research scope, workflow phase, and completed nested-call results instead of repeating JavaScript wrapper source. |
11291153
| Semantic transcript | `Ctrl+T` opens the complete live session transcript in a dedicated full-width viewport, preserving user-surface, tool-state, and diff colors while showing reasoning, plans, every tool lifecycle and full output, subagent state, and the current live Markdown tail. |
1130-
| Workspace editor | `/ide` opens a full-screen file browser/editor. `/config` reuses the editor for the active ACL config. Both surfaces use terminal-safe, type-aware file and folder sigils, semantic icon colors, aligned disclosure rows, icon-bearing breadcrumbs, and a ruled line-number gutter while keeping edits inside the workspace backend and normal permission path. |
1154+
| Workspace editor | `/ide` opens a full-screen file browser/editor. Press `p` on a workspace-tree item to open Live Preview, or use `:preview` in the editor to save a dirty buffer and preview it. `/config` reuses the editor for the active ACL config. These surfaces keep edits and preview targets inside the workspace backend and normal permission path. |
11311155
| Memory and knowledge | `/memory` opens the durable memory graph. `/ctx` searches past sessions and can attach or save hits. `/kb` opens the local personal knowledge vault. `/okf` manages shareable knowledge packages. |
11321156
| Asset panels | `/agent`, `/mcp`, `/skill`, and `/okf` keep an active local asset visible while you iterate. `/flow` selects or drafts workflow DAG assets for OS Workflow as a Service rather than entering a persistent local dev mode. |
11331157
| Operations panels | `/model`, `/effort`, `/history`, `/tasks`, `/permissions`, `/loop`, `/plugin`, `/theme`, `/help`, `/terminal`, and asset `activity` commands open focused panels or diagnostics without losing the current conversation. |
@@ -1143,7 +1167,6 @@ Key interactions:
11431167
| `Up` / `Down` | Recall input history or move through menus/panels. |
11441168
| `PgUp` / `PgDn` | Scroll the transcript or the active full-screen panel. |
11451169
| `Shift+End` | Jump to the latest transcript output. |
1146-
| `Ctrl+R` | Fuzzy-search prompts from the current session without replacing the current draft until a result is accepted. Press it again to cycle matches. |
11471170
| `Ctrl+T` | Open the complete live semantic session transcript, including full tool output and the current streaming tail. |
11481171
| `Ctrl+R` | Fuzzy-search current-session prompts; repeated Ctrl+R cycles matches. |
11491172
| `Ctrl+B` | Open or close delegated-task control without interrupting the parent turn. |
@@ -1650,6 +1673,7 @@ These commands are available outside the asset-specific flows:
16501673
| `/theme` | Cycle syntax highlighting themes. |
16511674
| `/login` / `/logout` | Sign in or out of the configured OS account; login registers OS capabilities and the `runtime` tool. |
16521675
| `/ide` | Open the workspace file browser and editor. |
1676+
| `/preview <path\|localhost-url>` | Open the target in Work's persistent Live Preview. `/preview status` reports the tracked window and `/preview stop` closes only the owned native window, leaving the shared Web service running. |
16531677
| `/memory` | Browse durable memory as an event/entity graph with tiers, aliases, relations, conflicts, and forget candidates. |
16541678
| `/evolution` | Review LLM-authored reusable preferences, Skills, and OKF candidates; inspect evidence, activation state, audit history, and immutable versions; save, reject, reconsider, restore a version, or return to the unmaterialized baseline. Mature conflict-free candidates may save locally automatically, but are never published. |
16551679
| `/ctx <query>` | Search past ctx-indexed sessions. |

0 commit comments

Comments
 (0)