Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Listen to the SwiftASB Codex apps promo clip:

### Status

SwiftASB is actively maintained and supported by Gale. Our current API is v1, and `v1.7.2` is being prepared as the next release.
SwiftASB is actively maintained and supported by Gale. Our current API is v1, and `v1.7.2` is the current published release.

### What This Project Is

Expand Down Expand Up @@ -137,7 +137,7 @@ Agent-facing maintainer guidance lives in [AGENTS.md](./AGENTS.md).

## Release Notes

`ROADMAP.md` tracks milestone status and release-facing work. `docs/releases/v1.7.2.md` contains the current patch release note draft. Git tags and GitHub releases are the source of truth for published versions.
`ROADMAP.md` tracks milestone status and release-facing work. `docs/releases/v1.7.2.md` contains the current patch release notes. Git tags and GitHub releases are the source of truth for published versions.

## License

Expand Down
13 changes: 10 additions & 3 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
| Non-UI local history-reading helpers | `Partially shipped` | `CodexThread` now exposes a lightweight `HistoryWindow` page shape for recent local history, older or newer local windows around a known boundary turn id, centered `windowAroundTurn(...)` reads, centered `windowAroundItem(...)` reads, direct `ClosedTurn` reads for one turn, and convenience array helpers over those same windows. This gives non-UI callers an intentional path into the local history store without binding a UI-oriented observable, while still deferring a broader public cursor model, transcript search surface, and richer history-query helpers. |
| Public API curation | `Shipped / ongoing` | The source-organization pass has split app-wide model, MCP, thread-management, history, and observable companion values into focused public files while preserving `CodexAppServer`, `CodexThread`, and `CodexTurnHandle` as the three real owners. The connected public-surface review closed the v1 ownership model; post-v1 curation now includes app-server-owned project identity and thread source facts for launcher UI without exposing generated wire models. Future curation should stay tied to concrete public API additions. |
| DocC documentation | `Shipped / ongoing` | `Sources/SwiftASB/SwiftASB.docc/` contains a package landing page, public-handle extension pages, conceptual articles for app-wide capabilities, interactive lifecycle, thread management, history/observable companions, generated-wire boundary notes, and copy-pasteable walkthroughs for startup, progress/approval handling, diagnostics/history, and SwiftUI observable companions. The catalog is validated through Xcode `docbuild`; future work is ordinary stale-link, prose, and symbol-comment refinement as the public API grows. |
| Swift Package Index readiness | `Shipped` | `.spi.yml` declares `SwiftASB` as the documentation target, and Swift Package Index lists `gaelic-ghost/SwiftASB` with a documentation link, compatibility/build results, Package ID `9B5839D9-9551-473F-A939-841534A3FC55`, and a 2026-05-06 update timestamp for the latest confirmed indexed release. Recheck SPI after the `v1.7.2` tag is published. |
| Swift Package Index readiness | `Shipped` | `.spi.yml` declares `SwiftASB` as the documentation target, and Swift Package Index lists `gaelic-ghost/SwiftASB` with a documentation link, compatibility/build results, and Package ID `9B5839D9-9551-473F-A939-841534A3FC55`. |
| Contributor documentation split | `Shipped` | `README.md` is now focused on Swift and SwiftUI package users, while `CONTRIBUTING.md` owns contributor setup, validation, DocC, live-test flags, generated-wire refresh, and PR expectations. |
| `CodexTurnHandle` live observable companion | `Partially shipped` | `CodexTurnHandle` owns a live `Minimap` companion that is attached when the handle is created and maintains current-state call snapshots for command, file-edit, dynamic-tool, collab-tool, and MCP item activity. It also now mirrors whether thread context compaction is active for the turn and supports explicit `complete()` handoff into a caller-owned sealed turn snapshot. |
| Additional turn event mapping | `Partially shipped` | The public event layer covers the current interactive lifecycle plus the item-start and item-complete events needed for observable call-state mirrors. Raw command-output and file-change-output deltas now stay internal as transport detail but drive the shipped `RecentCommands` and `RecentFiles` companions, and streamed or patch-updated payloads are preserved when later completed snapshots are thinner. Richer MCP-progress detail still remains internal, while warning, guardian-warning, config-warning, deprecation, MCP-server-status, remote-control-status, model-reroute, and model-verification notifications now surface through hand-owned diagnostic events. |
Expand All @@ -93,7 +93,7 @@
| AgentSB maintainer automation | `Report-first maintainer app` | `Tools/AgentSB/` is a repo-local Python maintainer app that inspects SwiftASB deterministically, writes tracked reports under `docs/agents/reports/`, evaluates safety-boundary cases, diffs schema dumps, writes reviewable maintenance drafts, and prototypes local Codex thread-index inspection for future SwiftASB planning. The v1 boundary stays report-first: safe auto-apply is classifier-gated and limited to AgentSB-owned report artifacts, and it must not mutate Swift source, generated wire snapshots, public API, releases, or behavior-changing docs. |
| Agent workflow guidance | `Shipped / ongoing` | SwiftASB-specific Codex guidance now ships through `socket`'s [`swiftasb-skills`](https://github.com/gaelic-ghost/socket/tree/main/plugins/swiftasb-skills) plugin, with skills for explaining SwiftASB, choosing an integration shape, building SwiftUI-facing app state, and diagnosing integration failures. This repo now points package users and maintainers at that plugin while keeping SwiftASB source, DocC, tests, generated-wire review, and release notes here as the package source of truth. |
| End-to-end subprocess integration tests | `Shipped / ongoing` | The package includes opt-in live Codex CLI integration tests with temp workspaces and time limits, including raw transport startup, single-turn completion, cross-thread completion, app-wide model/MCP/hook diagnostics snapshots, thread-name mutation, stored-history materialization, same-thread concurrency probing, deterministic command and permissions approvals through a mock Responses provider, a best-effort prompt-driven approval-path probe, a disposable live rollback scenario, and a multi-turn file-mutation scenario that creates, edits, and deletes files through the real CLI. The umbrella runner is `scripts/run-live-codex-integration-tests.sh`; it defaults to the release-gate set and exposes focused modes for smoke, transport, capability, thread, turn, approval, file-scenario, rollback, same-thread, and all opt-in live tests. Stored-history materialization remains in focused `thread`/`all` runs instead of the release-gate smoke group because the live app-server can delay history materialization. |
| PolyForm Noncommercial licensing | `Release-prepped` | Future public versions now use the PolyForm Noncommercial License 1.0.0 with a separate commercial-use policy. The historical Apache License 2.0 text is preserved for versions published before the license change. |
| PolyForm Noncommercial licensing | `Shipped` | Future public versions now use the PolyForm Noncommercial License 1.0.0 with a separate commercial-use policy. The historical Apache License 2.0 text is preserved for versions published before the license change. |

