Commit Graph

272 Commits

Author SHA1 Message Date
Shaun Arman
3c39d2ff28 Merge branch 'feat/gitea-actions'
Some checks failed
Test / rust-fmt-check (push) Failing after 2s
Test / rust-clippy (push) Failing after 2s
Test / rust-tests (push) Failing after 2s
Test / frontend-typecheck (push) Failing after 32s
Test / frontend-tests (push) Failing after 37s
ci: migrate from Woodpecker to Gitea Actions

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:51:30 -05:00
Shaun Arman
9880afa117 ci: migrate from Woodpecker to Gitea Actions
Some checks are pending
Test / rust-fmt-check (push) Waiting to run
Test / rust-clippy (push) Waiting to run
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Replaces .woodpecker/*.yml with Gitea Actions workflows:

- .gitea/workflows/test.yml: triggers on push/PR, runs 5 jobs
  (rust-fmt-check, rust-clippy, rust-tests, frontend-typecheck,
  frontend-tests) using rust:1.88-slim and node:22-alpine containers.

- .gitea/workflows/release.yml: triggers on v* tags, 4 jobs:
  - build-linux-amd64  (linux-amd64 runner, cross-compile x86_64)
  - build-windows-amd64 (linux-amd64 runner, mingw cross-compile)
  - build-linux-arm64  (linux-arm64 runner, native aarch64)
  - upload-release     (runs after all 3 build jobs, uses
    actions/download-artifact + Gitea release API)

Runners registered:
  - amd64-docker-runner (Docker, 172.0.0.29, labels: ubuntu-latest linux-amd64)
  - arm64-native-runner (systemd, local arm64 machine, label: linux-arm64)

Secrets: RELEASE_TOKEN set in repo Actions secrets.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:50:48 -05:00
Shaun Arman
9c0967735e Merge branch 'feat/woodpecker-2x-migration'
ci: migrate pipelines to Woodpecker 2.x + Gitea

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:31:12 -05:00
Shaun Arman
c7b66e0820 ci: migrate pipelines to Woodpecker 2.x + Gitea
- Convert pipeline: map format → steps: list format (Woodpecker 2.x)
- Add per-step labels for agent routing (platform: linux/amd64 / arm64)
- Add native build-linux-arm64 step (routes to local arm64 agent)
  - Arm64 step self-clones via host IP (isolated workspace per agent)
  - Arm64 step uploads artifacts inline to Gitea API
- Replace gogs_app → gitea_app in all clone/upload URLs
- Remove Woodpecker 0.15.4 per-step platform routing workaround note
- Update wiki: Gitea migration notes, new pipeline format docs, agent labels

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:28:49 -05:00
Shaun Arman
ac56851e4d docs: remove broken arm64 CI step, document Woodpecker 0.15.4 limitation
when: platform: is evaluated at compile time (server=amd64) and silently
drops the arm64 step. Per-step platform routing requires Woodpecker 2.x.
Document the make release-arm64 workaround for linux/arm64 builds.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 12:52:58 -05:00
Shaun Arman
f8eea02075 build: add Makefile release-arm64 target for local Docker-based arm64 build
Woodpecker 0.15.4 does not support per-step agent platform routing —
when: platform: is evaluated at compile time against the server and
drops the step entirely. Use 'make release-arm64 GOGS_TOKEN=<token>'
on the local aarch64 machine to build and upload arm64 artifacts.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 12:52:03 -05:00
Shaun Arman
22d3092b65 fix: use when: platform: for arm64 step routing (Woodpecker 0.15.4 compat)
Top-level platform: key conflicts with commands: in Woodpecker 0.15.4 YAML
parser — treated as a plugin attribute. Move to when: platform: condition
which is supported for agent platform routing in this version.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 12:49:41 -05:00
Shaun Arman
89cf06b802 Merge branch 'feat/release-arm64-native' of sarman/tftsr-devops_investigation into master 2026-03-29 12:47:30 -05:00
Shaun Arman
2c1094fdcb feat: add native linux/arm64 release build step
Install Woodpecker agent as systemd user service on local aarch64 machine
(Fedora Asahi 42). Add build-linux-arm64 step to release pipeline using
platform: linux/arm64 to route to the native arm64 agent. Update upload
step to include artifacts/linux-arm64/ in the release upload loop.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 12:44:43 -05:00
Shaun Arman
b1a74e66ee Merge branch 'fix/windows-export-ordinal' of sarman/tftsr-devops_investigation into master 2026-03-29 12:37:39 -05:00
Shaun Arman
2026bdb3da fix: suppress MinGW auto-export to resolve Windows DLL ordinal overflow
Add src-tauri/.cargo/config.toml with --exclude-all-symbols linker flag
for x86_64-pc-windows-gnu. MinGW auto-exports ~106k public Rust symbols
into the cdylib export table, exceeding the 65,535 PE ordinal limit.
The desktop binary links against rlib (static) so the cdylib export table
is unused. An empty export table is a valid DLL.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 12:33:24 -05:00
Shaun Arman
39dc65d91b Merge branch 'fix/app-icons' of sarman/tftsr-devops_investigation into master 2026-03-16 01:32:45 +00:00
Shaun Arman
8ccfdec72a fix: replace empty icon placeholder files with real app icons
Generated from icon.png (magnifying glass + bug on laptop — TFTSR debug theme):
- icon.ico: multi-size Windows ICO (16/32/48/64/128/256px) — fixes windres crash
- icon.icns: macOS ICNS (16/32/64/128/256/512px)
- 32x32.png, 128x128.png, 128x128@2x.png: regenerated from source

Fixes: x86_64-w64-mingw32-windres 'unexpected EOF' on Windows cross-compile build
2026-03-15 20:31:52 -05:00
Shaun Arman
aa24b9e107 Merge branch 'fix/add-make-to-windows-build' of sarman/tftsr-devops_investigation into master 2026-03-16 00:56:32 +00:00
Shaun Arman
73584e357b fix: add make to windows build step (required by vendored OpenSSL) 2026-03-15 19:53:19 -05:00
Shaun Arman
48b63086a6 Merge branch 'fix/sqlcipher-vendored-openssl' of sarman/tftsr-devops_investigation into master 2026-03-16 00:19:21 +00:00
Shaun Arman
1f062948fc fix: use bundled-sqlcipher-vendored-openssl for portable Windows cross-compilation
SQLCipher requires OpenSSL when cross-compiling for Windows with mingw-w64.
bundled-sqlcipher-vendored-openssl compiles OpenSSL from source — no system
OpenSSL needed for any target. Add perl to CI steps (required by OpenSSL build).
2026-03-15 19:17:36 -05:00
Shaun Arman
2ab6292f30 Merge branch 'docs/update-readme-wiki' of sarman/tftsr-devops_investigation into master 2026-03-15 23:57:00 +00:00
Shaun Arman
250bd96285 docs: update README and wiki for v0.1.0-alpha release
- README: add CI badge, Releases table, fix Rust prereq (1.88+), update CI/CD section,
  update implementation status (Phase 11+12 complete), add apt-get system deps,
  fix repo clone URL to gogs.tftsr.com
- Home.md: add CI badge, Releases table, update project status
- CICD-Pipeline.md: add agents table, Windows cross-compile docs, artifact path note,
  upload network fix, branch protection section, switching test/release config,
  updated known issues with new CI learnings
- Troubleshooting.md: add 6 new CI troubleshooting entries (stuck builds, artifact
  upload failures, CI=woodpecker, git switch tag refs, release artifacts path)
- Development-Setup.md: update test count to 64/64 Rust tests
2026-03-15 18:55:56 -05:00
Shaun Arman
f2d9dff693 Merge branch 'feat/multiplatform-release' of sarman/tftsr-devops_investigation into master 2026-03-15 23:49:03 +00:00
Shaun Arman
b042182ee2 feat: add Windows amd64 cross-compile to release pipeline; add arm64 QEMU agent
- build-windows-amd64: cross-compile with mingw-w64 for x86_64-pc-windows-gnu
- upload: uses gogs_default network + uploads both linux and windows artifacts
- arm64: QEMU agent deployed at woodpecker_agent_arm64 (linux/arm64 platform)
- artifacts/ excluded from git via .gitignore
2026-03-15 18:47:42 -05:00
Shaun Arman
179add7aac Merge branch 'fix/upload-network' of sarman/tftsr-devops_investigation into master 2026-03-15 23:43:04 +00:00
Shaun Arman
a004d8b3ef fix: upload step needs gogs_default network to reach Gogs API (host firewall blocks default bridge) 2026-03-15 18:41:54 -05:00
Shaun Arman
0e47ccd2b9 Merge branch 'fix/artifacts-workspace' of sarman/tftsr-devops_investigation into master 2026-03-15 23:13:27 +00:00
Shaun Arman
7965a7bec6 fix: write artifacts to workspace (shared between steps), not /artifacts/ 2026-03-15 18:08:09 -05:00
Shaun Arman
c556bbaaf8 Merge branch 'fix/drop-arm64-cross-compile' of sarman/tftsr-devops_investigation into master 2026-03-15 22:48:08 +00:00
Shaun Arman
d66934cdf0 fix: remove arm64 from release pipeline — webkit2gtk multiarch conflict on x86_64 host
Cross-compiling webkit2gtk-4.1-dev for arm64 from x86_64 fails due to
held broken packages. arm64 requires native arm64 CI runner.
amd64 release artifacts still upload correctly.
2026-03-15 17:46:54 -05:00
Shaun Arman
076cebb326 Merge branch 'fix/arm64-cross-compile' of sarman/tftsr-devops_investigation into master 2026-03-15 22:29:50 +00:00
Shaun Arman
4dc4b5aed1 fix: arm64 cross-compilation — add multiarch pkg-config sysroot setup
- dpkg --add-architecture arm64 + install arm64 lib variants
- Set PKG_CONFIG_ALLOW_CROSS, PKG_CONFIG_PATH, PKG_CONFIG_SYSROOT_DIR
- Upload step now handles missing arm64 artifacts gracefully
2026-03-15 17:28:53 -05:00
Shaun Arman
79a20001d0 Merge branch 'fix/tauri-ci-env' of sarman/tftsr-devops_investigation into master 2026-03-15 21:51:25 +00:00
Shaun Arman
1bf0a6b111 ci: re-trigger test pipeline for PR review 2026-03-15 16:35:24 -05:00
Shaun Arman
bf7f14b387 fix: set CI=true for cargo tauri build — Woodpecker sets CI=woodpecker which Tauri CLI rejects 2026-03-15 16:34:04 -05:00
Shaun Arman
77fa044c98 Merge branch 'sarman/cicd' of sarman/tftsr-devops_investigation into master 2026-03-15 20:58:59 +00:00
Shaun Arman
7a9a350beb ci: test agent after cleanup 2026-03-15 15:54:16 -05:00
Shaun Arman
36a4a5711a chore: update CI status timestamp — resolves PR conflict via rebase on master 2026-03-15 15:50:49 -05:00
Shaun Arman
a64b6c4798 Merge branch 'fix/release-tag-clone' of sarman/tftsr-devops_investigation into master 2026-03-15 20:29:44 +00:00
Shaun Arman
a7e3a7cd91 fix: use alpine/git with explicit checkout for tag-based release builds
woodpeckerci/plugin-git:latest uses 'git switch' which fails on tag refs.
Switch to alpine/git with explicit git fetch + checkout commands.

Fixes: 'fatal: invalid reference: refs/tags/v*' in release pipeline.
2026-03-15 15:19:43 -05:00
Shaun Arman
06a77fbe95 ci: fix release.yml for Woodpecker 0.15.4 (pipeline: map format, rust 1.88, npm ci fix, clone override) 2026-03-15 15:07:52 -05:00
Shaun Arman
6d749f101a docs: update PLAN.md - Phase 11 complete, redact token references 2026-03-15 15:00:16 -05:00
Shaun Arman
e88d289118 ci: use npm ci --legacy-peer-deps for vite6/vitest peer dep conflict 2026-03-15 14:39:43 -05:00
Shaun Arman
171bac86e5 ci: remove wiki-sync step (incompatible with Woodpecker 0.15.4 secrets syntax) 2026-03-15 14:23:21 -05:00
Shaun Arman
cf41e0d0cb ci: trigger build after Woodpecker restart with new token 2026-03-15 14:19:46 -05:00
Shaun Arman
2915accfd9 ci: verify CI pipeline triggers after token rotation and webhook refresh 2026-03-15 14:17:18 -05:00
Shaun Arman
e62916d0dd ci: verify pipeline after security token rotation 2026-03-15 14:13:46 -05:00
Shaun Arman
362687ad00 security: rotate exposed token, redact from PLAN.md, add secret patterns to .gitignore 2026-03-15 14:04:49 -05:00
Shaun Arman
4a5e70236a fix: retain GPU-VRAM-eligible models in recommender even when RAM is low 2026-03-15 13:48:46 -05:00
Shaun Arman
52f464d8bd docs: add wiki source files and CI auto-sync pipeline
- Add docs/wiki/ with 11 wiki pages (Home, Architecture, Database,
  AI-Providers, PII-Detection, IPC-Commands, CICD-Pipeline,
  Security-Model, Integrations, Development-Setup, Troubleshooting)
- Add wiki-sync step to .woodpecker/test.yml: syncs docs/wiki/*.md to
  the Gogs wiki git repo on every push to master
- Add Wiki Maintenance section to CLAUDE.md: code→wiki file mapping
  so Claude and contributors know which wiki page to update per change

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:45:30 -05:00
Shaun Arman
808500b7bd fix: inline format args for Rust 1.88 clippy compatibility 2026-03-15 13:28:59 -05:00
Shaun Arman
5198b6c636 fix: resolve all clippy lints (uninlined format args, range::contains, push_str single chars) 2026-03-15 13:10:26 -05:00
Shaun Arman
b7c49abc4d ci: bump Rust to 1.88-slim (min required by cookie_store, time, darling) 2026-03-15 12:58:28 -05:00