Skip to content

feat: display all parts of speech with translated definitions in word… - #31

Merged
Talljack merged 13 commits into
mainfrom
fix/optimization
Apr 9, 2026
Merged

Talljack merged 13 commits into
mainfrom
fix/optimization

Conversation

@Talljack

@Talljack Talljack commented Apr 9, 2026

Copy link
Copy Markdown
Owner

… dictionary

Previously only the first part of speech was shown. Now extracts all meanings
from the dictionary API, batch-translates their definitions, and displays each
POS on its own line with abbreviated labels (n./v./adj. etc.).

Made-with: Cursor

Talljack added 13 commits April 9, 2026 00:15
… dictionary

Previously only the first part of speech was shown. Now extracts all meanings
from the dictionary API, batch-translates their definitions, and displays each
POS on its own line with abbreviated labels (n./v./adj. etc.).

Made-with: Cursor
New users will see word definitions and sentence translations immediately
when entering Write practice, without needing to manually toggle it on.

Made-with: Cursor
Users can now quickly switch between Listen, Read, and Write modes
for the same content via icon links in the page header.

Made-with: Cursor
Speak module has no generic /speak/[id] page for content items.
Dashboard recent activity and review/plan links now correctly
map speak content to /read/[id], matching ContentList behavior.
Speak book and scenario routes remain unchanged.

Made-with: Cursor
The Library page had both a Mic (Speak) and BookOpen (Read) button
that linked to the same /read/[id] URL. Removed the redundant
Speak button to avoid confusion. The Read button now serves both
read and speak-aloud practice.

Made-with: Cursor
Adds a quick-access link to /review/today in the Learning section
of the sidebar, making it easier to find and clear due review items.

Made-with: Cursor
When the user has an active learning streak, a flame badge with
the streak count appears in the dashboard header. Hidden when
streak is zero.

Made-with: Cursor
…Practice

Adds three new actions to the command palette:
- Go to Today's Review
- Go to Library
- Continue Last Practice (only shown when there are completed sessions)

Made-with: Cursor
After completing a typing session with errors, users can click
"Review Error Words" to re-practice only the misspelled words.
An "Error Review" badge indicates the mode, and "Try Again"
becomes "Full Text Again" to return to the original text.

Made-with: Cursor
Library now has a Select button that enters batch selection mode.
Users can check multiple content items, then apply tags to all
selected items or delete them in bulk. A floating action bar
appears at the bottom when items are selected.

Made-with: Cursor
…ck, and error boundaries

- Persistent translation cache: two-tier (memory + IndexedDB) with 7-day TTL
- Speak module recommendations: extend RecommendationPanel for scenario/free pages
- Chat voice input fallback: MediaRecorder + server STT for Tauri/non-Chrome
- Global error boundary: root-level global-error.tsx
- Update AGENTS.md: align with actual codebase (Next.js 16, Dexie v10, 26 APIs)
… warnings

Shadow Reading Feature:
- New shadow-reading-store with session management, module progress tracking,
  and confirmation dialogs for end/switch session
- Progress bar with animated module icons, completion checkmarks, and percentage
- Status bar with real-time timer, clickable module icons, and navigation
- Completion modal with module summary, action buttons, and confetti/sound effects
- Auto-start sessions from content list, cross-module navigation
- Keyboard shortcuts for next module (Cmd+]) and end session (Cmd+Shift+X)
- Full i18n support (en/zh) for shadow reading UI

Additional Features:
- Speak module i18n (en/zh) with 80+ localized strings
- Dashboard mini analytics (heatmap, review forecast, module breakdown)
- Loading skeletons for Dashboard, Library, Settings, Review
- Error boundaries for Listen, Read, Write, Speak modules
- Page spinner component for consistent loading states

Lint Fixes:
- Remove unused setActiveContentId in listen/read/write pages
- Fix useExhaustiveDependencies warnings with biome-ignore where intentional
- Add aria-label/aria-hidden to SVG icons for accessibility
- Add role, tabIndex, onKeyDown to interactive span in reading-block
- Wrap handleReset in useCallback in write page
- Fix controlled Dialog close by replacing DialogClose with onClick handlers

Made-with: Cursor
@vercel

vercel Bot commented Apr 9, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
echo-type Ready Ready Preview, Comment Apr 9, 2026 3:52pm

@Talljack
Talljack merged commit 518155a into main Apr 9, 2026
5 checks passed
@Talljack
Talljack deleted the fix/optimization branch April 9, 2026 15:55

This branch was successfully deployed

1 active deployment
Preview — f538d370 Deployed Apr 9, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant