30 Commits

Author SHA1 Message Date
574fca633a fix: sync build artifacts to GitHub instead of empty source archives
All checks were successful
Build App / build-macos (push) Successful in 2m22s
Build App / build-windows (push) Successful in 3m21s
Build App / build-linux (push) Successful in 4m37s
Build App / sync-to-github (push) Successful in 11s
Move GitHub release sync into build-app.yml as a final sync-to-github
job that runs after all 3 platform builds complete. This eliminates the
race condition where sync-release.yml triggered before artifacts were
uploaded to Gitea. The old sync-release.yml is changed to manual-only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:57:27 -08:00
d642cc64de fix: use browser_download_url for Gitea asset downloads
The API endpoint /releases/assets/{id} returns JSON metadata, not the
binary file. Use the browser_download_url from the asset object instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:09:41 -08:00
4f41f0d98b feat: add Gitea actions to sync releases to GitHub
Add two new workflows:
- sync-release.yml: automatically mirrors releases (with assets) to GitHub when published on Gitea
- backfill-releases.yml: manual workflow to bulk-sync all existing Gitea releases to GitHub

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:06:29 -08:00
c9dc232fc4 fix: remove Node.js from actual path location on Act runner
Some checks failed
Build App / build-windows (push) Successful in 3m40s
Build App / build-linux (push) Successful in 7m4s
Build App / build-macos (push) Failing after 11m34s
The Act runner has Node 18 at /opt/acttoolcache/node/18.20.3/x64/bin/,
not at /usr/local/bin/. Use $(dirname "$(which node)") to find and
remove the actual binary location before installing Node 22.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 18:08:46 -08:00
2d4fce935f fix: remove old Node.js before installing v22 on Linux runner
Some checks failed
Build App / build-linux (push) Failing after 2m34s
Build App / build-windows (push) Successful in 3m40s
Build App / build-macos (push) Has been cancelled
The Act runner has Node 18 at /usr/local/bin/node which takes
precedence over the apt-installed /usr/bin/node. Even after
running nodesource setup and apt-get install, the old Node 18
binary remained in the PATH. Now removes old binaries and uses
hash -r to force path re-lookup. Also removes package-lock.json
before npm install to ensure correct platform-specific bindings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 18:03:31 -08:00
e739f6aaff fix: check Node.js version, not just presence, in CI
Some checks failed
Build App / build-macos (push) Successful in 2m23s
Build App / build-linux (push) Failing after 3m38s
Build App / build-windows (push) Successful in 4m1s
The Act runner has Node.js v18 pre-installed, so the check
`command -v node` passes and skips installing v22. Node 18 is
too old for dependencies like vitest, jsdom, and tailwindcss/oxide.
Now checks the major version and upgrades if < 22.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:54:36 -08:00
550159fc63 Fix native binding error: use npm install instead of npm ci
Some checks failed
Build App / build-linux (push) Failing after 2m25s
Build App / build-macos (push) Successful in 2m34s
Build App / build-windows (push) Successful in 4m8s
@tailwindcss/oxide has platform-specific native bindings. The
package-lock.json was generated on a different platform, so npm ci
installs the wrong native binary. Switching to rm -rf node_modules
+ npm install lets npm resolve the correct platform-specific
optional dependency (e.g., @tailwindcss/oxide-linux-x64-gnu on
Linux, oxide-darwin-arm64 on macOS).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:44:03 -08:00
e3c874bc75 Fix cargo PATH: use explicit export in every step that needs it
Some checks failed
Build App / build-macos (push) Successful in 2m22s
Build App / build-windows (push) Successful in 4m1s
Build App / build-linux (push) Failing after 1m30s
The Gitea Act runner's Docker container does not reliably support
$GITHUB_PATH or sourcing ~/.cargo/env across steps. Both mechanisms
failed because the runner spawns a fresh shell for each step.

Adopted the same pattern that already works for the Windows job:
explicitly set PATH at the top of every step that calls cargo or
npx tauri. This is the most portable approach across all runner
environments (Act Docker containers, bare metal macOS, Windows).

