- Add 10s timeout for service worker ready state
- Add 15s timeout for push subscription
- Check for PushManager support early (shows unsupported on incompatible devices)
- Provide specific error messages for different failure modes
This prevents the enable button from spinning forever on iOS devices
where push subscription may hang silently.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Content-Disposition header was including the workspace name directly,
causing a "Cannot convert argument to ByteString" error when workspace
names contained smart apostrophes or other non-ASCII characters (e.g.,
"Grace's Plan" with curly apostrophe U+2019).
Sanitize filename by removing non-ASCII characters before using in header.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create appointment edit page at /appointments/[id]/edit
- Fix iCal calendar timezone handling:
- Add VTIMEZONE block for Australia/Perth
- Use TZID parameter for DTSTART/DTEND
- Properly format local times without Z suffix
- Appointments now appear correctly in Google Calendar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Features added:
- Emergency Info Card: Full-screen emergency view with patient info
- Refill Tracker: Track pill counts with auto-decrement on dose
- Activity Feed: View caregiver activity with filtering
- Symptom Tracker: Log symptoms with severity and offline sync
- Print Views: Daily meds, appointments, doctor visit summaries
- iCal Export: Calendar subscription for appointments
- PDF Export: Medical summary for doctor visits
- Calendar View: Monthly calendar for appointments
- Appointment Preparation: Checklist for upcoming appointments
- Medication Reminders: PWA push notifications with quiet hours
Bug fixes:
- Fix invite workflow: Register/login now properly redirect back
- Add undo for doctor questions (can unmark "asked" questions)
- Fix API route type annotations for Next.js 14 compatibility
- Add Suspense boundary for useSearchParams in login/register
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix argon2 native module build in Docker (add build-essential, python3)
- Switch Docker base image from Alpine to Debian-slim for OpenSSL compatibility
- Fix session cookies for HTTP access (COOKIE_SECURE env var)
- Fix TypeScript type errors in sync routes and middleware
- Fix CSS circular dependency in globals.css
- Fix Map iteration in rate-limit cleanup
- Add createdAt field to LocalNote interface
- Configure Tailscale Funnel on port 10000
- Update NEXT_PUBLIC_APP_URL for public funnel access
- Add initial Prisma migration
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
A calm, reliable app to help manage appointments, medications, and notes
for chemo patients and their families.
Features:
- Today dashboard with next appointment and medications due
- Medication tracking with multiple schedule types (fixed times, interval, weekdays, PRN)
- One-tap dose logging with 5-minute undo window
- Questions for doctor tracking
- Family sharing with workspace model and invite links
- Offline-first with IndexedDB and sync
- Docker Compose deployment with Tailscale Funnel support
Tech stack:
- Next.js 14 (App Router) + TypeScript + Tailwind CSS
- PostgreSQL + Prisma
- Argon2 password hashing + session cookies
- Dexie.js for IndexedDB
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>