['min_range' => 1]]); if ($presetId) { $selectedPreset = get_preset((int) $presetId); if ($selectedPreset && $_SERVER['REQUEST_METHOD'] !== 'POST') { $formData = [ 'name' => (string) $selectedPreset['name'], 'angle_deg' => (int) $selectedPreset['angle_deg'], 'intensity_pct' => (int) $selectedPreset['intensity_pct'], 'pattern_mode' => (string) $selectedPreset['pattern_mode'], 'notes' => (string) ($selectedPreset['notes'] ?? ''), ]; } } $recentPresets = get_recent_presets(8); $assetVersion = (string) max(@filemtime(__DIR__ . '/assets/css/custom.css') ?: time(), @filemtime(__DIR__ . '/assets/js/main.js') ?: time()); $toastMessage = null; if (isset($_GET['saved']) && ctype_digit((string) $_GET['saved'])) { $toastMessage = 'Preset saved. You can reopen it anytime from Recent presets.'; } ?> <?= e($pageTitle) ?>
Recliner Haptics Now
Browser web app · Gamepad vibration demo

Simulate a recliner experience with live angle control and haptic testing.

Connect a compatible gamepad in Chrome or Edge, tune the recline angle, choose a vibration pattern, and save reusable presets for demos or prototyping.

0–160° recline visualizer Continuous + pulse rumble Saved preset library
Loaded state
Angle°
Intensity%
Pattern

Tip: the browser requires a user interaction before triggering vibration. Press Test vibration after connecting the controller.

Visualizer

Live recline preview

A restrained 2D profile that updates instantly as you move the angle and intensity controls.

upright
full recline
degrees
Recline°
Rumble%
Pattern
Gamepad

Haptic control surface

Select a connected controller, then test the current preset with one click.

Scanning for controllers…
Works best in Chrome or Edge with a gamepad that exposes vibrationActuator support.
°
%
Save preset

Name and store the current configuration

Create a reusable preset library so your simulator feels like a real tool, not just a single test screen.

Current profile
Angle°
Intensity%
Pattern
Preset library

Recent presets

Load a saved setup back into the simulator or open a dedicated detail view.

stored

No presets yet

Tune the simulator, save your first profile, and it will appear here for quick reuse.