alpha.24: calendar overhaul, timer notifications, unattended screen-time capture - #25
Merged
Merged
Conversation
…ime capture Calendar - Multiple calendars, each with a colour (12 swatches or any hex), one default, hidden individually from a colour key across the top. Events are drawn in their calendar's colour and pick their calendar when saved. - Pinch-to-zoom finally works in week and day view: the gesture is claimed on the initial pointer pass, before the vertical scroll and the day columns can consume it, and reads the live hour height instead of a stale capture. - Swiping (or the arrows) slides the period in from the side it came from, in month, week, day and the new Agenda list. The loaded window is padded a period either side so the incoming page already has its events. - Proton-style stacked alerts replace the single 30-minute toggle: at start, 5/10/15/30/60/120 minutes, 1/2 days, a week, or a typed value. Editing an event cancels its previous alarms (new CancelRemindersFor action). - Locations autocomplete through OpenStreetMap Nominatim, debounced. - Clashing events share the column width instead of hiding each other, the timeline opens on the current hour, the title jumps to any date, and there is event search plus duplicate and day-shift. - Subscriptions: any ICS or webcal link becomes a read-only coloured calendar, keyed by ICS UID, wiped and rewritten each pull so upstream cancellations disappear, refreshed on open and every six hours by a worker. The ICS codec now reads and writes UID, all-day dates and VALARM offsets. - Jarvis gains event_full, calendar_new, calendar_subscribe and calendar_sync plus a provider describing calendars, colours, defaults and what is coming. Clock and Focus - Running timers and the stopwatch post ongoing notifications with Pause/Resume and Reset. The number is drawn by the system chronometer from an absolute instant, so it needs no per-second updates and stays correct while the app is away. - Clock's timer and stopwatch moved into singletons, so leaving the tab no longer resets them. - Fixed the "Show seconds" button sitting on top of the countdown: the fade container stacks its children, so each mode now owns its own column. Screen time and backups - A worker re-derives the last 45 days every four hours whether or not the module is opened, because Android purges raw usage after about a month. - A daily worker takes an encrypted database backup on its own once a passphrase is set. Schema 18 adds the calendars table plus calendarId, reminderMinutes and externalUid on events. New unit tests cover reminder encoding, the palette and the ICS reader. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011kSsXNrSk6NDjM2FjFZ7Y9
codebooo
force-pushed
the
claude/lifeos-production-plan-v3-dmynx3
branch
from
August 5, 2026 14:08
8885087 to
e8d60e3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Calendar
detectTransformGesturesnever fired: the vertical scroll and the day columns' tap/long-press handlers consumed the pointers first, and the closure captured the hour height from its first composition. The new gesture watches the initial pointer pass, only claims once a second finger is down, and reads the live height through a state holder.CancelRemindersForaction, so the phone can't ring for a time that no longer exists).event_full(calendar, alerts, location),calendar_new,calendar_subscribe,calendar_sync, plus a provider that reads out calendars, colours, defaults, subscription state and what is coming up.Clock and Focus
Screen time and backups
Data
Schema 18 adds the
calendarstable pluscalendarId,reminderMinutesandexternalUidon events, with an auto-migration and exported schema.Verification
:app:assembleDebugand:app:assembleRelease(R8, minified) both green.gradle testgreen; 7 new unit tests cover reminder encoding, the palette and the ICS reader (UID, all-day dates, VALARM offsets).🤖 Generated with Claude Code
https://claude.ai/code/session_011kSsXNrSk6NDjM2FjFZ7Y9
Generated by Claude Code