Admin
2f0857be45
test: add integration tests for storage, server, and scrape+store flows
...
- scraper/internal/storage/integration_test.go: MinioClient and PocketBaseStore
integration tests covering chapter/audio round-trips, presign URLs, book
metadata, chapter index, ranking, progress, and audio cache CRUD
- scraper/internal/storage/hybrid_integration_test.go: HybridStore end-to-end
tests for metadata, chapters, ranking, progress, presign, and audio cache
- scraper/internal/storage/scrape_integration_test.go: live Browserless + storage
tests that scrape book metadata and first 3 chapters, store them, and verify
the round-trip via HybridStore
- scraper/internal/server/integration_test.go: HTTP server functional tests for
health, scrape status, presign chapter, reading progress, and chapter-text
endpoints against real MinIO + PocketBase backends
- justfile: task runner at repo root with recipes for build, test, lint, UI,
docker-compose, and individual service management
2026-03-03 14:54:43 +05:00
Admin
bf5774d8d0
feat(ui): add structured JSON logging to all server-side routes and lib
...
Introduces a logger.ts module emitting slog-compatible JSON lines to stderr.
Replaces silent catch blocks and console.error calls throughout minio.ts,
pocketbase.ts, hooks.server.ts, login, books, browse, and all API routes so
auth/registration failures, MinIO presign errors, and scraper proxy failures
are now visible in container logs.
2026-03-03 14:34:48 +05:00
Admin
5131ae0bc4
feat(ui): update nav — show Browse link, username, and Sign out when logged in
2026-03-03 14:03:32 +05:00
Admin
9fa0776258
feat(ui): add /browse page and /api/scrape proxy route
...
- /browse calls GET /api/browse on the scraper and renders a novel grid mirroring the
novelfire layout: cover, rank/rating badges, chapter count, genre/sort/status filters,
and pagation controls
- Scrape buttons are shown only to admin users; clicking enqueues the book via /api/scrape
- /api/scrape is an admin-only SvelteKit server route that proxies POST requests to the
Go scraper's /scrape/book or /scrape endpoints; returns 403 for non-admins
2026-03-03 14:03:27 +05:00
Admin
f265d9d020
feat(scraper): add GET /api/browse and GET /api/scrape/status endpoints
...
- GET /api/browse fetches novelfire.net catalogue page and parses it with golang.org/x/net/html;
returns JSON {novels, page, hasNext} with per-novel slug/title/cover/rank/rating/chapters/url.
Supports page, genre, sort, status query params.
- GET /api/scrape/status returns {"running": bool} for polling job state from the UI
2026-03-03 14:03:19 +05:00
Admin
3c26dfe2c0
feat(auth): add user authentication with roles, HMAC-signed cookies, and login/register UI
...
- Add `users` PocketBase collection (username, password_hash, role, created)
- Implement HMAC-SHA256 signed cookie auth in hooks.server.ts; token payload is userId:username:role
- Add User type, getUserByUsername, createUser (scrypt), loginUser (timing-safe) to pocketbase.ts
- Add login/register page with tabbed form UI and server actions
- Add logout route that clears the auth cookie
- Add layout.server.ts auth guard: redirect unauthenticated users to /login
- Extend App.Locals and App.PageData with role field
- Add AUTH_SECRET, POCKETBASE_ADMIN_EMAIL/PASSWORD to .env.example
- Install @types/node for Node crypto/scrypt types
2026-03-03 14:03:11 +05:00
Admin
1820fa7303
chore: make browserless port and UI port configurable via env vars
2026-03-03 13:32:05 +05:00
Admin
38e400a4c7
feat(scraper): remove HTMX UI — delete ui.go, extract helpers.go, drop goldmark dependency
2026-03-02 22:03:36 +05:00
Admin
cb90771248
refactor(scraper): rename /ui/audio*, /ui/chapter-text routes to /api/ namespace
2026-03-02 22:01:52 +05:00
Admin
59b1cfab1d
chore: add all missing port and URL env vars to .env.example
2026-03-02 22:00:45 +05:00
Admin
f95ad3ed29
feat(ui): proxy audio generation and streaming through SvelteKit, fix hardcoded scraper URL in AudioPlayer
2026-03-02 22:00:13 +05:00
Admin
e4c4f8de66
feat(ui): wire SvelteKit into docker-compose with ui service and env vars
2026-03-02 21:43:32 +05:00
Admin
4f84bd29c9
feat(ui): add audio player component, presign API route, and reading progress tracking
2026-03-02 21:41:20 +05:00
Admin
6bf79ab392
feat(ui): add chapter reader page with SSR markdown rendering from MinIO
2026-03-02 21:39:11 +05:00
Admin
4ae6f0ab42
feat(ui): add book list page and book detail page with chapter index
2026-03-02 21:37:32 +05:00
Admin
33e2a4dc01
feat: add MinIO presign endpoints to scraper API and SvelteKit presign helper
2026-03-02 21:35:27 +05:00
Admin
cb4be0848f
feat(ui): add server-side PocketBase client and session cookie hook
2026-03-02 21:32:20 +05:00
Admin
2f948f2a50
feat(ui): scaffold SvelteKit app with Tailwind v4, adapter-node, zinc/amber theme
2026-03-02 21:30:50 +05:00
Admin
baab66823d
fix: remove container names for name collisions
2026-03-02 20:08:46 +05:00
Admin
11d2eaa0e5
chore: trigger deploy
2026-03-02 19:56:09 +05:00
Admin
9c115f00c4
chore: remove kokoro from compose, make host ports env-configurable
...
- Drop kokoro service (deployed separately); update default KOKORO_URL to kokoro.kalekber.cc
- Expose host ports via env vars (MINIO_PORT, MINIO_CONSOLE_PORT, POCKETBASE_PORT, BROWSERLESS_PORT, SCRAPER_PORT) for preview deployments
2026-03-02 15:13:26 +05:00
Admin
5ac89da513
Steps 11-12: migrate chapter + book page reading-progress JS from localStorage to /api/progress
2026-03-02 14:52:01 +05:00
Admin
af86c6f96f
Step 10: migrate home page reading-progress JS from localStorage to /api/progress
2026-03-02 14:51:07 +05:00
Admin
da4a182f85
Step 9: add session cookie + /api/progress GET/POST/DELETE endpoints
2026-03-02 14:47:58 +05:00
Admin
18e76c9668
steps 6-8: wire HybridStore into orchestrator, server, and main
...
- Add storage/hybrid.go: HybridStore composing PocketBase + MinIO backends
- Rewrite orchestrator to accept storage.Store instead of *writer.Writer
- Replace *writer.Writer with storage.Store in server.go and ui.go
- Wire audio cache, reading progress, chapter reads/writes through store
- Add rankingCacheAdapter in main.go to bridge context-free RankingPageCacher
interface to HybridStore's context-aware methods
2026-03-02 14:44:02 +05:00
Admin
9add9033b9
feat(v2): add internal/storage package with MinIO + PocketBase clients and Store interface
2026-03-02 14:34:25 +05:00
Admin
66d8481637
chore(v2): add minio-go/v7 dependency
2026-03-02 14:31:36 +05:00
Admin
7f92a58fd7
chore(v2): add PocketBase and MinIO services to docker-compose
2026-03-02 14:30:47 +05:00
Admin
093e627a0e
fix: restore missing generateAudio, settingsPanel, chapterListPanel DOM refs removed in cleanup
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 14:28:10 +05:00
Admin
90a16a7223
feat: autoplay uses full page navigation, auto-starts TTS on arrival
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 14:19:21 +05:00
Admin
412b0fb478
fix: settings panel closed by default, closes on click outside
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 14:10:21 +05:00
Admin
0a479cfe22
feat: replace native voice select with custom styled dropdown
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 14:05:24 +05:00
Admin
92f900a8a9
fix: seek-track and seek-times match chapter width on all devices
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 14:01:34 +05:00
Admin
b61e1a4212
fix: align seek-track and seek-times with chapter content width on desktop
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 14:00:56 +05:00
Admin
6e0041ea01
feat: settings panel becomes native-style bottom sheet on mobile with drag-to-expand/dismiss
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:57:29 +05:00
Admin
3e74019a5e
fix: seek-track 90% width, seek-times 95% width, both margin auto
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:54:47 +05:00
Admin
d300714333
feat: replace hourglass emoji with animated SVG spinner in generating state
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:46:09 +05:00
Admin
e0265db7a8
feat: replace speed slider with preset buttons, replace voice grid with dropdown
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:44:06 +05:00
Admin
1cdc82249c
fix: replace unicode gear with SVG icon, increase chapter title size in header
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:19:41 +05:00
Admin
ce4b904e62
fix: slim seek bar, scrollable settings panel, speed+toggles first then voices
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:17:41 +05:00
Admin
c08da7ef54
fix: cap voice grid height so speed/toggles remain visible in settings panel
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:09:48 +05:00
Admin
9d01ea1ee3
fix: hide idle badge by default, remove duplicate next-idle badge, remove chapter numbers under nav arrows
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:07:00 +05:00
Admin
c717fcfe94
fix: settings panel flex layout — voice grid scrolls, speed/toggles always pinned at bottom
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:03:06 +05:00
Admin
82d78bedb2
fix: center settings panel vertically on mobile, scrollable with max-h cap
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 13:00:17 +05:00
Admin
1254e90a65
fix: remove duplicate inline chapter nav, upgrade player prev/next to SVG chevrons with chapter number
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 12:56:35 +05:00
Admin
da3370ba9b
fix: strip 'Chapter N - N: ' prefix from chapter titles in content menu
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 12:55:08 +05:00
Admin
2546a5774e
fix: increase settings panel bottom offset to clear full player height
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 12:52:16 +05:00
Admin
00a6d2ce43
fix: proper SVG play/pause icons, preserve progress on resume, fix badge row alignment
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 12:49:36 +05:00
Admin
98fd0de7bc
fix: remove stale old-template fragment from chapterTmpl in ui.go
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 12:41:02 +05:00
Admin
1128e47f6b
feat: redesign ranking page with list layout, sticky filter bar, top genres fix
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-03-02 12:25:01 +05:00