Skip to content

feat: add TimelineReminder support to TimelinePin#14

Merged
matejdro merged 1 commit into
pebble-dev:mainfrom
kchinnasamy:feat/timeline-reminder
Jun 18, 2026
Merged

feat: add TimelineReminder support to TimelinePin#14
matejdro merged 1 commit into
pebble-dev:mainfrom
kchinnasamy:feat/timeline-reminder

Conversation

@kchinnasamy

Copy link
Copy Markdown
Contributor

Summary

Adds an optional reminders: List to TimelinePin (plus a TimelineReminder data class) and the serialization to populate it. Defaults to emptyList(), so existing callers are unaffected.

Motivation

A TimelinePin inserted via insertTimelinePin currently lands in the timeline but is silent — there's no way to attach an alert, so nothing buzzes the watch at the pin's time. Host apps (Core Devices / Cobble) already insert BlobDatabase.Reminder entries for their own calendar reminders; this exposes the same capability to PebbleKit2 consumers so a third-party app's pin can fire a reminder buzz.

Implementation

  • common-api/.../TimelinePin.kt — val reminders: List = emptyList() on TimelinePin; new TimelineReminder(time: Instant, layout: TimelineLayout). Use GENERIC_REMINDER layout + system://images/NOTIFICATION_REMINDER icon.
  • common/.../TimelinePinSerialization.kt — toPinJson() serializes the reminders array so the host inserts the matching BlobDatabase.Reminder entries.

Fully backward-compatible (empty-list default).

Adds a reminders field to TimelinePin so Cobble/Core can insert the
corresponding BlobDatabase.Reminder entries that trigger the watch buzz.
Without reminders, timeline pins are silent.
@matejdro

Copy link
Copy Markdown
Contributor

Nice. This is already read in the Core app, right?

@kchinnasamy

Copy link
Copy Markdown
Contributor Author

Nice. This is already read in the Core app, right?

If you mean the vibe-pattern override from #111 — that's merged in microPebble, but the Core-app side of the same change is coredevices/mobileapp#193, still in review, so it hasn't landed in Core yet.

This PR is a different layer, though. #111/#193 control how a reminder buzzes — a global vibration-pattern override applied to the calendar reminders libpebble3 already syncs from the phone. This one is about whether a reminder exists at all for a third-party pin: it adds reminders to TimelinePin so any PebbleKit2 app can attach its own BlobDatabase. Reminder to a pin it inserts and actually buzz, independent of calendar sync. So they're complementary — #14 creates the reminder, #111/#193 style its vibration.

@matejdro matejdro merged commit 2d395ec into pebble-dev:main Jun 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants