Commit Graph

80 Commits

Author SHA1 Message Date
Shaun Arman
b69c132a0a fix(ci): run post-tag release builds without job-output gating
Remove auto-tag job output dependencies and conditional gates so release build jobs always run after autotag completes, resolving skipped fan-out caused by output/if evaluation issues in Gitea Actions.

Made-with: Cursor
2026-04-04 21:24:24 -05:00
Shaun Arman
a6b4ed789c fix(ci): use stable auto-tag job outputs for release fanout
Rename the auto-tag job id to a non-hyphenated identifier and update needs/output references so dependent release jobs evaluate conditions correctly and reliably run after tagging.

Made-with: Cursor
2026-04-04 21:21:35 -05:00
Shaun Arman
93ead1362f fix(ci): guarantee release jobs run after auto-tag
Run linux/windows/macos/arm release build and upload jobs in the auto-tag workflow with needs:auto-tag outputs so release execution no longer depends on a second tag-triggered workflow dispatch path.

Made-with: Cursor
2026-04-04 21:19:13 -05:00
Shaun Arman
48041acc8c fix(ci): trigger release workflow from auto-tag pushes
Switch auto-tag to create and push tags via git instead of the tag API so Gitea emits a real tag push event that reliably starts release builds. Document the trigger behavior and add a workflow regression test.

Made-with: Cursor
2026-04-04 21:14:41 -05:00
Shaun Arman
2d35e2a2c1 fix(ci): harden release asset uploads for reruns
Make all release upload steps fail fast when expected artifacts are missing, replace existing same-name assets before uploading, and print HTTP/body details on upload failures so Linux/Windows publishing issues are diagnosable and reruns remain deterministic.

Made-with: Cursor
2026-04-04 21:09:03 -05:00
Shaun Arman
c3fd83f330 fix(ci): make release artifacts reliable across platforms
Override OpenSSL vendoring for the windows-gnu release build so cross-compiles no longer fail on pkg-config lookup, and fail fast when Linux release jobs produce no artifacts so incomplete releases are detected immediately.

Made-with: Cursor
2026-04-04 19:53:40 -05:00
Shaun Arman
4e7a5b64ba ci: run test workflow only on pull requests
Avoid duplicate Test workflow executions by removing push triggers and keeping pull_request validation as the single gate. Also fix remaining clippy format string violations in integration modules to keep rust-clippy passing.

Made-with: Cursor
2026-04-04 18:52:13 -05:00
Shaun Arman
8e7356e62d ci: skip test workflow pushes on master
Avoid rerunning the full test workflow on direct master pushes while keeping pull request validation intact. Update the CI/CD wiki page to reflect the new trigger behavior.

Made-with: Cursor
2026-04-04 16:45:55 -05:00
Shaun Arman
b426f56149 fix: resolve macOS bundle path after app rename
Find the generated .app bundle dynamically in release CI so macOS packaging no longer depends on the legacy TFTSR.app name. Add a unit test to prevent regressions by asserting the old hardcoded path is not reintroduced.

Made-with: Cursor
2026-04-04 16:28:01 -05:00
Shaun Arman
64492c743b fix: ARM64 build uses native target instead of cross-compile
Some checks failed
Release / build-macos-arm64 (push) Successful in 5m14s
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
The ARM64 build was failing because explicitly specifying
--target aarch64-unknown-linux-gnu on an ARM64 runner was
triggering cross-compilation logic.

Changes:
- Remove rustup target add (not needed for native build)
- Remove --target flag from cargo tauri build
- Update artifact path: target/aarch64-unknown-linux-gnu/release/bundle
  → target/release/bundle

This allows the native ARM64 toolchain to build without
attempting cross-compilation and avoids the pkg-config
cross-compilation configuration requirement.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-04 09:59:56 -05:00
Shaun Arman
1d40dfb15b fix: use Wiki secret for authenticated wiki sync (v0.2.8)
Some checks failed
Release / build-macos-arm64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
- Updated wiki-sync job to use secrets.Wiki for authentication
- Simplified clone/push logic with token-based auth
- Wiki push will now succeed with proper credentials
- Bumped version to 0.2.8

