feat: terminal fullscreen, asyncpg fix, CI improvements #59

Merged
jimmy merged 18 commits from dev into main 2026-05-06 01:30:57 +08:00
Owner

Summary

  • Add fullscreen toggle to terminal with iPhone landscape support
  • Fix asyncpg 0.30.0 compatibility for Python 3.12
  • Re-enable test workflow with reliable PR-only triggers
  • Add production deployment gate (tests must pass before deploy)
  • Improve caching with validation and fallback to fresh install

Test plan

  • test.yml should trigger automatically on this PR
  • Backend and frontend tests should pass
  • After merge, deploy.yml should run tests before deploying
## Summary - Add fullscreen toggle to terminal with iPhone landscape support - Fix asyncpg 0.30.0 compatibility for Python 3.12 - Re-enable test workflow with reliable PR-only triggers - Add production deployment gate (tests must pass before deploy) - Improve caching with validation and fallback to fresh install ## Test plan - [ ] test.yml should trigger automatically on this PR - [ ] Backend and frontend tests should pass - [ ] After merge, deploy.yml should run tests before deploying
jimmy added 2 commits 2026-04-25 18:36:24 +08:00
test: trigger deploy-dev workflow
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 24m13s
c78c77fc6e
fix: re-enable test workflow with reliable triggers and production gate
Run Tests / Backend Tests (pull_request) Failing after 23m37s
Run Tests / Frontend Tests (pull_request) Failing after 1m47s
Run Tests / Test Summary (pull_request) Failing after 14s
0338130133
- Re-enable test.yml to run on PRs to main (not every push)
- Add cache validation with fallback to fresh install for both Python/Node
- Add PyPI fallback when mirror fails
- Increase pytest timeout from 30s to 60s
- Add backend+frontend test gate to production deploy workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jimmy added 1 commit 2026-04-26 16:11:56 +08:00
fix: resolve test failures in CI
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 3m54s
Run Tests / Backend Tests (pull_request) Failing after 21m30s
Run Tests / Frontend Tests (pull_request) Failing after 2m10s
Run Tests / Test Summary (pull_request) Failing after 17s
f00b230c5e
- Frontend: Fix Svelte plugin hot module config for vitest
- Backend: Ensure conversation tracker uses mocked database in tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jimmy added 1 commit 2026-04-26 16:40:28 +08:00
fix: update mock database schema to match conversation tracker queries
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 1m52s
Run Tests / Backend Tests (pull_request) Failing after 47s
Run Tests / Frontend Tests (pull_request) Failing after 4m27s
Run Tests / Test Summary (pull_request) Failing after 17s
5c7d185953
- Add missing columns: slug, model, conversation_count, total_messages, total_tokens, created_at, project_path
- Fix test data insert to include all required columns

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jimmy added 4 commits 2026-05-03 17:25:13 +08:00
- Add JWT token auth to OPC WebSocket (unauthenticated → 403, per-user tracking)
- Externalize Transmission RPC credentials to TRANSMISSION_USER/PASS env vars
- Remove hardcoded SECRET_KEY fallback from dev compose
- Rate-limit passkey register options endpoint at 5/minute
- Add PDD (docs/improvement-plan.md) and sprint specs (specs/)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix dev deploy runner label (ubuntu-latest → nas)
- Add backend + frontend test gate to dev deploy (tests must pass before deploy)
- Add error handling UI to Docker.svelte (error state with retry button)
- Fix psutil.cpu_percent always returning 0 on first call (interval=0 → 0.1)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add max_length validation to LoginRequest (username 128, password 1024)
- Replace raw request.json() with Pydantic models in RBAC override/update endpoints
- Replace raw request.json() with Pydantic models in passkey register/login/delete
- Bind passkey challenges to session-bound challenge_id (prevents cross-session replay)
- Gate audit log and security log endpoints behind admin role
- Fix fragile opc_db.json.dumps() → import json directly
- Add COOKIE_SECURE=False startup warning (suppress with ALLOW_INSECURE_COOKIES)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ci: Sprint 04 — CI/CD reliability (BuildKit docs, cache-to, version pins, cleanup, compose validation)
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 40s
Run Tests / Secret Detection (pull_request) Failing after 2m26s
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been cancelled
Deploy Dashboard (Dev) / Backend Tests (push) Has been cancelled
Deploy Dashboard (Dev) / Frontend Tests (push) Has been cancelled
Run Tests / Backend Tests (pull_request) Failing after 11m46s
Run Tests / Frontend Tests (pull_request) Failing after 46s
3e177c703e
- Document DOCKER_BUILDKIT=0 rationale in all deploy workflows
- Add --cache-to type=inline to all docker build commands
- Pin Python 3.12 and Node 20 with version assertions in CI
- Remove dead test-summary job from test.yml
- Reconcile required-tools.txt with Dockerfile.base (bash, ca-certificates, openssh-client)
- Clean up stale artifacts (Dockerfile comment, orphaned .md files)
- Add docker-compose config validation before claude-dev deploy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-03 17:32:18 +08:00
fix: remove --cache-to flag from non-BuildKit docker build commands
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 43s
Deploy Dashboard (Dev) / Backend Tests (push) Failing after 43s
Run Tests / Secret Detection (pull_request) Failing after 43s
Deploy Dashboard (Dev) / Frontend Tests (push) Failing after 41s
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been skipped
Run Tests / Backend Tests (pull_request) Failing after 6m23s
Run Tests / Frontend Tests (pull_request) Failing after 18s
6070a904b7
The --cache-to type=inline flag is only valid with DOCKER_BUILDKIT=1.
With BuildKit disabled, it causes docker build to fail with exit 125.
Keep the documentation comments for when BuildKit is re-enabled.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-03 17:57:44 +08:00
ci: re-trigger CI with runner proxy fix
Run Tests / Secret Detection (pull_request) Failing after 6m21s
Run Tests / Backend Tests (pull_request) Failing after 1m3s
Run Tests / Frontend Tests (pull_request) Failing after 50s
f7cfad30e3
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-03 17:58:03 +08:00
ci: add socat to required-tools for VPS proxy tunnel support
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 50s
Run Tests / Secret Detection (pull_request) Failing after 42s
Run Tests / Backend Tests (pull_request) Failing after 55s
Run Tests / Frontend Tests (pull_request) Failing after 44s
f85dc25762
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-03 18:10:13 +08:00
ci: re-trigger CI after NO_PROXY runner config fix
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 1m10s
Run Tests / Secret Detection (pull_request) Failing after 6m27s
Run Tests / Frontend Tests (pull_request) Failing after 29s
Run Tests / Backend Tests (pull_request) Failing after 12m47s
0c3d2f854b
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-03 18:14:02 +08:00
fix: reconcile required-tools.txt smoke checks (S04.5)
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Successful in 1m32s
Run Tests / Secret Detection (pull_request) Failing after 1m0s
Run Tests / Backend Tests (pull_request) Failing after 2m33s
Run Tests / Frontend Tests (pull_request) Failing after 27s
59bdcf392c
- Replace openssh-client with ssh (checkable binary name)
- Remove socat (not a claude-dev container dependency)
- Handle ca-certificates as special package check in smoke-tools.sh
- Add SPECIAL_CHECKS array for packages without matching binaries

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-03 18:28:13 +08:00
dashboard: externalize service URLs and network config (Sprint 03 config externalization)
Deploy Dashboard (Dev) / Backend Tests (push) Failing after 2m17s
Deploy Dashboard (Dev) / Frontend Tests (push) Failing after 3m34s
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been skipped
Run Tests / Secret Detection (pull_request) Failing after 30s
Run Tests / Backend Tests (pull_request) Failing after 2m18s
Run Tests / Frontend Tests (pull_request) Failing after 18s
019fddc079
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-03 18:44:11 +08:00
ci: add workflow_dispatch to deploy-dev for manual triggers
Deploy Dashboard (Dev) / Backend Tests (push) Failing after 10m21s
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 2m9s
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been skipped
Run Tests / Secret Detection (pull_request) Failing after 23s
Run Tests / Backend Tests (pull_request) Failing after 10m52s
Run Tests / Frontend Tests (pull_request) Failing after 6m25s
e8534728ef
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 2 commits 2026-05-03 22:15:23 +08:00
Fix 20 pre-existing test failures:
- Update mock conversation DB schema with missing columns
- Add in-memory OPC database mock to avoid PostgreSQL dependency in CI
- Fix file download endpoint to check auth before revealing file existence
- Reload routers.system and routers.security in test_app for fresh config
- Reset cached Docker client in security router between tests
- Fix websocket auth test to properly check for connection rejection

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
fix: resolve test failures blocking CI pipeline (OPC mock, route ordering, system stats)
Run Tests / Secret Detection (pull_request) Failing after 42s
Run Tests / Backend Tests (pull_request) Successful in 32m26s
Run Tests / Frontend Tests (pull_request) Failing after 26s
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 30m35s
Deploy Dashboard (Dev) / Frontend Tests (push) Failing after 16m37s
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been skipped
0a497ca0f1
- Add agent fetchrow to OPC mock to fix "Task or agent not found" errors
- Reorder conversation tracker routes: /search, /stats, /trigger before /{session_id}
- Fix test_task_creator_tracked_in_metadata to expect token username (testuser)
- Mock shutil/psutil in system stats test for non-Synology environments

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy added 1 commit 2026-05-06 01:25:57 +08:00
feat: Phase 13 — off-site backup with rclone + crypt encryption
Run Tests / Secret Detection (pull_request) Failing after 6m45s
Run Tests / Backend Tests (pull_request) Failing after 3m2s
Run Tests / Frontend Tests (pull_request) Failing after 30s
dd64420de1
Adds cloud sync extension to the daily backup script using rclone
with client-side AES-256 encryption. Includes interactive setup
script for configuring OneDrive, Google Drive, or any rclone provider.

- scripts/setup-rclone.sh: interactive NAS rclone installer + config
- scripts/cloud-backup.sh: sourced by backup.sh when CLOUD_ENABLED=true
- backup.sh: cloud sync step runs after local backup

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jimmy merged commit 53f4427040 into main 2026-05-06 01:30:57 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jimmy/nas-tools#59