Skip to content

Commit 86159b0

Browse files
committed
Release v0.1.5
1 parent 00d5de6 commit 86159b0

File tree

14 files changed

+62
-79
lines changed

14 files changed

+62
-79
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ node_modules/
22
dist/
33
dist-electron/
44
release/
5+
release-exp*/
56
.vite/
67
*.log
78
*.env

README.md

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h1 align="center">ScriptPlayer+</h1>
66

77
<p align="center">
8-
A modern funscript video player with <b>The Handy</b> integration, experimental <b>Intiface / Buttplug / Direct Serial</b> support, <b>EroScripts</b> browser login, and multi-language support.
8+
A modern funscript video player with <b>The Handy</b> integration, <b>Intiface / Buttplug / FunOSR</b> multi-axis support, <b>EroScripts</b> browser login, and multi-language support.
99
</p>
1010

1111
<p align="center">
@@ -36,22 +36,15 @@
3636
|:-:|:-:|
3737
| ![Settings](docs/screenshots/setting.png) | ![macOS](docs/screenshots/macos.png) |
3838

39-
## Experimental v0.1.5-exp.4
39+
## What's New In v0.1.5
4040

41-
The `v0.1.5-exp.4` prerelease focuses on TCode-compatible multi-axis devices with `Direct Serial (COM)` support, one-line `L0/L1/L2/R0/R1/R2` output, smoother timeline and heatmap playback updates, and improved Handy re-sync after timeline seeks.
41+
`v0.1.5` rolls the experimental multi-axis work into the main release with official `FunOSR (Direct Serial / COM)` support, `Intiface / Buttplug` raw TCode transport, adjustable one-line `L0/L1/L2/R0/R1/R2` output, smoother timeline and heatmap playback updates, better Handy re-sync after timeline seeks, and the packaged Windows fixes from `exp.7` / `exp.8`.
4242

43-
| Experimental v0.1.5 Preview |
43+
| v0.1.5 Preview |
4444
|:-:|
45-
| ![Experimental v0.1.5 Preview](docs/screenshots/preview_v015_exp1.png) |
45+
| ![v0.1.5 Preview](docs/screenshots/preview_v015_exp1.png) |
4646

47-
- Download the prerelease: [ScriptPlayer+ v0.1.5-exp.4](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4)
48-
49-
## What's New In v0.1.4
50-
51-
- **Continuous Playback + Shuffle** — Move through the current folder automatically or pick a random next file when playback ends
52-
- **Playback Speed Control** — Switch between `0.5x` and `2.0x` directly in the player while keeping Handy timing aligned
53-
- **Real Handy Stroke Range Support** — Handy stroke min/max settings now transform the uploaded script instead of only changing the UI
54-
- **Inverse Stroke Mode** — Flip funscript positions before upload for alternate mounting or reversed motion setups
47+
- Download the stable release: [ScriptPlayer+ v0.1.5](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5)
5548

5649
## Features
5750

@@ -68,6 +61,8 @@ The `v0.1.5-exp.4` prerelease focuses on TCode-compatible multi-axis devices wit
6861
- Time offset adjustment
6962
- Stroke range customization
7063
- Inverse stroke toggle
64+
- **Intiface / Buttplug Multi-Axis Support** — Connect supported devices, map features to script axes, and send raw TCode when available
65+
- **FunOSR (COM) Support** — Stream one-line TCode directly to compatible devices at an adjustable update rate
7166
- **EroScripts Integration** — Search and download funscripts directly from EroScripts via in-app browser login (no API key needed)
7267
- Session-based login persisted locally
7368
- Direct download into the configured script storage folder
@@ -81,13 +76,13 @@ The `v0.1.5-exp.4` prerelease focuses on TCode-compatible multi-axis devices wit
8176

8277
### Windows
8378

84-
1. Download the latest `ScriptPlayerPlus-0.1.4-Windows-x64.zip` from [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)
79+
1. Download the latest Windows x64 build from [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)
8580
2. Extract and run `ScriptPlayerPlus.exe` — no installation required
86-
3. For the experimental Direct Serial / Intiface build, download `ScriptPlayerPlus-0.1.5-exp.4-Windows-x64.zip` from [the v0.1.5-exp.4 prerelease](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4)
81+
3. The main `v0.1.5` build includes The Handy, Intiface / Buttplug, and official FunOSR device support
8782

8883
### macOS
8984

