Repository navigation
v0.9.6
Date: 2026-04-19
Breaking Changes
- POS removed from word store -- The
posfield has been completely removed fromWordRecord. The primary key is now the lemma alone. All API routes, request/response models, CSV export/import, and the frontend have been updated accordingly. Legacy CSV files with aposcolumn are still accepted on import (the column is silently ignored).
Changed
- API routes simplified --
PATCH /api/vocabulary/{lemma}/{pos}→PATCH /api/vocabulary/{lemma};DELETE /api/vocabulary/{lemma}/{pos}→DELETE /api/vocabulary/{lemma}. - Feedback payload simplified --
FeedbackRequest.targetWordsandmarkedWordschanged fromWordPosEntry[]objects (lemma + pos) to plainstring[]of lemmas. - CSV export -- The
poscolumn is no longer exported. New column order:lemma,level,cooldown,first_seen,last_seen,last_context,seen_count. - CSV import -- Only
lemmais required. Theposcolumn is accepted but ignored for backward compatibility with v0.9.5 exports. - Stats view -- POS column removed from vocabulary table.
- pick_target_words -- With lemma as the sole PK, the deduplication loop is replaced by a direct
.limit()query.
Changed Files
backend/src/services/word_store.py--WordRecord.posremoved;_find_record()removed;apply_feedback(),update_word_record(),delete_word_record(),import_vocabulary()simplified to lemma-only.backend/src/main.py--WordPosEntrymodel removed;FeedbackRequestuseslist[str];WordRecordOutdropspos; routes use/{lemma}instead of/{lemma}/{pos}; CSV export dropsposcolumn.frontend/src/api/reading.ts--WordPosEntryremoved;FeedbackRequestandWordRecordOutsimplified.frontend/src/views/HomeView.vue-- Feedback construction simplified to lemma strings.frontend/src/views/StatsView.vue-- POS column andwordKey()helper removed.frontend/src/composables/useI18n.ts--posremoved from i18n type and all translation maps.backend/tests/test_algorithm.py-- All tests updated to use lemma strings instead of(lemma, pos)tuples. POS-specific tests removed.backend/tests/test_word_store.py-- All tests updated:apply_feedbackcalls uselist[str];update_word_record/delete_word_recorddroppos; import tests use lemma-only rows with legacy pos backward-compat test.backend/tests/test_main.py-- API tests updated: feedback payloads usestring[]; routes use/{lemma}; CSV assertions match new column layout; legacy pos CSV import test added.