{"id":50879875,"url":"https://github.com/Enclave0775/Intiface_Central-Sillytavern-plugin","last_synced_at":"2026-07-03T03:00:49.235Z","repository":{"id":308905282,"uuid":"1034514716","full_name":"Enclave0775/Intiface_Central-Sillytavern-plugin","owner":"Enclave0775","description":"讓你的Sillytavern接上Intiface Central","archived":false,"fork":false,"pushed_at":"2026-04-21T02:26:16.000Z","size":313,"stargazers_count":26,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T04:31:10.907Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Enclave0775.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-08T14:09:38.000Z","updated_at":"2026-04-21T02:26:21.000Z","dependencies_parsed_at":"2025-09-06T08:24:12.533Z","dependency_job_id":"6d40ce96-b2f8-4076-b411-cf0e8e404436","html_url":"https://github.com/Enclave0775/Intiface_Central-Sillytavern-plugin","commit_stats":null,"previous_names":["enclave0775/lovense-sillytavern-plugin","enclave0775/intiface_central-sillytavern-plugin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Enclave0775/Intiface_Central-Sillytavern-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Enclave0775%2FIntiface_Central-Sillytavern-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Enclave0775%2FIntiface_Central-Sillytavern-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Enclave0775%2FIntiface_Central-Sillytavern-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Enclave0775%2FIntiface_Central-Sillytavern-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Enclave0775","download_url":"https://codeload.github.com/Enclave0775/Intiface_Central-Sillytavern-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Enclave0775%2FIntiface_Central-Sillytavern-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35070339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-15T13:00:22.898Z","updated_at":"2026-07-03T03:00:49.230Z","avatar_url":"https://github.com/Enclave0775.png","language":"JavaScript","funding_links":[],"categories":["Development and Libraries"],"sub_categories":["Other Frameworks and Plugins"],"readme":"# Intiface Central for SillyTavern\n\n[中文版](README_zh.md)\n\nThis is an extension for SillyTavern that allows you to connect and control Intiface_Central devices using [Intiface Desktop](https://intiface.com/).\n\n## Features\n\n*   **Connect to Intiface Central:** Easily connect to your toys via the Buttplug protocol, powered by Intiface.\n*   **Manual Control:** Simple sliders and input fields in the UI allow you to manually control the vibration intensity, oscillation, linear position, and movement duration of your connected device.\n*   **Chat-Driven Control:** Automate the experience by sending commands directly through the SillyTavern chat. The extension scans the latest message (both AI and User) for specific commands to adjust the device's functions.\n*   **Sequential Execution \u0026 Reading Pace:** When multiple commands are present in a message, they are executed in sequence. The extension simulates a \"reading speed\" to delay the execution of subsequent commands based on the distance between them in the text, creating a natural flow synced with the text.\n*   **Visual Highlights:**\n    *   **Reading Highlight (Yellow):** A \"karaoke-style\" highlight scans through the text to visualize the simulated reading progress.\n    *   **Command Highlight (Pink):** When a command is triggered, it lights up in pink to indicate activation.\n    *   *Colors are customizable in settings.*\n*   **Playlist \u0026 Loop Modes:**\n    *   **A-B Segment Playback:** Set a \"Start Flag\" and an \"End Flag (Checkered)\" next to messages to play only a specific section of the chat.\n    *   **Full Playlist (Default):** Plays through to the end (or the set End Flag) and automatically loops back to the first message (or the Start Flag).\n    *   **Last Message Only:** Continuously repeats only the very last message.\n*   **Smart UI:** The control panel automatically hides unsupported features (like Linear controls on a Vibrator) unless \"Developer Mode\" is enabled.\n\n## Installation\n\n1.  Open SillyTavern.\n2.  Click the \"Extensions\" button in the top toolbar.\n3.  Click \"Install Extension\".\n4.  Copy this URL into the input field: https://github.com/Enclave0775/Intiface_Central-Sillytavern-plugin\n5.  Click \"Install just for me\" or \"Install for all users\".\n\n## How to Use\n\n1.  **Start Intiface Desktop:** Launch Intiface and start the server. This will open a WebSocket server at `ws://127.0.0.1:12345`, which the extension needs to connect to.\n2.  **Open SillyTavern:** Navigate to your SillyTavern instance.\n3.  **Connect the Extension:**\n    *   You will see a new electrocardiogram icon in the top-right menu. Click it to open the control panel.\n    *   Click the **Connect** button. The status should change to \"Connected\".\n    *   The extension will automatically scan for and list connected devices.\n4.  **Settings:**\n    *   **Loop Patterns:** Check this to repeat the commands in messages. Unchecking this stops the loop. (Note: Manually pausing a device also unchecks this).\n        *   **Full Playlist:** Loops from the active message to the end, then restarts.\n        *   **Last Message Only:** Repeats only the final message.\n    *   **Loop Interval:** Set the delay (in ms) between loops.\n    *   **Reading Speed:** Set the speed (chars/second) for the reading highlight simulation. Default is 20.\n    *   **Developer Mode:** Check this to show all control sliders regardless of device capabilities.\n    *   **Colors:** Customize the highlight colors for reading and commands.\n5.  **Control Your Device:**\n    *   **Manual Control:** Drag the sliders to set the vibration, oscillation, and linear position.\n    *   **Chat Control:** Send a message in the chat containing specific commands.\n\n## Chat Command Formats\n\nThe extension supports multiple commands, including `VIBRATE`, `OSCILLATE`, `LINEAR`, `LINEAR_SPEED`, and `LINEAR_PATTERN`.\n\n### Vibrate Command\n\nTo control the vibration, your message must contain a `\"VIBRATE\"` key. The value can be a number between 0 and 100, or an object for pattern-based vibration.\n\n**Example (Single Value):**\n\n`\"VIBRATE\": 80`\n\n**Example (Pattern):**\n\nTo create a vibration pattern, provide an object with a `pattern` array and an `interval` (or array of intervals).\n`\"VIBRATE\": {\"pattern\": [20, 40, 20, 40, 30, 100], \"interval\": [1000, 3000]}`\n\n### Oscillate Command\n\nTo control the oscillation, your message must contain an `\"OSCILLATE\"` key.\n\n**Example (Single Value):**\n\n`\"OSCILLATE\": 80`\n\n**Example (Pattern):**\n\n`\"OSCILLATE\": {\"pattern\": [20, 40, 20, 40, 30, 100], \"interval\": [2000, 3000]}`\n\n### Linear Command\n\nTo control linear movement.\n\n**Example:**\n\nTo move the device from 10% to 90% position over 2 seconds (2000ms):\n`\"LINEAR\": {\"start_position\": 10, \"end_position\": 90, \"duration\": 2000}`\n\n### Linear Speed Gradient Command\n\nTo create a smooth, gradual change in speed (a speed ramp).\n\n**Example:**\n\nTo move the device between 10% and 90%, and have the speed gradually increase from a 2-second stroke to a 0.5-second stroke over 10 steps:\n`\"LINEAR_SPEED\": {\"start_position\": 10, \"end_position\": 90, \"start_duration\": 2000, \"end_duration\": 500, \"steps\": 10}`\n\n### Advanced Linear Pattern Command\n\nTo create complex linear movement patterns with variable positions, speeds, and loops.\n\n```json\n\"LINEAR_PATTERN\": {\n  \"repeat\": true,\n  \"segments\": [\n    { \"start\": 10, \"end\": 90, \"durations\": [1000, 500], \"loop\": 3 },\n    { \"start\": 20, \"end\": 80, \"durations\": [1200], \"loop\": 5 }\n  ]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEnclave0775%2FIntiface_Central-Sillytavern-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FEnclave0775%2FIntiface_Central-Sillytavern-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEnclave0775%2FIntiface_Central-Sillytavern-plugin/lists"}