Version
v1.0.0-rc.29
Where
Web on desktop, PWA on phone
What I expected
Disabling single-user mode should allow me to access my diary without login
What actually happened
If I disable user management either by:
creating an account at startup and disabling user management in settings
creating an account at startup, logging out, clicking "locked out" and entering my recovery phrase or
creating an account, shutting down my docker container and manually clearing the users table in the db
then next time I load the site it directs me to the setup wizard and asks me to create an account
Steps to reproduce
- Spin up a Docker instance with the default settings (plus RECOVERY_TOKEN set)
- Connect to instance
- Create an admin account
- Skip setup
- Go into settings and disable user management
- Return to diary page and F5, or visit the site from another browser/device
- Directed to setup wizard
Logs
nutritrace | 2026-05-21T23:32:16.778371733Z [db] backfilled usage counters on 0 foods + 0 meals from existing diary items
nutritrace | 2026-05-21T23:32:16.957114365Z [2026-05-21T23:32:16.956Z] [INFO ] NutriTrace running on port 3001
nutritrace | 2026-05-21T23:32:16.958477534Z [2026-05-21T23:32:16.958Z] [INFO ] [scheduler] started (15-minute interval)
nutritrace | 2026-05-21T23:32:19.230704635Z [2026-05-21T23:32:19.230Z] [ERROR] GET /ai/history → 503 (5ms)
nutritrace | 2026-05-21T23:32:22.459160650Z [2026-05-21T23:32:22.458Z] [INFO ] GET / → 304 (2ms)
nutritrace | 2026-05-21T23:32:22.476948280Z [2026-05-21T23:32:22.476Z] [INFO ] GET /registerSW.js → 304 (1ms)
nutritrace | 2026-05-21T23:32:22.672042939Z [2026-05-21T23:32:22.671Z] [INFO ] GET /status → 200 (3ms)
nutritrace | 2026-05-21T23:32:22.673900634Z [2026-05-21T23:32:22.673Z] [ERROR] GET /ai/history → 503 (0ms)
nutritrace | 2026-05-21T23:32:22.675541750Z [2026-05-21T23:32:22.675Z] [INFO ] GET /me → 200 (1ms)
nutritrace | 2026-05-21T23:32:22.678051098Z [2026-05-21T23:32:22.677Z] [ERROR] GET /diary/2026-05-22 → 503 (0ms)
nutritrace | 2026-05-21T23:32:22.687431071Z [2026-05-21T23:32:22.687Z] [ERROR] GET /app-config/env-locks → 503 (1ms)
nutritrace | 2026-05-21T23:32:24.280075969Z [2026-05-21T23:32:24.279Z] [INFO ] GET /sw.js → 304 (0ms)
nutritrace | 2026-05-21T23:32:24.285476359Z [2026-05-21T23:32:24.285Z] [INFO ] GET /workbox-10e0918b.js → 304 (1ms)
nutritrace | 2026-05-21T23:32:36.235032754Z [2026-05-21T23:32:36.234Z] [INFO ] POST /register → 200 (204ms)
nutritrace | 2026-05-21T23:32:36.246609271Z [2026-05-21T23:32:36.246Z] [INFO ] GET /me → 200 (1ms)
nutritrace | 2026-05-21T23:32:36.249004142Z [2026-05-21T23:32:36.248Z] [INFO ] GET /status → 200 (1ms)
nutritrace | 2026-05-21T23:32:36.257914839Z [2026-05-21T23:32:36.257Z] [INFO ] GET / → 200 (2ms)
nutritrace | 2026-05-21T23:32:42.357215870Z [2026-05-21T23:32:42.357Z] [INFO ] GET /2026-05-22 → 200 (2ms)
nutritrace | 2026-05-21T23:32:44.123690411Z [2026-05-21T23:32:44.123Z] [INFO ] GET /icons/logo.png → 304 (1ms)
nutritrace | 2026-05-21T23:32:45.599171526Z [2026-05-21T23:32:45.598Z] [INFO ] GET /env-locks → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.204558866Z [2026-05-21T23:32:46.204Z] [INFO ] PUT / → 200 (6ms)
nutritrace | 2026-05-21T23:32:46.211593602Z [2026-05-21T23:32:46.211Z] [INFO ] PUT / → 200 (4ms)
nutritrace | 2026-05-21T23:32:46.215453132Z [2026-05-21T23:32:46.215Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.219520461Z [2026-05-21T23:32:46.219Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.223193843Z [2026-05-21T23:32:46.223Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.226598369Z [2026-05-21T23:32:46.226Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.230837702Z [2026-05-21T23:32:46.230Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.234311152Z [2026-05-21T23:32:46.234Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.237552015Z [2026-05-21T23:32:46.237Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.240606009Z [2026-05-21T23:32:46.240Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.243576155Z [2026-05-21T23:32:46.243Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.246953729Z [2026-05-21T23:32:46.246Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.250333418Z [2026-05-21T23:32:46.250Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.253972411Z [2026-05-21T23:32:46.253Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.257490793Z [2026-05-21T23:32:46.257Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.261112310Z [2026-05-21T23:32:46.260Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.264124763Z [2026-05-21T23:32:46.264Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:49.108656461Z [2026-05-21T23:32:49.108Z] [INFO ] GET /users → 200 (1ms)
nutritrace | 2026-05-21T23:32:49.133045804Z [2026-05-21T23:32:49.132Z] [INFO ] GET / → 200 (1ms)
nutritrace | 2026-05-21T23:32:49.139061661Z [2026-05-21T23:32:49.138Z] [INFO ] GET /invites → 200 (1ms)
nutritrace | 2026-05-21T23:32:51.725879921Z [2026-05-21T23:32:51.725Z] [INFO ] DELETE /management → 200 (2ms)
nutritrace | 2026-05-21T23:32:51.730466159Z [2026-05-21T23:32:51.730Z] [INFO ] GET /me → 200 (1ms)
nutritrace | 2026-05-21T23:32:51.732385007Z [2026-05-21T23:32:51.732Z] [INFO ] GET /status → 200 (2ms)
nutritrace | 2026-05-21T23:32:51.738614431Z [2026-05-21T23:32:51.738Z] [WARN ] GET /users → 403 (1ms)
nutritrace | 2026-05-21T23:32:53.978121821Z [2026-05-21T23:32:53.977Z] [INFO ] GET /icons/logo.png → 304 (0ms)
nutritrace | 2026-05-21T23:32:57.529755236Z [2026-05-21T23:32:57.529Z] [INFO ] GET / → 304 (1ms)
nutritrace | 2026-05-21T23:32:57.546979201Z [2026-05-21T23:32:57.546Z] [INFO ] GET /registerSW.js → 304 (0ms)
nutritrace | 2026-05-21T23:32:57.652686737Z [2026-05-21T23:32:57.652Z] [ERROR] GET /ai/history → 503 (1ms)
nutritrace | 2026-05-21T23:32:57.654223145Z [2026-05-21T23:32:57.654Z] [INFO ] GET /status → 200 (2ms)
nutritrace | 2026-05-21T23:32:57.654635138Z [2026-05-21T23:32:57.654Z] [INFO ] GET /me → 200 (0ms)
nutritrace | 2026-05-21T23:32:57.655376994Z [2026-05-21T23:32:57.655Z] [ERROR] GET /diary/2026-05-22 → 503 (1ms)
nutritrace | 2026-05-21T23:32:57.657825123Z [2026-05-21T23:32:57.657Z] [ERROR] GET /app-config/env-locks → 503 (1ms)
nutritrace | 2026-05-21T23:32:59.279671355Z [2026-05-21T23:32:59.279Z] [INFO ] GET /sw.js → 304 (1ms)
nutritrace | 2026-05-21T23:32:59.286643594Z [2026-05-21T23:32:59.286Z] [INFO ] GET /workbox-10e0918b.js → 304 (0ms)
nutritrace | 2026-05-21T23:35:10.186783532Z [2026-05-21T23:35:10.186Z] [ERROR] GET /ai/history → 503 (1ms)onsole tab. Filter by [wellness], [sync], [diary], etc.
Android app:
Plug phone into USB → chrome://inspect/#devices in Chrome → "inspect" the
WebView → Console tab → reproduce → copy/screenshot.
⚠️ REDACT before posting:
- HRV / RHR / sleep duration / weight / calorie counts (debug logs include these)
- Email addresses
- OAuth tokens (anything that looks like ya29.* or a long random string)
- Personal server URLs / IPs
-->
Version
v1.0.0-rc.29
Where
Web on desktop, PWA on phone
What I expected
Disabling single-user mode should allow me to access my diary without login
What actually happened
If I disable user management either by:
creating an account at startup and disabling user management in settings
creating an account at startup, logging out, clicking "locked out" and entering my recovery phrase or
creating an account, shutting down my docker container and manually clearing the users table in the db
then next time I load the site it directs me to the setup wizard and asks me to create an account
Steps to reproduce
Logs
nutritrace | 2026-05-21T23:32:16.778371733Z [db] backfilled usage counters on 0 foods + 0 meals from existing diary items
nutritrace | 2026-05-21T23:32:16.957114365Z [2026-05-21T23:32:16.956Z] [INFO ] NutriTrace running on port 3001
nutritrace | 2026-05-21T23:32:16.958477534Z [2026-05-21T23:32:16.958Z] [INFO ] [scheduler] started (15-minute interval)
nutritrace | 2026-05-21T23:32:19.230704635Z [2026-05-21T23:32:19.230Z] [ERROR] GET /ai/history → 503 (5ms)
nutritrace | 2026-05-21T23:32:22.459160650Z [2026-05-21T23:32:22.458Z] [INFO ] GET / → 304 (2ms)
nutritrace | 2026-05-21T23:32:22.476948280Z [2026-05-21T23:32:22.476Z] [INFO ] GET /registerSW.js → 304 (1ms)
nutritrace | 2026-05-21T23:32:22.672042939Z [2026-05-21T23:32:22.671Z] [INFO ] GET /status → 200 (3ms)
nutritrace | 2026-05-21T23:32:22.673900634Z [2026-05-21T23:32:22.673Z] [ERROR] GET /ai/history → 503 (0ms)
nutritrace | 2026-05-21T23:32:22.675541750Z [2026-05-21T23:32:22.675Z] [INFO ] GET /me → 200 (1ms)
nutritrace | 2026-05-21T23:32:22.678051098Z [2026-05-21T23:32:22.677Z] [ERROR] GET /diary/2026-05-22 → 503 (0ms)
nutritrace | 2026-05-21T23:32:22.687431071Z [2026-05-21T23:32:22.687Z] [ERROR] GET /app-config/env-locks → 503 (1ms)
nutritrace | 2026-05-21T23:32:24.280075969Z [2026-05-21T23:32:24.279Z] [INFO ] GET /sw.js → 304 (0ms)
nutritrace | 2026-05-21T23:32:24.285476359Z [2026-05-21T23:32:24.285Z] [INFO ] GET /workbox-10e0918b.js → 304 (1ms)
nutritrace | 2026-05-21T23:32:36.235032754Z [2026-05-21T23:32:36.234Z] [INFO ] POST /register → 200 (204ms)
nutritrace | 2026-05-21T23:32:36.246609271Z [2026-05-21T23:32:36.246Z] [INFO ] GET /me → 200 (1ms)
nutritrace | 2026-05-21T23:32:36.249004142Z [2026-05-21T23:32:36.248Z] [INFO ] GET /status → 200 (1ms)
nutritrace | 2026-05-21T23:32:36.257914839Z [2026-05-21T23:32:36.257Z] [INFO ] GET / → 200 (2ms)
nutritrace | 2026-05-21T23:32:42.357215870Z [2026-05-21T23:32:42.357Z] [INFO ] GET /2026-05-22 → 200 (2ms)
nutritrace | 2026-05-21T23:32:44.123690411Z [2026-05-21T23:32:44.123Z] [INFO ] GET /icons/logo.png → 304 (1ms)
nutritrace | 2026-05-21T23:32:45.599171526Z [2026-05-21T23:32:45.598Z] [INFO ] GET /env-locks → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.204558866Z [2026-05-21T23:32:46.204Z] [INFO ] PUT / → 200 (6ms)
nutritrace | 2026-05-21T23:32:46.211593602Z [2026-05-21T23:32:46.211Z] [INFO ] PUT / → 200 (4ms)
nutritrace | 2026-05-21T23:32:46.215453132Z [2026-05-21T23:32:46.215Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.219520461Z [2026-05-21T23:32:46.219Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.223193843Z [2026-05-21T23:32:46.223Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.226598369Z [2026-05-21T23:32:46.226Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.230837702Z [2026-05-21T23:32:46.230Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.234311152Z [2026-05-21T23:32:46.234Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.237552015Z [2026-05-21T23:32:46.237Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.240606009Z [2026-05-21T23:32:46.240Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.243576155Z [2026-05-21T23:32:46.243Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.246953729Z [2026-05-21T23:32:46.246Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.250333418Z [2026-05-21T23:32:46.250Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:46.253972411Z [2026-05-21T23:32:46.253Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.257490793Z [2026-05-21T23:32:46.257Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.261112310Z [2026-05-21T23:32:46.260Z] [INFO ] PUT / → 200 (1ms)
nutritrace | 2026-05-21T23:32:46.264124763Z [2026-05-21T23:32:46.264Z] [INFO ] PUT / → 200 (2ms)
nutritrace | 2026-05-21T23:32:49.108656461Z [2026-05-21T23:32:49.108Z] [INFO ] GET /users → 200 (1ms)
nutritrace | 2026-05-21T23:32:49.133045804Z [2026-05-21T23:32:49.132Z] [INFO ] GET / → 200 (1ms)
nutritrace | 2026-05-21T23:32:49.139061661Z [2026-05-21T23:32:49.138Z] [INFO ] GET /invites → 200 (1ms)
nutritrace | 2026-05-21T23:32:51.725879921Z [2026-05-21T23:32:51.725Z] [INFO ] DELETE /management → 200 (2ms)
nutritrace | 2026-05-21T23:32:51.730466159Z [2026-05-21T23:32:51.730Z] [INFO ] GET /me → 200 (1ms)
nutritrace | 2026-05-21T23:32:51.732385007Z [2026-05-21T23:32:51.732Z] [INFO ] GET /status → 200 (2ms)
nutritrace | 2026-05-21T23:32:51.738614431Z [2026-05-21T23:32:51.738Z] [WARN ] GET /users → 403 (1ms)
nutritrace | 2026-05-21T23:32:53.978121821Z [2026-05-21T23:32:53.977Z] [INFO ] GET /icons/logo.png → 304 (0ms)
nutritrace | 2026-05-21T23:32:57.529755236Z [2026-05-21T23:32:57.529Z] [INFO ] GET / → 304 (1ms)
nutritrace | 2026-05-21T23:32:57.546979201Z [2026-05-21T23:32:57.546Z] [INFO ] GET /registerSW.js → 304 (0ms)
nutritrace | 2026-05-21T23:32:57.652686737Z [2026-05-21T23:32:57.652Z] [ERROR] GET /ai/history → 503 (1ms)
nutritrace | 2026-05-21T23:32:57.654223145Z [2026-05-21T23:32:57.654Z] [INFO ] GET /status → 200 (2ms)
nutritrace | 2026-05-21T23:32:57.654635138Z [2026-05-21T23:32:57.654Z] [INFO ] GET /me → 200 (0ms)
nutritrace | 2026-05-21T23:32:57.655376994Z [2026-05-21T23:32:57.655Z] [ERROR] GET /diary/2026-05-22 → 503 (1ms)
nutritrace | 2026-05-21T23:32:57.657825123Z [2026-05-21T23:32:57.657Z] [ERROR] GET /app-config/env-locks → 503 (1ms)
nutritrace | 2026-05-21T23:32:59.279671355Z [2026-05-21T23:32:59.279Z] [INFO ] GET /sw.js → 304 (1ms)
nutritrace | 2026-05-21T23:32:59.286643594Z [2026-05-21T23:32:59.286Z] [INFO ] GET /workbox-10e0918b.js → 304 (0ms)
nutritrace | 2026-05-21T23:35:10.186783532Z [2026-05-21T23:35:10.186Z] [ERROR] GET /ai/history → 503 (1ms)onsole tab. Filter by [wellness], [sync], [diary], etc.
Android app:
Plug phone into USB → chrome://inspect/#devices in Chrome → "inspect" the
WebView → Console tab → reproduce → copy/screenshot.
-->