Adds the 'Pozvat' button to the collaboration section of the task
detail page, opening a modal that creates invitations and shows
WhatsApp/Telegram/SMS/Copy share links.
- Header: groups+status on one row
- GET /auth/export-data (GDPR data download)
- Weekly AI report cron (Monday 8:00)
- WebSocket /ws endpoint (real-time notifications)
- @fastify/websocket installed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- DELETE /api/v1/auth/delete-account (GDPR + Google Play req)
- Settings: red Delete Account section with confirmation
- Store assets: icon-512, feature-graphic, screenshot-1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- /privacy page for Google Play (GDPR compliant)
- Fixed Anthropic API key mismatch in .env
- Chat returns AI responses again
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- F-Droid metadata: mobile/fdroid/metadata/info.hasdo.taskteam.yml
- Store listing for APKPure/Aurora: mobile/store-listing/README.md
- iOS ITSAppUsesNonExemptEncryption=false in app.json
- Mixed content audit: clean (no HTTP URLs in frontend code)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- upload-release.sh: Upload artifacts to Hetzner Storage Box
- create-release.sh: Create Gitea releases with tag and artifacts
- post-deploy.sh: Auto-backup DB and upload after deploy
- setup-storagebox.sh: One-time storage box directory setup
- Settings: Install section (Android APK, PWA, iOS soon, F-Droid soon)
- Logout: icon only (red door), no text
- Avatar: initials only, name in drawer
- Drawer: Install link to /settings#install
- Translations: install key in cs/he/ru/ua
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- task_groups.names JSONB with cs/he/ru/ua translations
- GET /groups?lang=he returns Hebrew names
- Removed 14 test users, cleaned orphan data
- 6 real users, 2 real tasks remain
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Google OAuth: /auth/google + /auth/google/callback
- Facebook OAuth: /auth/facebook + /auth/facebook/callback
- Apple Sign In placeholder
- Expo web export in mobile/dist/
- passport, passport-google-oauth20, passport-facebook installed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 3 new DB tables: subtasks, task_collaboration, user_groups
- Subtasks CRUD with auto-complete parent when all done
- Collaboration requests: assign, transfer, collaborate, claim
- Claim = instant, others need approval (accept/reject)
- Assign to whole user group at once
- Workload tracking: per-user active/completed/pending
- User groups (teams) CRUD with member management
- 39/39 tests passed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All placeholders, brand text, dates use t() function
- Dynamic date locale based on selected language
- 2FA/TOTP, WebAuthn, OAuth/:provider endpoints (placeholders)
- All 4 translation files updated (cs,he,ru,ua)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SAN cert covers all 5 PWA domains (tasks,cal,plans,goals,chat)
- i18n hydration: SSR uses cs default, localStorage after mount
- Matches ThemeProvider pattern
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Projects CRUD API + invite members
- Task recurrence (daily/weekly/monthly) with auto-creation
- Group time zones + GPS locations settings
- i18n fallback fix (no more undefined labels)
- UX: action buttons in one row
- Chat/Calendar: relative API URLs
- DB: task_assignments, projects tables, recurrence column
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Custom i18n provider with React Context + localStorage
- Hebrew RTL support (dir=rtl on html)
- All pages + components use t() calls
- FullCalendar + dates locale-aware
- Language selector in Settings wired to context
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- StatusBadge, TaskForm, tasks page use i18n hook
- All 4 language files complete (cs, he, ru, ua)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Czech diacritics properly rendered (no more escape sequences)
- Header avatar click opens drawer on mobile+desktop
- Invalid Date -> Bez terminu fallback with cs-CZ locale
- Chat/Settings pages improved
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- /chat: AI chat interface with Claude API
- /settings: language selector (CZ/HE/RU/UA), notifications, connectors
- Fixed Invalid Date on task detail
- All 6 pages returning 200
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Swipe left/right between groups with overlay animation
- BottomNav: Tasks/Calendar/Chat/Settings (mobile only)
- Header: slide-out drawer on mobile, full on desktop
- GroupSelector: scroll-snap, auto-scroll active
- TaskCard: compact mobile layout, swipe-to-complete
- Safe area insets, 44px touch targets
- react-swipeable for touch gestures
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Login/register pages now correctly unwrap API response {data: {token, user}}.
Cleaned up leftover apiFetch code.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- AI Chat endpoint (/api/v1/chat) with Claude API context
- Calendar page with FullCalendar.js (day/week/month)
- Odoo API connector (import/export/webhook)
- PWA manifest + service worker for offline
- SW register component
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>