Commit Graph

402 Commits

Author SHA1 Message Date
Gan, Jimmy 6cffc1f9ff fix: update OPC routers to use request.state.user instead of Depends(_inject_user) 2026-04-02 00:45:26 +08:00
Gan, Jimmy 5cfb92cfc6 fix: revert to original _inject_user in main.py, ensure it runs before require_page 2026-04-02 00:34:25 +08:00
Gan, Jimmy ab5f824fea fix: remove duplicate _inject_user from main.py, use the one from rbac module 2026-04-02 00:30:37 +08:00
Gan, Jimmy e46003711b fix: make RBAC dependencies properly chain _inject_user for OPC authorization 2026-04-02 00:25:32 +08:00
Gan, Jimmy 213d0e897c fix: add Authelia groups to RBAC role mapping for OPC access
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 2m1s
Run Tests / Backend Tests (push) Failing after 1m41s
Run Tests / Frontend Tests (push) Failing after 16m23s
Run Tests / Test Summary (push) Failing after 4m8s
2026-04-02 00:02:26 +08:00
Gan, Jimmy 2112d84051 fix: correct import paths and syntax in frontend tests
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m22s
Run Tests / Backend Tests (push) Failing after 1m10s
Run Tests / Frontend Tests (push) Failing after 6m4s
Run Tests / Test Summary (push) Failing after 41s
2026-03-31 19:05:13 +08:00
Gan, Jimmy 7ad4095ad6 fix: add exit code validation to test workflow to properly fail on test failures
Run Tests / Backend Tests (push) Has started running
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-03-31 19:03:53 +08:00
Gan, Jimmy 7b82f7aa25 fix: add GITEA_DB_PASSWORD env var for OPC database connection
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m37s
Run Tests / Backend Tests (push) Successful in 49s
Run Tests / Frontend Tests (push) Failing after 5m32s
Run Tests / Test Summary (push) Failing after 40s
2026-03-31 18:17:00 +08:00
Gan, Jimmy 263c518b70 fix: correct _inject_user signature to avoid circular import
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m50s
Run Tests / Backend Tests (push) Successful in 49s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
2026-03-31 17:55:54 +08:00
Gan, Jimmy e8f1373b41 fix: add _inject_user to rbac module for OPC routers
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 2m14s
Run Tests / Backend Tests (push) Successful in 55s
Run Tests / Frontend Tests (push) Failing after 8m12s
Run Tests / Test Summary (push) Failing after 1m42s
2026-03-31 16:40:40 +08:00
Gan, Jimmy f28b8caf36 ci: retry test workflow after network timeout
Run Tests / Backend Tests (push) Failing after 1m44s
Run Tests / Frontend Tests (push) Failing after 16m27s
Run Tests / Test Summary (push) Successful in 6m15s
2026-03-31 15:36:55 +08:00
Gan, Jimmy 084148ed32 fix: add SECRET_KEY environment variable to test workflow
Run Tests / Backend Tests (push) Failing after 1m39s
Run Tests / Frontend Tests (push) Failing after 43s
Run Tests / Test Summary (push) Failing after 41s
2026-03-31 15:30:55 +08:00
Gan, Jimmy 252b94aece feat: complete Phase 1 MVP - add agent panel, email notifications, and PDF invoicing
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 24m36s
Run Tests / Backend Tests (push) Successful in 10m13s
Run Tests / Frontend Tests (push) Failing after 22s
Run Tests / Test Summary (push) Failing after 41s
Agent Panel UI:
- Visual dashboard showing all agents with status (idle/working)
- Agent cards with stats: total tasks, completed tasks
- Capabilities display for each agent
- Execution log showing recent agent activity
- Real-time updates (refreshes every 10 seconds)
- Click agent to filter execution log
- Status indicators: pending, running, completed, failed, pending_approval

Email Notifications:
- SMTP email service with HTML templates
- Task assignment notifications
- Agent approval request emails with action details
- Agent completion notifications
- Configurable via environment variables (SMTP_HOST, SMTP_USER, SMTP_PASSWORD, SMTP_TO)
- Integrated with agent executor service