90-
1. Download `ScriptPlayerPlus-1.0.0-MacOS-Universal.zip` from [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)
85+
1. Download the latest macOS build from [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)
9186
2. Extract and move `ScriptPlayerPlus.app` to Applications
9287

9388
### Build from Source

docs/README_JA.md

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h1 align="center">ScriptPlayer+</h1>
66

77
<p align="center">
8-
<b>The Handy</b>連携、実験的な <b>Intiface / Buttplug / Direct Serial</b> 対応、<b>EroScripts</b>ブラウザログイン、多言語対応のモダンなファンスクリプトビデオプレーヤー
8+
<b>The Handy</b>連携、<b>Intiface / Buttplug / FunOSR</b> のマルチアクシス対応、<b>EroScripts</b>ブラウザログイン、多言語対応のモダンなファンスクリプトビデオプレーヤー
99
</p>
1010

1111
<p align="center">
@@ -36,22 +36,15 @@
3636
|:-:|:-:|
3737
| ![設定](screenshots/setting.png) | ![macOS](screenshots/macos.png) |
3838

39-
## 実験版 v0.1.5-exp.4
39+
## v0.1.5 の新機能
4040

41-
`v0.1.5-exp.4` のプレリリースでは、TCode 対応のマルチアクシス機器向け `Direct Serial (COM)``L0/L1/L2/R0/R1/R2` の 1 行 TCode 出力、より滑らかなタイムライン / ヒートマップ追従、そしてタイムライン seek 後の Handy 再同期改善を含みます
41+
`v0.1.5` では実験版で進めていたマルチアクシス対応を正式版へ取り込み、公式 `FunOSR (Direct Serial / COM)` サポート、`Intiface / Buttplug` の raw TCode 転送、調整可能な `L0/L1/L2/R0/R1/R2` の 1 行出力、より滑らかなタイムライン / ヒートマップ追従、seek 後の Handy 再同期改善、そして `exp.7` / `exp.8` で入った Windows パッケージ版の修正を含みます
4242

43-
| v0.1.5-exp.4 プレビュー |
43+
| v0.1.5 プレビュー |
4444
|:-:|
45-
| ![v0.1.5-exp.4 プレビュー](screenshots/preview_v015_exp1.png) |
45+
| ![v0.1.5 プレビュー](screenshots/preview_v015_exp1.png) |
4646

47-
- プレリリースのダウンロード: [ScriptPlayer+ v0.1.5-exp.4](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4)
48-
49-
## v0.1.4 の追加内容
50-
51-
- **連続再生 + シャッフル再生** — 再生終了後に現在のフォルダから次のファイルを自動再生するか、ランダムに次のファイルを選べます
52-
- **再生速度コントロール** — プレーヤー上で `0.5x` から `2.0x` まで切り替えられ、Handy の同期も維持されます
53-
- **Handy ストローク範囲の実動作対応** — ストローク最小/最大設定が UI 表示だけでなく、アップロードされるスクリプトに実際に適用されます
54-
- **ストローク反転モード** — 取り付け方向や好みに合わせて funscript の位置を反転して送信できます
47+
- 正式リリースのダウンロード: [ScriptPlayer+ v0.1.5](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5)
5548

5649
## 主な機能
5750

@@ -68,6 +61,8 @@
6861
- 時間オフセット調整
6962
- ストローク範囲のカスタマイズ
7063
- ストローク反転トグル
64+
- **Intiface / Buttplug マルチアクシス対応** — 対応デバイスを接続し、機能ごとの軸マッピングと raw TCode 転送を利用できます
65+
- **FunOSR (COM) 対応** — 互換デバイスへ 1 行 TCode を調整可能な更新レートで直接送信します
7166
- **EroScripts連携** — アプリ内ブラウザログインでファンスクリプトの検索・ダウンロード(APIキー不要)
7267
- ログインセッションをローカル保持
7368
- 設定したスクリプト保存フォルダへ直接ダウンロード
@@ -81,9 +76,9 @@
8176

8277
### Windows
8378

84-
1. [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)から最新の `ScriptPlayerPlus-0.1.4-Windows-x64.zip` をダウンロード
79+
1. [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)から最新の Windows x64 ビルドをダウンロード
8580
2. 解凍して`ScriptPlayerPlus.exe`を実行 — インストール不要
86-
3. Direct Serial / Intiface 実験ビルドは [v0.1.5-exp.4 プレリリース](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4) から `ScriptPlayerPlus-0.1.5-exp.4-Windows-x64.zip` をダウンロード
81+
3. メインの `v0.1.5` ビルドに The Handy、Intiface / Buttplug、公式 FunOSR サポートを同梱しています
8782

