Repository navigation
Daybook 0.9.0 (pre-release)
Pre-releaseThe first tagged release of Daybook, a journaling app in a 3D study that runs from one static web page. It is a pre-release: the test suites pass in Chrome, but Firefox, real phones and the real Claude storage service have not been tested yet (see Known limitations).
Try it: https://awaneesh03.github.io/DayBook/ (GitHub Pages, serving main; the journey and saving suites pass against it).
Highlights
- Today tab: habits with streaks and a 14-day history, tasks per day (unfinished ones move to today only when you ask, with no copies), and daily and weekly reviews written from what you actually recorded, on a new page that never overwrites anything.
- Search across every journal: every word must match; accents and case are ignored; dates and journal titles count.
- Quick navigation with ⌘K / Ctrl+K, from anywhere, including while writing.
- Focus writing: only the page and a quiet word count.
- Unsaved writing is recovered: if a save fails (for example, full browser storage), the writing is kept for that tab and offered back after a reload. It is never applied without your choice, and it is flagged when the saved page changed since.
- Full backup and restore (JSON): validation of untrusted files, a preview, a safety copy before replacing anything, rollback on failure, and habits and tasks included.
Fixes
- Opening a journal no longer shows two covers (the 3D journal and the reader's) or snaps the cover into the first page; closing is the mirror of opening.
- The save status no longer says Saved while another page's save has failed, and Ctrl+S waits for the save and reports what really happened.
- Dialogs (cover studio, room customizer, welcome) take keyboard focus, keep Tab inside, and give focus back; the library and sounds panel do too.
- three.js is loaded with Subresource Integrity, so a tampered CDN file is refused instead of run.
- Clearer copy in the welcome (2D mode) and the empty room, and a storage-space note in the backup card.
- On slow devices the camera could stop at 98% of its move to the desk when the room paused behind the reader; the move now always completes first.
- On slow devices the library could slide in many seconds late after closing a journal, and an Escape pressed in that time was undone when it arrived; it now opens at once.
- The intermittent welcome-dialog test failure was the test's timing (its click sometimes came after the welcome had correctly appeared); the test now clicks at the right moment, with the same assertion.
Testing
Nine browser test suites (npm test, 125 tests): transitions, weather and audio, stability, tour, backup, saving, planner, accessibility, and one end-to-end journey from the first look around to a restored backup. npm test serves the page locally and tests that served copy.
- CI (GitHub Actions, Ubuntu, Google Chrome, software WebGL): every suite passes on this release's commit.
- macOS (Google Chrome): every suite passes. (The full run on this commit happened to cross midnight, and three date-based planner tests failed then because the tests fix "today" when they start; the planner suite passed when re-run.)
- Earlier CI runs failed, and each failure was reproduced in a 2-CPU Linux container and fixed: the welcome dialog and journal opening are much slower there (the tests now wait longer, with no assertion changed); the camera stopping short and the library arriving late (both fixed in the app); a sticker covering the spot a test clicked; and sessionStorage not surviving a reload for pages opened from disk (
file://) in Chromium on Linux (the tests now use a served copy, and the README says so). - WebKit: a smoke run of the main and new features passed at desktop and phone sizes.
- Build: byte-for-byte reproducible, and CI checks that
index.htmlmatchessrc/.
Run it
git clone https://github.com/Awaneesh03/DayBook.git && cd DayBook
python3 build.py
python3 -m http.server 8000 # then open http://localhost:8000An internet connection is needed for three.js and the fonts. Without it, Daybook opens in a 2D mode where journals still work.
Known limitations
- Not tested in Firefox or on real phones; WebKit had a smoke run only.
- Unsaved writing is recovered after a reload of the same tab, not after closing it. Chrome on Linux does not reliably keep it for a page opened from disk; served pages keep it.
- Journals live in this browser only. They are not encrypted (the PIN is a privacy screen), and they do not sync between browsers or devices.
- Restore is a full replacement. Daybook cannot confirm the browser kept the safety copy. A narrow race with another tab saving at the same moment is reported after the reload, not prevented.
- The Claude storage path is tested only against a stand-in.
- Reviews count toward word counts and streaks, as template pages do.
- The swinging cover briefly overlaps the reader's top bar.
- An old, never-reproduced report of a custom preset lost on reload remains open.
- The repository has no license yet.