This website requires JavaScript.
8c0675157a
feat: three dashboard view modes — Auto, Fit, Compact
Brian Krabach
2026-03-30 22:22:59 -07:00
ecf57441cf
feat: add buildSources to construct session source list from settings
Brian Krabach
2026-03-30 22:21:45 -07:00
93c5170581
feat: refactor api() to accept optional baseUrl for cross-origin requests
Brian Krabach
2026-03-30 22:12:57 -07:00
3a102ba9d8
fix: add 18px font option, click-outside-dialog to dismiss settings
Brian Krabach
2026-03-30 22:07:38 -07:00
d0eb91dca7
refactor: replace fixed sleeps with deterministic polling in ws proxy tests; document CORS permissiveness
Brian Krabach
2026-03-30 21:56:05 -07:00
b1cbeeb02c
test: expand WebSocket proxy test suite
Brian Krabach
2026-03-30 21:30:55 -07:00
0e02181477
feat: add CORS middleware for cross-origin federation
Brian Krabach
2026-03-30 21:14:10 -07:00
ca0eb44b88
feat: add GET /api/instance-info endpoint
Brian Krabach
2026-03-30 21:01:04 -07:00
e61efd141c
feat: exempt /api/instance-info from auth
Brian Krabach
2026-03-30 20:54:21 -07:00
395278818f
feat: add remote_instances and device_name to settings
Brian Krabach
2026-03-30 20:48:38 -07:00
e94a27d2f8
chore: remove stale requirements.txt
Brian Krabach
2026-03-30 20:42:57 -07:00
c049ad5628
chore: remove dead Caddyfile
Brian Krabach
2026-03-30 20:39:34 -07:00
a5b02b74d2
Add multi-device federation design document
Brian Krabach
2026-03-30 20:04:13 -07:00
70da8dad38
fix: don't clear bells when browser tab is hidden
Brian Krabach
2026-03-30 19:03:27 -07:00
79576bcbfe
feat: customizable delete session command template
Brian Krabach
2026-03-30 17:17:34 -07:00
2a30e88feb
fix: launchd plist includes PATH with Homebrew + user local bin
Brian Krabach
2026-03-30 16:39:02 -07:00
320c9f3ba7
fix: macOS launchd service — modern bootstrap API, auto-start, --host 0.0.0.0
Brian Krabach
2026-03-30 08:52:43 -07:00
b53d1abbd2
feat: smart version check in upgrade + doctor
Brian Krabach
2026-03-30 08:33:24 -07:00
85798783b6
feat: add muxplex upgrade/update — stop service, reinstall, regenerate, restart
Brian Krabach
2026-03-30 08:19:08 -07:00
b448f120c5
feat: dynamic favicon badge — amber dot overlay when sessions have unseen bells
Brian Krabach
2026-03-30 08:06:34 -07:00
261a25e6df
feat: inject hostname into page title — visible in browser tabs across machines
Brian Krabach
2026-03-30 08:05:14 -07:00
df3e252f73
fix: exempt static assets from auth middleware — login page can load CSS/JS/images
Brian Krabach
2026-03-30 08:03:49 -07:00
e6add00f0d
feat: loading placeholder tile while new session is being created
Brian Krabach
2026-03-30 07:39:18 -07:00
b38c87185a
fix: settings dialog always visible — display:flex overrode native <dialog> hidden state
Brian Krabach
2026-03-30 07:14:24 -07:00
74a02cc05b
fix: add six dependency — undeclared transitive dep of python-pam (breaks macOS clean envs)
Brian Krabach
2026-03-30 07:06:08 -07:00
514ed5dc77
fix: add python-multipart dependency, fix launchd service name
Brian Krabach
2026-03-30 07:01:01 -07:00
cf1182b100
feat: add muxplex doctor subcommand — dependency + config diagnostics
Brian Krabach
2026-03-30 06:47:36 -07:00
d20f85a23e
docs: add prerequisites section to README with platform-specific install instructions
Brian Krabach
2026-03-30 06:30:55 -07:00
54ad5fbeea
feat: preflight dependency check for tmux and ttyd at startup
Brian Krabach
2026-03-30 06:30:45 -07:00
eb8b09a3cf
feat: platform-aware install-service — launchd on macOS, systemd on Linux
Brian Krabach
2026-03-30 06:29:45 -07:00
d1c245a2c3
test: remove 26 stale command palette tests (palette was removed in Phase 1)
Brian Krabach
2026-03-30 03:45:42 -07:00
17616166bc
feat: kill session — DELETE endpoint, hover × button with confirmation
Brian Krabach
2026-03-30 03:34:51 -07:00
ffa8167c8f
fix: new session poll-until-ready before auto-opening
Brian Krabach
2026-03-30 03:30:16 -07:00
424a4f5377
fix: settings modal dismiss — add close button, fix backdrop click
Brian Krabach
2026-03-30 03:27:47 -07:00
6f598524a9
fix: apply ruff formatting and add null guard for tab lookup in test
Brian Krabach
2026-03-30 02:54:07 -07:00
bac23f26dc
fix: apply getVisibleSessions filter in renderSheetList for mobile bottom sheet
Brian Krabach
2026-03-30 02:49:41 -07:00
d2f3b43759
test: add frontend tests for settings dialog and new session UI
Brian Krabach
2026-03-30 02:36:08 -07:00
851036bac0
refactor: code quality improvements for task-7 settings effects
Brian Krabach
2026-03-30 02:28:54 -07:00
142c68d644
feat: apply settings effects — font size, grid columns, hidden sessions, sort order
Brian Krabach
2026-03-30 02:16:45 -07:00
1af141a294
docs: fix orphaned JSDoc — move showNewSessionInput comment above its function
Brian Krabach
2026-03-30 02:07:15 -07:00
5b971a0ecc
refactor: apply code quality suggestions from task-6-mobile-fab review
Brian Krabach
2026-03-30 02:00:22 -07:00
9978544dc1
fix: use fixed-position overlay for FAB session input (mobile visibility)
Brian Krabach
2026-03-30 01:45:51 -07:00
dbb8b2bd73
feat: add mobile FAB for new session creation
Brian Krabach
2026-03-30 01:34:31 -07:00
d76042560a
feat: add sidebar + New sticky footer with inline input
Brian Krabach
2026-03-30 01:23:37 -07:00
84fb7826d7
feat: add header + button with inline name input for session creation
Brian Krabach
2026-03-30 01:08:19 -07:00
5f81b87348
feat: add New Session settings tab with template textarea
Brian Krabach
2026-03-30 01:03:54 -07:00
2e86692c3c
fix: add null guard to _updateNotificationUI and .catch() to requestPermission
Brian Krabach
2026-03-30 00:35:21 -07:00
e5827a8037
refactor: extract _updateNotificationUI helper, use const, fix double query
Brian Krabach
2026-03-30 00:29:38 -07:00
2f909eae89
feat: add Notifications settings tab
Brian Krabach
2026-03-30 00:18:05 -07:00
c955aadad1
feat: add Sessions settings tab with server-side persistence
Brian Krabach
2026-03-29 23:57:22 -07:00
f380307f08
fix: rename data-panel to data-tab on settings panels to match switchSettingsTab()
Brian Krabach
2026-03-29 23:47:59 -07:00
fd4e91bc51
feat: wire Display tab — font size, hover delay, grid columns with immediate apply
Brian Krabach
2026-03-29 23:28:12 -07:00
bb21ce7aa9
style: reformat DISPLAY_DEFAULTS to multi-line, simplify switchSettingsTab panel lookup
Brian Krabach
2026-03-29 23:21:48 -07:00
1eec617cb9
feat: add settings dialog open/close, tab switching, localStorage management
Brian Krabach
2026-03-29 23:16:19 -07:00
b20759c6cb
feat: add settings dialog HTML structure and CSS
Brian Krabach
2026-03-29 23:04:11 -07:00
19ec5c02a5
feat: add POST /api/sessions endpoint for new session creation
Brian Krabach
2026-03-29 22:54:23 -07:00
6c72bd05cc
feat: add GET/PATCH /api/settings endpoints
Brian Krabach
2026-03-29 22:47:53 -07:00
85d3bb1312
fix: use deepcopy for DEFAULT_SETTINGS and narrow exception catch in settings module
Brian Krabach
2026-03-29 22:43:24 -07:00
ffecfa69cb
feat: add server-side settings module
Brian Krabach
2026-03-29 22:36:19 -07:00
8e4f17068d
refactor: remove command palette JavaScript
Brian Krabach
2026-03-29 22:28:20 -07:00
a971cb9bbd
refactor: remove orphaned command palette HTML remnants from index.html
Brian Krabach
2026-03-29 22:16:03 -07:00
80dc082df0
refactor: remove command palette HTML and CSS
Brian Krabach
2026-03-29 22:12:07 -07:00
77eecd1d72
docs: add settings panel and new session design document
Brian Krabach
2026-03-29 21:55:40 -07:00
e4efadddf4
fix: remove gradient fades, fix sidebar active indicator full-height
Brian Krabach
2026-03-29 19:41:49 -07:00
583de6ec2d
feat: match preview styling to xterm.js — palette, background, font, line-height
Brian Krabach
2026-03-29 19:19:05 -07:00
85298abdcc
fix: match tile + sidebar preview text color to xterm.js foreground (#c9d1d9)
Brian Krabach
2026-03-29 18:56:09 -07:00
71fdd544b2
fix: match preview text color to xterm.js foreground (#c9d1d9)
Brian Krabach
2026-03-29 18:48:51 -07:00
bf76affef2
refactor: remove dimmer overlay, add cyan border to preview popover
Brian Krabach
2026-03-29 18:44:55 -07:00
b3b2165524
feat: ANSI color rendering in preview snapshots
Brian Krabach
2026-03-29 18:24:15 -07:00
dbade5a3d9
fix: preview overlay text color — use primary text, not disabled dim
Brian Krabach
2026-03-29 18:09:09 -07:00
af95b90b02
feat: hover preview as full-window overlay with text wrap + click-to-navigate
Brian Krabach
2026-03-29 18:00:36 -07:00
5906de9e67
fix: rewrite hover preview — track by session name, survive innerHTML rebuilds
Brian Krabach
2026-03-29 17:40:54 -07:00
06d1e02ce1
fix: hover preview flashing — skip grid/sidebar re-render while preview active
Brian Krabach
2026-03-29 17:21:15 -07:00
905cbf35e5
feat: hover preview dim effect — overlay dims page, hovered tile + popover stand out
Brian Krabach
2026-03-29 16:56:09 -07:00
40ec20f4ba
fix: hover preview — bottom-anchor, flexible width, sidebar support, longer delay
Brian Krabach
2026-03-29 16:48:52 -07:00
6144f39955
feat: hover preview popover on dashboard tiles
Brian Krabach
2026-03-29 14:42:30 -07:00
4b4b914858
fix: session switch race — mount terminal AFTER /connect POST completes
Brian Krabach
2026-03-29 14:17:10 -07:00
ab1f579ea9
feat: Android-only rAF-batched touch scroll for terminal
Brian Krabach
2026-03-29 06:29:09 -07:00
d1d700e7fd
test: clean up WebSocket auth test hygiene (unused fixture, deprecated cookies kwarg)
Brian Krabach
2026-03-29 04:30:25 -07:00
6c0bc80f21
fix(auth): protect WebSocket /terminal/ws with session cookie check
Brian Krabach
2026-03-29 04:23:41 -07:00
575cebbcac
fix: resolve_auth file password log prints actual path, not module name
Brian Krabach
2026-03-28 23:06:27 -07:00
387e19a2a2
feat: add reset-secret CLI subcommand
Brian Krabach
2026-03-28 22:58:09 -07:00
0d691eab12
feat: add show-password CLI subcommand
Brian Krabach
2026-03-28 22:53:29 -07:00
159b2c3618
feat: change --host default to 127.0.0.1, add --auth and --session-ttl flags
Brian Krabach
2026-03-28 22:46:23 -07:00
fd55a71958
feat: serve branded login.html with injected window.MUXPLEX_AUTH
Brian Krabach
2026-03-28 22:40:36 -07:00
cf79d9fc9f
docs(tests): clarify why logout tests bypass the shared client fixture
Brian Krabach
2026-03-28 22:36:09 -07:00
2ca4420536
feat: add GET /auth/logout route that clears session cookie and redirects to /login
Brian Krabach
2026-03-28 22:30:39 -07:00
b5d700214b
feat: add POST /login handler with PAM and password mode auth
Brian Krabach
2026-03-28 22:20:38 -07:00
d5ffced6a5
feat: add branded login.html with PAM/password mode detection
Brian Krabach
2026-03-28 22:13:14 -07:00
dd0507d8e1
fix: remove unused JSONResponse alias causing ruff F401 lint error
Brian Krabach
2026-03-28 21:56:59 -07:00
ba7101292c
feat: add /login stub and /auth/mode endpoint
Brian Krabach
2026-03-28 21:53:00 -07:00
88b21832f7
feat: wire auth middleware into FastAPI app
Brian Krabach
2026-03-28 21:47:01 -07:00
4e590345c3
fix(auth): remove Host-header auth bypass; inject client IP in tests via ASGI middleware
Brian Krabach
2026-03-28 21:40:22 -07:00
22be933ebf
feat(auth): request middleware with localhost bypass and session cookie check
Brian Krabach
2026-03-28 21:31:48 -07:00
7cf2a5882a
style(auth): apply code quality suggestions from review
Brian Krabach
2026-03-28 21:25:16 -07:00
49475ba352
feat(auth): PAM authentication with running-user check
Brian Krabach
2026-03-28 21:19:53 -07:00
79dade7af7
style(auth): clarify ttl_seconds is signing-time passthrough in create_session_cookie
Brian Krabach
2026-03-28 21:16:16 -07:00
22816cd1d5
feat(auth): session cookie signing and verification
Brian Krabach
2026-03-28 21:11:14 -07:00
9adb459d99
fix(auth): use _config_dir() in load_or_create_secret for consistent 0700 dir permissions
Brian Krabach
2026-03-28 21:04:31 -07:00
91e57431e4
feat(auth): signing secret file management
Brian Krabach
2026-03-28 21:00:56 -07:00