Skip to content

feat(watch-settings): add global vibration pattern override for notifications and calendar#111

Merged
matejdro merged 1 commit into
matejdro:mainfrom
kchinnasamy:feat/vibration-override
May 18, 2026
Merged

feat(watch-settings): add global vibration pattern override for notifications and calendar#111
matejdro merged 1 commit into
matejdro:mainfrom
kchinnasamy:feat/vibration-override

Conversation

@kchinnasamy

Copy link
Copy Markdown
Contributor

Adds two vibration pattern pickers to Watch Settings — one for notifications, one for calendar reminders. Each shows the bundled DefaultVibePattern entries plus any user-created custom patterns, or "None" to fall back to the existing priority chain.

The selected name persists via LibPebble.updateConfig(). Notifications pick it up through BasicNotificationProcessor's existing priority chain (global override is the lowest priority, so per-app/per-contact rules still win). Calendar reminders use a new vibePattern parameter on CalendarEvent.toTimelinePin() / toTimelineReminder(), wired through PhoneCalendarSyncer.

Pattern labels are localized via R.string while the upstream displayName is preserved as the storage / VibePatternDao key.

Depends on matejdro/libpebble3#2; submodule ref repoints to origin/micropebble after that merges.

Test plan

  • Notifications: pick a non-default, trigger a test notification, watch vibrates with the chosen pattern
  • Calendar: pick a non-default, next reminder fires with the chosen pattern
  • Switch back to None, defaults restored
  • ./gradlew verifyPaparazziDebug clean
  • ./gradlew :home:ui:runDebugDetekt :home:ui:lintRelease clean

…ications and calendar

Adds two vibration pattern pickers to the Watch Settings screen — one for
notifications and one for calendar reminders. Each picker shows the predefined
DefaultVibePattern entries plus any user-created custom patterns.

The selected pattern name is persisted via LibPebble.updateConfig() and applied
automatically: notifications via the existing BasicNotificationProcessor priority
chain, calendar events via the new vibePattern parameter on CalendarEvent.toTimelinePin()
and toTimelineReminder() wired through PhoneCalendarSyncer.

Bumps libpebble3 submodule to pick up the calendar vibration support.
@matejdro

Copy link
Copy Markdown
Owner

Now that matejdro/libpebble3#2 has been pulled, do we need to update the submodule ref to point to the new merge now? Or will it work regardless?

@kchinnasamy

Copy link
Copy Markdown
Contributor Author

Now that matejdro/libpebble3#2 has been pulled, do we need to update the submodule ref to point to the new merge now? Or will it work regardless?

Functionally it works either way — 3b84f28b is now reachable from origin/micropebble after the merge of #2, so the build resolves the submodule fine. But you're right that the pin should track the upstream branch. do you want me to create a follow-up commit for that?

@matejdro

Copy link
Copy Markdown
Owner

I think it's fine. Thanks for your contribution!

@matejdro matejdro merged commit 4c1701a into matejdro:main May 18, 2026
2 checks 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