Commit Graph
19 Commits
Author SHA1 Message Date
ysj7705andClaude Opus 5.5 93baa1a781 ci: package the Decky zip and publish Gitea releases per version
ysj7705/mudfish-decky/pipeline/head This commit looks good
- scripts/package.py builds out/mudfish-decky-<version>.zip with the
  mudfish-decky/ folder Decky expects (runtime files only).
- scripts/gitea_release.py creates release v<version> and uploads the zip,
  skipping versions that already have a release.
- Jenkinsfile uses the organization folder's gitea-ysj7705 token.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 01:53:31 +09:00
ysj7705andClaude Opus 5.5 c2841e8f21 ci: Jenkins pipeline and tests for packaging/release tools
ysj7705/mudfish-decky/pipeline/head There was a failure building this commit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 01:25:31 +09:00
ysj7705andClaude Opus 5.5 f33bc0a49f chore: require DECK env for dev scripts; drop LAN details from docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 22:28:08 +09:00
ysj7705andClaude Opus 5.5 9139dd65b5 docs: install/update/remove usage and on-device verification
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 22:18:45 +09:00
ysj7705andClaude Opus 5.5 bc45f66da5 fix: reliable Mudfish removal on plugin uninstall
Decky 3.3 often SIGKILLs plugins 5s after SIGTERM because its socket
listener spins on EOF and starves the event loop (seen for several
plugins). So:
- _unload/_uninstall run synchronously (an awaited worker thread could
  never resume), and the daemon stop no longer waits.
- A transient systemd path unit watches the plugins folder; if this
  plugin's folder stays gone for 20s it stops the daemon and deletes
  /opt/mudfish and the plugin settings, then removes itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 22:14:51 +09:00
ysj7705andClaude Opus 5.5 3c28c9dac2 feat: install, update and remove Mudfish from the panel
- Install: download the latest package from mudfish.net, verify the
  Makeself MD5, unpack the bzip2 tar ourselves (no installer script is
  executed; path traversal and links rejected) into /opt/mudfish/<ver>.
- Update: checked at most daily; button-only; refused while the tunnel is
  up; carries the saved login (.conf, .conf.db) into the new version,
  restarts the daemon and keeps only the previous version.
- Remove: button with confirmation, and automatically when the plugin is
  uninstalled: VPN off, daemon stopped, mudfish-tap removed,
  /opt/mudfish deleted, plugin settings cleared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:58:32 +09:00
ysj7705andClaude Opus 5.5 027a029b47 docs: QR phone login usage and verification
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:46:29 +09:00
ysj7705andClaude Opus 5.5 8774e850b6 fix: treat a logged-out launcher (autologin off, token 0) as needing login
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:43:56 +09:00
ysj7705andClaude Opus 5.5 7513fef6f8 feat: phone login via QR when the saved Mudfish login expires
When autologin is rejected the panel offers '휴대폰으로 로그인 (QR)'. It opens
a 5-minute LAN relay to the launcher UI guarded by a one-time token (first
phone to open the QR URL is the only client allowed) and shows the URL as a
QR code. The relay closes as soon as a new session appears, on cancel, on
expiry, and on unload.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:42:12 +09:00
ysj7705andClaude Opus 5.5 d8f1c05372 docs: on-device verification results and sleep decision
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:28:06 +09:00
ysj7705andClaude Opus 5.5 8c595389a4 fix: turn VPN off on sleep/resume and unload; harden teardown
- Detect resume (boottime-monotonic jump) and tear down the tunnel: on wake
  NetworkManager drops Mudfish's relay route and all traffic black-holes.
- Turn the tunnel off on plugin unload (Deck shutdown/restart).
- One verified teardown path for disconnect, connect failure/timeout and
  node-change failure; keep the route snapshot if tap0 stays up.
- Toggle can always turn off a stuck tunnel; status failure with tap0 up
  is reported as an error, not off.
- Re-sign in once when the cloud rejects an expired jwt.
- Expire cached pings after 10 minutes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:21:21 +09:00
ysj7705andClaude Opus 5.5 f957489866 docs: usage notes for Mudfish VPN plugin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:11:20 +09:00
ysj7705andClaude Opus 5.5 cf7fc1aa1e feat: quick access panel for Mudfish Full VPN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:56:59 +09:00
ysj7705andClaude Opus 5.5 384d0a75f0 feat: expose controller through decky backend
Prepare signs in on load (never connects), system CA bundle for HTTPS,
root-owned deploy extraction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:50:57 +09:00
ysj7705andClaude Opus 5.5 4e27e29225 feat: mudfish client and connect/disconnect controller
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:47:21 +09:00
ysj7705andClaude Opus 5.5 18b8ee1dd7 feat: japan node ranking and leftover route detection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:44:43 +09:00
ysj7705andClaude Opus 5.5 e60873b75a chore: scaffold Mudfish VPN decky plugin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:44:06 +09:00
ysj7705andClaude Opus 5.5 349e44000e docs: record on-device Full VPN findings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:43:00 +09:00
ysj7705andClaude Opus 5.5 1669370111 docs: design spec and implementation plan for Mudfish decky plugin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:39:01 +09:00