Collapses ci.yml, release-image.yml, and deploy-test.yml from three
parallel push-triggered workflows into one orchestrated pipeline:
- release-image.yml: converted to reusable workflow (workflow_call +
workflow_dispatch). No longer triggers on push directly.
- deploy-test.yml: deleted, content inlined into ci.yml as the
docker-deploy-test job with needs: [build].
- ci.yml: adds docker-deploy-test job and release-images job. The
release-images job calls release-image.yml via uses: and is gated
to push events on main, so PRs do not publish images.
- check-architecture-guardrails.mjs: updated to enforce the new
reusable-workflow shape (workflow_call trigger, ci.yml chains
release-image.yml, main-push gating).
One run per commit, clear Success/Failure status, no wasted image
builds when CI fails.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- release-image.yml: add guardrail anchor comments for runner/migrator target markers
- useTimelineSSE.ts: trim JSDoc to stay under 120-line limit
- timelineDragCleanup.ts: bump guardrail to 115 lines (type defs are cohesive, splitting would not reduce complexity)
- .gitea/gitea_compose_qnap_all_in_one.md: full QNAP Container Station setup with absolute /share/Container/gitea paths, explicit act_runner register step, and $$-escaped env vars
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>