20eee04e46
feat: add muxplex config subcommand — list/get/set/reset settings via CLI
Brian Krabach
2026-04-01 06:23:45 -07:00
ddb21c0d5e
fix: cache favicon Image object — stop re-fetching favicon-32.png every 2s
Brian Krabach
2026-04-01 05:50:58 -07:00
a40b95efe6
fix: WebSocket reconnect respawns ttyd after 2 failed attempts + exponential backoff
Brian Krabach
2026-04-01 05:50:47 -07:00
5d76ba491f
chore: scrub last install-service references from test comments
Brian Krabach
2026-04-01 02:15:39 -07:00
14b8a33943
refactor: remove install-service entirely — use muxplex service install
Brian Krabach
2026-04-01 02:02:57 -07:00
e24a5c3834
refactor: hide install-service from CLI help, keep as backward-compat alias
Brian Krabach
2026-04-01 01:55:26 -07:00
65b5c3ad20
fix: ttyd dies immediately — add start_new_session=True to subprocess spawn
Brian Krabach
2026-04-01 01:23:07 -07:00
91faab9b94
fix: remove check=True from idempotent service ops; guard input() against EOFError
Brian Krabach
2026-03-31 18:12:35 -07:00
80a04cb2cc
style: ruff format test_readme.py
Brian Krabach
2026-03-31 17:39:59 -07:00
fc9376a69a
docs: add service subcommand documentation to README
Brian Krabach
2026-03-31 17:34:56 -07:00
e1dfe8e10c
refactor: remove old install_service/launchd/systemd from cli.py, replaced by service module
Brian Krabach
2026-03-31 17:24:34 -07:00
496c37a32f
refactor: install-service deprecated alias now forwards to service_install()
Brian Krabach
2026-03-31 17:05:43 -07:00
ff2abb5f77
feat: wire service subcommand group into CLI (install, uninstall, start, stop, restart, status, logs)
Brian Krabach
2026-03-31 16:58:08 -07:00
8637b740c0
fix: launchd quality — use _LAUNCHD_LABEL in plist template, add restart/status tests
Brian Krabach
2026-03-31 16:53:17 -07:00
fbfbab8bb8
feat: implement launchd service commands (install, uninstall, start, stop, restart, status, logs)
Brian Krabach
2026-03-31 16:46:31 -07:00
376583bf23
feat: implement systemd service commands (install, uninstall, start, stop, restart, status, logs)
Brian Krabach
2026-03-31 16:38:46 -07:00
f360dea767
feat: create service.py module skeleton with platform dispatch
Brian Krabach
2026-03-31 16:21:49 -07:00
103944e318
fix: remove redundant sys import and update upgrade() service install references
Brian Krabach
2026-03-31 15:31:47 -07:00
1448b70696
style: ruff format test_settings.py
Brian Krabach
2026-03-31 15:23:41 -07:00
a1e532cb3f
style: reorder devices panel — enable checkbox before device name input
Brian Krabach
2026-03-31 15:20:32 -07:00
ae07431ed1
fix: move notifications/device-name elements to correct settings panels
Brian Krabach
2026-03-31 15:15:29 -07:00
ba1f28b65a
docs: update README Usage section for config-driven serve behavior
Brian Krabach
2026-03-31 14:56:45 -07:00
8d465ad8a5
fix: test suite green after Phase 1 config refactor
Brian Krabach
2026-03-31 14:50:22 -07:00
22b85012eb
feat: update doctor() to show serve config and fix service install message
Brian Krabach
2026-03-31 14:41:19 -07:00
8bb7bcbb67
test: add deprecation warning test for install-service subcommand
Brian Krabach
2026-03-31 14:35:45 -07:00
03e9dc66de
refactor: argparse None defaults, serve flags on both parsers, upgrade alias
Brian Krabach
2026-03-31 14:30:02 -07:00
c057ad6325
feat: refactor serve() to read settings.json with CLI override sentinel (task-2)
Brian Krabach
2026-03-31 14:17:02 -07:00
a4c2a8e3b8
feat: add serve keys (host, port, auth, session_ttl) to DEFAULT_SETTINGS
Brian Krabach
2026-03-31 14:05:34 -07:00
c745660afe
docs: CLI & service management refactor design
Brian Krabach
2026-03-31 09:36:56 -07:00
3de9e98de8
refactor: reorganize settings — merge Notifications into Sessions, move device name to Display, remove view scope
Brian Krabach
2026-03-31 11:53:25 -07:00
3707283baf
fix: resolve merge test regressions — openSession connect POST and cycleViewMode mock
Brian Krabach
2026-03-31 09:21:05 -07:00
5a67a3eb3e
merge: integrate latest upstream (fit view refactor, ttyd kill-by-port, mobile viewport fix)
Brian Krabach
2026-03-31 09:10:59 -07:00
b450cf7176
refactor: fit view — pure CSS layout, no DOM measurement in applyFitLayout
Brian Krabach
2026-03-31 07:47:54 -07:00
9762098a00
fix: session switching — kill ttyd by port not just PID file (belt-and-suspenders)
Brian Krabach
2026-03-31 07:47:30 -07:00
0ed03c4e9d
fix: fit view — clear stale layout on recalc, revert to position:absolute bottom:0
Brian Krabach
2026-03-31 06:55:05 -07:00
4e78f6f5ac
fix: restore default title when device name cleared, fix stale comments, set title at load
Brian Krabach
2026-03-31 06:36:49 -07:00
bee74f5c1b
fix: add style property to openSettings test mocks for multi-device field state
Brian Krabach
2026-03-31 06:28:55 -07:00
679416a5bf
feat: reorganize settings dialog — add Multi-Device tab, enable/disable toggle, device name as page title
Brian Krabach
2026-03-31 06:16:44 -07:00
b282e42ae8
fix: mobile viewport cutoff (100dvh) + fit view content anchoring (flex-end)
Brian Krabach
2026-03-31 05:54:41 -07:00
881b6cc9f3
merge: integrate upstream changes with multi-device federation
Brian Krabach
2026-03-31 05:48:49 -07:00
c330f340ff
fix: renderGrid shows status tiles when no sessions; _previewClickHandler forwards sourceUrl
Brian Krabach
2026-03-31 04:29:49 -07:00
9befe9997e
test: add formatLastSeen verification tests across all time ranges
Brian Krabach
2026-03-31 04:09:43 -07:00
ddc52f2b36
feat: grid click handler routes sourceUrl via data-source-url attribute on tiles
Brian Krabach
2026-03-31 04:01:56 -07:00
28d32d21be
feat: closeSession skips DELETE for remote sessions
Brian Krabach
2026-03-31 03:53:34 -07:00
0bb66b1801
fix: fit view — reapply layout on session close, show more lines, bottom-anchor content
Brian Krabach
2026-03-31 03:41:28 -07:00
ac0b84c1d9
feat: openSession — full remote routing via sourceUrl
Brian Krabach
2026-03-31 03:40:57 -07:00
3444310bb2
feat: accept sourceUrl parameter in connectWebSocket for remote sessions (task-6)
Amplifier
2026-03-31 03:27:30 -07:00
d955c90c0b
feat: add openLoginPopup function and delegated click handler for auth tile login buttons
Brian Krabach
2026-03-31 03:20:21 -07:00
ebec7c3625
fix: fit view — defer layout measurement to rAF, stretch pre to fill tile
Brian Krabach
2026-03-31 03:19:37 -07:00
2862f494f5
feat: integrate source status tiles into renderGrid
Brian Krabach
2026-03-31 03:11:47 -07:00
bf87f05d82
test: add formatLastSeen branch coverage for seconds, hours, and days
Brian Krabach
2026-03-31 03:06:29 -07:00
fe5337840d
refactor: remove Compact view mode — keep Auto + Fit only
Brian Krabach
2026-03-31 03:05:18 -07:00
e07cf196c6
feat: add formatLastSeen and buildOfflineTileHTML functions
Brian Krabach
2026-03-31 02:45:36 -07:00
83e5318ba1
feat: add buildAuthTileHTML for auth-required federation tiles
Brian Krabach
2026-03-31 02:37:05 -07:00
55c80b4c9b
refactor: move intra-function imports to module level in test_frontend_css
Brian Krabach
2026-03-31 02:31:54 -07:00
38a032b2d5
feat: add CSS for source-tile offline and auth-required states
Brian Krabach
2026-03-31 02:23:24 -07:00
7100fd881e
style: apply ruff formatting to test_frontend_css.py (wrap long assertion)
Brian Krabach
2026-03-31 02:13:10 -07:00
918d92386f
test: add Phase 2 integration tests — export verification and e2e pipeline (task-19)
Brian Krabach
2026-03-31 01:56:05 -07:00
a9e1206ac6
style: restore ES6 syntax in detectBellTransitions and update JSDoc
Brian Krabach
2026-03-31 01:49:56 -07:00
c7c92ee0da
feat: use sessionKey for cross-device dedup in detectBellTransitions (task-18)
Brian Krabach
2026-03-31 01:37:49 -07:00
2b5b6e3003
feat: skip connect and terminal mount for remote sessions in openSession
Brian Krabach
2026-03-31 01:31:09 -07:00
70b8df1458
feat: sidebar device grouping when multiple sources configured (task-16)
Brian Krabach
2026-03-31 01:16:21 -07:00
88102751c8
style: fix code quality issues from review for task-15 remote instances UI
Brian Krabach
2026-03-31 01:09:27 -07:00
c8a963f28e
feat: add Remote Instances management UI to Settings (task-15)
Brian Krabach
2026-03-31 00:55:26 -07:00
200137a995
feat: add view mode and scope selectors to Display settings tab
Brian Krabach
2026-03-31 00:40:51 -07:00
b2ff3613de
feat: add loadGridViewMode and saveGridViewMode with local/server scope
Brian Krabach
2026-03-31 00:33:34 -07:00
393891173f
fix: improve test assertion precision and add null guard in renderFilterBar
Brian Krabach
2026-03-31 00:26:12 -07:00
5738c39f7f
feat: add filtered view mode with device pill bar (task-12)
Brian Krabach
2026-03-31 00:16:15 -07:00
2e8cf6ddee
feat: add grouped view mode to renderGrid with device-group-header sections
Brian Krabach
2026-03-31 00:00:34 -07:00
300919c7d7
feat: device badge on sidebar items in buildSidebarHTML (task-10)
Brian Krabach
2026-03-30 23:49:31 -07:00
4084544530
refactor(task-9): extract badgeHtml const and tighten device badge tests
Brian Krabach
2026-03-30 23:41:50 -07:00
5980a6c080
feat: add device badge and data attributes to buildTileHTML (task-9)
Brian Krabach
2026-03-30 23:34:22 -07:00
d897c05c61
feat: add device-badge, group-header, filter-bar, and sidebar-device-header CSS classes
Brian Krabach
2026-03-30 23:29:30 -07:00
4ed8303b6e
feat: update getVisibleSessions to only hide local sessions by name
Brian Krabach
2026-03-30 23:22:55 -07:00
48e87af3f8
feat: wire buildSources into loadServerSettings startup
Brian Krabach
2026-03-30 23:14:48 -07:00
e95a8d4282
refactor: improve pollSessions error handling and test coverage
Brian Krabach
2026-03-30 23:09:08 -07:00
e7ed300b37
feat: rewrite pollSessions for multi-source parallel polling (task-5)
Brian Krabach
2026-03-30 22:59:08 -07:00
593f1639db
style: align tagSessions and mergeSources with ES6 file conventions
Brian Krabach
2026-03-30 22:52:36 -07:00
55f9597e1a
feat: add tagSessions and mergeSources for multi-source parallel polling
Brian Krabach
2026-03-30 22:42:55 -07:00
07c61a0baf
style: expand test-only helper bodies to match section formatting
Brian Krabach
2026-03-30 22:37:08 -07:00
844311b475
feat: add federation state globals and test-only helpers to app.js
Brian Krabach
2026-03-30 22:29:30 -07:00