You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bump RELEASE_DATE and promote the [Unreleased] changelog section to
the 3.1.0-fork release dated 2026-04-21. Regenerate the docs-src/
mirrors of CHANGELOG.md and CONTRIBUTING.md via docs-pre-build.
Copy file name to clipboardExpand all lines: docs-src/changelog.md
+91Lines changed: 91 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,97 @@ other versions come from the canonical LWT ("official" branch on Git).
10
10
For git tags, official releases are marked like "v1.0.0", while unofficial
11
11
ones are marked like "v1.0.0-fork".
12
12
13
+
## [3.1.0-fork] - 2026-04-21
14
+
15
+
### Added
16
+
17
+
***Internationalization (i18n)** (#223): PHP `__()` and JS `t()` /
18
+
Alpine `$t` helpers backed by per-namespace JSON files under `locale/`,
19
+
with English fallback and a per-user `app_language` setting. The
20
+
preferences page exposes a language picker.
21
+
***Spanish translation** of the home page, main navbar and user
22
+
preferences page (#223).
23
+
***Activity tracking with streaks and calendar heatmap** (#227): New
24
+
`activity_log` table tracks daily terms created, terms reviewed, and texts
25
+
read. A backfill migration populates historical data from existing word
26
+
timestamps. The home page now shows current streak, best streak, today's
27
+
activity summary, and a GitHub-style calendar heatmap of the last 12 months.
28
+
New API endpoints at `/api/v1/activity/{dashboard,streak,calendar,today}`.
29
+
***PHP 8.5 support**: All dependencies now support PHP 8.5. Added PHP 8.5 to
30
+
the CI test matrix.
31
+
32
+
### Changed
33
+
34
+
***Update notification**: The "new LWT version available" banner on the
35
+
home page is now dismissible (remembered per-version via localStorage),
36
+
only shown to admins, and can be disabled entirely via a new
37
+
`set-check-for-updates` admin setting in the settings page.
38
+
***Navbar**: Merged the admin dropdown into the user dropdown to save space.
39
+
***Per-user statistics**: Moved the statistics page from `/admin/statistics` to `/profile/statistics` since it shows per-user learning data. The old URL redirects to the new one.
40
+
***Cleaner setting definition keys**: `SettingDefinitions` entries now use
41
+
`default` (string) and `numeric` (bool) instead of the cryptic `dft` (string)
42
+
and `num` (int 0/1). The legacy keys are still accepted on read for
43
+
backwards compatibility but are deprecated.
44
+
***Renamed `dev` branch to `develop`**: All CI workflows and documentation
45
+
updated to reference the new branch name.
46
+
***Upgraded dev tooling to latest major versions**:
47
+
* PHPUnit 10 → 11: migrated all test annotations (`@dataProvider`, `@covers`,
48
+
`@group`, `@runTestsInSeparateProcesses`) to PHP 8 attributes. Replaced the
49
+
duplicate integration testsuite in `phpunit.xml` with `#[Group('integration')]`.
Copy file name to clipboardExpand all lines: docs-src/developer/contributing.md
+26Lines changed: 26 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -240,6 +240,32 @@ When adding new features or fixing bugs that affect user-facing functionality, c
240
240
2. Use fixtures for test data
241
241
3. Run tests locally before submitting PRs
242
242
243
+
## Curated Feed Sources
244
+
245
+
LWT ships a registry of curated RSS/Atom news feeds for language learners in `data/curated_feeds.json`. Each entry includes pre-configured extraction selectors and options matching the app's feed system.
246
+
247
+
### Checking Feed Health
248
+
249
+
A health-check script detects link rot, XML format changes, and stale feeds:
250
+
251
+
```bash
252
+
php bin/check-feeds.php # Check all feeds
253
+
php bin/check-feeds.php --language=fr # Check only French feeds
0 commit comments