Skip to content

Muxly 0.6.0 Alpha

Pre-release
Pre-release

Choose a tag to compare

@dmelim dmelim released this 03 Oct 19:27

Alpha release: Muxly 0.6.0 Alpha now provides installers for Windows x64 and macOS on Apple Silicon (ARM64). Choose the download for your operating system. Intel Macs are not included in this alpha.

  • Windows: use the NSIS setup EXE for a standard installation, or the MSI for managed installations. Installers are unsigned and Windows may display a SmartScreen warning.
  • macOS: download the ARM64 DMG, open it, and drag Muxly into Applications. This alpha is ad-hoc signed and not notarized. If first launch is blocked, try opening it once, then use System Settings → Privacy & Security → Open Anyway. Never disable Gatekeeper globally.
  • Replacement alpha (3 October 2026): Windows and macOS installers are now built from the same committed source revision, 7bc766c, matching tag v0.6.0. This rebuild includes hidden Windows cleanup commands, native clipboard copying for selected service output, and preservation of terminal output when switching tabs.
  • Checksums: SHA256SUMS.txt lists the SHA-256 checksum of each installer.

This is experimental software. Please report issues on GitHub Issues, including your operating system, architecture, shell, and version manager when relevant. macOS keyboard layouts, dead keys, and IMEs still need broader hands-on testing.

Known issue: Stream mode

Stream mode currently displays redacted logs as plain text, which changes terminal colours, font, spacing, wrapping, and scrollbars. Preserving the normal terminal appearance while hiding sensitive information is planned for the next iteration. This known issue does not block the alpha release.

Added

  • Settings now lets you choose the default installed shell for new built-in terminal sessions, including terminals opened from a service.

  • Service output context menus now offer Open terminal in Muxly's built-in shell drawer in the service working directory, using the default shell, alongside copy and paste actions. Replacing an open shell session asks for confirmation.

  • The shell drawer now offers detected shell profiles, including Windows PowerShell, PowerShell 7, Command Prompt, and Git Bash when installed, with an explicit session-switch confirmation.

  • The repository inspector now offers a Push dialog with changed-file review, staged or all-change commits, remote selection, and separate Commit, Push, and Commit & push actions.

  • Themed context menus now provide service, project, and workspace-tab actions with keyboard navigation, privacy-aware labels, and single-instance terminal placement.

  • Services can now be dragged from the sidebar into the terminal workspace to open them as tabs in the hovered panel, including when the workspace is empty.

  • The other-profile activity indicator now lists its running services and count on hover.

  • A themed startup screen replaces the blank window. An inline splash hands off to React until settings, services, and workspace restoration finish, with reduced-motion support and recoverable startup errors.

  • Persistent panel workspaces with panel-owned tabs. Panels now restore with independent ordered tab strips and active tabs. Normal clicks open tabs in the focused panel, Ctrl/Cmd-click creates a separate panel, and tabs can be reordered or dragged between panels with a muted tab-shaped placement preview and without stopping running services.

  • Faster profile and privacy workflows. New shortcuts mark the focused project sensitive and cycle profiles, profile switching retains the focused pane, and the profile selector shows running-service counts only beside the profile that owns each service.

  • User-customizable semantic colour themes. Muxly now provides Default, Midnight, and High Contrast presets plus validated custom hex overrides, themed keyboard-accessible colour pickers, live preview, grouped resets, WCAG contrast warnings, semantic surface and feedback tokens, and live updates for mounted xterm terminals and generated terminal messages.

  • Local Git awareness and safe branch switching. The Details inspector shows repository root, branch, dirty state, and local ahead/behind counts, with non-blocking refresh and clean-worktree-only switching between existing local branches. Stream mode hides branch identities and disables ambiguous switching.

  • Service and Settings search. The Services sidebar filters configuration fields without affecting running processes, while Settings search finds sections through labels and documented keywords.

  • Pinned projects and tabbed Settings. Entire project groups can stay at the top of the Services sidebar, while Settings is split into General, Workspace, Appearance, and Privacy tabs with cross-tab search.

  • Editor discovery and custom defaults. Settings discovers installed graphical editors through bounded platform-aware checks, preserves legacy editor commands, and lets users save validated custom editor entries.

