Commit Graph

48 Commits

Author SHA1 Message Date
congsh 2d56df940d docs: add v0.2.0 changelog entry
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 20:44:07 +08:00
congsh fdd1ae0929 fix: add $autoCancel:false to games API calls
GamesLibrary auto-cancellation error was caused by missing
$autoCancel:false on all games.ts PocketBase SDK calls.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 20:40:55 +08:00
congsh 19bf317d85 fix(phase3): description optional, restore nginx to host IP
- Make ledger description field optional (was required, caused 400)
- Revert nginx.conf back to 192.168.1.14:8090 (host IP, reliable)
- Keep docker-compose port mapping as 8090:8090
- Add $autoCancel:false to ledger/asset API calls

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 20:32:06 +08:00
congsh 221a8d7108 fix: restore Dev PocketBase port mapping to 8090
Was 8711:8090 but Dev PB should be on host port 8090 per CLAUDE.md
environment table. UAT remains on 8712.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 20:22:43 +08:00
congsh 09a7fe7708 fix: remove duplicate migrations, fix Dev nginx proxy target
- Remove 6 duplicate Phase 2 migration files (1776500001-0006) that
  failed on restart and blocked Phase 3 migrations from running
- Fix Dev nginx.conf proxy target from 192.168.1.14:8090 to
  gamegroup-pb:8090 (Docker internal DNS) since host port 8090 is
  not exposed (mapped as 8711:8090)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 20:14:11 +08:00
congsh dc11ef90fd fix(phase3): add $autoCancel:false to prevent SDK auto-cancellation
PocketBase JS SDK auto-cancels pending requests when a new request
targets the same collection. This causes errors when loadLedgers and
getLedgerSummary run in parallel via Promise.all. Added $autoCancel:false
to all API calls in ledgers.ts and assets.ts, matching project convention.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 20:05:27 +08:00
congsh e4b730c8db fix(phase3): subscription leak, image mime type validation
- Ledger store: add stopSubscription() to properly clean up realtime
  subscriptions, matching asset store pattern
