Skip to content

Daybook 0.9.0 (pre-release)

Pre-release
Pre-release

Choose a tag to compare

@Awaneesh03 Awaneesh03 released this 23 Oct 19:10

The 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.html matches src/.

Run it

git clone https://github.com/Awaneesh03/DayBook.git && cd DayBook
python3 build.py
python3 -m http.server 8000   # then open http://localhost:8000

An 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.