Skip to main content

max / goingson

Remove the stranded haptics plugin Same shape as the biometric lock in 77911ad, and the same reason: the frontend that drove it went with the rest of the JS in the port. What was left was a plugin initialised on every mobile launch and three capability grants nothing could reach, since haptics.js, touch.js and mobile.js were the only call sites and all three are gone. Gone: the workspace dependency, the mobile-only target section it was the only member of, the plugin init and the cfg block around it, and capabilities/ mobile.json entire. That file held nothing else once haptics went, which is why it is deleted rather than emptied. The mobile and android permission schemas still enumerate the haptics permissions. They regenerate on a mobile-target build and fw13 has no Android SDK, so they are left as 77911ad left the biometric ones. Not a rejection of the feature. A rebuild is a described-layer question rather than a port of the deleted JS: makeover_touch::Affordance::Haptic already names the two moments, and what has no answer is how a description says an act buzzes. Kept in goingson 557973cc.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session
https://claude.ai/code/session_01DwpiantpUgohzML4xr6KeQ
Author: Max Johnson <me@maxj.phd> · 2026-08-31 14:35 UTC
Signed with PGP, not checked
Commit: 2988cd64e7a05912f8da772bd95f9df7ecf3b238
Parent: 1a7c5a4
6 files changed, +1 insertion, -47 deletions
M Cargo.lock -15
@@ -2293,7 +2293,6 @@
2293 2293 "tauri",
2294 2294 "tauri-build",
2295 2295 "tauri-plugin-dialog",
2296 - "tauri-plugin-haptics",
2297 2296 "tauri-plugin-notification",
2298 2297 "tauri-plugin-opener",
2299 2298 "tauri-plugin-process",
@@ -6331,20 +6330,6 @@
6331 6330 "url",
6332 6331 ]
6333 6332
6334 - [[package]]
6335 - name = "tauri-plugin-haptics"
6336 - version = "2.3.2"
6337 - source = "registry+https://github.com/rust-lang/crates.io-index"
6338 - checksum = "01b167d598ada05c599f4460595108c8d1aa636030a97d19796c1bcda97d881d"
6339 - dependencies = [
6340 - "log",
6341 - "serde",
6342 - "serde_json",
6343 - "tauri",
6344 - "tauri-plugin",
6345 - "thiserror 2.0.20",
6346 - ]
6347 -
6348 6333 [[package]]
6349 6334 name = "tauri-plugin-notification"
6350 6335 version = "2.3.3"
M Cargo.toml -4
@@ -95,10 +95,6 @@
95 95 tauri-plugin-window-state = "2.4.1"
96 96 tauri-plugin-updater = "2"
97 97 tauri-plugin-process = "2"
98 - # Mobile-only plugins. Both ship a desktop stub whose commands error rather than
99 - # no-op, so they are gated to iOS/Android at the target level in src-tauri rather
100 - # than carried into the desktop binary and guarded at the call site.
101 - tauri-plugin-haptics = "2.3.2"
102 98
103 99 # Filesystem watching (db change notifications)
104 100 notify = "8.2"
@@ -168,14 +168,6 @@
168 168 workspace = true
169 169 features = ["image-png", "tray-icon"]
170 170
171 - # === Mobile-only dependencies (no desktop backend) ===
172 -
173 - # Mobile-only: plugins backed by iOS/Android system frameworks. The desktop half
174 - # of each crate exists but errors on every command, so gating the dependency is
175 - # what keeps a call on desktop a compile error instead of a runtime one.
176 - [target.'cfg(any(target_os = "ios", target_os = "android"))'.dependencies]
177 - tauri-plugin-haptics = { workspace = true }
178 -
179 171 # SMTP trust source, everywhere lettre can express it: the OS-native store, the
180 172 # same one reqwest and IMAP use.
181 173 [target.'cfg(not(target_os = "android"))'.dependencies]
@@ -403,13 +403,6 @@
403 403 .plugin(tauri_plugin_window_state::Builder::new().build());
404 404 }
405 405
406 - // Mobile-only plugins. Haptics carries gesture confirmation the desktop
407 - // build answers with hover and focus states instead.
408 - #[cfg(any(target_os = "ios", target_os = "android"))]
409 - {
410 - builder = builder.plugin(tauri_plugin_haptics::init());
411 - }
412 -
413 406 builder
414 407 .plugin(tauri_plugin_dialog::init())
415 408 .setup(|app| {
@@ -1,1 +1,1 @@
1 - {"default":{"identifier":"default","description":"Default capabilities for the main window","local":true,"windows":["main","compose-*"],"permissions":["core:default","core:window:allow-create","core:window:allow-close","core:window:allow-center","dialog:default"]},"desktop":{"identifier":"desktop","description":"Desktop-only capabilities (notifications, OTA updater). External URLs are opened via the validated open_external_url command, not a JS opener binding.","local":true,"windows":["main","compose-*"],"permissions":["notification:default","updater:default","process:allow-restart"],"platforms":["linux","macOS","windows"]},"mobile":{"identifier":"mobile","description":"Mobile-only capabilities (haptic feedback). Granted command by command rather than through the plugins' default sets: vibrate is not granted because nothing calls raw vibration, and a grant nothing uses is a grant nobody notices going wrong.","local":true,"windows":["main"],"permissions":["haptics:allow-impact-feedback","haptics:allow-notification-feedback","haptics:allow-selection-feedback"],"platforms":["iOS","android"]}}
1 + {"default":{"identifier":"default","description":"Default capabilities for the main window","local":true,"windows":["main","compose-*"],"permissions":["core:default","core:window:allow-create","core:window:allow-close","core:window:allow-center","dialog:default"]},"desktop":{"identifier":"desktop","description":"Desktop-only capabilities (notifications, OTA updater). External URLs are opened via the validated open_external_url command, not a JS opener binding.","local":true,"windows":["main","compose-*"],"permissions":["notification:default","updater:default","process:allow-restart"],"platforms":["linux","macOS","windows"]}}
@@ -1,12 +1,0 @@
1 - {
2 - "$schema": "https://schemas.tauri.app/capabilities/2",
3 - "identifier": "mobile",
4 - "description": "Mobile-only capabilities (haptic feedback). Granted command by command rather than through the plugins' default sets: vibrate is not granted because nothing calls raw vibration, and a grant nothing uses is a grant nobody notices going wrong.",
5 - "platforms": ["iOS", "android"],
6 - "windows": ["main"],
7 - "permissions": [
8 - "haptics:allow-impact-feedback",
9 - "haptics:allow-notification-feedback",
10 - "haptics:allow-selection-feedback"
11 - ]
12 - }