Skip to content

Releases: 0xjesus/comandos

ComandOS v1.6.0

Choose a tag to compare

@0xjesus 0xjesus released this 17 Jul 11:42

ComandOS v1.6.0

Fixed

  • Supervised both ttyd endpoints with independent health probes, automatic
    crash recovery, and truthful active, degraded, or off state.
  • Kept the preferred /term route and compatibility fallback synchronized
    without caching endpoint health.
  • Prevented the touch toolbar from widening or horizontally shifting phone
    pages.
  • Made selected Ctrl+C copy the exact xterm selection without sending SIGINT;
    ordinary Ctrl+C still reaches the shell when nothing is selected.
  • Preserved direct input, iframe identity, and WebSocket identity during
    height-only keyboard animation and theme changes.

Mobile and tablet

  • Phone portrait and coarse-pointer tablet portrait use one visible surface at
    a time. Touch landscape splits only when both panel and terminal retain their
    minimum usable widths.
  • Tabs are 44 px high, the terminal toolbar is a stable non-overlay row, and
    all toolbar controls are at least 40 px high.
  • Toolbar panning remains native and independent from terminal gestures.
  • Terminal swipes scroll tmux history per pane, text selection remains
    available in selection mode, and long-press border drags resize horizontal
    and vertical tmux splits.
  • Clipboard paste supports the browser API plus a manual dialog fallback.

Bruno theme

  • Added the bruno theme across the dashboard, xterm, GTK/VTE, and tmux chrome.
  • Bruno uses the dark neutral surface and yellow brand palette while retaining
    distinct ANSI colors and readable selection, border, status, and message
    states.
  • Theme changes propagate live without recreating the terminal iframe or tmux
    client.

Compatibility

  • Existing tmux sessions, windows, panes, PWDs, foreground processes, and pane
    IDs are preserved.
  • The custom terminal remains preferred at /term; the ttyd compatibility
    endpoint remains available on :8443.
  • The browser harness supports the installed tmux 3.2a configuration and does
    not assume a zero-based pane index.
  • Teach this change and learning/skill storage were intentionally not
    implemented in v1.6.0.

Verification

  • pytest -q: 320 passed in 43.83s.
  • All four shell fixtures, Bash syntax, Python compilation, JavaScript parsing,
    Node syntax, and git diff --check passed.
  • Real remote E2E passed at 320x568, 390x844, 834x1112, and 1194x834,
    with one active terminal iframe in every viewport and split mode only at
    1194x834.
  • Real gestures proved toolbar pan, tmux history scroll, exact selection copy,
    and horizontal plus vertical pane resize.
  • Bruno -> Day -> Bruno preserved one iframe, one WebSocket, and one tmux
    client. Native GTK/VTE and all expected tmux styles were inspected live.
  • Primary ttyd crash recovery changed PID 210393 to 217733 while its
    disposable tmux pane survived.
  • The final dashboard, fallback ttyd, primary ttyd, and native app were active
    as PIDs 208148, 288780, 288782, and 320254 respectively.
  • The 33-pane before/after inventory was byte-identical
    (8664bed266f404e0360727c9d3f94b36fcf3319336df99b04e0c0a409685b10b),
    as was the 15-session inventory
    (46edf4980827f5cd0f19807762aa45bb5cbe0b8c0f607bacc81d1a1c34dc5f47).

ComandOS v1.5.3

Choose a tag to compare

@0xjesus 0xjesus released this 15 Jul 21:30

v1.5.3 - Bring terminal links to the foreground

ComandOS v1.5.3 fixes native terminal links that appeared to do nothing when
Brave or another default browser was already open.

Fixed

  • Native URL clicks now pass the ComandOS window and the original mouse-event
    timestamp to GTK. This gives the desktop enough activation context to open
    the link in the configured browser and bring that browser forward.
  • Clean clicks and Ctrl+click use the same contextual launch path.
  • GIO and xdg-open remain fallbacks when GTK cannot handle the URI, while
    macOS and WSL keep their existing launch behavior.

The change does not restart or replace tmux sessions, panes, commands, working
directories, history, or agent processes.

Verification

  • 275 passed in the complete pytest suite.
  • All 19 native terminal link tests passed.
  • Platform compatibility checks passed.
  • Both dashboard JavaScript bundles passed syntax validation.
  • Brave is registered as the current XDG and GIO HTTPS handler on the release
    workstation.

ComandOS v1.5.2

Choose a tag to compare

@0xjesus 0xjesus released this 15 Jul 20:06

v1.5.2 - Reliable terminal links, selection, and pane resize