- LedgerList: call stopSubscription on unmount
- Assets migration: restrict image upload to image/* mime types
  (C3 updateRule is a known tradeoff — PocketBase lacks field-level
  permissions, frontend enforces edit restrictions instead)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 19:52:34 +08:00
congsh c5413644f9 feat: phase 3 - ledger and asset management
Add group expense tracking (ledger) and public asset inventory (asset) features.
Ledger supports income/expense recording with monthly summary. Asset tracks
group equipment with free-form holder transfer. Both are independent pages
accessible from GroupView navigation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 19:42:04 +08:00
congsh 625d0baf7d feat: v0.1.1 - poll editing, notifications, fixes
- Poll editing by creator (title, options, deadline)
- Notification panel with app notifications and click-to-navigate
- Poll creation notifies group members
- Invitation rejection notifies inviter
- Fix: notification createRule, timezone, autocancel, nginx, tab timing

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 18:51:23 +08:00
congsh c5d3ac01ca feat: phase 2 - polls, memories, notifications, stats v0.1.0
- Group polls with option/rollcall modes, edit by creator, auto-settle
- Multimedia memories with upload, preview, inline video playback
- In-app notifications for poll/team/group events
- Points system and group stats dashboard
- Group detail tabs with icons (activity/polls/memories/stats)
- Fix: nginx file upload size, static cache blocking API, timezone, auto-cancel

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 18:19:46 +08:00
congsh 71742da600 docs: add v0.0.3 changelog entry
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 13:36:02 +08:00
congsh 3173525a2e feat: support nickname login and nickname uniqueness check v0.0.3
- Login: query user by name field, authenticate with username
- Register: add blur-triggered nickname uniqueness validation
- Requires PocketBase users collection listRule/viewRule set to public

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 13:35:41 +08:00
congsh 0a7dcbb6b8 fix: login page uses email only since username is auto-generated
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 13:11:54 +08:00
congsh 5cec2101af feat: support Chinese nickname in registration
- User input "昵称" stored in `name` field (supports Chinese)
- `username` auto-generated (PocketBase requires ASCII)
- Password rules displayed inline with real-time validation
- All UI displays prefer `name` over `username`

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 13:01:41 +08:00
congsh 262f946a4e feat: add changelog page with v0.0.1 and v0.0.2 entries
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 12:30:49 +08:00
congsh cfdbaf1095 feat: UI redesign v0.0.2 — color unification, navigation improvements, mobile support
- Unify color palette from mixed green/blue/purple to consistent green theme
- Sidebar: add text labels to create/join group buttons for discoverability
- Header: add quick action buttons (create group, join group, notifications)
- Mobile: add hamburger menu with slide-out sidebar and overlay
- Home: add prominent CTA buttons, onboarding card for empty state
- Join group dialog: add search-by-name mode alongside existing ID lookup
- Games library: inline group selector dropdown instead of external selection

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 12:24:20 +08:00
congsh 277a484f60 feat: UAT environment setup with separate PocketBase instance
- Add UAT PocketBase on port 8712 with separate pb_data_uat
- Add UAT nginx config proxying to UAT PB (port 8712)
- Update Dockerfile to support NGINX_CONF build arg
- Add .gitignore for .playwright-mcp/
- Auto-generated team_sessions migration

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 11:11:38 +08:00
congsh 7299128a34 fix: resolve SSE realtime ERR_INCOMPLETE_CHUNKED_ENCODING error
Add dedicated nginx location block for /api/realtime with:
- proxy_buffering off to prevent response buffering
- gzip off to avoid chunked encoding issues
- proxy_read_timeout 86400s for long-lived SSE connections
- Connection '' instead of 'upgrade' for SSE protocol

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 11:05:40 +08:00
congsh 12b2cdbc02 fix: sync user status changes across team lifecycle
- Accept invitation: update local userStore status to in_team
- Start game: update userStore status to in_team
- End game: update userStore status to idle, simplify endGame logic
- Add $autoCancel:false to endGame session fetch

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 10:59:10 +08:00
congsh 8d3cce814a fix: team invitation acceptance 404 error
- Relax team_sessions collection rules to allow authenticated users to view/update
- Reorder respondInvitation: join session before marking invitation as accepted
- Add $autoCancel: false to prevent request cancellation during invitation flow

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 10:52:48 +08:00
congsh 3ae141ba56 fix: member status visibility, team creation improvements, join approval flow
- Fix other members' status not visible due to users collection viewRule restriction
- Fix empty status treated as 'away' instead of 'idle' in membersByStatus
- Auto-set creator to 'in_team' status when creating team session
- Filter current user from idle members invite list
- Fix group store isGroupOwner using pb.authStore instead of localStorage
- Add nginx no-cache headers for index.html
- Add join_requests collection migration and join approval flow
- Update groups collection rules and add requireApproval field
- Add Memory types for Phase 2 planning

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 10:42:11 +08:00
congsh 4dac4bc751 fix: disable PocketBase SDK auto-cancellation on group API calls
SSE subscriptions trigger concurrent requests to the same endpoints,
causing auto-cancellation errors. Add $autoCancel: false to group
queries that get called from realtime event handlers.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 10:04:26 +08:00
congsh 6b684f8600 fix: login persistence, username login, realtime refresh, group name uniqueness
- Remove loadFromCookie that overwrites valid localStorage auth data
- Set user status to idle on first login (was empty string)
- Default empty status to idle instead of away

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 09:56:11 +08:00
congsh 9405406c47 fix: login persistence, username login, realtime refresh, group name uniqueness
- Fix cookie path to '/' for auth persistence across page refreshes
- Login field now accepts both username and email
- Add 30s polling for group list and team session status refresh
- Add group name uniqueness check before creation

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 01:24:12 +08:00
congsh c76346294a feat: add group join approval flow with requireApproval setting
- New join_requests PocketBase collection for pending join applications
- Group requireApproval field (default true) with owner toggle
- JoinGroupDialog: apply when approval required, direct join when not
- JoinRequestCard component for accept/reject in notifications and group panel
- NotificationPanel shows both invitations and join requests
- GroupMembersPanel shows pending requests and approval switch for owners

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 00:46:31 +08:00
congsh 89d8ecec82 fix: allow authenticated users to search/view groups for joining
Changed groups collection listRule and viewRule from member-only to
any authenticated user, so users can find and join groups. Also
improved registration error messages with Chinese validation feedback.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 23:43:59 +08:00
congsh d7f9c6860a fix: improve registration error messages with specific validation feedback
Extract PocketBase validation errors (duplicate email/username/password)
and display them in Chinese. Also improve login error message.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 22:35:22 +08:00
congsh 83b7472594 refactor: replace all emoji icons with Element Plus SVG icons
Use @element-plus/icons-vue components for consistent, scalable vector
icons across sidebar navigation, section headers, ratings, and buttons.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 21:36:44 +08:00
congsh 4b97c99e56 feat: add game library CRUD/import/export/favorites/comments, fix team creation
- Game library: add/delete games per group, JSON/CSV import/export, favorites, star ratings & comments
- Fix team session creation: add creator to members array, handle null currentGroup
- Fix image loading: rename SVG files from .png to .svg extensions
- Add PocketBase migrations for game_comments and game_favorites collections
- Remove seed data script

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 21:03:20 +08:00
congsh 802712c662 feat: complete Phase 1 - game library, lifecycle, realtime sync
- Seed 33 popular games across 5 platforms via admin API script
- Add GameDetailDialog with game info and quick-team button
- Update GamesLibrary with game card click to open detail dialog
- Update Home hot games to open detail dialog instead of navigating
- Rewrite invitation accept: frontend auto-joins team + updates status
- Add user status reset on team dissolution (endGame)
- Add start game / dissolve buttons to TeamSessionPanel lifecycle
- Integrate realtime subscriptions in GroupView and Layout
- Add notification store realtime invitation listener
- Add placeholder images for game covers and avatars
- Remove Go hooks, add JS hooks placeholder + Docker mount

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 20:23:39 +08:00
congsh 0bcf39bb4b fix: resolve /api/api doubled path in Docker deployment
- Remove VITE_PB_URL=/api from Dockerfile (SDK auto-appends /api)
- Fix nginx proxy_pass to keep /api/ prefix for PocketBase
- Update pocketbase.ts fallback to window.location.origin
- Update PocketBase proxy target to port 8090

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 19:51:12 +08:00
congsh 7e2506b4f2 chore: add PocketBase migrations and fix plan document
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 19:35:15 +08:00
congsh 4dd15dceab fix: collection name mismatch, login/register navigation, and connection config
- Fix teamSessions → team_sessions to match PocketBase collection name
- Replace <a @click> with <router-link> in Login and Register views
- Update PocketBase default URL and vite proxy target
- Comment out docker-compose user directive for permission fix

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 19:28:53 +08:00
congsh c5d5484f9e feat: switch to light green + deep purple theme, fix input colors
- Primary: emerald green (#059669), accent: deep purple (#7c3aed)
- Light backgrounds: #f0fdf4 page, #ffffff cards
- Login/Register: light gradient bg, white card, Element Plus inputs
- NotFound: matching light theme
- All pages follow via CSS variables

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 18:07:14 +08:00
congsh 6895fd05be feat: add group management - create, join, member panel with owner controls
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 17:53:58 +08:00
congsh 00fdb02d80 fix: resolve TypeScript unused variable errors for clean build
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 17:41:37 +08:00
congsh d0c75d25cf feat: beautify all team components and pages with dark gaming theme
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 17:38:27 +08:00
congsh 5c007ac069 feat: beautify login, register and 404 pages with dark gaming theme
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 17:37:15 +08:00
congsh e4b3340ffb feat: establish dark gaming theme design system with Element Plus overrides
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 16:35:45 +08:00
congsh 443b22e142 feat: redesign Layout with dark gaming sidebar
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 16:35:40 +08:00
congsh 0acc1e12e1 fix: rewrite backend hooks, fix invitation flow, align frontend API, fix component naming
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 16:30:05 +08:00
congsh b1a9995767 feat: add missing components - notification store, notification panel, game select dialog, invite button
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 16:27:30 +08:00
congsh 87937b0722 fix: clean up stale migration backup, remove hardcoded credentials from README
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-17 16:23:47 +08:00
congsh 2ce8985747 feat: add GameGroup2 project with frontend and backend
- Add .gitignore for Node.js and PocketBase projects
- Add frontend (Vue 3 + Vite + TypeScript)
- Add backend (PocketBase)
- Add deployment scripts and Docker compose configs

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 15:45:54 +08:00
congsh 2db391901c fix: use proper PocketBase hook patterns
- Replace unsafe type assertions with safe AuthRecord() method
- Remove unused 'strings' import
- Remove unused ServeEvent struct and binding
- Use proper error response methods (apis.NewForbiddenError)
- Use app.Subscriptions().Broadcast() instead of Realtime()
- Fix hook signatures to return error instead of next function
2026-04-17 14:17:54 +08:00
congsh 8d4b9a167c feat: add API rules and hooks
Add PocketBase hooks for group management and real-time notifications:
- Groups collection with owner/members permissions
- Team Sessions with group member verification
- Invitations with real-time notifications
- Helper functions for group ownership and membership checks

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 14:16:56 +08:00
congsh b79046ec63 fix: pin PocketBase version and improve documentation
- Pin PocketBase image to v0.22.4 instead of latest
- Add healthcheck to docker-compose.yml
- Add environment variables documentation to README.md
- Add development and production environment sections

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 14:15:39 +08:00
congsh 4d1a53fc69 feat: initialize PocketBase backend with migrations
- Created backend directory structure
- Added .env configuration for PocketBase
- Added initial migration with users, groups, games, teamSessions, invitations collections
- Added docker-compose.yml for containerized deployment
- Added README.md with setup instructions

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 14:14:05 +08:00