Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4c8dc20
chore: add .worktrees/ to gitignore
shakogegia Apr 7, 2026
d51daf1
deps: add node-canvas for server-side rendering
shakogegia Apr 7, 2026
0779ff6
refactor: make XTG/XTH generators accept raw pixel data instead of HT…
shakogegia Apr 7, 2026
6981f1a
refactor: extract XTC assembler into shared module
shakogegia Apr 7, 2026
b8be538
feat: add conversion_jobs table and job management operations
shakogegia Apr 7, 2026
470e72c
feat: add /api/convert routes for job submission and status polling
shakogegia Apr 7, 2026
8e87e70
feat: add standalone conversion worker script
shakogegia Apr 7, 2026
e449410
feat: replace client-side XTC generation with server-side job submiss…
shakogegia Apr 7, 2026
7effc19
feat: update Docker image with node-canvas deps and conversion worker
shakogegia Apr 7, 2026
1fdc793
fix: address code review issues for server-side conversion
shakogegia Apr 7, 2026
239cee2
feat: run conversion worker alongside Next.js in dev mode
shakogegia Apr 7, 2026
40e9bd1
fix: allow switching books while server-side conversion runs
shakogegia Apr 7, 2026
649f6e4
fix: remove processing state - button always available since conversi…
shakogegia Apr 7, 2026
2058bbf
feat: show conversion progress inline on Generate button with progres…
shakogegia Apr 7, 2026
1b250a7
feat: show converting badge in library list, fix progress bar layout …
shakogegia Apr 7, 2026
a60115e
refactor: extract conversion jobs into ConversionProvider context
shakogegia Apr 7, 2026
d01a058
feat: add 'Convert all' action to library tab
shakogegia Apr 7, 2026
94f624e
feat: add POST /api/convert/all endpoint for server-side batch conver…
shakogegia Apr 7, 2026
b9aa3c9
fix: remove EPUB badge from library files list
shakogegia Apr 7, 2026
a7005dc
fix: resume polling for all active jobs on page refresh
shakogegia Apr 7, 2026
dc17b85
fix: prevent flicker on refresh by initializing with actual job state
shakogegia Apr 7, 2026
626011d
fix: create fresh CREngine renderer per job to prevent stale WASM sta…
shakogegia Apr 7, 2026
f1a07de
fix: simplify completion toast to just book title
shakogegia Apr 7, 2026
9bea7c3
fix: move 'Convert all' button to bottom of library tab with outline …
shakogegia Apr 7, 2026
4c6c439
fix: pin 'Convert all' button outside scroll area at bottom of librar…
shakogegia Apr 7, 2026
385a6e9
docs: add design spec and implementation plan for server-side conversion
shakogegia Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ next-env.d.ts

# library data
/data

# git worktrees
.worktrees/
14 changes: 12 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,22 @@ RUN addgroup --system --gid 1001 nodejs && \
mkdir -p /data/library && \
chown -R nextjs:nodejs /data

# System libs for node-canvas (Cairo/Pango)
RUN apk add --no-cache cairo pango libjpeg-turbo giflib

# Copy standalone output
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public

# Copy better-sqlite3 native binding (prebuilt .node binary)
COPY --from=builder /app/node_modules/better-sqlite3 ./node_modules/better-sqlite3
# Copy all node_modules (pnpm symlink structure requires full copy)
COPY --from=builder /app/node_modules ./node_modules

# Copy conversion worker source, shared libs, and dependencies
COPY --from=builder /app/src/worker ./src/worker
COPY --from=builder /app/src/lib ./src/lib
COPY --from=builder /app/src/contexts ./src/contexts
COPY --from=builder /app/tsconfig.json ./tsconfig.json

VOLUME /data

Expand All @@ -48,6 +57,7 @@ EXPOSE 3000
COPY <<'EOF' /entrypoint.sh
#!/bin/sh
chown -R nextjs:nodejs /data
su-exec nextjs npx tsx src/worker/convert.ts &
exec su-exec nextjs node server.js
EOF
RUN apk add --no-cache su-exec && chmod +x /entrypoint.sh
Expand Down
Loading