ComandOS v1.5.2 makes links, text selection, and split-pane resizing
predictable in the native client and remote terminal.

Fixed

  • Native terminal links now open through the Linux desktop URI handler, so a
    configured default such as Brave is honored. xdg-open remains a one-time
    fallback if GIO cannot dispatch the URL.
  • A primary-button drag no longer changes the active tmux pane before VTE
    finishes selecting text. Clean clicks still focus the correct split, and
    Ctrl+click still opens links immediately.
  • A pre-existing native selection no longer makes a clean URL click silently
    fail.
  • Remote column changes wait while xterm has selected text, including when the
    selection starts during the 180 ms reconnect debounce. The existing v1.5.1
    wrapped-row protection resumes after the selection clears.
  • Remote Select mode now remains active when switching ComandOS tabs. tmux
    mouse mode is restored only by Interact, terminal close, or page unload.
  • After a mouse or touch split-pane resize, xterm performs one full repaint
    after tmux's redraw is parsed, so reflowed text fills the new pane width.

These changes do not restart or replace tmux sessions, panes, commands,
working directories, history, or agent processes.

Verification

  • 273 passed in the complete pytest suite.
  • Platform compatibility checks passed.
  • Both dashboard JavaScript bundles passed syntax validation.
  • Native event tests cover clean clicks, drags, pre-existing selections,
    Ctrl+click, GIO dispatch, and one-time xdg-open fallback.
  • Remote state tests cover selection during resize, selection during debounce,
    returned widths, tab switches, close/pagehide cleanup, mouse/touch pane drag,
    and repaint after tmux output.
  • Real split-pane E2E passed in Brave and Google Chrome with desktop mouse and
    mobile touch viewports. Every run changed the physical tmux pane width,
    reflowed text through the last cell before the border, and issued exactly one
    post-redraw repaint.

v1.5.1 - Correct remote terminal wrapping

Choose a tag to compare

@0xjesus 0xjesus released this 15 Jul 03:50

v1.5.1 - Correct remote terminal wrapping

ComandOS v1.5.1 fixes corrupted wrapped text after the remote terminal changes
width.

Fixed

  • Column changes now reconnect only the browser terminal after a short debounce
    instead of resizing xterm and tmux simultaneously.
  • Wrapped rows no longer show duplicated, interleaved, or missing fragments
    after device rotation or split-panel resizing.
  • Height-only changes remain live and do not reconnect.
  • Repeated width events collapse into one reconnect after the geometry settles.

The reconnect does not restart tmux or any process inside it. Sessions, panes,
working directories, running agents, and tmux scrollback remain intact.

Verification

  • Added a deterministic JavaScript regression test for column and row changes.
  • Verified in Chromium against the live remote route with a
    46 -> 51 -> 46 column cycle.
  • Compared rendered wrapped content with tmux capture-pane after every
    reconnect.

v1.5.0 — Smoother terminals, touch resizing, and local-first SSH

Choose a tag to compare

@0xjesus 0xjesus released this 13 Jul 19:47

v1.5.0 — Smoother terminals, touch resizing, and local-first SSH

ComandOS v1.5.0 makes the desktop and remote terminal feel more immediate while
reducing avoidable background work. It also gives the public documentation a
precise local-first privacy model: state stays local by default, SSH uses direct
OpenSSH connections, and optional network integrations are documented instead
of hidden behind an absolute offline claim.

Performance

  • The tmux status hook now parses all current agent-state files with one bounded
    jq process instead of starting one process per file, while preserving its
    existing output and eight-hour cutoff.
  • Concurrent dashboard /state cache misses now share one refresh, including a
    shared failure path, so bursts of clients do not repeat the same tmux work.
  • Pane-model metadata is reconciled by one worker. Unchanged values produce no
    tmux or file writes, changed values converge to the latest generation, and
    stale pane metadata is cleared.
  • Terminal input is still delivered immediately. This release does not batch
    keystrokes or add predictive local echo; it removes work around the input
    path instead.

Resize and touch

  • Desktop splitter drags cache their geometry, coalesce visual changes to one
    update per animation frame, and persist the final position once.
  • Web-terminal fitting is frame-coalesced, and PTY dimensions are sent only
    when the row or column count actually changes.
  • Remote one-finger gestures now have one owner: normal movement scrolls, while
    a deliberate long-press on a continuous tmux pane border enters resize mode.
  • Border detection accounts for terminal scrollback, tolerates small transverse
    finger jitter, and rejects isolated | or - glyphs.
  • Multi-touch, cancellation, disconnect, and frame teardown cleanly release any
    pending gesture or active resize.

