Move .github/workflows/ → .gitea/workflows/ and update secrets
to use REGISTRY_USER/REGISTRY_TOKEN with git.necloud.us registry.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
VOLUME ["/data"] was causing Docker to create an anonymous volume for
/data that shadowed the bind mount defined in docker-compose.yml,
leaving the container with an empty /data instead of the host data.
The bind mount in docker-compose.yml is sufficient; no Dockerfile
VOLUME needed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The production stage was using an ad-hoc npm install without package.json,
which could pull unexpected package versions and lost the lockfile guarantee.
Moved all React/build/test/type packages to devDependencies so the production
stage can use npm install --omit=dev cleanly, installing only express, cors,
and docx — exactly what server.js needs. Regenerated lockfile to match.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
npm ci fails when the lockfile was generated on a different platform
or npm version than what runs inside the container. npm install is
more forgiving and resolves the exit code 1 in the build stage.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The production stage was running npm ci --omit=dev against a macOS-
generated lockfile on linux/alpine, which caused exit code 1. Switch
to installing only the three packages the server actually needs
(express, cors, docx) so the lockfile is irrelevant in that stage.
Also upgrades to node:22-alpine (current LTS) to clear the Node 20
deprecation warning on GitHub Actions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Each prayer gets a consistent color derived from its ID; calendar
dots now use those colors so you can see which prayers were covered
at a glance, and the day-detail panel color-codes each entry too
- New Notes field on every prayer card for scripture, updates, and
mid-prayer thoughts — separate from the answer field, freely editable
- Word export now includes Notes and Prayer Log sections for each prayer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each prayer card now has a "Prayer Log" section where you can record
when you prayed, with an optional note per session. A Calendar tab
shows a monthly view with dots on days you prayed; clicking a day
reveals which prayers were covered and any notes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Migrated all localStorage data to Firebase for cross-device sync
- Prayer drafts now stored in users/{userId}/drafts
- Reminder settings in users/{userId}/settings
- Prayer statistics in users/{userId}/statistics
- Implemented persistent 'most prayed for' tracking in Firebase
- Enhanced loading screen with animated backgrounds and gradients
- Fixed auth session restoration on hard refresh
- Added prayedDates array for multi-day prayer tracking
- Calendar now accurately shows all days a prayer was prayed for
- Enabled Firestore offline persistence for offline-first experience
- Updated Firestore security rules for new data structure
- Improved clock display (removed leading zero from hours)
- Moved clock below date on homepage with appropriate sizing
- Fixed data loading race conditions between auth and Firestore
Replace old praying hands icon with new prayer journal on cloud icon (192x192 and 512x512 PNG files)
Completes visual branding refresh across all screens
- CalendarView header now displays icon
- ReflectionsList header now displays icon
- AnsweredPrayers header now displays icon
- ThingsToPrayFor header now displays icon
Completes visual identity unification across all main screens
- Detect platform and disable Web Push for iOS (Safari limitation)
- For iOS: Enable in-app reminders instead of push notifications
- Add platform-specific UI messaging
- Add test notification button for debugging
- Track last reminder date in localStorage
- Fix notification permission checks
- Support all platforms: iOS (in-app), Android/Windows/Linux (push + in-app)
- DailyEntry.tsx: Main prayer input form with clean interface
- CalendarView.tsx: Monthly calendar showing entry indicators
- ReflectionsList.tsx: Browse and search past prayers
- SettingsPage.tsx: User preferences and account settings
- BottomNav.tsx: Mobile-first navigation with desktop support
- All components use Slate color scheme for intimate aesthetic
- Simplified Prayer interface (removed chains, goals, templates)
- Created DailyEntry component for today's prayer entry
- Created CalendarView component with monthly calendar
- Created ReflectionsList component for browsing past prayers
- Created SettingsPage component for user preferences
- Created BottomNav for mobile-first navigation
- Replaced complex main page with simplified version
- Focused on core functionality: write, journal, reflect, archive
- Clean, intimate aesthetic matching 'My Prayer Journal - Daily' app
- Add missing Firebase Admin environment variables to docker-compose.yml
- Update CasaOS configuration with gracious_eldan naming
- Fix Firebase admin initialization for build-time compatibility
- Add missing component imports in main page
- Fix TypeScript compilation errors in API routes
- Update port mapping to 3050 for CasaOS deployment