Commit Graph

28 Commits

Author SHA1 Message Date
vasyansk 1a451f9dbb feat(web): React SPA with realtime task detail over WebSocket
Vite + React 19 + TS console-style operator UI: hash-routed Login,
Endpoints, Tasks, and TaskDetail (realtime accounts table over /ws,
Run gated on all accounts testing ok on both sides).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMHQTtnQtQqL8muAXHr9kd
2026-07-01 19:01:05 +07:00
vasyansk 4c57848c35 fix(httpapi): detect ws client disconnect via CloseRead to prevent subscriber leak
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMHQTtnQtQqL8muAXHr9kd
2026-07-01 18:47:54 +07:00
vasyansk 9ec6acd414 feat(httpapi): websocket, router, embed static, main entrypoint 2026-07-01 18:37:48 +07:00
vasyansk 0bd4ba37e3 fix(httpapi): fail CSV import on encryption error instead of storing empty passwords 2026-07-01 18:33:09 +07:00
vasyansk bb83bbd989 feat(httpapi): REST resources for endpoints/tasks/accounts/csv/run 2026-07-01 18:27:11 +07:00
vasyansk 839febb83a fix(httpapi): bind session token to current AuthUser; add negative auth tests
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMHQTtnQtQqL8muAXHr9kd
2026-07-01 18:24:35 +07:00
vasyansk cae124931d feat(httpapi): env-based login and session auth middleware 2026-07-01 18:19:57 +07:00
vasyansk f9f01b981b fix(csvimport): report accurate physical line numbers via FieldPos; add blank-line + zero-row tests 2026-07-01 18:17:54 +07:00
vasyansk 7fe8896f4b feat(csvimport): validated CSV account parser 2026-07-01 18:12:57 +07:00
vasyansk 2def11a870 fix(orchestrator): reuse src connection to list folders instead of extra TestLogin 2026-07-01 18:10:52 +07:00
vasyansk 8c871d9d26 feat(orchestrator): worker pool run + account testing gate 2026-07-01 18:04:44 +07:00
vasyansk ec8835538b feat(wshub): per-task event hub with non-blocking publish 2026-07-01 17:59:43 +07:00
vasyansk a54ec1d148 fix(imapx): preserve source internal date on APPEND 2026-07-01 17:57:12 +07:00
vasyansk 06c0598b80 feat(imapx): streaming per-folder copy with dedup, idempotent 2026-07-01 17:39:43 +07:00
vasyansk 79f5c5b93a fix(imapx): honor context in Connect with bounded dial retry 2026-07-01 17:28:10 +07:00
vasyansk 0451b79c64 feat(imapx): connect, endpoint test, login test with folder listing 2026-07-01 17:20:03 +07:00
vasyansk 37cb8ba076 feat(imapx): message dedup key (Message-ID + header fallback) 2026-07-01 17:03:18 +07:00
vasyansk 67a2367baa feat(store): tasks, accounts, runs, dedup journal 2026-07-01 16:58:33 +07:00
vasyansk 0cf9de38c4 fix(store): close pool on failed Ping; add ListEndpoints test 2026-07-01 16:55:24 +07:00
vasyansk 420358b558 feat(store): pgx pool and endpoints CRUD 2026-07-01 16:50:45 +07:00
vasyansk edda3dc21f feat(db): initial schema migration 2026-07-01 16:42:39 +07:00
vasyansk 0b9d31bd15 feat(crypto): HMAC signed session tokens 2026-07-01 16:37:56 +07:00
vasyansk 06d601482c fix(crypto): enforce 32-byte key for AES-256 2026-07-01 16:36:19 +07:00
vasyansk 8d4a605b9f feat(crypto): AES-256-GCM password encryption 2026-07-01 16:33:13 +07:00
vasyansk 0dfe39565e fix(config): pin go directive to 1.22 for build portability 2026-07-01 16:31:11 +07:00
vasyansk 0d42eb2db0 feat(config): env-based configuration with validation 2026-07-01 16:27:31 +07:00
vasyansk 353f1e9dd3 docs: implementation plan for imap-copier
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMHQTtnQtQqL8muAXHr9kd
2026-07-01 16:23:40 +07:00
vasyansk 0e7736f613 docs: design spec for imap-copier
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMHQTtnQtQqL8muAXHr9kd
2026-07-01 16:16:14 +07:00