feat(aterm): drop the Windows build and its Scoop packaging (#1264) #1271

Merged
coilyco-ops merged 1 commit from aos/claude/mu55-drop-windows into main 2026-08-26 07:05:03 +00:00
Member

Closes #1264. Tier 1 of the #1245 dispatch, and the decision Kai recorded on 2026-08-25: Windows aterm goes away rather than growing a second terminal dialect.

The issue's own words for why this was not neutral: a Windows host installed aterm from Scoop, --terminal-bin defaulted to kitty, which is not installable there, and pointing it at Alacritty did not work because the plan is built in kitty's flag dialect. There was no configuration a Windows operator could reach that produced a window.

Where the target list lives

New aterm/release-targets.txt, darwin/arm64 and both linux arches. That is the lowest layer that determines it, and it keeps the rule in one place instead of a if [ "$goos" = windows ] branch in each of three scripts.

  • scripts/aos-release-build.sh - build_aterm returns early for a target absent from that list
  • scripts/render-aos-packaging.sh - drops the checksum, the ["aterm-windows-amd64.exe", "aterm"] bin mapping, and the PowerShell fetch
  • scripts/check-aos-release.sh - release_families no longer carries aterm; the expected count is targets x families + aterm_targets

Two new guards

The whole point is that the artifact stops shipping, so the gate refuses its return:

if [ -e "$dist/aterm-windows-amd64.exe" ]; then ... fi
if grep -F 'aterm-windows-amd64.exe' "$dist/aos.json" >/dev/null 2>&1; then ... fi

tests/test_aos_cli_release.py asserts aterm's list is a subset of the shared one with no windows/ entry, that no Scoop bin entry maps to aterm, and that pre_install does not mention it.

Verified end to end, not just by unit test

Full round trip at aos-v9.9.9:

just aos-release-build     23 checksums = 4 targets x 5 families + 3 aterm
                           no aterm-windows-amd64.exe produced
just aos-release-package   aos.json has no aterm bin entry, no aterm fetch
just aos-release-check     verified aos, aoscompose, aosward, aosguard, and aterm release aos-v9.9.9

The count math is the part that would have gone red at promote rather than on the PR, which is exactly the failure the existing comment in that script records, so it was worth running for real.

platform_windows.go

Removed. The issue left it as the implementer's call. Nothing builds that target, and the surviving //go:build !windows on platform_unix.go makes the exclusion explicit instead of leaving a Setsid-less stub that implies a supported platform.

alacritty/alacritty.toml stays. It is still the Windows terminal baseline for everything that is not aterm, and docs/warp-host-setup.md now says that rather than implying aterm is one of its consumers.

Docs

  • docs/install.md - aterm is Mac and Linux only, stated plainly
  • docs/FEATURES.md - the entry gains its platform boundary, which is the material public-surface change the issue asked for
  • docs/aos-cli.md, docs/warp-host-setup.md - point at the new target list and drop the stale Alacritty-for-aterm framing

Downstream

#1257 and #1259 are now unambiguously unix-only. Doctor reports one terminal, contract tests walk one dialect.

Verification

  • uv run pytest 724 passed
  • just aterm-test, pre-commit run --all-files clean
  • the release round trip above
Closes #1264. Tier 1 of the #1245 dispatch, and the decision Kai recorded on 2026-08-25: Windows aterm goes away rather than growing a second terminal dialect. The issue's own words for why this was not neutral: a Windows host installed `aterm` from Scoop, `--terminal-bin` defaulted to `kitty`, which is not installable there, and pointing it at Alacritty did not work because the plan is built in kitty's flag dialect. There was no configuration a Windows operator could reach that produced a window. ## Where the target list lives New `aterm/release-targets.txt`, darwin/arm64 and both linux arches. That is the lowest layer that determines it, and it keeps the rule in one place instead of a `if [ "$goos" = windows ]` branch in each of three scripts. * `scripts/aos-release-build.sh` - `build_aterm` returns early for a target absent from that list * `scripts/render-aos-packaging.sh` - drops the checksum, the `["aterm-windows-amd64.exe", "aterm"]` bin mapping, and the PowerShell fetch * `scripts/check-aos-release.sh` - `release_families` no longer carries aterm; the expected count is `targets x families + aterm_targets` ## Two new guards The whole point is that the artifact stops shipping, so the gate refuses its return: ```sh if [ -e "$dist/aterm-windows-amd64.exe" ]; then ... fi if grep -F 'aterm-windows-amd64.exe' "$dist/aos.json" >/dev/null 2>&1; then ... fi ``` `tests/test_aos_cli_release.py` asserts aterm's list is a subset of the shared one with no `windows/` entry, that no Scoop bin entry maps to aterm, and that `pre_install` does not mention it. ## Verified end to end, not just by unit test Full round trip at `aos-v9.9.9`: ``` just aos-release-build 23 checksums = 4 targets x 5 families + 3 aterm no aterm-windows-amd64.exe produced just aos-release-package aos.json has no aterm bin entry, no aterm fetch just aos-release-check verified aos, aoscompose, aosward, aosguard, and aterm release aos-v9.9.9 ``` The count math is the part that would have gone red at promote rather than on the PR, which is exactly the failure the existing comment in that script records, so it was worth running for real. ## `platform_windows.go` Removed. The issue left it as the implementer's call. Nothing builds that target, and the surviving `//go:build !windows` on `platform_unix.go` makes the exclusion explicit instead of leaving a Setsid-less stub that implies a supported platform. `alacritty/alacritty.toml` stays. It is still the Windows terminal baseline for everything that is not aterm, and `docs/warp-host-setup.md` now says that rather than implying aterm is one of its consumers. ## Docs * `docs/install.md` - aterm is Mac and Linux only, stated plainly * `docs/FEATURES.md` - the entry gains its platform boundary, which is the material public-surface change the issue asked for * `docs/aos-cli.md`, `docs/warp-host-setup.md` - point at the new target list and drop the stale Alacritty-for-aterm framing ## Downstream #1257 and #1259 are now unambiguously unix-only. Doctor reports one terminal, contract tests walk one dialect. ## Verification * `uv run pytest` 724 passed * `just aterm-test`, `pre-commit run --all-files` clean * the release round trip above
feat(aterm): drop the Windows build and its Scoop packaging (#1264)
All checks were successful
ci / aos-eval-tests (pull_request) Successful in 7s
ci / ward-doctor (pull_request) Successful in 7s
ci / aos-cli-tests (pull_request) Successful in 27s
ci / gate (pull_request) Successful in 51s
55ccfddc33
Kai decided kitty on 2026-08-25, and the adapter stays cut. Until now the
release still published aterm-windows-amd64.exe into the Scoop manifest while
--terminal-bin spoke only kitty's dialect, so a Windows host installed a
launcher that could not open a window under any configuration.

aterm gets its own release-targets.txt with no Windows entry, which is the
lowest layer that determines it. build_aterm skips a target absent from that
list, render-aos-packaging drops the checksum, the Scoop bin mapping, and the
PowerShell fetch, and check-aos-release counts aterm from its own list rather
than multiplying it with the rest. Two new guards refuse a Windows aterm binary
and a Scoop manifest that still installs one, so this cannot come back quietly.

platform_windows.go is removed. Nothing builds that target, and the remaining
//go:build !windows makes the exclusion explicit rather than silent.

alacritty/alacritty.toml stays, still the Windows terminal baseline for
everything that is not aterm.

Closes #1264

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: platform
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os!1271
No description provided.