Build history shows Linux succeeded through run#46 (JS-based
actions) and failed from run#49 onward (shell-based installs).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:36:02 -08:00
6cae0e7feb Source cargo env before using rustup in install step
Some checks failed
Build App / build-macos (push) Successful in 2m22s
Build App / build-linux (push) Has been cancelled
Build App / build-windows (push) Has been cancelled
GITHUB_PATH only takes effect in subsequent steps, but rustup/rustc/cargo
are called within the same step. Adding `. "$HOME/.cargo/env"` immediately
after install puts cargo/rustup in PATH for the remainder of the step.
Fixed in both Linux and macOS jobs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:32:28 -08:00
601a2db3cf Move Node.js install before checkout in Linux build
Some checks failed
Build App / build-macos (push) Failing after 6s
Build App / build-windows (push) Successful in 3m38s
Build App / build-linux (push) Failing after 3m56s
The Gitea Linux runner also lacks Node.js, causing actions/checkout@v4
(a JS action) to fail with "node: executable file not found in PATH".
Same fix as the macOS job: install Node.js via shell before any
JS-based actions run.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:28:02 -08:00
b795e27251 Fix Linux build PATH and add ARM64 container support
Some checks failed
Build App / build-linux (push) Failing after 2s
Build App / build-macos (push) Failing after 11s
Build App / build-windows (push) Successful in 3m38s
Linux app build: cargo was not in PATH for subsequent steps after
shell-based install. Fixed by adding $HOME/.cargo/bin to GITHUB_PATH
(persists across steps) and setting it in the job-level env. Also
removed the now-unnecessary per-step PATH override in the macOS job.

Container build: added QEMU setup and platforms: linux/amd64,linux/arm64
to produce a multi-arch manifest. The Dockerfile already uses
arch-aware commands (dpkg --print-architecture, uname -m) so it
builds natively on both architectures. This fixes the "no matching
manifest for linux/arm64/v8" error on Apple Silicon Macs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:16:45 -08:00
19d4cbce27 Use shell-based check-before-install for all build jobs
Some checks failed
Build App / build-macos (push) Successful in 2m34s
Build App / build-windows (push) Successful in 2m33s
Build App / build-linux (push) Failing after 3m40s
Replace JS-based GitHub Actions (dtolnay/rust-toolchain,
actions/setup-node) in the Linux job with shell commands that
check if Rust and Node.js are already present before installing.
All three jobs (Linux, macOS, Windows) now use the same pattern:
skip installation if the tool is already available on the runner.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:03:17 -08:00
946ea03956 Fix macOS CI build and add macOS build instructions
Some checks failed
Build App / build-windows (push) Has started running
Build App / build-linux (push) Has been cancelled
Build App / build-macos (push) Has been cancelled
The macOS Gitea runner lacks Node.js, causing actions/checkout@v4
(a JS action) to fail with "Cannot find: node in PATH". Fixed by
installing Node.js via Homebrew before checkout and replacing all
JS-based actions (setup-node, rust-toolchain, rust-cache) with
shell equivalents.

Also adds macOS section to BUILDING.md covering Xcode CLI tools,
universal binary targets, and Gatekeeper bypass instructions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:00:48 -08:00
ba4cb4176d Add macOS build job to app build workflow
Some checks failed
Build App / build-macos (push) Failing after 48s
Build App / build-windows (push) Successful in 3m9s
Build App / build-linux (push) Has been cancelled
Builds a universal binary (aarch64 + x86_64) targeting both Apple
Silicon and Intel Macs. Produces .dmg and .app.tar.gz artifacts,
uploaded to a separate Gitea release tagged with -mac suffix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:57:35 -08:00
854f59a95a Fix Docker/CI: reproducible Windows build, Dockerfile cleanup
- Fix Windows CI build to use npm ci instead of deleting lockfile and
  running npm install, ensuring reproducible cross-platform builds
- Remove duplicate uv/ruff root installations from Dockerfile (only
  need the claude user installations)
- Make AWS CLI install architecture-aware using uname -m for arm64
  compatibility