Changed

  • Terminal scrollbar thumbs now use the theme accent and are slightly slimmer; both sidebar scrollbars use the same accent with squarer thumbs that appear 30% shorter at their existing width and stay hidden until the sidebar is hovered.

  • Sidebar toggle icons now sit at their inner edges, with Services beside its heading and Details in its action bar; collapsed sidebars leave an icon-only rail for reopening.

  • Main terminal bodies and rounded active tabs now share the lighter theme surface without an outer outline; the tab row stays transparent, and the focused tab carries the cyan focus cue.

  • Left and right sidebar panels now use a slightly lighter surface background without outer borders.

  • Service search temporarily expands matching project groups and restores their previous state when cleared, keeping groups open when a service is opened, started, or restarted during the search. Stopping or closing a pane does not preserve temporary expansion.

  • Stream-mode terminal mirrors now inherit the workspace panel surface instead of drawing an inner card border.

  • Push actions are now disabled when the selected upstream branch is already synchronized with its last-fetched state, while unpublished branches and alternate remotes remain available.

  • Project headers now use one state-aware group control, showing Start when all services are stopped and Stop while any service is active.

  • The Details sidebar now names the inspected tab in its header, with editor, folder, browser, and icon-only Edit actions grouped beside it and no header separator.

  • Terminal actions float on a borderless, 10%-opaque themed background with a gentle 2px backdrop blur and compact padding inside the panel's top-right corner, letting terminal output remain recognizable behind brighter neutral, cyan, and amber icons. Narrower tabs use the full row width with a custom square, arrowless 3.5px accent-coloured scrollbar thumb shortened by 30% and overlaid just inside the panel below the tab row on hover or keyboard focus, leaving no gap above the terminal and remaining independent of system scrollbar appearance.

  • Workspace action buttons and the Hide Details button now sit above the inspector; when it is collapsed, the actions stack vertically beneath the reopen button, freeing the terminal workspace from a top toolbar.

  • The left sidebar now has one lighter inset panel containing fixed controls and filters above a separately scrolling service list with a fixed Services heading.

  • Settings and Import now use the shared Muxly checkbox styling. Numeric fields hide native spinner arrows, and textareas omit browser resize handles for consistent form chrome.

  • Service-form checkboxes now use custom dark styling, a cyan selected state, an SVG check icon, and a visible keyboard focus ring.

  • Service deletion now lives in a labeled section at the end of the scrolling form, leaving Cancel and Save in the fixed footer.

  • Service forms now put useful field guidance in information-icon tooltips and omit redundant ID and icon descriptions.

  • The commit and push dialog now uses a ghost close-icon button in its header.

  • The terminal shell selector now uses a ghost button with a transparent background and subtle hover treatment.

  • The shell drawer now uses the same lighter, borderless surface as the service terminals, with no header divider.

  • Resetting all appearance colours now restores and saves the default theme immediately, with an explicit button label and saved confirmation.

  • Details inspector labels now use softer sentence-case typography, with a distinct heading and spacing for Run history.

  • The editor toolbar control now separates launching the configured editor from opening the editor menu, with a visible divider and independent click targets.

  • Stream mode keeps logs available through redacted plain-text terminal mirrors. Service logs and the bottom shell remain visible, selectable, globally searchable, and interactive while parsed output masks paths, email addresses, external URLs, and configured sensitive identities. Raw xterm sessions keep their scrollback and process state, so leaving Stream mode restores the untouched terminal without a restart or replay.

  • Editor controls use product logos and list the default first without an extra badge; Details pairs icon/status and hides absent repositories.

  • Search bars now share one fuzzy-matching implementation. Service filtering, Settings, the command palette, global logs, terminal find, and built-in icon search use the same case-insensitive ordered-character matching, with stronger command matches ranked first.

  • Profile filters no longer close the focused service pane. The active service remains visible while the sidebar switches profiles, and automatic restart backoff now has a distinct amber Restarting state.

  • Service editing uses compact themed actions. Header close and destructive delete actions now use accessible icons and tooltips, and deletion uses the in-app confirmation dialog.

  • Tab workspaces are now the default. New and older settings without an explicit preference open services as persistent tabs, and profile management uses flat rows with compact trash actions instead of nested cards.

  • Panel tabs now carry service identity once. Tabbed panels no longer repeat the active service name and status in the pane toolbar. Tabs remain outside the frame, while the service workspace below uses the same full outline in neutral and focused cyan states.

  • Settings navigation and actions use less vertical space. Section tabs now sit in a left rail, sensitive-service groups collapse to compact project rows, and Save is a floating icon action instead of a full-width bottom bar.

  • Additive actions have clearer hover feedback. Dashed New and Import buttons now strengthen their border and gain a subtle cyan surface instead of relying on text colour alone.

  • Details actions and fields are more compact. Editor, folder, and browser actions now use icon controls with accessible tooltips, and short inspector facts use paired columns while long values span the available width.

  • Settings temporarily hides both sidebars. Opening Settings preserves each sidebar's visibility and width and restores them when Settings closes.

