XingfenD
|
193d7612b5
|
feat(backend): directory scanner — diff, error state, covers, cache sweep, redis lock
|
2026-09-05 00:31:32 +08:00 |
|
XingfenD
|
4e84a8aeb7
|
feat(backend): immutable cache dir scheme + stale sweep
|
2026-09-05 00:23:57 +08:00 |
|
XingfenD
|
b02ca67d16
|
feat(backend): cover extraction for cbz and epub (opf cover-image/meta)
|
2026-09-05 00:23:02 +08:00 |
|
XingfenD
|
589cb210bb
|
feat(backend): zip page index with natural sort, zip-slip rejection, content hash
|
2026-09-05 00:22:13 +08:00 |
|
XingfenD
|
ed4ee2458f
|
feat(backend): user + library admin API, atomic sanitized upload
|
2026-09-05 00:16:33 +08:00 |
|
XingfenD
|
51735680e0
|
test(backend): setupAPI points BooksDir at os.TempDir and resets shared loginrl key
|
2026-09-05 00:16:33 +08:00 |
|
XingfenD
|
18e31396f3
|
fix(backend): login timing-guard uses a valid bcrypt hash so the compare actually runs
|
2026-09-04 23:59:39 +08:00 |
|
XingfenD
|
bc88cabc47
|
feat(backend): jwt middleware, login with redis rate limit, /auth/me
|
2026-09-04 23:58:26 +08:00 |
|
XingfenD
|
a2f202ada6
|
fix(backend): seed admin tolerates only unique-violation, propagates other errors
|
2026-09-04 23:54:48 +08:00 |
|
XingfenD
|
a20b32fe26
|
docs(plan): test suite command uses -p 1 (shared-PG destructive fixtures race)
|
2026-09-04 23:54:03 +08:00 |
|
XingfenD
|
b224288dae
|
feat(backend): bcrypt+jwt auth package and admin seeding
|
2026-09-04 23:50:52 +08:00 |
|
XingfenD
|
c1761d0f3e
|
feat(backend): pg schema + store queries incl. path-keyed progress
|
2026-09-04 23:48:05 +08:00 |
|
XingfenD
|
d4972d6d4c
|
docs(plan): fix unclosed code fence in Task 2, bump api build image to golang:1.26
|
2026-09-04 23:43:19 +08:00 |
|
XingfenD
|
ad934d9812
|
feat(backend): module scaffold, config, gin router with healthz
|
2026-09-04 23:39:31 +08:00 |
|
XingfenD
|
2458c9ca4d
|
docs: book-comic-library spec + backend implementation plan
|
2026-09-04 23:36:04 +08:00 |
|