The workflow now uses the 'Wiki' secret created in Gitea Actions
to authenticate wiki repository pushes. This fixes the authentication
issue that was preventing automatic wiki synchronization.
2026-04-03 16:47:32 -05:00
Shaun Arman
94b486b801 feat: add automatic wiki sync to CI workflow (v0.2.7)
- Added wiki-sync job to .gitea/workflows/test.yml
- Runs only on pushes to master branch
- Automatically copies docs/wiki/*.md to Gogs wiki repository
- Supports token-based authentication via secrets.GITHUB_TOKEN
- Handles wiki initialization if repository doesn't exist
- Bumped version to 0.2.7

Wiki sync will now automatically update the Gogs wiki at
https://gogs.tftsr.com/sarman/tftsr-devops_investigation/wiki
whenever docs/wiki/ files are modified on master.
2026-04-03 16:42:37 -05:00
Shaun Arman
952cf4fe27 fix: install jq in Linux/Windows build containers
Some checks failed
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 5s
Test / rust-fmt-check (push) Successful in 2m3s
Test / rust-clippy (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-macos-arm64 (push) Failing after 5m24s
Release / build-linux-amd64 (push) Has been cancelled
Add jq package to apt-get install commands for:
- build-linux-amd64
- build-windows-amd64
- build-linux-arm64

This fixes upload failures where jq was not available to parse
the release API JSON response.

Tested:
- YAML syntax validation ✓
- jq command parsing ✓
- Error handling logic ✓

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 12:16:36 -05:00
Shaun Arman
905487be5b fix: improve release artifact upload error handling
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 2m9s
Release / build-macos-arm64 (push) Successful in 5m41s
Test / rust-clippy (push) Successful in 17m30s
Release / build-linux-arm64 (push) Failing after 21m46s
Test / rust-tests (push) Successful in 12m47s
Test / frontend-typecheck (push) Successful in 1m27s
Test / frontend-tests (push) Successful in 1m29s
Release / build-linux-amd64 (push) Failing after 20m6s
Release / build-windows-amd64 (push) Failing after 14m15s
- Use jq instead of grep for JSON parsing
- Add explicit error checking for RELEASE_ID
- Add informative logging for debugging upload failures
- Fail fast if release ID cannot be retrieved

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 11:01:02 -05:00
Shaun Arman
d6117034ee fix: ARM64 build native compilation instead of cross-compilation
Some checks failed
Auto Tag / auto-tag (push) Successful in 6s
Test / rust-fmt-check (push) Successful in 2m8s
Test / rust-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-macos-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
The linux-arm64 job runs on a native ARM64 runner, so cross-compilation
setup is not needed. Removed dpkg --add-architecture, cross-compiler,
and architecture-specific package suffixes. This fixes "held broken
packages" error during dependency installation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 10:05:55 -05:00
Shaun Arman
b356eef44f fix: remove Woodpecker CI and fix Gitea Actions ARM64 build
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 5s
Test / rust-fmt-check (push) Successful in 2m11s
Release / build-linux-arm64 (push) Failing after 2m15s
Release / build-macos-arm64 (push) Successful in 5m25s
Test / rust-clippy (push) Successful in 12m10s
Test / rust-tests (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
- Remove .woodpecker/ directory entirely (not in use)
- Fix ARM64 build in .gitea/workflows/release.yml:
  - Remove --platform flag (Docker version too old)
  - Use cross-compilation instead (dpkg multiarch + gcc-aarch64-linux-gnu)
  - Set PKG_CONFIG environment variables for ARM64 libraries
  - Set CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER

This matches the working cross-compilation approach from commit d489338b.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 08:10:29 -05:00
Shaun Arman
03cc9914ad fix: domainPrompts closing brace too early; arm64 use native platform image
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Release / build-linux-arm64 (push) Failing after 0s
Test / rust-fmt-check (push) Successful in 1m4s
Release / build-macos-arm64 (push) Successful in 5m26s
Test / rust-clippy (push) Successful in 7m41s
Test / rust-tests (push) Successful in 8m13s
Test / frontend-typecheck (push) Successful in 1m28s
Test / frontend-tests (push) Successful in 1m12s
Release / build-linux-amd64 (push) Successful in 16m13s
Release / build-windows-amd64 (push) Successful in 13m30s
- domainPrompts.ts: closing }; was inside the Record object after 'automation',
  leaving hpe_infra/dell_hardware/identity orphaned outside the object — caused
  3 TS1005/TS1109 errors and broke the macOS and all frontend builds
- release.yml: replace multiarch cross-compilation (broken due to WebKit arm64
  package conflicts) with --platform linux/arm64 container option so QEMU runs
  a native ARM64 image directly — no cross-compilation, no package conflicts
2026-03-31 19:36:07 -05:00
Shaun Arman
d489338bc4 fix: arm64 linux cross-compilation — add multiarch and pkg-config env vars
Some checks failed
Auto Tag / auto-tag (push) Successful in 3s
Release / build-linux-arm64 (push) Failing after 1m8s
Test / rust-fmt-check (push) Successful in 1m8s
Release / build-macos-arm64 (push) Successful in 4m27s
Test / rust-clippy (push) Successful in 7m15s
Test / rust-tests (push) Successful in 8m4s
Test / frontend-typecheck (push) Successful in 1m29s
Test / frontend-tests (push) Successful in 1m18s
Release / build-linux-amd64 (push) Successful in 16m23s
Release / build-windows-amd64 (push) Successful in 13m2s
The linux-arm64 runner runs an x86_64 Docker container so cross-compilation
requires the ARM64 sysroot via dpkg --add-architecture arm64, gcc-aarch64-linux-gnu,
and arm64 variants of all system libraries. PKG_CONFIG env vars point to the
aarch64 library paths so Tauri can find webkit/gtk/etc at compile time.
2026-03-31 11:52:10 -05:00
Shaun Arman
790f9520bd fix: dropdown text invisible on macOS + correct codesign order for DMG
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 57s
Release / build-macos-arm64 (push) Successful in 2m43s
Test / rust-clippy (push) Successful in 7m17s
Test / rust-tests (push) Successful in 8m10s
Test / frontend-typecheck (push) Successful in 1m25s
Test / frontend-tests (push) Successful in 1m20s
Release / build-linux-amd64 (push) Successful in 16m2s
Release / build-windows-amd64 (push) Successful in 13m17s
Release / build-linux-arm64 (push) Has been cancelled
- globals.css: add button reset with -webkit-appearance: none and
  -webkit-text-fill-color: currentColor so SelectTrigger text is visible
  on macOS WebKit without breaking Tailwind text-* variant overrides
- release.yml: build .app only first, ad-hoc sign it, then create DMG
  via hdiutil so the signed .app is inside the DMG (previously codesign
  ran after Tauri already sealed the unsigned .app into the DMG)
2026-03-30 16:43:00 -05:00
Shaun Arman
720c7511cd feat: auto-increment patch tag on every merge to master
Some checks failed
Auto Tag / auto-tag (push) Waiting to run
Test / rust-fmt-check (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Creates a new vX.Y.Z tag on each push to master using the Gitea API.
The new tag triggers release.yml to build and publish installers for
all platforms automatically.
2026-03-30 16:32:55 -05:00
Shaun Arman
16d537c4af fix: button text visibility, toggle contrast, create_issue IPC, ad-hoc codesign
Some checks failed
Test / rust-fmt-check (push) Successful in 1m5s
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-fmt-check (pull_request) Successful in 1m4s
Test / rust-clippy (pull_request) Successful in 7m8s
Test / rust-tests (pull_request) Successful in 8m21s
Test / frontend-typecheck (pull_request) Successful in 1m29s
Test / frontend-tests (pull_request) Successful in 1m15s
- globals.css: remove button from WebKit -webkit-text-fill-color override that
  was causing button text to be invisible (text color matched background in dark mode)
- Security.tsx: toggle enabled state uses bg-blue-500 instead of bg-primary;
  in dark mode --primary is near-white making the white knob invisible
- tauriCommands.ts: fix createIssueCmd to pass flat args (not wrapped in newIssue),
  map domain->category, and return Issue instead of IssueDetail
- NewIssue/index.tsx: update call site to use Issue return type directly
- release.yml: add ad-hoc codesign step for macOS .app so Gatekeeper shows
  "unidentified developer" instead of "damaged" error
2026-03-30 15:52:43 -05:00
Shaun Arman
793ab7d582 feat: add macOS arm64 act_runner and release build job
Some checks failed
Test / rust-fmt-check (push) Successful in 1m5s
Release / build-macos-arm64 (push) Successful in 4m13s
Test / rust-clippy (push) Successful in 7m26s
Test / rust-tests (push) Successful in 7m58s
Test / frontend-typecheck (push) Successful in 1m30s
Test / frontend-tests (push) Successful in 1m16s
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
- Register Apple Silicon Mac as act_runner with label macos-arm64
- Add build-macos-arm64 job to Gitea Actions release pipeline
- Produces unsigned .dmg artifact for aarch64-apple-darwin
- Update CICD-Pipeline.md to reflect Gitea Actions agents
2026-03-30 15:18:38 -05:00
Shaun Arman
73f9c3419d ci: restrict test.yml to branch pushes only (not tags)
Some checks failed
Test / rust-clippy (push) Successful in 7m32s
Test / rust-fmt-check (push) Failing after 13m17s
Test / rust-tests (push) Successful in 8m5s
Test / frontend-typecheck (push) Successful in 1m37s
Test / frontend-tests (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
2026-03-29 18:56:00 -05:00
Shaun Arman
1271f51d1a fix: use $GITHUB_REF_NAME env var instead of ${{ github.ref_name }} expression
Some checks failed
Release / build-windows-amd64 (push) Waiting to run
Release / build-linux-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Test / frontend-typecheck (push) Failing after 14m53s
Test / frontend-tests (push) Has been cancelled
Test / rust-fmt-check (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Gitea 1.22 expression evaluator rewrites github.ref_name to
format('{0}', github.ref_name) which produces '%!t(string=v0.1.0)'
instead of 'v0.1.0'. Use the pre-set shell env var directly.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:50:39 -05:00
Shaun Arman
661898ba91 ci: remove workflow_dispatch inputs (Gitea 1.22 rejects unknown on type)
Some checks failed
Release / build-windows-amd64 (push) Waiting to run
Test / rust-fmt-check (push) Waiting to run
Test / rust-tests (push) Successful in 7m19s
Test / frontend-typecheck (push) Successful in 1m26s
Test / frontend-tests (push) Successful in 1m19s
Release / build-linux-arm64 (push) Failing after 14m12s
Test / rust-clippy (push) Failing after 17m54s
Release / build-linux-amd64 (push) Has been cancelled
2026-03-29 18:25:03 -05:00
Shaun Arman
8f18cfa3be ci: restore quoted tag pattern 'v*' for Gitea 1.22 compatibility
Some checks failed
Test / rust-fmt-check (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
2026-03-29 18:19:47 -05:00
Shaun Arman
b817d2bed4 ci: add workflow_dispatch trigger and RELEASE_TAG env var
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
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 17:05:25 -05:00
Shaun Arman
02787361c8 ci: fix apt-get update missing before git install in checkout steps
Some checks failed
Test / rust-fmt-check (push) Successful in 33s
Test / rust-clippy (push) Failing after 2m35s
Test / rust-tests (push) Successful in 3m23s
Test / frontend-tests (push) Successful in 46s
Test / frontend-typecheck (push) Failing after 2m14s
rust:1.88-slim has an empty package cache. apt-get install git
was failing with 'Unable to locate package git'.
Add apt-get update -qq before every apt-get install in checkout steps.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 16:07:17 -05:00
Shaun Arman
29b6fb2170 ci: fix checkout — replace actions/checkout@v4 with direct git clone
Some checks failed
Test / rust-fmt-check (push) Failing after 2s
Test / rust-clippy (push) Failing after 2s
Test / frontend-typecheck (push) Has been cancelled
Test / rust-tests (push) Failing after 2s
Test / frontend-tests (push) Failing after 3s
actions/checkout@v4 requires Node.js which is not in rust:1.88-slim.
Replace with direct git init+fetch+checkout using the Gitea instance URL.
Also fix release.yml: each build job creates the release (idempotent)
and uploads its own artifacts inline via Gitea API.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:52:53 -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