Fixed

  • Hide Windows cleanup command windows when stopping services or closing Muxly while preserving full process-tree cleanup.

  • Copy selected service output through the native clipboard event so Ctrl+C does not depend on an asynchronous clipboard write in the desktop webview.

  • Preserve service terminal output when switching tabs by skipping terminal and PTY resizes while panes are hidden, then fitting them when visible again.

  • Restore Ctrl+C copying of selected output in stopped and read-only service terminals.

  • macOS app shortcuts now use Command, leaving Control combinations available for shell history, editing, and terminal commands instead of triggering service actions.

  • Redacted terminals now preserve macOS clipboard shortcuts and native Option, dead-key, and IME text input without changing the sanitized output display.

  • Explicit service PATH entries now take precedence over recovered shell runtimes in both pipe and PTY launches, with relative entries resolved against the service directory and matching runtime checks.

  • Context-menu Paste now returns keyboard focus to the visible terminal in Stream mode and is disabled for adopted services.

  • Inactive service terminals hide their cursor without painting over ANSI-coloured output cells.

  • Stopped services, pipe-based services, and adopted external processes no longer show an input cursor or accept terminal input. Running Muxly-managed PTY services retain their interactive cursor.

  • The shell drawer now waits for parsed shell output before revealing and focusing the terminal, revealing it after two seconds even when a shell prints nothing so it stays usable. Startup messages and errors remain visible.

  • Muxly's development server now uses port 1421 to avoid the port 1420 conflict with Cromulons when both projects run locally.

  • Shutdown now seals service and shell launch gates before collecting children to stop, preventing background launches from escaping cleanup while the application exits.

  • Clicked terminal links now open only plain http/https URLs, and on Windows go through the system URL handler instead of cmd.exe, so an & or | in a link can no longer run as a command or truncate the URL.

  • Starting services, opening the shell drawer, and saving services or settings no longer run on the UI thread, so a slow login-shell PATH lookup or disk write cannot freeze the window. Concurrent starts of the same service are rejected instead of spawning it twice.

  • Terminal scrollbars resynchronize when hidden tabs become visible, restoring scrolling after a deferred resize.

  • Configuration saves refuse to discard invalid service entries and use atomic replacement with a previous-file .json.bak recovery copy for services and settings.

  • Live configuration reload keeps removed or invalidated running services visible until stopped, pauses configuration saves while they remain active, and prevents restarting those removed services.

  • Git commit review now detects content changes to untracked files before accepting a reviewed snapshot, and untracked embedded repositories no longer block the Push dialog.

  • Stream mode now masks a sensitive service's identifying working-directory folder names, such as the user profile or project folder, even when they appear outside a full path — in relative paths, prompts, or paths split across terminal lines.

  • Stream mode no longer mangles localhost URLs: the p:/ in http:// was read as a Windows drive path.

  • Ctrl-C in a service terminal now copies selected text; without a selection it interrupts PTY services or stops pipe-backed services that cannot receive terminal input.

  • Aligned workspace tabs with the Details action bar at the shared 8px top inset.

  • Aligned the closed sidebar icon rails with the top of the terminal tabs.

  • Aligned the terminal workspace bottom edge and the workspace and shell-drawer gaps beside the sidebars with the 8px outer insets.

  • Fixed the terminal mirror's composition-event check so TypeScript builds succeed and composing text is not forwarded prematurely.

  • Suppressed the unused native scrollbar in xterm's legacy viewport, which left stray arrow buttons in terminal corners while xterm's separate scrollbar handled scrolling.

  • Restored visible hover feedback for Push and other secondary buttons whose background was overridden by the theme styles.

  • Both startup loading stages now display the actual Muxly app logo instead of a simplified placeholder drawing.

  • Service search results can be dragged into workspace tabs while sidebar reordering remains disabled during filtering. Whitespace-only searches no longer disable reordering.

  • Sidebar drops target the panel under the pointer, including terminal content, and move already-open services without duplicating terminals.

  • Legacy editor aliases resolve to detected installations, and editor tooltips no longer appear over open dropdown menus.

  • Editor discovery skips non-launchable files, shares concurrent scans, and preserves platform path semantics; dropdown keyboard handling no longer dismisses Settings or leaves stale selections.

  • Tooltips flip away from window edges instead of being clipped.

  • Startup diagnostics no longer block the main thread. Port checks run with bounded concurrency and runtime discovery runs on a blocking worker after workspace restoration. Startup timings distinguish native setup, data loading, and optional diagnostics.

  • Git errors respect Stream mode. Repository and branch details in failure messages stay hidden while privacy masking is active.

  • POSIX path masking no longer produces numeric offsets. Absolute paths are masked whole as [private path], and already-masked paths are not processed again.

  • Dragging tabs preserves the terminal instance. Moving a tab between panels retains its mounted terminal, scrollback, selection, and search state.

  • Theme previews update terminals and independent running-status colours. Unsaved palettes reach existing service and drawer terminals, closing the preview restores saved colours, and accent changes no longer clear and replay terminal output.

  • Global log search skips unchanged buffers. Per-service revisions invalidate cached text and matches only when output or privacy settings change, reducing idle search work and repeated text preparation.

  • Loading project aliases can no longer erase saved profiles and preferences. Alias synchronization waits for persisted settings to load instead of writing empty startup defaults when services load first.

  • Panel tab labels now use their full visual height as a click target. The spacing below a service name is part of the tab button instead of an inert wrapper area.

  • Stream mode masks external web addresses while keeping local origins recognizable. External HTTP and WebSocket URLs are replaced, while localhost origins may remain visible with private paths, queries, and fragments removed.

  • Stream mode path redaction remains compatible with older macOS WebViews. Absolute-path masking no longer depends on Array.prototype.at, which older WKWebView versions may not provide.

  • Newly sensitive services now redact open terminal panes immediately. Changing a service's sensitivity invalidates its rendered privacy snapshot so the banner, working directory, command, and existing scrollback cannot remain visible in Stream mode.

  • Sensitive project and service toggles now respond immediately. Privacy curation checkboxes and counts update while their changes are persisted, then reconcile with the saved state when the operation finishes.

  • Stream mode now updates already-open panes and redacts external absolute paths. Sensitive commands, cards, terminal scrollback, live output, Details, and global search use the same fail-closed display transform without remounting running PTYs. Pane contents stay covered until every privacy snapshot finishes.

  • Service-card split actions no longer overlap command or port-conflict text. Cards reserve action space at compact sidebar widths.

  • Git status checks no longer flash console windows on Windows. Repository discovery, refresh, and branch operations now launch Git without creating visible child terminals.

  • Git discovery now works with Finder-launched macOS builds. Git and branch-switch hooks inherit the recovered login-shell PATH, including Homebrew and version-manager locations, and an unavailable Git executable produces an explanatory error instead of being mistaken for a non-repository.

  • Repository refresh no longer appears unresponsive or causes periodic lag. Valid refreshes coalesce while one is running without reusing stale React Strict Mode requests, inspect each repository once, show a spinning refresh icon while loading, and avoid unnecessary background polling.

  • Search fields reserve space for their icons. Service and Settings text no longer renders underneath the magnifying glass.

  • Git branches stay bound to the selected repository. Stale asynchronous checks can no longer replace another service's branch list, post-switch refreshes cannot reuse a pre-switch snapshot, branch switches verify the repository they were opened for, and ignored nested project folders no longer inherit an unrelated parent repository.

  • Removed services no longer leave broken workspace panels. In-app deletion and live services.json edits remove stale tabs, repair active-tab and focus state, and prevent invalid panel layouts from being persisted again.

  • Rapid settings actions no longer overwrite one another. Complete settings snapshots are serialized and optimistic state advances immediately, so consecutive project pin and privacy actions build on the latest pending change.

  • Orphaned service profile assignments restore the profile picker. If the managed profile registry is missing but configured services still reference profile ids, Muxly rebuilds the registry instead of hiding the profile workflow.

Installer checksums

f41e99b49a8d3a166848c9b0cde615ffda2fb616f168800e2302ee97d0eb06db  Muxly_0.6.0_aarch64.dmg
0403317ee272c54695824651da4373a15212c3a0f061bacdecde3ab9e663f5b4  Muxly_0.6.0_x64-setup.exe
88ba8746b1c2c75b63948954b072df7d1ded71e00409c4d0f0f56eae2475ad6e  Muxly_0.6.0_x64_en-US.msi