Commit Graph

220 Commits

Author SHA1 Message Date
q792602257 5d66f2f1ce feat(web): project list and home views 2026-05-01 10:44:29 +08:00
q792602257 f51e29dd89 feat(web): pinia stores for projects and requirements 2026-05-01 10:42:20 +08:00
q792602257 d65155061a feat(web): api client for project/requirement/issue 2026-05-01 10:40:21 +08:00
q792602257 a0087d2c25 feat(app): wire project module and integration test for pm closed loop 2026-05-01 10:36:37 +08:00
q792602257 1567f21a82 style(project): silence remaining lint findings (stutter, max shadow, gosec) 2026-05-01 10:33:16 +08:00
q792602257 76a1461f4b feat(project): http handler with project/requirement/issue endpoints 2026-05-01 10:27:42 +08:00
q792602257 13b4d45868 refactor(project): issue Update tracks changed fields and skips no-op audit 2026-05-01 10:20:42 +08:00
q792602257 ccf4a1c8ee feat(project): IssueService with attach/detach + assign + close/reopen 2026-05-01 10:18:10 +08:00
q792602257 1c3fb186e9 feat(project): RequirementService with phase state machine + close/reopen 2026-05-01 10:13:19 +08:00
q792602257 257e3dca2e feat(project): ProjectService with owner/visibility access control + audit 2026-05-01 09:57:03 +08:00
q792602257 fc6a7745a5 feat(project): postgres repository wrapper with type conversions 2026-05-01 09:50:41 +08:00
q792602257 5f63fb5e52 docs(project): document tri-state DTO semantics in domain.go 2026-05-01 09:46:45 +08:00
q792602257 ce88c4b4a7 chore(sqlc): regenerate cross-package models for project schema 2026-05-01 09:40:02 +08:00
q792602257 f60d30a63d feat(project): domain types and sqlc queries for project/requirement/issue 2026-05-01 09:39:16 +08:00
q792602257 c5ed9e8622 test(errs): cover new project conflict codes in HTTPStatus table 2026-05-01 09:35:18 +08:00
q792602257 f261504c51 feat(project): migration 0002 + errs codes for project/requirement/issue 2026-05-01 09:31:03 +08:00
q792602257 357d08f2e3 fix(web): localStorage safety, default fetch timeout, visibility-aware polling 2026-04-29 12:00:40 +08:00
q792602257 7377c2135f fix(notify): waitgroup-based dispatcher shutdown, withoutcancel persist 2026-04-29 11:55:18 +08:00
q792602257 1e36f21ec4 fix(user): withoutcancel audit, x-forwarded-for client ip 2026-04-29 11:53:06 +08:00
q792602257 0f9c7fa657 fix(server): propagate shutdown error, http timeouts, ctx-aware migrate 2026-04-29 11:52:27 +08:00
q792602257 fc0724fc0b ops(deploy): app healthcheck via wget /healthz 2026-04-29 11:49:21 +08:00
q792602257 3fd6bd82e3 feat(deploy): docker-compose production stack with bootstrap envs 2026-04-29 10:47:00 +08:00
q792602257 fb116de7c8 feat(deploy): multi-stage Dockerfile (web build -> go embed -> alpine runtime) 2026-04-29 10:46:09 +08:00
q792602257 78989a42ac feat(server): embed SPA dist with fallback handler; single-binary deploy 2026-04-29 10:43:42 +08:00
q792602257 04a19dbcef feat(web): notification bell with polling and dropdown 2026-04-29 10:33:53 +08:00
q792602257 b7b9532a5a chore(web): ignore stale .js emit artifacts in test/ and src/ 2026-04-29 10:19:00 +08:00
q792602257 9e3b745da3 fix(web): preserve next on 401, validate redirect target, catch navigation rejections 2026-04-29 10:16:07 +08:00
q792602257 9d93bcd24b feat(web): router with auth guard, AppShell, login + home views 2026-04-29 10:02:45 +08:00
q792602257 3eb595cf5e feat(web): fetch-based api client with 401 handling and tests 2026-04-29 07:49:33 +08:00
q792602257 7c164f6aea feat(web): auth/ui/notifications pinia stores + theme composable 2026-04-29 07:45:20 +08:00
q792602257 35b812e594 chore(web): eslint flat-config + prettier setup 2026-04-29 07:41:51 +08:00
q792602257 aef7b0b661 feat(web): vite + vue 3 + ts + tailwind + naive ui scaffolding 2026-04-29 07:32:32 +08:00
q792602257 b72de98f15 test(app): integration test for login -> dispatch -> list flow 2026-04-28 23:18:27 +08:00
q792602257 cb865beabf fix(server): explicit discard of fmt.Fprintln return values for errcheck 2026-04-28 23:12:43 +08:00
q792602257 acf8596f23 feat(server): wire config + signal-aware app entrypoint 2026-04-28 23:11:29 +08:00
q792602257 d0f34e4e5e feat(app): composition root with migrate, pool, modules, router, bootstrap 2026-04-28 23:08:38 +08:00
q792602257 62cf9ffa0c feat(user): wire audit recorder into login/logout 2026-04-28 23:02:09 +08:00
q792602257 f42b88e57d feat(audit): recorder with pg implementation and ip parsing 2026-04-28 22:53:22 +08:00
q792602257 0b323b91ee feat(notify): http handler for inbox list / unread count / mark read 2026-04-28 22:37:19 +08:00
q792602257 13032c1192 feat(notify): dispatcher with sync persist and async channel fanout 2026-04-28 22:33:14 +08:00
q792602257 83c63c5f93 feat(notify): dummy notifier writing structured log lines 2026-04-28 22:28:47 +08:00
q792602257 d9a8c04195 feat(notify): postgres repository for notifications inbox 2026-04-28 22:25:23 +08:00
q792602257 f25078dc8c feat(notify): sqlc queries for notifications crud 2026-04-28 22:18:41 +08:00
q792602257 32e313d5f7 feat(notify): channel/severity types and Notifier interface 2026-04-28 18:07:19 +08:00
q792602257 e0a7018226 feat(user): http handler for login/me/logout with middleware integration 2026-04-28 18:02:09 +08:00
q792602257 c6c4edcd14 feat(user): service with login/logout/resolve/bootstrap (with unit tests) 2026-04-28 17:51:50 +08:00
q792602257 2141ddafe1 feat(user): postgres repository wrapping sqlc queries 2026-04-28 17:45:49 +08:00
q792602257 42d44800b6 feat(user): sqlc queries for users and sessions 2026-04-28 17:40:30 +08:00
q792602257 62ff9ed1fe feat(user): session token generator with sha256 storage hash 2026-04-28 15:50:47 +08:00
q792602257 da316725fc feat(user): argon2id password hashing helpers 2026-04-28 15:46:23 +08:00