aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2025-12-30feat(security): add rate limiting and CORS middlewarensfisis
- Add rate limiting to login endpoint (5 requests/minute per IP) - Configure CORS middleware with environment-based origin control - Expose rate limit headers in CORS for client visibility - Update hono to 4.11.3 for rate limiter peer dependency 🤖 Generated with [Claude Code](https://claude.ai/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30feat(dev): update roadmapnsfisis
2025-12-30feat(deploy): build Docker images in GHAv0.1.0nsfisis
2025-12-30feat(ci): setup GitHub Actions for linting/testingnsfisis
2025-12-15feat(anki): add import script for Anki packagesnsfisis
Add CLI script to import .apkg files into Kioku. The script parses Anki packages using the existing parser, maps notes/cards to Kioku format, and bulk inserts them into the database for a specified user. Usage: pnpm anki:import [file.apkg] 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15feat(anki): add Note/Card mapping to Kioku formatnsfisis
Add mapAnkiToKioku function that converts parsed Anki packages to Kioku's internal data format. Includes: - HTML stripping and entity decoding for card fields - Anki factor to FSRS difficulty conversion - Anki interval to FSRS stability estimation - Due date conversion for different card types - Option to skip default Anki deck 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15feat(anki): add parser for Anki .apkg filesnsfisis
Implement ZIP extraction and SQLite database reading for Anki package files. The parser extracts notes, cards, decks, and models from .apkg files using Node.js native node:sqlite module. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12chore(dev): update architecture.mdnsfisis
2025-12-12chore(dev): update roadmapnsfisis
2025-12-11refactor(server): avoid using Zod deprecated APInsfisis
2025-12-11chore(style): biome formatnsfisis
2025-12-11fix(test): update PWA icon tests to match reworked iconnsfisis
The icon was changed in c305977 but tests weren't updated. Updated assertions to verify new gradient fills and 100x100 viewBox. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08feat(client): rework iconnsfisis
2025-12-08fix(client): public/ files not servednsfisis
2025-12-08feat(deploy): change port to 8080nsfisis
2025-12-08fix(server): include add-user script in esbuild outputnsfisis
- Add add-user.ts as additional entry point in esbuild config - Switch from outfile to outdir/outbase for multiple outputs - Update user:add script to use compiled JS file - Fix README commands to use docker compose exec prefix - Add psql connection command to README 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08feat(build): cache pnpm storensfisis
2025-12-08refactor(client): replace inline SVGs with Font Awesome iconsnsfisis
Migrate all 28 inline SVG icons across 8 components to use Font Awesome React components for better maintainability and consistency. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08style(client): replace Google Fonts with Noto Sans CJK JPnsfisis
Remove external Google Fonts dependency (DM Sans, Fraunces) and use locally-installed Noto Sans CJK JP for better Japanese text support. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08feat(client): redesign frontend with TailwindCSS v4nsfisis
Replace inline styles with TailwindCSS, implementing a cohesive Japanese-inspired design system with custom colors (cream, teal primary), typography (Fraunces, DM Sans), and animations. Update all pages and components with consistent styling, improve accessibility by adding aria-hidden to decorative SVGs, and configure Biome for Tailwind CSS syntax support. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07fix(client): add explicit role attribute to OfflineBannernsfisis
The accessibility test expected an explicit role="status" attribute. While the <output> element has an implicit status role, the test checks for the explicit attribute using getAttribute(). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07chore: fix all lint errors and warningsnsfisis
- Remove unused imports in repositories.ts and sync.test.ts - Replace non-null assertions with type casts in HomePage.test.tsx - Use semantic <output> element instead of div with role="status" - Use semantic <button> element instead of div with role="button" - Remove useless React fragment in StudyPage.tsx - Fix useCallback dependencies for handleFlip and handleRating 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add offline mode banner indicatornsfisis
Displays a prominent banner at the top of all pages when the user is offline, informing them that changes will sync when reconnected. Shows pending change count when applicable. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add manual sync buttonnsfisis
Add SyncButton component that allows users to manually trigger data synchronization. The button is disabled when offline or when sync is already in progress. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add sync status indicator componentnsfisis
Add SyncStatusIndicator component to display current sync state in the UI header. The component shows online/offline status, syncing progress, pending changes count, and sync errors. - Create SyncProvider context to wrap SyncManager for React components - Add SyncStatusIndicator component with visual status indicators - Integrate indicator into HomePage header - Add comprehensive tests for SyncStatusIndicator and SyncProvider - Update existing tests to include SyncProvider wrapper 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add SyncManager for auto-sync on reconnectnsfisis
Implements SyncManager class that orchestrates the sync process: - Monitors online/offline network status - Triggers debounced sync when coming back online - Coordinates push, pull, and conflict resolution - Provides event subscription for sync status updates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add conflict resolution for offline syncnsfisis
Implement ConflictResolver class with Last-Write-Wins (LWW) strategy: - Detect conflicts from push results - Support multiple strategies: server_wins, local_wins, newer_wins - Resolve deck and card conflicts using server data from pull - Default to server_wins (LWW) for consistent conflict handling 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add pull service for sync implementationnsfisis
Implement PullService class to pull changes from server: - Fetch changes since last sync version - Convert server data format to local IndexedDB format - Apply pulled decks, cards, and review logs to local database - Update sync version after successful pull 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add push service for sync implementationnsfisis
Implement PushService class to push local changes to server: - Convert local decks, cards, and review logs to API format - Push pending changes to server endpoint - Mark items as synced after successful push - Return conflicts reported by server (LWW resolution) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add sync queue management for offline syncnsfisis
Implement SyncQueue class to manage pending changes for offline sync: - Track unsynced decks, cards, and review logs from IndexedDB - Manage sync status (idle, syncing, error) with listener support - Persist last sync version and timestamp to localStorage - Provide methods to mark items as synced after push - Apply pulled changes from server to local database 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(server): add GET /api/sync/pull endpointnsfisis
Implement sync pull endpoint to fetch entities updated since a given syncVersion. Returns decks, cards, and review logs with their current sync versions for incremental client synchronization. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(server): add POST /api/sync/push endpointnsfisis
Implement sync push endpoint with Last-Write-Wins conflict resolution. Includes Zod validation for decks, cards, and review logs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add local CRUD repositories for IndexedDBnsfisis
Add localDeckRepository, localCardRepository, and localReviewLogRepository with full CRUD operations for offline support. Includes sync tracking with _synced flag and methods for finding unsynced items. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add Dexie.js setup for IndexedDB local storagensfisis
Set up Dexie database with LocalDeck, LocalCard, and LocalReviewLog tables for offline support. Each entity includes _synced flag for tracking synchronization status. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07test(pwa): add tests for PWA configurationnsfisis
Verify vite-plugin-pwa manifest settings, workbox caching patterns, offline fallback page, and icon configuration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(pwa): add PWA support with vite-plugin-pwansfisis
Configure Progressive Web App functionality: - Add vite-plugin-pwa with workbox for service worker - Create web manifest with app metadata and icons - Add offline fallback page for when network is unavailable - Update index.html with PWA meta tags and theme color 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add study session page with card flip and rating UInsfisis
Implements the complete study flow frontend: - Study session page with card display and flip interaction - Rating buttons (Again, Hard, Good, Easy) with keyboard shortcuts - Progress display showing remaining cards count - Session complete screen with review summary - Study Now button on deck detail page 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(server): add study session API with FSRS integrationnsfisis
Implement study endpoints for spaced repetition learning: - GET /api/decks/:deckId/study to fetch due cards - POST /api/decks/:deckId/study/:cardId to submit reviews - Integrate ts-fsrs library for scheduling algorithm - Add ReviewLog repository for tracking review history 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add delete card modal with confirmationnsfisis
Completes Phase 5 card management by adding the ability to delete cards with a confirmation dialog. Includes unit tests for the modal component and integration tests for the delete flow in DeckDetailPage. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add edit card modal with form validationnsfisis
Add EditCardModal component allowing users to edit existing cards. Includes Edit button on each card in the deck detail page and comprehensive unit tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add create card modal with form validationnsfisis
Add CreateCardModal component to allow users to create new flashcards with front and back text fields. Integrate the modal into DeckDetailPage with an "Add Card" button. Include comprehensive unit tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add card list view in deck detail pagensfisis
Add DeckDetailPage component that displays all cards in a deck with their front/back content, state, review count, and lapses. Deck names on HomePage are now clickable links to navigate to the deck detail view. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(server): add card CRUD endpointsnsfisis
Implement card management API with create, read, update, and delete operations. Cards are nested under decks (/api/decks/:deckId/cards) with deck ownership verification on all operations. - Add Card interface and CardRepository to repository types - Create cardRepository with CRUD operations and soft delete - Add card routes with Zod validation and auth middleware - Include 29 tests covering all endpoints and error cases 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07test(client): add deck management integration testsnsfisis
Add Edit Deck and Delete Deck integration tests to HomePage.test.tsx, verifying modal interactions and list refresh behavior after CRUD operations. Completes Phase 4 frontend testing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add delete deck modal with confirmationnsfisis
Add DeleteDeckModal component that prompts users for confirmation before deleting a deck. Includes warning about permanent deletion and all associated cards. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add edit deck modal with form validationnsfisis
Add EditDeckModal component that allows users to edit existing decks. The modal pre-populates with current deck values and supports updating name and description fields with proper validation and error handling. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add create deck modal with form validationnsfisis
Add CreateDeckModal component that allows users to create new decks with name and optional description fields. Integrates with HomePage via a "Create Deck" button that opens the modal, and refreshes the deck list after successful creation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add deck list page with empty state and list viewnsfisis
Implement HomePage to display user's decks fetched from the API. Includes loading state, error handling with retry, and empty state messaging. Also adds comprehensive tests for the deck list page. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(server): add Deck CRUD endpoints with testsnsfisis
Implement complete Deck management API: - GET /api/decks - List user's decks - POST /api/decks - Create new deck - GET /api/decks/:id - Get deck by ID - PUT /api/decks/:id - Update deck - DELETE /api/decks/:id - Soft delete deck All endpoints require authentication and scope data to the authenticated user. Includes 22 unit tests covering success and error cases. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07docs: add comprehensive README with setup and usage instructionsnsfisis
Add production quick start guide, development setup instructions, environment variables reference, scripts table, and Docker commands. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>