Commit Graph

69 Commits

Author SHA1 Message Date
Jason Stedwell 497d54de3c brand identity
Build and Push Docker Image / build (push) Successful in 2m21s
2026-07-03 10:09:25 -05:00
jason abb4c740e6 Point docker-build.yml trigger at main
Build and Push Docker Image / build (push) Successful in 2m28s
2026-07-02 10:16:43 -05:00
jason b35574241a Ignore Claude Code worktrees and local settings
Build and Push Docker Image / build (push) Successful in 2m25s
2026-07-02 09:24:39 -05:00
jason 3be1b261ec Remove accidentally committed Claude worktree gitlink
Build and Push Docker Image / build (push) Successful in 2m25s
2026-07-02 09:24:20 -05:00
jason 80772fe352 Remove accidentally committed Claude worktree gitlink
Build and Push Docker Image / build (push) Successful in 2m50s
2026-07-02 09:24:20 -05:00
jason 7c6ccc6b8a Add dangling-only image prune after build (keeps tagged :latest)
Build and Push Docker Image / build (push) Successful in 2m20s
2026-07-02 09:18:04 -05:00
jason a9df9c0cf4 Harden API, data layer, and autosave; add validation, pagination, migrations
Build and Push Docker Image / build (push) Successful in 2m26s
- Enforce task ownership on PATCH/DELETE /api/tasks (was: any signed-in
  user could edit or delete anyone's tasks)
- Validate all API request bodies with zod; escape user content and
  restrict links to http(s) in the Drive export; block reverting a
  SUBMITTED report
- Add @@unique([userId, date]) on Report with upsert to eliminate the
  duplicate-daily-report race; switch startup from
  `prisma db push --accept-data-loss` to `prisma migrate deploy` with
  automatic baselining of existing databases (dedup migration merges
  any pre-existing duplicates)
- Autosave: re-queue and retry failed task saves with a visible
  saving/error indicator instead of silently dropping edits
- Paginate and filter GET /api/reports (?date, ?mine, ?q, ?take,
  ?cursor); report form fetches only today's report, admin dashboard
  uses server-side search + Load more
- Type the frontend and lib layer (DTOs in src/types/api.ts); zero
  eslint errors
- Update README and Unraid guide for migrations, upgrade path, and API

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 19:43:36 -05:00
Jason Stedwell d8efa71992 Fix Docker build: ship entrypoint.sh as a real file instead of heredoc COPY
Build and Push Docker Image / build (push) Successful in 1m43s
The classic Docker builder (used by docker-build.yml on the host runner)
does not support heredoc COPY syntax, which caused 'COPY failed: no source
files were specified'. Replace the heredoc with a checked-in entrypoint.sh
copied normally.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 08:58:13 -05:00
jason 35ec71aa35 Add docker-build.yml: build + push :latest to registry.alwisp.com on the host runner
Build and Push Docker Image / build (push) Failing after 1m59s
2026-06-30 07:36:59 -05:00
jason c0198df6d9 pretty it up 2026-03-13 16:16:59 -05:00
jason f1a3a31a94 fixes 2026-03-13 16:00:33 -05:00
jason e08a2375ae Merge pull request 'admin board' (#17) from claude/suspicious-wilson into master
Reviewed-on: #17
2026-03-13 11:44:04 -05:00
jason 707f632d34 admin board 2026-03-13 11:39:46 -05:00
jason 6813602b6c Merge pull request 'debounce' (#16) from claude/suspicious-wilson into master
Reviewed-on: #16
2026-03-13 11:36:09 -05:00
jason 65a4f79131 debounce 2026-03-13 11:35:28 -05:00
jason 9046370b64 Merge pull request 'timezone' (#15) from claude/suspicious-wilson into master
Reviewed-on: #15
2026-03-13 11:18:20 -05:00
jason 0e2dc27779 timezone 2026-03-13 11:18:11 -05:00
jason 9e735b00f2 Merge pull request 'multi-file update' (#14) from claude/suspicious-wilson into master
Reviewed-on: #14
2026-03-13 11:15:35 -05:00
jason b2df27cfc5 multi-file update 2026-03-13 11:13:45 -05:00
jason 5e3ca19c83 stuff 2026-03-13 09:29:39 -05:00
jason b81a568592 Merge pull request 'fix: resolve "Unknown User" in admin panel' (#13) from claude/quirky-golick into master
Reviewed-on: #13
2026-03-13 07:30:43 -05:00
jason 04ebc91e9f fix: include user relation in admin reports query to resolve Unknown User display
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 07:29:55 -05:00
jason 8eaf239c5d Update README.md 2026-03-13 07:21:08 -05:00
jason 2077ab3275 Merge pull request 'fix: read Google access_token from Account table, not getToken()' (#12) from claude/reverent-proskuriakova into master
Reviewed-on: #12
2026-03-13 00:57:20 -05:00
jason 19b1f26254 fix: read Google access_token from Account table, not getToken()
With strategy:"database" there is no JWT cookie, so getToken() always
returns null. The Google access_token is stored in the Account table by
the PrismaAdapter. Query it directly via prisma.account.findFirst()
instead of the JWT helper.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:56:33 -05:00
jason bc9a13bfe4 Merge pull request 'fix: copy prisma.config.ts into runner so db push can find datasource URL' (#11) from claude/reverent-proskuriakova into master
Reviewed-on: #11
2026-03-13 00:45:12 -05:00
jason cfeee5dc2a fix: copy prisma.config.ts into runner so db push can find datasource URL
Without prisma.config.ts in the runner stage, prisma db push has no
datasource URL (schema.prisma no longer carries url in Prisma 7) and
silently skips creating the database. Also add set -e to the entrypoint
so any db push failure is visible in logs and stops the container.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:44:41 -05:00
jason a091420573 Merge pull request 'fix: create /app/data after COPY steps to prevent permission clobber' (#10) from claude/reverent-proskuriakova into master
Reviewed-on: #10
2026-03-13 00:39:26 -05:00
jason b1fa70eba4 fix: create /app/data after COPY steps to prevent permission clobber
The mkdir was running before the standalone COPY, which could overwrite
/app/data contents or permissions. Move it to after all COPY statements
and use chmod 700 so only nextjs owns and can write the SQLite data dir.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:38:50 -05:00
jason ca414bb903 Merge pull request 'fix: use npm install in Docker so Alpine musl native bindings resolve' (#9) from claude/reverent-proskuriakova into master
Reviewed-on: #9
2026-03-13 00:33:05 -05:00
jason 716b37c6f2 fix: use npm install in Docker so Alpine musl native bindings resolve
npm ci with a Windows-generated lockfile skips @libsql/linux-x64-musl
(optional native dep). Switching to npm install lets npm resolve the
correct platform-specific binary for the Alpine container. Also copy
node_modules into the runner stage so prisma db push and the libsql
native module are available at runtime.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:32:24 -05:00
jason 8c7142ca78 Merge pull request 'fix: pass config object directly to PrismaLibSql, drop @libsql/client' (#8) from claude/reverent-proskuriakova into master
Reviewed-on: #8
2026-03-13 00:28:23 -05:00
jason 8b18566761 fix: pass config object directly to PrismaLibSql, drop @libsql/client
PrismaLibSql constructor takes a Config object (with url), not a
pre-created Client instance. Remove the unnecessary createClient call
and the @libsql/client direct dependency.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:28:06 -05:00
jason 1c12b9a70d Merge pull request 'fix: remove apk upgrade from Dockerfile base stage' (#7) from claude/reverent-proskuriakova into master
Reviewed-on: #7
2026-03-13 00:25:45 -05:00
jason ea5b4a955d fix: remove apk upgrade from Dockerfile base stage
apk upgrade hangs on slow/unreliable Alpine mirrors and is not needed
for a build. node:20-alpine is sufficiently up to date.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:24:52 -05:00
jason d2d1eb17b5 Merge pull request 'fix: exclude prisma.config.ts from TS compilation, use datasource.url' (#6) from claude/reverent-proskuriakova into master
Reviewed-on: #6
2026-03-13 00:17:52 -05:00
jason 3e536a0a0e fix: exclude prisma.config.ts from TS compilation, use datasource.url
prisma.config.ts is a Prisma CLI config file, not part of the Next.js
app — exclude it from tsconfig to prevent type errors. Also revert the
migrate.adapter block (not a valid PrismaConfig key in 7.5) back to
datasource.url which is the correct CLI config for db push.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:17:17 -05:00
jason 1b0982d523 Merge pull request 'fix: correct PrismaLibSQL -> PrismaLibSql export name' (#5) from claude/reverent-proskuriakova into master
Reviewed-on: #5
2026-03-13 00:14:35 -05:00
jason e7560bedff fix: correct PrismaLibSQL -> PrismaLibSql export name
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:14:12 -05:00
jason 109a30699a Merge pull request 'fix: exclude libsql packages from webpack bundling' (#4) from claude/reverent-proskuriakova into master
Reviewed-on: #4
2026-03-13 00:01:42 -05:00
jason aeee0fb598 fix: exclude libsql packages from webpack bundling
@libsql/client and libsql contain native bindings and non-JS assets
(README.md, LICENSE) that webpack cannot parse. Mark them as server
external packages so Next.js requires them at runtime instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 00:01:06 -05:00
jason e51311eb0c Merge pull request 'chore: update package-lock.json for libsql adapter dependencies' (#3) from claude/reverent-proskuriakova into master
Reviewed-on: #3
2026-03-12 23:55:44 -05:00
jason a692b99d31 chore: update package-lock.json for libsql adapter dependencies
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 23:53:33 -05:00
jason fbbd67fbc6 Merge pull request 'fix: migrate to Prisma 7 driver adapter (libsql) for SQLite' (#2) from claude/reverent-proskuriakova into master
Reviewed-on: #2
2026-03-12 23:51:13 -05:00
jason fcc04915c2 fix: migrate to Prisma 7 driver adapter (libsql) for SQLite
Prisma 7 removed support for `url` in schema.prisma datasources and the
`engineType = "library"` native binary engine. All connections now go
through a driver adapter.

- Remove engineType and url from schema.prisma (no longer supported)
- Configure prisma.config.ts with migrate.adapter using @libsql/client
- Instantiate PrismaClient with PrismaLibSQL adapter in src/lib/prisma.ts
- Add @libsql/client and @prisma/adapter-libsql dependencies
- Remove PRISMA_CLIENT_ENGINE_TYPE from Dockerfile (obsolete)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 23:49:58 -05:00
jason bfb7cd98c8 Merge pull request 'fix: restore DATABASE_URL in schema.prisma for Prisma 7 runtime client' (#1) from claude/reverent-proskuriakova into master
Reviewed-on: #1
2026-03-12 23:46:49 -05:00
jason 042c45d9dd fix: restore DATABASE_URL in schema.prisma for Prisma 7 runtime client
Prisma 7's prisma.config.ts only configures the CLI, not the runtime
PrismaClient. Without url in the datasource block, the generated client
defaults to engineType "client" (WASM) which requires an adapter,
causing next-auth adapter errors on OAuth callback.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 23:46:01 -05:00
jason 3b743d81d4 docker 2026-03-12 23:34:19 -05:00
jason e6f4f6c092 auth drive 2026-03-12 23:29:00 -05:00
jason 8b4a18e29d auth fix 2026-03-12 23:20:49 -05:00