Commit Graph

539 Commits

Author SHA1 Message Date
Gan, Jimmy c162164528 fix: add dev dashboard caddy route
Add a dedicated dev.nas.jimmygan.com reverse proxy entry so the dev dashboard can be reached through the VPS Caddy configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 11:50:56 +08:00
jimmy 73e4feb2c3 Merge pull request 'fix: clarify blocked security events' (#29) from dev into main
Deploy Dashboard / deploy (push) Successful in 48s
2026-03-07 11:48:36 +08:00
Gan, Jimmy 175ebeede4 fix: sync dashboard page query state
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Successful in 17m2s
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m48s
Keep the selected dashboard page in sync with lightweight URL query params so direct terminal links can land on the right page without exposing extra client state.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 11:02:53 +08:00
Gan, Jimmy c8255dccec fix: add tmux to claude-dev tooling
Add tmux to the claude-dev runtime contract so persistent terminal sessions can rely on it, and make the Claude preflight patch resilient to current CLI builds so image builds keep passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 11:00:58 +08:00
jimmy bab7fddb90 Merge pull request 'fix: raise terminal per-user session cap' (#28) from dev into main
Deploy Dashboard / deploy (push) Successful in 58s
2026-03-07 10:45:38 +08:00
Gan, Jimmy 1b9ea140b6 fix: raise terminal per-user session cap
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m44s
Allow more concurrent dashboard terminal tabs per user and use the current access token for websocket reconnects so refreshed sessions keep working.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 10:37:08 +08:00
Gan, Jimmy 6067857dad fix: clarify blocked security events
Deploy Dashboard (Dev) / deploy-dev (push) Has started running
Label unauthorized security events as blocked and highlight likely scanner probes so the log view is easier to interpret during investigations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 10:36:37 +08:00
jimmy 6e751ef92f Merge pull request 'fix: add security log investigation filters' (#27) from dev into main
Deploy Dashboard / deploy (push) Successful in 1m18s
2026-03-07 10:14:41 +08:00
Gan, Jimmy 35a3019e0d fix: add security log investigation filters
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m22s
Add server-side IP and date range filtering for security logs so investigations can narrow events without relying on client-side filtering alone.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-07 09:59:59 +08:00
jimmy 23598a5af1 Merge pull request 'fix: harden dashboard auth and terminal flows' (#26) from dev into main
Deploy Dashboard / deploy (push) Successful in 3m38s
2026-03-07 09:52:53 +08:00
Gan, Jimmy 44f0ed5d04 fix: harden dashboard auth and terminal flows
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m29s
Tighten terminal websocket auth and proxy trust handling while making file-backed auth/RBAC writes atomic to reduce high-impact security and persistence risks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 23:53:58 +08:00
jimmy 9252f5d28a Merge pull request 'fix: keep terminal sessions alive' (#25) from dev into main
Deploy Dashboard / deploy (push) Successful in 1m41s
2026-03-06 16:49:53 +08:00
Gan, Jimmy c9f06fbbbb fix: keep terminal sessions alive
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m23s
Add WebSocket and SSH keepalives so idle dashboard terminal sessions stay connected across proxies and long-running idle periods.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 16:11:43 +08:00
jimmy 77c676c566 Merge pull request 'Merge dev into main' (#24) from dev into main
Deploy Dashboard / deploy (push) Successful in 57s
2026-03-06 15:21:10 +08:00
Gan, Jimmy aaabb8a373 fix: sync terminal page with dashboard theme
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m43s
Make terminal tabs, controls, and xterm colors follow the global light/dark theme so terminal UI stays visually consistent with the rest of the dashboard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 10:51:53 +08:00
jimmy 161f43528a Merge pull request 'Merge dev into main' (#23) from dev into main
Deploy Dashboard / deploy (push) Successful in 42s
2026-03-06 09:21:19 +08:00
Gan, Jimmy b0f66f9650 fix: show terminal close reason in UI
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m47s
Display websocket close reason text (or close code fallback) in terminal tabs so SSH/session failures are diagnosable without checking backend logs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 09:15:48 +08:00
jimmy 0de936b920 Merge pull request 'Merge dev into main' (#22) from dev into main
Deploy Dashboard / deploy (push) Failing after 2m4s
2026-03-06 08:54:32 +08:00
Gan, Jimmy 61a3d0ae4b fix: sync dashboard compose files during CI deploy
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 7m55s
Ensure dashboard deploy workflows copy tracked compose files into /nas-dashboard before docker compose up, so new SSH host mounts/envs (like Mac terminal) actually reach runtime.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 08:43:01 +08:00
Gan, Jimmy 4f95f0249d feat: add Mac host to dashboard terminal
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m15s
Add a dedicated Mac terminal target with separate SSH host/user/key settings and mount a dedicated Mac key file for dashboard containers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 08:32:54 +08:00
jimmy 4af7bc4946 docs: add environment handoff plan and blockers
Document completed analysis, implemented LiteLLM networking fix context, and current environment blockers so a more capable environment can resume and finish validation/merge.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 15:30:19 +00:00
Claude Code da88513456 fix: keep dashboard terminal sessions alive
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m5s
Remove backend idle timeout enforcement so terminal sessions persist until the UI disconnects or the SSH process ends.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 05:48:14 +00:00
jimmy c29bda76f3 fix: support image drop and paste in terminal
Allow drag/drop and clipboard image paste in the dashboard terminal so users can quickly upload images into the active shell session, with a visible hint for discoverability.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 05:48:10 +00:00
jimmy a496e7f3bc Merge pull request 'Merge dev into main' (#21) from dev into main
Deploy Dashboard / deploy (push) Successful in 1m55s
2026-03-03 09:32:51 +08:00
Gan, Jimmy b74d45c621 fix: keep terminal route mounted across page switches
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 4m9s
Keep the Terminal component mounted and toggle visibility via CSS so tab state and WebSocket sessions persist when navigating between sidebar pages, while preserving existing per-tab close and full teardown cleanup behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 09:28:17 +08:00
jimmy b4d79918be Merge pull request 'Merge dev into main' (#20) from dev into main
Deploy Dashboard / deploy (push) Successful in 1m12s
2026-03-03 02:30:11 +08:00
Gan, Jimmy c49d34210d fix: remove stale claude-dev container before deploy
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Successful in 1m58s
Delete any existing claude-dev container before compose up so name conflicts do not block CI deployment.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 02:11:52 +08:00
Gan, Jimmy b384b2f462 fix: ensure claude-dev runtime directory exists before snapshot
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 1m45s
Create /claude-dev-runtime before writing previous-image.txt so post-build record step does not fail when the bind path is absent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 02:05:52 +08:00
Gan, Jimmy cb2a842ab6 fix: remove slow server2 preload from claude-dev deploy workflow
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 18m54s
Drop the server2 preload stage and rely on direct docker build pulls to avoid long-running preload stream stalls in CI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 01:42:30 +08:00
Gan, Jimmy a683321d92 fix: remove chmod on read-only mounted preload key
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 11m51s
Drop chmod on the read-only mounted server2 SSH key so preload can execute without failing the workflow before the SSH attempt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 01:30:01 +08:00
Gan, Jimmy d7b2cb3885 fix: mount SSH key for server2 preload in runner job
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 29s
Mount a read-only SSH key into the claude-dev deploy runner container and use it explicitly for server2 preload so the fast-path image transfer can authenticate.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 01:22:24 +08:00
Gan, Jimmy 8c23aabd97 fix: make claude-dev preload non-blocking in CI
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Has started running
Treat server2 preload as best-effort so missing SSH keys do not fail deployment; fall back to normal registry pull during image build.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 01:02:06 +08:00
Gan, Jimmy 88c378594e fix: use explicit server2 SSH target in claude-dev preload
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 24s
Replace the runner-only host alias with an explicit SSH user@host so the preload step can resolve and stream the base image tar reliably.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 00:59:00 +08:00
Gan, Jimmy 19001edfbd fix: speed up claude-dev base image availability
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 33s
Switch claude-dev to node:20-bookworm-slim and preload the base image from server2 in CI to avoid slow pulls on the NAS runner.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 00:56:02 +08:00
Gan, Jimmy ce061c1977 fix: scope deploy triggers and cancel stale workflow runs
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Waiting to run
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m9s
Limit workflow path triggers to each workflow file, add concurrency groups to cancel outdated runs, and checkout the exact triggering SHA for deterministic deploys.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 00:28:02 +08:00
jimmy fa8f12f67a Merge pull request 'Merge dev into main' (#19) from dev into main
Deploy Dashboard / deploy (push) Successful in 2m46s
2026-03-03 00:18:14 +08:00
Gan, Jimmy d8e6f5716a feat: add cc-connect start/stop controls
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
Add backend start/stop endpoints and wire cc-connect UI controls to toggle container state with post-action health refresh and clear error handling.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-03 00:11:53 +08:00
Gan, Jimmy 755a0b6ae9 feat: add CI-gated claude-dev image package
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Has started running
Define claude-dev capabilities as a tested contract and deploy immutable tags only after smoke checks so daily tooling upgrades remain CI-first and rollback-safe.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 23:40:44 +08:00
Gan, Jimmy a91a1132c9 feat: add info engine MVP pipeline and dashboard page
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m10s
Introduce a standalone scheduled info-engine worker with SQLite persistence and expose read-only dashboard APIs/UI so curated intelligence items can be collected and viewed with minimal architecture changes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 23:35:10 +08:00
Gan, Jimmy 14965c7e03 feat: add cc-connect dashboard health integration
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m49s
Add a protected backend health endpoint and a new dashboard page/sidebar entry so cc-connect operational status is visible in the UI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 23:24:03 +08:00
jimmy 2a5d8c77e8 Merge pull request 'Merge dev into main (docs sync)' (#18) from dev into main 2026-03-02 04:01:39 +08:00
Gan, Jimmy e76f15c432 docs: mark LiteLLM phase tasks complete
Update Phase 14 checklist to reflect completed LiteLLM scaffold, health probe, networking, auth-aware health checks, and dashboard status UI delivery.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 04:01:01 +08:00
jimmy d8b8944234 Merge pull request 'Merge dev into main' (#17) from dev into main
Deploy Dashboard / deploy (push) Successful in 1m1s
2026-03-02 03:56:49 +08:00
Gan, Jimmy 910ed3f7e6 feat: add LiteLLM health page to dashboard
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m45s
Expose LiteLLM operational status in the NAS Dashboard UI so auth-required and outage states are visible without calling backend APIs directly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 03:50:56 +08:00
Gan, Jimmy 56743d1cf4 fix: make LiteLLM health probe auth-aware
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m4s
Allow the dashboard health check to include optional LiteLLM auth headers and treat unauthenticated 401 responses as an auth-required healthy state.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 03:38:25 +08:00
Gan, Jimmy 9bae5a62a5 fix: attach litellm to shared dashboard network
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m34s
Connect LiteLLM to nas-dashboard_internal and point dashboard-dev to the litellm container hostname so health probes work without host-loopback routing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 03:31:44 +08:00
Gan, Jimmy 6cabbd6c59 fix: set dev dashboard LiteLLM URL to host gateway
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m52s
Point dashboard-dev LiteLLM health checks at host.docker.internal so the container can reach the NAS LiteLLM service bound on localhost.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 03:23:01 +08:00
Gan, Jimmy 76c10a6c07 fix: use compose-compatible env_file format
Switch env_file declarations back to string list syntax so Synology's docker compose parser accepts the LiteLLM and cc-connect compose files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 01:11:58 +08:00
Gan, Jimmy ed4090a910 feat: add LiteLLM gateway scaffold and dashboard health probe
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m11s
Introduce a localhost-only LiteLLM service template and expose a protected dashboard health endpoint for operational visibility, while adding cc-connect mobile bridge templates with conservative defaults.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-02 01:08:12 +08:00
jimmy aac297ab3e Merge pull request 'merge dev into main: sidebar network link fixes' (#16) from dev into main
Deploy Dashboard / deploy (push) Successful in 41s
2026-03-01 22:57:15 +08:00