PDF Invoice Generation:
- Professional PDF invoices using ReportLab
- Generate from time entries by project
- Client information and company branding
- Itemized time entries with hours, rates, amounts
- Automatic totals calculation
- Download as PDF attachment
- API endpoints: /api/opc/invoices/generate
- Projects and clients management endpoints

Additional Features:
- Projects CRUD API
- Clients CRUD API
- Project time tracking summary
- Billable vs non-billable hours tracking

Phase 1 MVP 100% Complete:
 PostgreSQL database with full schema
 Task CRUD API with automatic time tracking
 Kanban board with drag-and-drop
 Agent executor service with LLM integration
 WebSocket real-time updates
 3 core agents (PM, CTO, COO)
 Agent panel UI with execution logs
 Email notifications (Telegram + Email)
 PDF invoice generation

All 12 tasks completed!
2026-03-31 14:52:42 +08:00
Gan, Jimmy 1422cc9bc8 feat: complete Phase 1 MVP - add agent executor and WebSocket real-time updates
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Agent Executor Service:
- BaseAgent class with LLM integration via LiteLLM proxy
- AgentExecutor service that processes pending executions every 5 seconds
- Action execution: create_subtask, update_status, send_notification, add_comment
- Approval workflow: CxO level agents require user approval before execution
- Telegram notifications for approvals and completions
- Error handling and execution status tracking

WebSocket Real-Time Updates:
- WebSocket endpoint at /ws/opc for real-time task updates
- ConnectionManager for broadcasting to all connected clients
- Frontend WebSocket client with auto-reconnect
- Live updates for task create/update/move/delete actions
- Agent execution status broadcasts

Integration:
- Agent executor starts on dashboard startup
- Task router broadcasts WebSocket updates on all mutations
- Frontend OPC page subscribes to WebSocket and updates UI in real-time
- Agents (PM, CTO, COO) can now execute tasks autonomously

Phase 1 MVP Complete:
 PostgreSQL database with full schema
 Task CRUD API with automatic time tracking
 Kanban board with drag-and-drop
 Agent executor service with LLM integration
 WebSocket real-time updates
 3 core agents ready to execute

Next: Agent panel UI, email notifications, PDF invoicing
2026-03-31 14:46:44 +08:00
Gan, Jimmy fc0bb2979b fix: use lazy initialization for Docker clients in cc_connect and security routers
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-03-31 14:32:47 +08:00
Gan, Jimmy 1ca019fa48 feat: add OPC (One Person Company) management system with Kanban board
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Phase 1 MVP implementation:
- PostgreSQL database schema for tasks, agents, executions, time tracking
- Backend API: task CRUD, agent management, automatic time tracking
- Frontend: Kanban board with drag-and-drop (Parking Lot → In Progress → Done)
- Task modal for creating/editing tasks with tags, priority, assignee
- 3 core agents seeded: PM, CTO, COO
- Agent approval workflow: CxO level requires approval, others auto-execute
- Automatic time tracking: starts on in_progress, stops on done
- RBAC integration: OPC page accessible to admin/member roles

Features:
- Drag-and-drop tasks between columns
- Assign tasks to humans or AI agents
- Priority badges (low, medium, high, urgent)
- Tags and due dates
- Task history tracking
- Time entry tracking with automatic timer
- Agent execution records with approval workflow