## Milestone Progress

Expand Down Expand Up @@ -299,7 +299,11 @@ Noncommercial licensing while preserving historical terms for earlier versions.
model are deliberately designed.
- [x] Move future public versions to the PolyForm Noncommercial License 1.0.0,
preserve historical Apache License 2.0 text, and add a commercial-use policy.
- [ ] Run the final release workflow for `v1.7.2`.
- [x] Run the final release workflow for `v1.7.2`.
Decision: `v1.7.2` is tagged and published on GitHub. The release shipped the
ASBPresentation foundation, first ASBAppKit thread sidebar view, Codex CLI
`0.138.x` generated-wire refresh, and PolyForm Noncommercial license
transition.

### Shipped in v1.7.1

Expand Down Expand Up @@ -1630,6 +1634,9 @@ Completed

## History

- 2026-06-09: Published `v1.7.2` with the ASBPresentation foundation, first
ASBAppKit thread sidebar view, Codex CLI `0.138.x` generated-wire refresh,
and PolyForm Noncommercial license transition.
- 2026-06-09: Prepared the `v1.7.2` release branch with the ASBPresentation
foundation, first ASBAppKit thread sidebar view, Codex CLI `0.138.x`
generated-wire refresh, and PolyForm Noncommercial license transition.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,14 +328,15 @@ extension CodexAppServerTests {

let recordedMethods = await transport.recordedMethods
#expect(
recordedMethods == [
Array(recordedMethods.prefix(5)) == [
"initialize",
"initialized",
"thread/start",
"thread/turns/list",
"thread/turns/list",
]
)
#expect(recordedMethods.filter { $0 == "thread/turns/list" }.count >= 2)

recentTurns = nil
await settleObservableTeardown()
Expand Down
1 change: 1 addition & 0 deletions Tests/SwiftASBTests/Public/CodexAppServerTestSupport.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ func waitForObservableState(
return
}
await Task.yield()
try? await Task.sleep(for: .milliseconds(1))
}
}

Expand Down
Loading