feat(mobile): haptic tick on PTT press/release and on reactions (#125)
utils/haptics.ts: tick('ptt-on' | 'ptt-off' | 'reaction') → 10/10/8 ms
navigator.vibrate, a no-op without the API (iOS), when the system prefers
reduced motion, or when the new Settings → Calls "Haptic Feedback" switch
(default on, only rendered where the API exists) is off. PTT is observed
once through pttActiveAtom so the keyboard, global-hotkey and on-screen
paths all tick; reactions tick where the reaction event is sent in the
room and thread timelines (quick bar, hover bar, sheet and emoji board
all funnel there).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
@@ -273,6 +273,8 @@ export interface Settings {
|
||||
stripImageMetadata: boolean;
|
||||
// [Gitea #118] After a crash/update/reload while in a voice room: ask, rejoin, or nothing.
|
||||
callRejoinAfterRestart: 'ask' | 'auto' | 'off';
|
||||
// [Gitea #125] Vibration ticks on PTT press/release and reactions (Android only).
|
||||
hapticFeedback: boolean;
|
||||
|
||||
// [Gitea #104] Mirror user preferences to `io.lotus.settings` account data
|
||||
// so other devices pick them up. Device-local itself (utils/settingsSync).
|
||||
@@ -397,6 +399,7 @@ const defaultSettings: Settings = {
|
||||
stripTrackingParams: true,
|
||||
stripImageMetadata: true,
|
||||
callRejoinAfterRestart: 'ask',
|
||||
hapticFeedback: true,
|
||||
|
||||
settingsSync: true,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user