- Remove unused SiblingContainers component (dead code)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 20:43:14 +00:00
b77b9679b1 Auto-increment app version using git commit count in CI builds
All checks were successful
Build App / build-windows (push) Successful in 3m11s
Build App / build-linux (push) Successful in 4m7s
Version is computed as 0.1.{commit_count} and patched into
tauri.conf.json, package.json, and Cargo.toml at build time.
Release tags now use v0.1.N format instead of build-{sha}.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 12:12:24 -08:00
9454f30b4d Fix Windows upload: rewrite release upload in cmd instead of bash
All checks were successful
Build App / build-windows (push) Successful in 3m6s
Build App / build-linux (push) Successful in 4m17s
The Windows runner doesn't have bash. Rewrite the Gitea release
API upload step using cmd batch syntax.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:13:20 -08:00
fb8161dc0d Replace upload-artifact with Gitea release API
Some checks failed
Build App / build-windows (push) Failing after 3m8s
Build App / build-linux (push) Has been cancelled
upload-artifact@v4 doesn't support Gitea (GHES). Use the Gitea
REST API to create releases and upload build artifacts directly.
Each successful push creates a tagged release with the build outputs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:08:57 -08:00
476d3a9727 Fix Windows build: set npm os=win32 before installing
Some checks failed
Build App / build-windows (push) Failing after 1m47s
Build App / build-linux (push) Has been cancelled
The Gitea act runner sets npm's os config to linux even on Windows,
causing npm to skip Windows-specific optional deps like rollup and
esbuild native bindings. Explicitly set os=win32 before npm install.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:59:17 -08:00
3f96c45d9e Fix Windows build: explicitly install rollup and esbuild native bindings
Some checks failed
Build App / build-windows (push) Failing after 18s
Build App / build-linux (push) Has been cancelled
npm's optional dependency resolution fails to install the Windows
platform-specific native bindings. Install them explicitly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:56:59 -08:00
dd6e63bbf6 Fix Windows build: build frontend separately from Tauri
Some checks failed
Build App / build-windows (push) Failing after 22s
Build App / build-linux (push) Has been cancelled
The beforeBuildCommand in tauri.conf.json spawns a subprocess
that inherits a broken rollup native binding. Build the frontend
as a separate CI step, then skip beforeBuildCommand via
TAURI_CONFIG override when running cargo tauri build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:55:08 -08:00
fe978be5fe Fix Linux build: add xdg-utils for AppImage bundling
Some checks failed
Build App / build-windows (push) Failing after 24s
Build App / build-linux (push) Has been cancelled
The AppImage bundler requires xdg-open to be present.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:51:58 -08:00
439c84ed13 Fix Windows build: remove lockfile before npm install
Some checks failed
Build App / build-windows (push) Failing after 28s
Build App / build-linux (push) Has been cancelled
The lockfile was generated on Linux and doesn't include Windows
platform-specific optional deps (rollup, esbuild, etc). Delete
package-lock.json and node_modules so npm resolves fresh.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:50:20 -08:00
03fb832fa2 Fix Windows build: quote cargo version specifier
Some checks failed
Build App / build-windows (push) Failing after 4m2s
Build App / build-linux (push) Failing after 4m51s
The caret in ^2 needs quoting in cmd shell to avoid being
interpreted as an escape character.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:45:19 -08:00
5a69b54d5c Fix Windows build: install Tauri CLI via cargo, use npm install
Some checks failed
Build App / build-windows (push) Failing after 13s
Build App / build-linux (push) Has been cancelled
The npm @tauri-apps/cli package uses platform-specific optional
dependencies that don't resolve correctly when the lockfile was
generated on Linux. Install tauri-cli via cargo instead, and use
npm install (not npm ci) to resolve Windows-native packages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:44:23 -08:00
276179339e Fix Windows build: use cmd shell with explicit PATH
Some checks failed
Build App / build-windows (push) Failing after 32s
Build App / build-linux (push) Has been cancelled
GITHUB_PATH file isn't picked up between steps on the Gitea runner.
Switch to cmd shell and prepend cargo/node to PATH in each step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:42:57 -08:00
da0b913c63 Fix Windows build: use powershell instead of pwsh
Some checks failed
Build App / build-windows (push) Failing after 55s
Build App / build-linux (push) Has been cancelled
The runner doesn't have PowerShell Core (pwsh) installed.
Fall back to Windows PowerShell (powershell) which is always available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:40:33 -08:00
a8a02b7c6c Fix Windows build: use PowerShell instead of bash-based actions
Some checks failed
Build App / build-windows (push) Failing after 12s
Build App / build-linux (push) Has been cancelled
The Gitea runner on Windows doesn't have bash available for
composite actions. Replace dtolnay/rust-toolchain and
actions/setup-node with direct PowerShell commands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:39:32 -08:00
7ce707e0fa Add Gitea Action to build app for Linux and Windows
Some checks failed
Build App / build-windows (push) Failing after 1m34s
Build App / build-linux (push) Has been cancelled
Triggers on pushes to app/ directory. Builds Tauri app on both
platforms with Rust caching, uploads .AppImage/.deb/.rpm for Linux
and .msi/.exe for Windows as artifacts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:35:45 -08:00
97a0745ead Initial commit: Triple-C app, container, and CI
Tauri v2 desktop app (React/TypeScript + Rust) for managing
containerized Claude Code environments. Includes Gitea Actions
workflow for building and pushing the sandbox container image,
and a BUILDING.md guide for manual app builds on Linux and Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 04:29:51 +00:00