Commit Graph

47 Commits

Author SHA1 Message Date
317672aa08 Add invite button and InviteModal to task detail page
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.
2026-03-30 00:34:12 +00:00
703541d29a Invitation system: DB + API + landing page + share links
- invitations table (token, task, inviter, expiry 7d)
- POST /invitations (create + share links: WhatsApp, Telegram, SMS, Copy)
- GET /invite/:token (public landing page)
- POST /invite/:token/accept (register + assign + JWT)
- Landing page at /invite/[token] with accept flow
- CLAUDE.md + Notion key deployed to all servers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:31:22 +00:00
653805af4c Fix GDPR export, delete-account cascade, errors.js boot crash
- Add GET /auth/export-data endpoint (GDPR data download)
- Fix delete-account: comprehensive cascade delete + /delete-account alias
- Remove non-existent sessions table reference that caused 500 errors
- Fix errors.js: add missing CREATE TABLE statement (was causing SyntaxError on boot)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:24:21 +00:00
5751ab832f UI fix + Data Export + Weekly Report + WebSocket
- 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>
2026-03-30 00:17:57 +00:00
03d7bd8de6 Delete Account API + UI + Store assets (icon, graphic, screenshot)
- 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>
2026-03-29 23:56:20 +00:00
3f04637550 Privacy Policy page + Chat API key fix
- /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>
2026-03-29 22:16:02 +00:00
79f7e18c8c Add F-Droid metadata, store listing, iOS encryption declaration
- 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>
2026-03-29 21:48:05 +00:00
3034fa9093 Add build storage and backup scripts
- 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
v1.0.0
2026-03-29 21:47:04 +00:00
bb8763bca1 Install menu in Settings + logout icon + drawer install link
- 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>
2026-03-29 21:00:14 +00:00
867482c674 UI redesign: compact header, group dropdown, slim task cards
- Removed logo/brand from header
- Group selector as dropdown (not horizontal scroll)
- Compact task cards (single line, less padding)
- Status filter pills smaller
- Sticky header 44px

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:44:41 +00:00
a29d0ba64c EAS project configured + cloud build successful
- Expo project: @it-enterprise/task-team (67f7d2df)
- EAS Android APK build: b31c63a8-0e4f-44d6-80e9-98cb24174037
- Download: expo.dev/accounts/it-enterprise/projects/task-team/builds/...

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:36:04 +00:00
070a62bdf1 Swagger docs + Error tracking + Email + Production keystore
- Swagger UI at /docs (70+ routes documented)
- Error tracking: error_logs table, /errors/report, /errors/recent, /errors/stats
- Global error handler logs to DB
- Email: nodemailer, /email/send, /email/reminder (SMTP placeholder)
- Production keystore: RSA 2048, valid 2053, info.hasdo.taskteam

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:27:33 +00:00
6089f4d310 Hebrew group names + multilingual API + cleanup mock data
- 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>
2026-03-29 17:17:47 +00:00
c266b44b2a Calendar mobile fix + Android APK 41MB built
- Calendar: compact mobile header, nowrap date, pill view switcher
- Android APK: info.hasdo.taskteam v1.0.0, 41MB, SDK 24-36
- APK at mobile/dist/android/task-team-v1.0.0-release.apk

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 17:07:10 +00:00
a3d82b9b3b Google OAuth active + ecosystem env fix + cleanup Android build artifacts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 16:30:01 +00:00
acc88606fa OAuth routes (Google/Facebook/Apple) + Android web export
- 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>
2026-03-29 16:13:17 +00:00
4e4bf34393 EAS build config + Collaboration UI + i18n updates
- eas.json for Android APK/AAB + iOS builds
- Collaboration page: assign, transfer, claim, subtasks
- Task detail: assignee avatars, subtask progress
- Updated translations (cs,he,ru,ua)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:31:19 +00:00
606fb047f8 Extended collaboration: subtasks, claim, assign-group, workload tracking
- 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>
2026-03-29 15:20:50 +00:00
db81100b5b React Native Expo app — full mobile client
- Expo SDK 54, expo-router, NativeWind
- 7 screens: login, tasks, calendar, goals, chat, settings, tabs
- API client (api.hasdo.info), SecureStore auth, AuthContext
- Tab navigation: Ukoly, Kalendar, Cile, Chat, Nastaveni
- Pull-to-refresh, FAB, group colors, priority dots
- Calendar grid with task dots
- AI chat with keyboard avoiding
- Web export verified (780 modules, 1.5MB bundle)
- Bundle ID: info.hasdo.taskteam

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:09:35 +00:00
545cf245f0 Complete i18n (zero hardcoded text) + 2FA/OAuth endpoints
- 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>
2026-03-29 14:59:15 +00:00
052e292d83 Fix registration validation + mobile modal scroll
- Email validation (must contain @, min 5 chars)
- Name validation (min 2 chars)
- Modal: max-height 90dvh, overflow-y auto, sticky buttons
- TaskForm: sticky bottom action buttons for mobile keyboard

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:57:32 +00:00
b3c6999218 Fix SSL SAN cert + React hydration #423
- 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>
2026-03-29 14:56:25 +00:00
565e72927d E2E tests: 15/15 passed, Playwright config, .gitignore
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:27:55 +00:00
dd995d9c0f Auth with passwords + Playwright E2E tests + PostHog analytics
- bcrypt password hashing in auth (register, login, change-password)
- Login/register pages with password fields
- Profile update + OAuth placeholder endpoints
- Playwright test suite: auth, pages, API (3 test files)
- PostHog Docker analytics on :8010

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:26:51 +00:00
b4b8439f80 Feature batch: Projects, Recurrence, Group settings, Bug fixes
- 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>
2026-03-29 13:49:25 +00:00
fc39029ce3 ci: pipeline verified and secured 2026-03-29 13:33:44 +00:00
97e97e5951 ci: clean up test files, finalize CI/CD pipeline 2026-03-29 13:33:01 +00:00
6679a93553 ci: HMAC signature verification for Gitea webhooks 2026-03-29 13:32:16 +00:00
9fcbaa4f8b ci: test webhook after Gitea restart 2026-03-29 13:29:50 +00:00
3079301192 ci: final end-to-end webhook test 2026-03-29 13:28:49 +00:00
7a4c54594a ci: verify auto-deploy pipeline 2026-03-29 13:26:29 +00:00
b1322fed92 ci: test webhook delivery 2026-03-29 13:24:58 +00:00
78be9328a0 ci: add deploy log placeholder 2026-03-29 13:24:04 +00:00
d0e464be5f CI/CD: add deploy webhook endpoint for Gitea auto-deploy 2026-03-29 13:23:07 +00:00
Claude CLI Agent
4fae1c5a06 i18n complete: all 16 components translated (CZ/HE/RU/UA)
- 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>
2026-03-29 13:19:02 +00:00
Claude CLI Agent
235bcab97f i18n: integrate translations into components
- 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>
2026-03-29 13:13:34 +00:00
Claude CLI Agent
fea4d38ce8 Phase 3-4: Goals AI planner, Team tasks, Push notifications, i18n (CZ/HE/RU/UA)
- Goals CRUD API + AI study plan generator + progress reports
- Goals frontend page with progress bars
- Team tasks: assign, transfer, collaborate endpoints
- Push notifications: web-push, VAPID, subscribe/send
- i18n: 4 languages (cs, he, ru, ua) translation files
- notifications.js + goals.js routes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:12:19 +00:00
Claude CLI Agent
eac9e72404 Polish: Unicode diacritics fix, Header drawer, date formatting
- 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>
2026-03-29 13:01:48 +00:00
Claude CLI Agent
8ef3206ff0 Add Chat + Settings pages, fix all bugs
- /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>
2026-03-29 12:59:31 +00:00
Claude CLI Agent
6c38c9438f Add Moodle + Pohoda connectors
- Moodle: courses->goals, assignments->tasks, completion, grades, webhook
- Pohoda: XML-RPC adapter, invoice sync, webhook
- All 3 connectors (Odoo, Moodle, Pohoda) returning 200

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 12:56:50 +00:00
Claude CLI Agent
aa5cb5f733 Mobile-first: swipe groups, bottom nav, slide-out drawer, responsive
- 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>
2026-03-29 11:24:29 +00:00
Claude CLI Agent
d74c89255e PM2 cluster deploy + Redis caching + Nginx gzip + UI polish
- PM2 v6: 2x API cluster + 1x web, zero-downtime reload
- Redis cache: 30s TTL on GET /tasks, X-Cache header
- Nginx gzip compression
- Mobile touch targets 44px
- Czech diacritics throughout UI
- TaskModal slide-up animation
- StatusBadge color dots
- GroupSelector emoji icons

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:20:58 +00:00
Claude CLI Agent
4a6b5e5498 UI fixes: emoji icons, modal form, Czech labels, polish
- Fixed group emoji icons in DB (💼🛒📚🗺️🏃🏠🌿)
- Added TaskModal component for + button
- Czech status labels (Čeká, Probíhá, Hotovo, Zrušeno)
- Improved TaskCard, GroupSelector, Header, StatusBadge
- Better dark/light mode transitions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:16:07 +00:00
Claude CLI Agent
6c93ae04d0 Fix login redirect — access result.data.token/user
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>
2026-03-29 10:30:05 +00:00
Claude CLI Agent
55993b70b2 Phase 2: AI Chat, Calendar, Odoo connector, PWA
- 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>
2026-03-29 10:12:53 +00:00
Claude CLI Agent
b5a6dd6d6f Add Next.js frontend PWA
- Pages: login, register, tasks list, task detail
- Components: TaskCard, TaskForm, GroupSelector, StatusBadge, Header
- Tailwind CSS, dark/light mode, PWA manifest
- Running on :3001 via systemd

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 10:02:32 +00:00
Claude CLI Agent
9d075455e3 Initial: Fastify API + DB schema + collab setup
- Fastify API on :3000 (tasks, groups, auth, connectors)
- PostgreSQL schema: users, tasks, task_groups, goals, connectors
- 8 default task groups
- JWT auth (register/login/me)
- API Bridge framework with webhooks
- CLAUDE.md + polling scripts
- Collab worker integration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 09:57:56 +00:00