Skip to content

feat(windows): support full host deployment - #127

Open
kimjunny wants to merge 23 commits into
AltanS:mainfrom
kimjunny:fix/windows-ctl-runtime
Open

feat(windows): support full host deployment#127
kimjunny wants to merge 23 commits into
AltanS:mainfrom
kimjunny:fix/windows-ctl-runtime

Conversation

@kimjunny

Copy link
Copy Markdown

Summary

  • add Windows-native bridge/config/path handling and declare Windows in the plugin manifest
  • replace duplicated launcher behavior with one TypeScript ctl entry point across Task Scheduler, systemd, and launchd
  • harden start/stop/update/serve/log handling, including pinned update commits, fail-closed version checks, exact process targeting, and supervisor fallback
  • add Windows CI, cross-platform ctl coverage, ADRs, and operator documentation

Prior Windows direction

This intentionally revisits #71, where official Windows support was declined because lifecycle work would have landed twice without a Windows environment to test it. This branch removes that duplication by making scripts/ctl/main.ts the shared lifecycle implementation and adds a Windows CI job. It also overlaps the narrower headless Task Scheduler fix in #121; if this lands, the supported TypeScript backend replaces that contrib-only launcher path.

Verification

  • bun run typecheck
  • bun test ./bridge ./scripts — 776 passed, 0 failed
  • bun test scripts/ctl — 95 passed, 0 failed
  • cd web && bun run typecheck
  • cd web && bun run test — 2,382 passed, 10 todo
  • bun run build — production PWA build, 20 precache entries
  • contrib/windows/collie-ctl.test.ps1 — passed
  • live Windows Task Scheduler start, status, url, and logs
  • live tailnet-only Tailscale Serve HTTPS request — HTTP 200 with CSP and build headers

The POSIX shell lifecycle permission check cannot pass on Git Bash/NTFS because NTFS reports mode 644; the Ubuntu CI job runs bun run test:ctl-posix on a POSIX filesystem.

Security and release notes

  • remains loopback-only behind one managed Tailscale Serve front door; no Funnel
  • preserves exact managed-mapping teardown and narrows Windows force-kill to the absolute bridge entry point
  • keeps the repository at 0.32.0 with no fork-side release/version bump

Post-implementation review passed goal, QA, code-quality, security, and context/history lanes.

kimjunny and others added 23 commits August 23, 2026 15:58
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant