feat: add tactile haptic feedback to rosary prayer cards
All checks were successful
CI / update (push) Successful in 3m56s

Every prayer card now vibrates on tap — non-decade cards advance to the
next section, decade cards increment the Ave Maria counter with auto-scroll
at 10. Two profiles (bead vs card) give distinct tactile feel; the 10th
bead fires the heavier card haptic to mark decade completion.

Native Android path via AndroidBridge.forceVibrate uses VibrationAttributes
USAGE_ACCESSIBILITY so vibration bypasses silent / Do-Not-Disturb inside
the Tauri app. Browser falls back to the web-haptics npm package. Haptic
fires on pointerdown with touch-action: manipulation for near-zero tap
latency; state change stays on click so scroll gestures don't advance.

- Remove CounterButton (whole card is now the tap target)
- Replace emoji with Lucide BookOpen icon, restyle citation as an
  understated inline typographic link (no background chip)
- Drop decade min-height leftover from the pre-auto-advance layout

Bumps site to 1.27.0 and Tauri app to 0.5.0 (new Android capability).
This commit is contained in:
2026-04-12 20:14:56 +02:00
parent 8023a907de
commit be7880304c
9 changed files with 246 additions and 178 deletions

24
pnpm-lock.yaml generated
View File

@@ -53,6 +53,9 @@ importers:
sharp:
specifier: ^0.34.5
version: 0.34.5
web-haptics:
specifier: ^0.0.6
version: 0.0.6(svelte@5.55.1)
devDependencies:
'@playwright/test':
specifier: 1.56.1
@@ -2033,6 +2036,23 @@ packages:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
web-haptics@0.0.6:
resolution: {integrity: sha512-eCzcf1LDi20+Fr0x9V3OkX92k0gxEQXaHajmhXHitsnk6SxPeshv8TBtBRqxyst8HI1uf2FyFVE7QS3jo1gkrw==}
peerDependencies:
react: '>=18'
react-dom: '>=18'
svelte: '>=4'
vue: '>=3'
peerDependenciesMeta:
react:
optional: true
react-dom:
optional: true
svelte:
optional: true
vue:
optional: true
webidl-conversions@7.0.0:
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
engines: {node: '>=12'}
@@ -3765,6 +3785,10 @@ snapshots:
dependencies:
xml-name-validator: 5.0.0
web-haptics@0.0.6(svelte@5.55.1):
optionalDependencies:
svelte: 5.55.1
webidl-conversions@7.0.0: {}
webidl-conversions@8.0.0: {}