Commit Graph

57 Commits

Author SHA1 Message Date
7a9b74faf8 Strict CLAUDE.md rules: no fake Done, mandatory testing, port 22770
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 09:57:45 +00:00
926a584789 WebAuthn biometric + PWA widget + UI header fixes + mobile responsive
- WebAuthn: register/auth options, device management
- PWA widget page + manifest shortcuts
- Group schedule endpoint (timezones + locations)
- UI #3-#6: compact headers on tasks/calendar/projects/goals
- UI #9: mobile responsive top bars
- webauthn_credentials table

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 01:54:54 +00:00
6d68b68412 UI icon-only buttons: 9 components, compact header, inline edit
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 01:18:23 +00:00
8cf14dcf59 Feature pack: Media, Gamification, Templates, Time Tracking, Kanban, AI Briefing, Webhooks, Icon UI
API features (separate files in /api/src/features/):
- media-input: upload text/audio/photo/video, transcription
- gamification: points, streaks, badges, leaderboard
- templates: predefined task sets (sprint, study, moving)
- time-tracking: start/stop timer, task/user reports
- kanban: board view, drag-and-drop move
- ai-briefing: daily AI summary with tasks/goals/reviews
- webhooks-outgoing: notify external systems on events

UI components (separate files in /components/features/):
- IconButton: icon-only buttons with tooltip
- CompactHeader, PageActionBar, InlineEditField
- TaskDetailActions, GoalActionButtons, CollabActionButtons
- DeleteIconButton, CollabBackButton

All features modular — registry.js enables/disables each one.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 01:13:09 +00:00
f9c4ec631c feat: add media-input, gamification, and templates features
- media-input: universal media upload (text/audio/photo/video) with base64 encoding, file storage, and transcription stub
- gamification: points, streaks, levels, badges, leaderboard with auto-leveling
- templates: predefined task sets with 3 default templates (Weekly Sprint, Study Plan, Moving Checklist)
- All features registered via modular registry.js for easy enable/disable

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 01:13:07 +00:00
0c3fc44440 Notification prefs per task + Odoo module management
- notification_prefs table (remind_before, on_due, daily, channels)
- GET/PUT /notification-prefs/:taskId
- GET /odoo/modules, POST /odoo/modules/install, GET /odoo/status

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:57:30 +00:00
83febef040 Add admin dashboard frontend page
- Overview tab: stat cards (users, tasks, goals, projects, AI msgs, errors) + daily activity bar chart
- Users tab: user list with task/goal counts and delete capability
- Activity tab: recent activity feed with type badges
- Tailwind-based responsive design matching existing app style

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:55:26 +00:00
42881b1f5a Add activity monitor, family workspace, per-user rate limiting
- Activity monitor API: phone usage tracking with report/summary/daily/ai-analysis endpoints
- Family workspace: shared task groups with member management
- Per-user API rate limiting: JWT-based key generator with IP fallback
- Also includes previously uncommitted spaced-repetition and admin routes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:54:38 +00:00
524025bfe9 UI redesign: status dots with pulse + avatar circles + one-row header
- TaskCard: overlapping avatars, colored status dot (pulse for active)
- Header: group dropdown + status pills in single 40px row
- CSS: statusPulse animation
- Group interface: display_name optional field

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:45:18 +00:00
e250b2124f Fix display_name TS error + clean rebuild
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:42:40 +00:00
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