Next steps:
- Initialize OPC database on NAS
- Implement agent executor service
- Add WebSocket for real-time updates
- Add email notifications
- Add PDF invoice generation
2026-03-31 14:31:31 +08:00
Gan, Jimmy 51c4cd1a4e test: disable coverage and add timeouts to identify slow/hanging tests
Run Tests / Backend Tests (push) Failing after 1m41s
Run Tests / Frontend Tests (push) Failing after 44s
Run Tests / Test Summary (push) Failing after 16m47s
2026-03-31 13:45:44 +08:00
Gan, Jimmy 3169185999 fix: use lazy initialization for Docker client to prevent hanging in test environment
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m48s
Run Tests / Backend Tests (push) Failing after 1h1m15s
Run Tests / Frontend Tests (push) Failing after 16m38s
Run Tests / Test Summary (push) Successful in 11m37s
2026-03-31 11:57:14 +08:00
Gan, Jimmy 01344e8b2d test: add basic diagnostic tests to validate CI environment
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 2m37s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-03-31 11:38:44 +08:00
Gan, Jimmy c98db64f32 ci: add test output capture and display in workflow summary
Run Tests / Backend Tests (push) Failing after 6m37s
Run Tests / Frontend Tests (push) Failing after 1m6s
Run Tests / Test Summary (push) Failing after 16m48s
2026-03-31 11:07:46 +08:00
Gan, Jimmy c538dff773 fix: use ubuntu-latest runner label for test workflow
Run Tests / Backend Tests (push) Failing after 9m1s
Run Tests / Frontend Tests (push) Failing after 40s
Run Tests / Test Summary (push) Failing after 6m24s
2026-03-30 12:40:02 +08:00
Gan, Jimmy 37f6c821d1 chore: trigger test workflow
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-03-30 12:33:37 +08:00
Gan, Jimmy b1f0af75bb ci: enable test workflow on dev branch
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-03-30 11:27:36 +08:00
Gan, Jimmy 5846fe97f4 docs: trigger test workflow 2026-03-30 11:26:56 +08:00
Gan, Jimmy 6e6530af31 chore: merge main into dev - add testing infrastructure
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 10m26s
2026-03-30 11:20:41 +08:00
jimmy 0c9a281990 Merge pull request 'feat: Add comprehensive unit and integration testing infrastructure' (#38) from feature/add-testing-infrastructure into main
Deploy Dashboard / deploy (push) Successful in 12m6s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
2026-03-30 11:19:19 +08:00
Gan, Jimmy 8431920d26 feat: add comprehensive unit and integration testing infrastructure
Run Tests / Backend Tests (pull_request) Has been cancelled
Run Tests / Frontend Tests (pull_request) Has been cancelled
Run Tests / Test Summary (pull_request) Has been cancelled
- Backend: pytest with unit tests (auth, rbac, config) and integration tests (auth flow, docker, files)
- Frontend: vitest with unit tests (api client) and component tests (login)
- CI: Gitea Actions workflow for automated testing with coverage reports
- Documentation: TESTING.md guide with setup, usage, and best practices
- Coverage goals: 80%+ backend, 70%+ frontend
2026-03-30 11:11:39 +08:00
Gan, Jimmy 99b626eadc fix: add 60s timeout to registry mirror pre-pull to prevent CI hang 2026-03-20 01:04:14 +08:00
Gan, Jimmy 0c45efc0ca fix: terminal auth — skip pre-emptive refresh, always refresh on app load for fresh cookies 2026-03-20 01:04:14 +08:00
Gan, Jimmy 59da4eb9f9 fix: explicitly disable ML URL to prevent OCR job failures 2026-03-20 01:04:14 +08:00
Gan, Jimmy 24cb173caf fix: remove ffmpeg thread limit causing SIGSEGV in Immich 2026-03-20 01:04:14 +08:00
Gan, Jimmy 4eae0dca2f fix: correct tea download URL in Dockerfile 2026-03-20 01:04:14 +08:00
Gan, Jimmy 31d2ba2256 fix: add 60s timeout to registry mirror pre-pull to prevent CI hang
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 12m29s
2026-03-20 00:47:53 +08:00
Gan, Jimmy d50d6a1b71 fix: terminal auth — skip pre-emptive refresh, always refresh on app load for fresh cookies
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
2026-03-20 00:21:25 +08:00
Gan, Jimmy b8406c1252 fix: explicitly disable ML URL to prevent OCR job failures 2026-03-16 00:07:26 +08:00
Gan, Jimmy 512c8653a1 fix: remove ffmpeg thread limit causing SIGSEGV in Immich 2026-03-15 23:45:08 +08:00
Gan, Jimmy ae8cf65e84 fix: correct tea download URL in Dockerfile
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Successful in 1h4m53s
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m9s
2026-03-15 23:28:26 +08:00
jimmy 69a198f723 Harden terminal WebSocket edge cases
Deploy Dashboard / deploy (push) Successful in 1m1s
Merge pull request #37: Harden terminal WebSocket edge cases
2026-03-15 23:22:08 +08:00
Gan, Jimmy b742ab8fef fix: harden terminal WebSocket edge cases
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m44s
- Wrap tryRefreshSession in try-finally to ensure authRecoveryInFlight is always reset
- Fix variable scope issue: use const tabState instead of reassigning d
- Add error handling for process.stdin.write() to catch BrokenPipeError/OSError
- Verify WebSocket instance before closing in ping timeout callback
- Properly await conn.wait_closed() to prevent SSH connection leaks
- Gracefully cancel and wait for read_task with 2s timeout

These fixes prevent race conditions, resource leaks, and improve error recovery.
2026-03-15 23:18:20 +08:00
Gan, Jimmy d19707422d feat: add tea (Gitea CLI) to claude-dev tooling
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 40s
2026-03-15 23:00:57 +08:00
jimmy 427decc83a Merge dev to main
Deploy Dashboard / deploy (push) Successful in 1m49s
Merge pull request #36: Immich and Terminal fixes
2026-03-15 22:50:18 +08:00
Gan, Jimmy 9929567679 fix: bind Immich to 0.0.0.0 to allow Tailscale access 2026-03-15 00:29:45 +08:00
Gan, Jimmy d0078f7e9d fix: update Immich healthcheck to use curl and limit ffmpeg threads 2026-03-15 00:22:05 +08:00
Gan, Jimmy d69b744ae7 fix: resolve variable redeclaration in Terminal.svelte
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m50s
Change 'const d' to 'let d' to allow reassignment in nested scopes
2026-03-13 22:45:55 +08:00
Gan, Jimmy 7b17a53cab fix: resolve terminal WebSocket auth failures and improve reconnection
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m8s
- Remove insecure query token parameter from backend (cookie-only auth)
- Add detailed JWT error logging (expired, invalid, missing tokens)
- Force token refresh before first WebSocket connection
- Stop reconnection after 3 consecutive auth failures
- Increase ping interval from 12s to 30s (reduce traffic)
- Increase pong timeout from 5s to 10s (handle network latency)
- Show attempt counter in reconnection error messages

Root cause: Frontend was reconnecting with 6-day-old expired token,
causing 403 rejections. Now ensures fresh cookies before connecting.
2026-03-13 22:26:22 +08:00
Gan, Jimmy 00b5d362e7 debug: add detailed logging for terminal WebSocket connections
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m35s
2026-03-12 00:23:23 +08:00
jimmy 0d251a09be fix: add pong/timeout detection to prevent silent connection hangs
Deploy Dashboard / deploy (push) Successful in 49s
Merge pull request #35: Fix pong/timeout detection
2026-03-11 23:58:36 +08:00
Gan, Jimmy e0f432bc39 fix: add pong/timeout detection to prevent silent connection hangs
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m2s
- Backend now responds to __ping__ with __pong__
- Frontend detects missing pong within 5s and closes connection
- This triggers proper reconnect/auth recovery instead of hanging
- Fixes 'keepalive ping timeout' issue where connection appears alive but is dead
2026-03-11 23:55:51 +08:00
jimmy 51ad3bfe5b fix: improve terminal robustness with exponential backoff and better keepalive
Deploy Dashboard / deploy (push) Successful in 1m43s
Merge pull request #34: Terminal robustness improvements
2026-03-11 23:34:36 +08:00
Gan, Jimmy 74100c8882 fix: change WebAuthn RP_ID to jimmygan.com to support all subdomains
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m0s
2026-03-11 01:43:19 +08:00