Remote interaction

  • Web-terminal links now open their resolved URL through a direct, safe anchor
    activation with noopener and noreferrer. This fixes link clicks that could
    be blocked in Brave while preserving the same behavior in Chrome and other
    Chromium browsers; a blocked popup never replaces the embedded terminal.
  • The ambiguous 🖱 control is gone. The single labelled Select / Interact
    control now reflects the real tmux mouse state after reloads, tab changes, and
    SSH sessions.
  • Select disables tmux mouse handling for browser text selection;
    Interact enables it for terminal interaction and pane resizing. Temporary
    selection never silently enables mouse mode for an SSH session that started
    with it disabled.

Local-first privacy

  • Runtime data remains in local tmux sessions, local files, and local SQLite at
    ~/.claude/hooks/comandos-usage.sqlite. ComandOS has no hosted ComandOS
    backend, external ComandOS database, telemetry service, or ComandOS SSH proxy.
  • SSH hosts come from ~/.ssh/config. Your installed OpenSSH client connects
    directly from your computer to the selected server; ComandOS does not upload
    your SSH configuration or private keys to a ComandOS service.
  • If you explicitly request passwordless setup, ssh-copy-id copies only the
    selected public key to the server.
  • AI provider traffic still goes to the provider selected by each CLI. Usage
    checks can contact Anthropic or OpenAI directly when corresponding credentials
    exist. Tailscale Serve, Telegram control, and Piper voice-model downloads are
    optional and use their respective services only when configured or requested.
  • The ComandOS token gates the remote dashboard and cc-dash API. The optional
    interactive ttyd terminal has no separate ComandOS login and relies on your
    Tailscale access policy; both services bind only to loopback before Serve.
  • Direct ttyd URLs no longer carry the dashboard control token in browser
    history, and cc-webterm no longer creates or reads that unrelated token.
  • cc-mobile off now disables both the dashboard route on HTTPS 443 and the
    fallback terminal route on HTTPS 8443, tolerates an already-absent handler,
    and verifies that no ComandOS target remains without resetting unrelated
    Tailscale Serve configuration.

Compatibility

  • Existing tmux sessions, SSH configuration, local state files, HTTP clients,
    and the local SQLite schema remain compatible; no data migration is required.
  • The remote dashboard and terminal continue to bind locally and can be exposed
    through the existing optional Tailscale Serve flow.
  • Link activation is compatible with Brave and Chrome without weakening the
    dashboard preview sanitizer.

Verification

The v1.5.0 release gate covers the Python regression suite, shell fixtures,
embedded JavaScript parsing, deterministic resize and touch harnesses,
concurrent state refreshes, pane-model reconciliation, tmux mouse-state
synchronization, and Brave-compatible terminal link activation. The final
release payload is also checked for whitespace errors and unrelated local
artifacts before publication.

Upgrade

From an existing ComandOS checkout, run:

git pull --ff-only
./install.sh
systemctl --user restart cc-dash.service cc-notifyd.service
systemctl --user is-active --quiet cc-telegram.service &&
  systemctl --user restart cc-telegram.service || true

Then close and reopen the ComandOS desktop app so its embedded dashboard and
terminal assets are reloaded.

v1.4.0 — Terminal remoto mobile-first, prefs en vivo y tabs sincronizadas

Choose a tag to compare

@0xjesus 0xjesus released this 12 Jul 20:42

📱 Terminal remoto pensado para el celular

  • Página propia de xterm.js para /term (vía ttyd -I): fuente Nerd Font y renderizado bundleados.
  • Backspace arreglado en teclados móviles (GBoard manda beforeinput sin keydown; ahora se traduce).
  • Redimensionar panes con el dedo: deja el dedo ~220ms cerca de una separación (snap automático al borde leyendo │/─ del buffer, eje bloqueado) y arrastra — con vibración e indicador. Movimientos coalescidos a 1 por frame para fluidez.
  • Toggle 🖱 por sesión para activar el mouse de tmux.

⚙️ Ajustes en tiempo real

  • Fuente, cursor, padding, opacidad y tema se aplican en vivo a todas las terminales abiertas, cambies donde cambies (app, Chrome o celular).

🗂️ Tabs coherentes en todas las superficies

  • Cerrar tab pide confirmación (modal); el cierre remoto sincroniza con el escritorio (/tab-close) y las tabs huérfanas se podan del espejo.

🧩 Snippets y modales

  • Dialog de snippets: visible, centrado, sin recortes en anchos chicos (minmax(0,1fr) + layout apilado en móvil), destino etiquetado ("Enviar a:").
  • Controles nativos legibles en tema oscuro (color-scheme + appearance:none).
  • Modales GTK cierran con click afuera también sobre el webview/terminales (grab de toolkit).

