muxplex 0.3.2__tar.gz → 0.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. {muxplex-0.3.2 → muxplex-0.3.3}/CHANGELOG.md +5 -0
  2. {muxplex-0.3.2 → muxplex-0.3.3}/PKG-INFO +1 -1
  3. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/terminal.js +7 -5
  4. {muxplex-0.3.2 → muxplex-0.3.3}/pyproject.toml +1 -1
  5. {muxplex-0.3.2 → muxplex-0.3.3}/.github/workflows/ci.yml +0 -0
  6. {muxplex-0.3.2 → muxplex-0.3.3}/.github/workflows/publish.yml +0 -0
  7. {muxplex-0.3.2 → muxplex-0.3.3}/.gitignore +0 -0
  8. {muxplex-0.3.2 → muxplex-0.3.3}/README.md +0 -0
  9. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/DESIGN-SYSTEM.md +0 -0
  10. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/README.md +0 -0
  11. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/favicons/apple-touch-icon.png +0 -0
  12. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/favicons/favicon-16.png +0 -0
  13. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/favicons/favicon-32.png +0 -0
  14. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/favicons/favicon-48.png +0 -0
  15. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/favicons/favicon.ico +0 -0
  16. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-1024.png +0 -0
  17. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-128.png +0 -0
  18. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-16.png +0 -0
  19. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-192.png +0 -0
  20. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-22.png +0 -0
  21. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-24.png +0 -0
  22. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-256.png +0 -0
  23. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-32.png +0 -0
  24. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-48.png +0 -0
  25. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-512.png +0 -0
  26. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/icons/muxplex-icon-64.png +0 -0
  27. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/lockup/lockup-on-dark-32.png +0 -0
  28. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/lockup/lockup-on-dark-64.png +0 -0
  29. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/lockup/lockup-on-light-32.png +0 -0
  30. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/lockup/lockup-on-light-64.png +0 -0
  31. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/og/og-dark.png +0 -0
  32. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/og/og-light.png +0 -0
  33. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/pwa/pwa-192.png +0 -0
  34. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/pwa/pwa-512.png +0 -0
  35. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/svg/icon/muxplex-icon-dark.svg +0 -0
  36. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/svg/icon/muxplex-icon-light.svg +0 -0
  37. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/svg/lockup/lockup-on-dark.svg +0 -0
  38. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/svg/lockup/lockup-on-light.svg +0 -0
  39. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/svg/wordmark/wordmark-on-dark.svg +0 -0
  40. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/svg/wordmark/wordmark-on-light.svg +0 -0
  41. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/tokens.css +0 -0
  42. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/tokens.json +0 -0
  43. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/wordmark/wordmark-on-dark-32.png +0 -0
  44. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/wordmark/wordmark-on-dark-64.png +0 -0
  45. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/wordmark/wordmark-on-light-32.png +0 -0
  46. {muxplex-0.3.2 → muxplex-0.3.3}/assets/branding/wordmark/wordmark-on-light-64.png +0 -0
  47. {muxplex-0.3.2 → muxplex-0.3.3}/docs/how-we-built-the-muxplex-brand.md +0 -0
  48. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-26-web-tmux-dashboard-design.md +0 -0
  49. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-26-web-tmux-phase1-backend.md +0 -0
  50. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-26-web-tmux-phase2a-frontend-static.md +0 -0
  51. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-26-web-tmux-phase2b-javascript.md +0 -0
  52. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-27-session-sidebar-design.md +0 -0
  53. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-27-session-sidebar-implementation.md +0 -0
  54. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-28-auth-design.md +0 -0
  55. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-28-auth-phase1-infrastructure.md +0 -0
  56. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-28-auth-phase2-ui-cli.md +0 -0
  57. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-28-packaging-for-distribution.md +0 -0
  58. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-29-settings-design.md +0 -0
  59. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-29-settings-phase1.md +0 -0
  60. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-29-settings-phase2.md +0 -0
  61. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-30-multi-device-federation-design.md +0 -0
  62. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-30-multi-device-federation-phase1.md +0 -0
  63. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-30-multi-device-federation-phase2.md +0 -0
  64. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-30-multi-device-federation-phase3.md +0 -0
  65. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-31-cli-phase1-config-serve.md +0 -0
  66. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-31-cli-phase2-service-commands.md +0 -0
  67. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-03-31-cli-service-refactor-design.md +0 -0
  68. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-03-tls-phase1-foundation.md +0 -0
  69. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-03-tls-phase2-autodetect.md +0 -0
  70. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-03-tls-setup-design.md +0 -0
  71. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-04-device-selector.md +0 -0
  72. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-04-tls-nudge-design.md +0 -0
  73. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-08-federation-state-propagation-design.md +0 -0
  74. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-08-federation-state-propagation-plan.md +0 -0
  75. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-08-server-side-settings-design.md +0 -0
  76. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/2026-04-08-server-side-settings-plan.md +0 -0
  77. {muxplex-0.3.2 → muxplex-0.3.3}/docs/plans/README.md +0 -0
  78. {muxplex-0.3.2 → muxplex-0.3.3}/docs/screenshots/settings-commands.png +0 -0
  79. {muxplex-0.3.2 → muxplex-0.3.3}/docs/screenshots/settings-display.png +0 -0
  80. {muxplex-0.3.2 → muxplex-0.3.3}/docs/screenshots/settings-multidevice.png +0 -0
  81. {muxplex-0.3.2 → muxplex-0.3.3}/docs/screenshots/settings-sessions.png +0 -0
  82. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/__init__.py +0 -0
  83. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/__main__.py +0 -0
  84. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/auth.py +0 -0
  85. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/bells.py +0 -0
  86. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/cli.py +0 -0
  87. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/app.js +0 -0
  88. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/apple-touch-icon.png +0 -0
  89. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/favicon-32.png +0 -0
  90. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/favicon.ico +0 -0
  91. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/index.html +0 -0
  92. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/login.html +0 -0
  93. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/manifest.json +0 -0
  94. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/pwa-192.png +0 -0
  95. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/pwa-512.png +0 -0
  96. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/style.css +0 -0
  97. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/tests/test_app.mjs +0 -0
  98. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/tests/test_terminal.mjs +0 -0
  99. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/vendor/addon-image.js +0 -0
  100. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/vendor/xterm-addon-fit.js +0 -0
  101. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/vendor/xterm-addon-search.js +0 -0
  102. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/vendor/xterm-addon-web-links.js +0 -0
  103. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/vendor/xterm.css +0 -0
  104. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/vendor/xterm.js +0 -0
  105. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/frontend/wordmark-on-dark.svg +0 -0
  106. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/main.py +0 -0
  107. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/service.py +0 -0
  108. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/sessions.py +0 -0
  109. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/settings.py +0 -0
  110. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/state.py +0 -0
  111. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/__init__.py +0 -0
  112. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_api.py +0 -0
  113. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_auth.py +0 -0
  114. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_bells.py +0 -0
  115. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_cli.py +0 -0
  116. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_frontend_css.py +0 -0
  117. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_frontend_html.py +0 -0
  118. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_frontend_js.py +0 -0
  119. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_integration.py +0 -0
  120. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_readme.py +0 -0
  121. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_service.py +0 -0
  122. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_sessions.py +0 -0
  123. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_settings.py +0 -0
  124. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_settings_sync_poll.py +0 -0
  125. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_state.py +0 -0
  126. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_tls.py +0 -0
  127. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_ttyd.py +0 -0
  128. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tests/test_ws_proxy.py +0 -0
  129. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/tls.py +0 -0
  130. {muxplex-0.3.2 → muxplex-0.3.3}/muxplex/ttyd.py +0 -0
  131. {muxplex-0.3.2 → muxplex-0.3.3}/pyrightconfig.json +0 -0
  132. {muxplex-0.3.2 → muxplex-0.3.3}/scripts/render-brand-assets.py +0 -0
  133. {muxplex-0.3.2 → muxplex-0.3.3}/scripts/spike_bell_flag.py +0 -0
  134. {muxplex-0.3.2 → muxplex-0.3.3}/uv.lock +0 -0
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.3 (2026-04-13)
4
+
5
+ ### Bug Fixes
6
+ - **iOS/iPadOS touch scrolling** — fix touch scroll handling for Safari on iOS and iPadOS devices (PR #4, @samueljklee)
7
+
3
8
  ## v0.3.2 (2026-04-09)
4
9
 
5
10
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: muxplex
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Web-based tmux session dashboard — access all your tmux sessions from any browser
5
5
  Project-URL: Repository, https://github.com/bkrabach/muxplex
6
6
  Project-URL: Issues, https://github.com/bkrabach/muxplex/issues
@@ -534,13 +534,15 @@ function setTerminalFontSize(size) {
534
534
  window._setTerminalFontSize = setTerminalFontSize;
535
535
 
536
536
  // ---------------------------------------------------------------------------
537
- // Android touch scroll — rAF-batched WheelEvent dispatch
538
- // Android batches touchmove events irregularly; dispatching one WheelEvent
537
+ // Mobile touch scroll — rAF-batched WheelEvent dispatch
538
+ // Mobile devices batch touchmove events irregularly; dispatching one WheelEvent
539
539
  // per frame (via requestAnimationFrame) smooths over burst delivery.
540
- // UA-gated: iOS and macOS are unaffected (they use mouse wheel natively).
540
+ // Applies to Android, iOS, and iPadOS touch devices.
541
541
  // ---------------------------------------------------------------------------
542
- ;(function initAndroidTerminalScroll() {
543
- if (!/Android/i.test(navigator.userAgent)) return;
542
+ ;(function initMobileTerminalScroll() {
543
+ var isTouchDevice = /Android|iPhone|iPad|iPod/i.test(navigator.userAgent) ||
544
+ (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
545
+ if (!isTouchDevice) return;
544
546
 
545
547
  var container = document.getElementById('terminal-container');
546
548
  if (!container) return;
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "muxplex"
7
- version = "0.3.2"
7
+ version = "0.3.3"
8
8
  description = "Web-based tmux session dashboard — access all your tmux sessions from any browser"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes