Commit Graph

7 Commits

Author SHA1 Message Date
root 1945ff96be release.yml: pin Inno Setup to 6.4.3 for innoextract 1.11 compatibility
Previous attempt with 6.7.1 failed at the innoextract step:
  Warning: Unexpected setup loader revision: 2
  Warning: Setup loader checksum mismatch!
  Could not determine setup data version!
  Done with 1 error and 2 warnings.

innoextract 1.11 (Debian trixie's latest) only supports Inno Setup
through 6.4.x. 6.5+ requires innoextract 1.12 which hasn't shipped
yet. 6.4.3 is the last release in the 6.4 line — newer than 6.4.0
(more bugfixes), still innoextract-1.11-compatible.

Verified URL https://github.com/jrsoftware/issrc/releases/download/is-6_4_3/innosetup-6.4.3.exe
returns HTTP 200.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 02:34:38 +03:00
root 4e19d8eeb1 release.yml: install Inno Setup via innoextract (no Wine GUI install)
Previous attempt (rc1, rc2) tried to run innosetup-6.7.1.exe under
xvfb-run wine /VERYSILENT — silently failed (|| true masked it),
ISCC.exe never appeared at C:\InnoSetup\ISCC.exe.

Switch strategy: apt-get install innoextract (Debian package), use
it to unpack the Inno Setup installer's payload directly to disk,
then copy the extracted Inno Setup tree into the Wine prefix where
ISCC.exe can be invoked normally. Wine is still needed to run ISCC
itself, but no longer for the install step.

Also: ignore /.claude/ directory (local Claude Code session settings).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 01:44:05 +03:00
root d3de6bdde8 release.yml: fix Inno Setup download URL (jrsoftware GitHub releases)
The pinned URL https://files.jrsoftware.org/is/6/innosetup-6.4.0.exe
returns 404 — jrsoftware no longer redistributes versioned files there.
Switch to GitHub releases (jrsoftware/issrc), pinned to the latest
stable Inno Setup 6.7.1 (2026-02-17). Verified the URL resolves with
HTTP 200 from the runner network.

Caught by Task #8 (E2E smoke test): tag v0.1.0-rc1 / run #4 / task 717
failed at "Install Wine + Inno Setup" with "curl: (22) ... 404".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 01:05:00 +03:00
root ca90facbdd Add .forgejo/workflows/release.yml: tag v* publishes Forgejo release
Triggered on `push` of any `v*` tag. Single `release` job on the `go`
runner produces and uploads four assets to the matching Forgejo release:

  - drover-vX.Y.Z-windows-amd64.exe  (cross-compiled portable binary)
  - drover-vX.Y.Z-windows-amd64.zip  (portable bundle + WinDivert + docs)
  - drover-vX.Y.Z-setup.exe          (Inno Setup installer via Wine)
  - SHA256SUMS.txt                   (sha256 of the three above)

The asset names match what internal/updater/updater.go looks for, so
selfupdate keeps working on tagged releases.

Notes mirroring build.yml constraints:
  - manual git clone instead of actions/checkout (no Node in golang
    image; JS-based actions fail with `node: not found`)
  - apt-get installs wine/wine32:i386/xvfb/zip/jq in-job
  - Inno Setup 6.4.0 pinned, /VERYSILENT /CURRENTUSER install under Wine
  - prerelease auto-detected from a hyphen in the version (rc/beta/alpha)
  - curl uses -fsS so 409 (release exists) and other API errors fail loud
  - secrets.GITHUB_TOKEN handles both clone and Forgejo REST API writes

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:58:40 +03:00
root 956356ff2b build.yml: drop Node.js-dependent actions (cache, upload-artifact)
The runner image (golang:*) ships without Node.js, and actions/cache@v4
plus actions/upload-artifact@v4 transitively need it for hashFiles +
artifact upload. Verified by CI failure on first push (run #1, task 710):
"OCI runtime exec failed ... 'node': executable file not found in $PATH".

For now we accept ~20-30s of go module download per run (small project,
fine). Real release artifacts go via release.yml (next task) which will
use curl + Forgejo REST API to upload — pure bash, no Node needed.

Drop the smoke-build artifact upload too — it was only for inspection
during dev. Add `./bin/drover --version` to the linux smoke build so we
get exit-code verification that the CLI bootstraps correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:29:09 +03:00
root 96b6192bb0 Add .forgejo/workflows/build.yml: vet, test, cross-compile to windows/amd64
Two jobs: 'test' runs go vet + go test -race + a Linux smoke build to
catch generic compile errors cheaply. 'build-windows' cross-compiles
drover.exe with version metadata baked in and uploads it as an artifact
with 14-day retention. CGO is disabled - divert-go integration in a
later phase will switch it on with mingw.

Manual git clone (no actions/checkout/setup-go) because the runner's
golang:1.23-bookworm image lacks Node.js. Both jobs cache GOMODCACHE
and GOCACHE keyed by go.sum hash. Concurrency cancel-in-progress keeps
the queue tidy when commits land in quick succession.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:26:46 +03:00
root 0acbc83e40 Add directory skeleton and CLI entry point with Cobra
- Create internal/{app,config,engine,divert,socks5,bypass,checker,service,tray,procscan,updater} with placeholder doc.go per package.
- Add .gitkeep stubs for internal/frontend, third_party/{windivert,icons}, installer/, .forgejo/workflows/, docs/.
- Implement cmd/drover/main.go: Cobra root with Version/Commit/BuildDate ldflags, --config global flag, and stub subcommands (check, update --check-only, service install/uninstall/start/stop).
- Add github.com/spf13/cobra v1.10.2 dependency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:10:30 +03:00