🖱️ Extra

  • Drag & drop de archivos a la terminal pega sus rutas (shell-quoted, nunca ejecuta).
  • Nueva imagen del README y descripción del repo.

v1.3.0 — Snippets, assets empaquetados, UI chromeless y tema Termius

Choose a tag to compare

@0xjesus 0xjesus released this 12 Jul 00:57

Release comunitario 🎉 — integra los PRs #6 y #7 de @webchimp, revisados, corregidos y verificados de punta a punta (suite completa en verde, smoke del backend en vivo, E2E del paste seguro).

✂️ Snippets (estilo Termius) — PR #7

  • Comandos guardados con browse/búsqueda/editor desde el dashboard y cc-app (mismo store: ~/.claude/hooks/snippets.json).
  • POST /paste con bracketed paste: el snippet aterriza en el prompt y nunca se autoejecuta.

📦 Assets empaquetados + UI — PR #6

  • JetBrainsMono Nerd Font, xterm.js 5.5 con ligaduras reales y opentype.js incluidos — instala sin red.
  • Ventana chromeless con headerbar propio; modales embebidos en overlay (a prueba de WSLg).
  • Tema Termius (4ta paleta) con hot-reload hasta la barra de tmux.
  • Preferencias de terminal (fuente, cursor, padding, opacidad, ligaduras).
  • Wrapper de Menú Inicio para Windows/WSL; cc-doctor extendido; íconos Lucide unificados.

🔧 Fixes del review

  • El tema conserva el amarillo de copy-mode en el borde del pane activo.
  • Tests actualizados a la arquitectura nueva; suite corre con stdlib (pytest opcional).
  • GitGuardian del PR #6: falso positivo (checksum sha256 público de Piper).

Gracias @webchimp 🙌

v1.2.2 — Dropdown de OpenCode solo con modelos aptos para código

Choose a tag to compare

@0xjesus 0xjesus released this 10 Jul 14:57

Fix

El selector de modelo de OpenCode listaba todo lo que OpenCode conocía, incluyendo modelos que no sirven para programar y que daban APIError o comportamiento errático al elegirlos:

  • Voz: whisper (audio→texto), orpheus (texto→audio)
  • Clasificadores: prompt-guard
  • Routers sin tool-calling: compound / compound-mini

Ahora el dropdown solo muestra modelos usables para código agéntico — filtrados por capabilities (tool-calling + texto de entrada/salida). Cada modelo además carga su tamaño de contexto.

Nota para modelos free

Los modelos free de contexto chico (ej. groq llama-3.1-8b) pueden tirar ContextOverflowError si la sesión trae historial grande. Recomendación: sesión nueva + modelo con contexto real (groq gpt-oss-120b / llama-3.3-70b, cerebras zai-glm-4.7).

v1.2.1 — Padding en flechas de scroll de tabs

Choose a tag to compare

@0xjesus 0xjesus released this 10 Jul 08:16

Arreglo menor sobre v1.2.0: las flechas de scroll de pestañas del app de escritorio (Gtk.Notebook) quedaban pegadas a la primera pestaña. Ahora tienen padding y margen horizontal, con color en hover y estado deshabilitado, para que se distingan como controles aparte.

Se activa al reiniciar cc-app.

v1.2.0 — Usage accounting, model control & alerts

Choose a tag to compare

@0xjesus 0xjesus released this 10 Jul 07:52

📊 Contabilidad de uso en vivo

  • Porcentajes exactos del plan siempre visibles: Claude (endpoint OAuth) y Codex (rollouts), con pills en el header y un drawer Uso visual (barras de tokens por proveedor y proyecto).
  • Modelo por pane en el borde de tmux a color, y chips de uso por pane.

🎛️ Control de modelo desde el tablero

  • Dropdown de modelo para los tres agentes: aliases de Claude, modelo+reasoning de Codex (maneja su picker numerado), y provider+modelo de OpenCode desde su catálogo real.
  • Keys de proveedores gratis en un solo archivo ~/.claude/hooks/providers.env (Groq, Cerebras, Together, Mistral, DeepSeek, Cloudflare).

🔔 Alertas flexibles

  • Umbrales de límite del plan (70/85/95%), alertas por ventana (proveedor+lapso con % propio), y presupuestos de tokens por sesión / proyecto / proveedor.
  • Entregadas por el popup propio de ComandOS + Telegram.

🖱️ UX

  • Buscador de sesiones, recientes cerradas recuperables, confirmación al cerrar pestañas, modales que cierran con click afuera, y subida de ventana confiable en GNOME/Mutter.