Manabu Ninja
Manabu Ninja / Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

2026-03-11
01:42
Add calver versioning to build and run tasks Compute build-name (YYYY.M.D-hash) and build-number (YYYYMMDD) from the current date and Fossil checkout hash using go-task template functions. Pass these as --build-name/--build-number flags to all flutter build commands and a new task run command. Add task version to print the computed values. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Leaf check-in: 5f9d005c10 user: curti tags: trunk
01:25
Add smart auto-pull sync with dirty flag and fix DB hot-swap crash Track whether local data changed since last sync so devices that are just "behind" auto-pull silently instead of showing the conflict dialog. Fix crash when sync pull replaces the database — MainMenu now reinitializes services via didUpdateWidget when the database instance changes, and defers post-sync refresh to avoid querying the closed connection. Also fix SQLite upload MIME type (application/x-sqlite3) and add retry logic for transient connection errors on GET/HEAD. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: e61df1e018 user: curti tags: trunk
2026-03-10
23:18
Add INTERNET permission to Android manifest Flutter only includes this permission automatically in debug builds. Release builds require it explicitly, which caused network requests (including remoteStorage sync) to fail with DNS lookup errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 262e57a402 user: curti tags: trunk
21:22
Fix web build and add incremental release builds Move NativeDatabase usage behind a conditional import so dart:ffi is excluded from web compilation. Add sources/generates to Taskfile build tasks so go-task skips unchanged platforms on repeated builds. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 9b0b33ffe2 user: curti tags: trunk
20:33
Add optional remoteStorage cloud sync Upload the SQLite database and settings as binary/JSON blobs to a user's remoteStorage server. ETag-based conflict detection prompts the user to choose between local and cloud data when devices diverge. - WebFinger discovery + OAuth implicit grant (Android deep links, Windows localhost callback server) - Push after practice/review sessions and review eligibility changes - Periodic sync every 5 minutes (foreground only, lifecycle-aware) - Typed AuthorizationException with reconnect UI for expired tokens - Integrity check on pulled databases before replacing local copy - Web platform excluded with graceful "not available" message Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: bb606e425b user: curti tags: trunk
2026-02-23
19:07
Fix Windows podman and Dockerfile build issues go-task's mvdan/sh interpreter can't find Unix tools or execute shell wrapper scripts on Windows. Route podman and rm through WSL using Taskfile variables. Also fix Dockerfile to use fully-qualified image names (required by WSL podman) and create /build output directory before dart compile. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: ecc4cdfd38 user: curti tags: trunk
18:32
Replace msmtp with resendmailer for Fossil email DigitalOcean blocks outbound SMTP ports, so msmtp to smtp.resend.com fails silently. Replace it with resendmailer, which sends via Resend's HTTP API on port 443. The Dockerfile now uses a multi-stage build to compile resendmailer from source with the Dart SDK. Also add email-send-command setup to the set-resend-key task and restart caddy after web deploys. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 8498f5f2d2 user: curti tags: trunk
17:26
Expand README features section with abstract and more detail Move Features above Downloads so visitors see what the app does before download links. Add a short introductory paragraph and restore specifics (number ranges, mode descriptions, TTS fallback behavior) to each bullet. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: f5f36e9486 user: curti tags: trunk
17:18
Streamline documentation to match resendmailer style Add emoji section headers, horizontal rules, and shorter prose across all five docs (README, CONTRIBUTING, FOSSIL, astro/README, infra/README). Remove duplication between README and CONTRIBUTING/FOSSIL, convert tables to bullet lists where more scannable, and move the Task Runner reference to an appendix. No content lost -- only trimmed and reorganized. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 1d772d86b7 user: curti tags: trunk
16:17
Update documentation for Justfile -> Taskfile migration Replace all Just references with Task (go-task.dev) across project documentation: command syntax (just -> task), module prefix (:: -> :), renamed task (build-release -> build), and prerequisites. Remove deleted justfiles and add new Taskfiles. Trim README.md to remove redundant project structure and full task listing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 285d78ef0e user: curti tags: trunk
15:14
Small name tweaks check-in: 941a2cca05 user: curti tags: trunk
2026-02-20
21:27
Working on figuring out all this infra struff check-in: c9dcdbc424 user: curti tags: trunk
14:21
Add Fossil ticket tracking integration to Claude Code workflow Add a /ticket slash command for managing Fossil tickets (list, show, create, update, close) and integrate ticket references into the /commit workflow. CLAUDE.md now instructs Claude to proactively check for related tickets when working on bugs or features. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 6fe5ccb566 user: curti tags: trunk
14:02
Containerize server with Podman/Quadlet and rewrite docs as runbooks Replace bare-metal Caddy and Fossil installs with Podman containers managed by Quadlet systemd units. Container images are built locally and copied to the server -- no registry needed. Split the monolithic justfile into modules (root, infra::, site::) and delete the old deploy.ps1/deploy.sh scripts in favor of just recipes. Rewrite all documentation as practical runbooks: new FOSSIL.md guide for Git users, contributor prerequisites as a checklist table, day-to-day ops organized as "how do I do X?" tables, and updated command references throughout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: de176d6df1 user: curti tags: trunk
2026-02-19
17:55
Replace session-count review eligibility with perfect pass and star toggle Review mode no longer requires 3 separate practice sessions per card. Groups now unlock for review either by completing a perfect pass (zero errors) or by tapping the star icon on browse screens. Adds database table ReviewEligibleGroups (schema v3), GroupCardService for group-to-card expansion, and pass-completion snackbars. Fixes SkillMode.all crash in review deck builder. Also: show romaji on Word of the Day (blurred with meaning), add TTS safety timeout for Desktop, hide Continue card, update window title bar, refresh website screenshots/favicons and add "What it is" section. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 09a5459229 user: curti tags: trunk
2026-02-17
19:14
Rebrand app icon to new Manabu Ninja design Replace the old swirl logo with a new gradient ninja-eyes icon. Update all platform icon assets (Android, web, Windows), change the launcher background to dark (#0e0e0e), and use the circular variant in the main menu header alongside the "Manabu Ninja" name. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 964fab3c15 user: curti tags: trunk
17:52
Add mixed practice mode, TTS toggle, and simplify UI widgets Add "All" skill mode that randomly cycles through available practice styles (reading, writing, hearing, drawing) within a single session. Add a TTS enable/disable preference so users can turn off audio-based practice without platform TTS being unavailable. Simplify TappableJapaneseText from a romaji-toggle StatefulWidget to a TTS-on-tap StatelessWidget, and replace the session app bar audio button with a home button for faster navigation. Add test plan document. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 4e9dc42725 user: curti tags: trunk
14:37
Fix Word of the Day showing raw {{name-ja}} templates Apply applyTemplates() to the word of the day in the main menu so templated vocabulary words (e.g. from introductions.json) display the user's configured name. Also fix pubspec.yaml package name to be a valid Dart identifier (manabu_ninja). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 0c67f6f07b user: curti tags: trunk
2026-02-16
18:15
Update name from Open Manabu to Manabu Ninja check-in: 12f257b14e user: curti tags: trunk
2026-02-14
02:12
Astro link fixes check-in: b7b844a72e user: curti tags: trunk
02:06
Small change check-in: 85b1f8d50b user: curti tags: trunk
01:51
Astro site setup and remove some windows stuff check-in: a8925a5ca9 user: curti tags: trunk
01:50
Astro site setup and remove some windows stuff check-in: 2395b8da6b user: curti tags: trunk
01:33
Improve README files check-in: 75c3d52b13 user: curti tags: trunk
01:07
Minor cleanup check-in: d0f630fad8 user: curti tags: trunk
2026-02-11
20:10
Add project documentation — README rewrite and codebase-wide dartdoc Replace the placeholder README with full project documentation covering features, getting started (Fossil workflow), practice modes, and platform notes. Move architecture documentation into the code itself via library-level dartdoc on main.dart, database.dart, and practice_card.dart, plus class and method docs across all modules. Update repository URL to Fossil. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 1afaf87245 user: curti tags: trunk
15:43
@ Fix study reminders not firing due to timezone defaulting to UTC Add flutter_timezone to detect the device's actual timezone and set it as the local location before scheduling notifications. Previously tz.local defaulted to UTC, causing reminders to be scheduled at the wrong time or silently skipped. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> @ check-in: 69792eeaaa user: curti tags: trunk
15:17
Add new custom skin for fossil repo check-in: 192206c942 user: curti tags: trunk
15:14
Add daily goals and study reminders Add a configurable daily card goal (default 20) with a progress card on the main menu that tracks cards studied today and awards 25 XP when the goal is met. Add Android-only daily study reminders via local notifications with configurable time, permission handling, and boot persistence. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 7ede534552 user: curti tags: trunk
02:21
Add full katakana support Add katakana as a new study category with browse, study, drawing, review, and continue/resume support. Includes KanjiVG stroke order data for all 71 characters (46 base + 25 dakuten/handakuten) and a new fresh pink accent color. Katakana mirrors the existing hiragana implementation across all practice modes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: 918c7fbf32 user: curti tags: trunk
01:36
Add Claude Code skills and suppress CRLF warnings Add /commit and /add-kanji-level slash command skills for Claude Code. Allow CRLF line endings repo-wide via fossil-settings/crlf-glob since this is a Windows-primary project. Update local settings with Fossil commit permissions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> check-in: d2a042ea9a user: curti tags: trunk
01:00
Add Review method check-in: fa44121b02 user: curti tags: trunk
2026-02-10
17:31
Make drawing is own practice mode check-in: d1f0d63c8c user: curti tags: trunk
17:26
Large reformat and stat changes check-in: 7bb1f1e813 user: curti tags: trunk
14:03
Add missing strokes for the recently-added hiragana sets check-in: 7efffd4179 user: curti tags: trunk
2026-02-09
22:19
Improved word studying check-in: ef561aa85e user: curti tags: trunk
18:23
Add additional hiragana series check-in: 3cdbac39be user: curti tags: trunk
17:31
Add new word practice session check-in: dd451371d4 user: curti tags: trunk
16:10
Improve flashcard repeats and drawing canvas check-in: 2c7857eec4 user: curti tags: trunk
2026-02-06
20:58
Add kanji check-in: b634f24b6b user: curti tags: trunk
15:47
Improved UI for selecting sets/categories to study with check-in: f20a1e4689 user: curti tags: trunk
14:35
Improved mode selection check-in: 08dddb5e15 user: curti tags: trunk
12:46
Navigation changes on the main menu, kanji empty page. check-in: 7c5620affe user: curti tags: trunk
12:03
Improved drawing practice support with stroke order shown check-in: 432bf25dda user: curti tags: trunk
11:12
Add new Drawing practice mode for hiragana check-in: b4729f84bb user: curti tags: trunk
00:00
Add XP animation check-in: 5c8558ca1d user: curti tags: trunk
2026-02-05
23:56
Move the XP/profile bar to bottom of screen, show on other screens check-in: 668d9f5170 user: curti tags: trunk
23:38
Idk check-in: 4b6d41a2c1 user: curti tags: trunk
19:55
Additional UI tweaks check-in: a4e55d7532 user: curti tags: trunk
19:39
UI tweaks and visual improvements to practice screen check-in: 5e3e843e25 user: curti tags: trunk