8883
### macOS
8984

docs/README_KO.md

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h1 align="center">ScriptPlayer+</h1>
66

77
<p align="center">
8-
<b>The Handy</b> 연동, 실험적 <b>Intiface / Buttplug / Direct Serial</b> 지원, <b>EroScripts</b> 브라우저 로그인, 다국어 지원을 갖춘 모던 펀스크립트 비디오 플레이어
8+
<b>The Handy</b> 연동, <b>Intiface / Buttplug / FunOSR</b> 다축 지원, <b>EroScripts</b> 브라우저 로그인, 다국어 지원을 갖춘 모던 펀스크립트 비디오 플레이어
99
</p>
1010

1111
<p align="center">
@@ -36,22 +36,15 @@
3636
|:-:|:-:|
3737
| ![설정](screenshots/setting_kor.png) | ![macOS](screenshots/macos.png) |
3838

39-
## 실험판 v0.1.5-exp.4
39+
## v0.1.5에서 추가된 내용
4040

41-
`v0.1.5-exp.4` 프리릴리스는 TCode 호환 다축 장치를 위한 `Direct Serial (COM)` 지원, `L0/L1/L2/R0/R1/R2` 한 줄 TCode 출력, 더 부드러운 타임라인/히트맵 추적, 그리고 타임라인 seek 후 Handy 재동기화 개선을 포함합니다.
41+
`v0.1.5`는 실험판에서 검증한 다축 기능을 정식 릴리스에 통합해 공식 `FunOSR (Direct Serial / COM)` 지원, `Intiface / Buttplug` raw TCode 전송, 조절 가능한 `L0/L1/L2/R0/R1/R2` 한 줄 출력, 더 부드러운 타임라인/히트맵 추적, seek 후 Handy 재동기화 개선, 그리고 `exp.7` / `exp.8`에서 들어간 Windows 패키징 안정화까지 포함합니다.
4242

43-
| v0.1.5-exp.4 미리보기 |
43+
| v0.1.5 미리보기 |
4444
|:-:|
45-
| ![v0.1.5-exp.4 미리보기](screenshots/preview_v015_exp1.png) |
45+
| ![v0.1.5 미리보기](screenshots/preview_v015_exp1.png) |
4646

47-
- 프리릴리스 다운로드: [ScriptPlayer+ v0.1.5-exp.4](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4)
48-
49-
## v0.1.4에서 추가된 내용
50-
51-
- **연속 재생 + 랜덤 재생** — 재생이 끝나면 현재 폴더 기준으로 다음 파일을 자동 재생하거나 랜덤으로 다음 파일을 고를 수 있습니다
52-
- **배속 조절** — 플레이어에서 `0.5x`부터 `2.0x`까지 바로 변경할 수 있고 Handy 타이밍도 함께 맞춰집니다
53-
- **Handy 스트로크 범위 실제 적용** — 스트로크 최소/최대 설정이 UI 표시만 바꾸는 것이 아니라 업로드되는 스크립트에 실제로 반영됩니다
54-
- **스트로크 반전 모드** — 장치 방향이나 세팅에 맞게 funscript 위치값을 반대로 뒤집어 보낼 수 있습니다
47+
- 정식 릴리스 다운로드: [ScriptPlayer+ v0.1.5](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5)
5548

5649
## 주요 기능
5750

@@ -68,6 +61,8 @@
6861
- 시간 오프셋 조정
6962
- 스트로크 범위 커스터마이징
7063
- 스트로크 반전 토글
64+
- **Intiface / Buttplug 다축 지원** — 지원 장치를 연결하고 기능별 축 매핑 후 raw TCode 전송까지 사용할 수 있습니다
65+
- **FunOSR (COM) 지원** — 호환 장치로 한 줄 TCode를 조절 가능한 주기로 직접 전송합니다
7166
- **EroScripts 연동** — 앱 내 브라우저 로그인으로 펀스크립트 검색 및 다운로드 (API 키 불필요)
7267
- 로그인 세션 로컬 유지
7368
- 설정된 스크립트 저장 폴더로 직접 다운로드
@@ -81,9 +76,9 @@
8176

8277
### Windows
8378

84-
1. [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)에서 최신 `ScriptPlayerPlus-0.1.4-Windows-x64.zip` 다운로드
79+
1. [Releases](https://github.com/sioaeko/scriptplayer-plus/releases)에서 최신 Windows x64 빌드 다운로드
8580
2. 압축 해제 후 `ScriptPlayerPlus.exe` 실행 — 설치 불필요
86-
3. Direct Serial / Intiface 실험 빌드는 [v0.1.5-exp.4 프리릴리스](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4)에서 `ScriptPlayerPlus-0.1.5-exp.4-Windows-x64.zip` 다운로드
81+
3. 메인 `v0.1.5` 빌드에 The Handy, Intiface / Buttplug, 공식 FunOSR 지원이 모두 포함됩니다
8782

8883
### macOS
8984

docs/README_ZH.md

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h1 align="center">ScriptPlayer+</h1>
66

77
<p align="center">
8-
集成 <b>The Handy</b> 设备、实验性 <b>Intiface / Buttplug / Direct Serial</b> 支持、<b>EroScripts</b> 浏览器登录和多语言支持的现代 Funscript 视频播放器
8+
集成 <b>The Handy</b> 设备、<b>Intiface / Buttplug / FunOSR</b> 多轴支持、<b>EroScripts</b> 浏览器登录和多语言支持的现代 Funscript 视频播放器
99
</p>
1010

1111
<p align="center">
@@ -36,22 +36,15 @@
3636
|:-:|:-:|
3737
| ![设置](screenshots/setting.png) | ![macOS](screenshots/macos.png) |
3838

39-
## Experimental v0.1.5-exp.4
39+
## v0.1.5 新增内容
4040

41-
`v0.1.5-exp.4` 预发布包含面向 TCode 多轴设备的 `Direct Serial (COM)` 支持、`L0/L1/L2/R0/R1/R2` 单行 TCode 输出、更顺滑的时间线 / 热力图跟随,以及时间线 seek Handy 重新同步改进
41+
`v0.1.5` 正式版整合了实验阶段的多轴功能,包含官方 `FunOSR (Direct Serial / COM)` 支持、`Intiface / Buttplug` 原始 TCode 传输、可调节的 `L0/L1/L2/R0/R1/R2` 单行输出、更顺滑的时间线 / 热力图跟随seek 后更稳定的 Handy 重新同步,以及 `exp.7` / `exp.8` 的 Windows 打包修复
4242

43-
| v0.1.5-exp.4 预览 |
43+
| v0.1.5 预览 |
4444
|:-:|
45-
| ![v0.1.5-exp.4 预览](screenshots/preview_v015_exp1.png) |
45+
| ![v0.1.5 预览](screenshots/preview_v015_exp1.png) |
4646

47-
- 下载预发布版本: [ScriptPlayer+ v0.1.5-exp.4](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4)
48-
49-
## v0.1.4 新增内容
50-
51-
- **连续播放 + 随机播放** — 播放结束后可以按当前文件夹顺序自动播放下一个文件,或随机选择下一个文件
52-
- **播放速度控制** — 可以在播放器中直接切换 `0.5x``2.0x`,同时保持 Handy 同步
53-
- **Handy 行程范围真正生效** — 行程最小/最大设置现在会实际变换上传脚本,而不只是改变界面显示
54-
- **反转行程模式** — 可以在上传前反转 funscript 位置,适配不同安装方向或反向动作需求
47+
- 下载正式版本: [ScriptPlayer+ v0.1.5](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5)
5548

5649
## 主要功能
5750

@@ -68,6 +61,8 @@
6861
- 时间偏移调整
6962
- 行程范围自定义
7063
- 行程反转开关
64+
- **Intiface / Buttplug 多轴支持** — 连接兼容设备,按功能映射脚本轴,并在可用时发送原始 TCode
65+
- **FunOSR (COM) 支持** — 以可调刷新率向兼容设备直接发送单行 TCode
7166
- **EroScripts 集成** — 通过应用内浏览器登录搜索和下载 Funscript(无需 API 密钥)
7267
- 登录会话保存在本地
7368
- 可直接下载到设置的脚本保存文件夹
@@ -81,9 +76,9 @@
8176

8277
### Windows
8378

84-
1.[Releases](https://github.com/sioaeko/scriptplayer-plus/releases) 下载最新的 `ScriptPlayerPlus-0.1.4-Windows-x64.zip`
79+
1.[Releases](https://github.com/sioaeko/scriptplayer-plus/releases) 下载最新的 Windows x64 构建
8580
2. 解压后运行 `ScriptPlayerPlus.exe` — 无需安装
86-
3. Direct Serial / Intiface 实验构建可从 [v0.1.5-exp.4 预发布](https://github.com/sioaeko/scriptplayer-plus/releases/tag/v0.1.5-exp.4) 下载 `ScriptPlayerPlus-0.1.5-exp.4-Windows-x64.zip`
81+
3. `v0.1.5` 构建已包含 The Handy、Intiface / Buttplug 与官方 FunOSR 支持
8782

8883
### macOS
8984

electron/osrSerial.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { OsrSerialPortInfo, OsrSerialState } from '../src/types'
88
const DEFAULT_BAUD_RATE = 115200
99
const runtimeRequire = createRequire(import.meta.url)
1010
const execFileAsync = promisify(execFile)
11+
const PORT_SORTER = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' })
1112

1213
type SerialPortBinding = AutoDetectTypes
1314
type RuntimeSerialPort = SerialPortStream<SerialPortBinding>
@@ -61,7 +62,7 @@ export class OsrSerialManager {
6162
pnpId: port.pnpId ?? null,
6263
displayName: buildPortDisplayName(port.path, port.manufacturer ?? null, port.serialNumber ?? null),
6364
}))
64-
.sort((left, right) => left.path.localeCompare(right.path))
65+
.sort((left, right) => PORT_SORTER.compare(left.path, right.path))
6566
}
6667

6768
async connect(path: string, baudRate = DEFAULT_BAUD_RATE): Promise<OsrSerialState> {

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"name": "scriptplayer-plus",
3-
"version": "0.1.5-exp.8",
4-
"description": "ScriptPlayer+ - Funscript video player with Handy and Intiface support",
3+
"version": "0.1.5",
4+
"description": "ScriptPlayer+ - Funscript video player with Handy, Intiface, and FunOSR support",
5+
"author": "sioaeko <grade0422@gmail.com>",
56
"license": "PolyForm-Noncommercial-1.0.0",
67
"main": "dist-electron/main.js",
78
"scripts": {

postcss.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default {
1+
module.exports = {
22
plugins: {
33
tailwindcss: {},
44
autoprefixer: {},

src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ export default function App() {
12111211
if (deviceProvider === 'serial') {
12121212
return {
12131213
connected: osrSerialConnected,
1214-
label: selectedOsrSerialPort ? selectedOsrSerialPort.path : 'Direct Serial',
1214+
label: selectedOsrSerialPort ? selectedOsrSerialPort.path : 'FunOSR',
12151215
detail: `${DEFAULT_OSR_SERIAL_BAUD_RATE} baud / ${osrSerialUpdateRate}Hz`,
12161216
statusText: osrSerialError || (!selectedOsrSerialPort && osrSerialPorts.length > 0 ? 'Select a serial port.' : null),
12171217
statusTone: osrSerialError ? 'error' as const : null,

src/i18n/locales/en.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ const en: Record<string, string> = {
3939
'device.intiface': 'Intiface',
4040
'device.provider': 'Provider',
4141
'device.providerHandy': 'Handy',
42-
'device.providerSerial': 'Direct Serial (COM)',
42+
'device.providerSerial': 'FunOSR (COM)',
4343
'device.providerIntiface': 'Intiface / Buttplug',
4444
'device.connectionKey': 'Connection Key',
4545
'device.enterKey': 'Enter your connection key',
4646
'device.getKey': 'Get your connection key from handyfeeling.com',
47-
'device.serial': 'Direct Serial',
47+
'device.serial': 'FunOSR',
4848
'device.serialPort': 'COM Port',
4949
'device.noSerialPorts': 'No serial ports found',
5050
'device.refresh': 'Refresh',
5151
'device.updateRate': 'Update Rate',
52-
'device.serialHint': 'Connect directly to the device COM port. The app sends a single-line TCode command at the selected rate and keeps missing axes centered at 5000.',
52+
'device.serialHint': 'Connect directly to the FunOSR COM port. The app sends a single-line TCode command at the selected rate and keeps missing axes centered at 5000.',
5353
'device.intifaceServer': 'WebSocket Server',
5454
'device.enterIntifaceServer': 'ws://127.0.0.1:12345',
5555
'device.connected': 'Connected',

0 commit comments

Comments
 (0)