#Dock

Dock ti omogućava da dodaš terminalske i pregledničke kontrole u desnu bočnu traku. Terminalske kontrole pokreću komande u sekcijama zasnovanim na Ghosttyju, dok pregledničke kontrole ugrađuju web stranice. Koristi ga za feedove, logove, redove, git status, razvojne servere, nadzorne ploče ili referentne stranice koje tim želi imati pored svakog workspacea.

#Konfiguracija

cmux traži Dock konfiguraciju ovim redom:

  1. .cmux/dock.json za trenutni repo, najbliži roditeljski projekat i ugniježđene projektne direktorije.
  2. ~/.config/cmux/dock.json za tvoj lični podrazumijevani Dock ili kada nema repo-a.
Ako postoje i projektna i globalna konfiguracija, prednost ima projektna konfiguracija. Konfiguracije ugniježđenih projekata primjenjuju se na njihovo stablo direktorija. Ako nema projektne konfiguracije, Dock koristi globalnu konfiguraciju. Ako nijedan fajl ne postoji, Dock se otvara prazan.
Projektne Dock konfiguracije mogu pokretati komande. cmux traži da vjeruješ projektnoj konfiguraciji prije pokretanja kontrola.

#Primjer dock.json

Dock fajl je JSON objekat sa controls nizom. Commituj projektne kontrole u .cmux/dock.json kada želiš da članovi tima dijele isti Dock. Zamijeni primjerne komande alatima koje repo stvarno ima.

.cmux/dock.json
{
  "controls": [
    {
      "id": "git",
      "title": "Git",
      "command": "lazygit",
      "height": 300
    },
    {
      "id": "logs",
      "title": "Logs",
      "command": "tail -f ./logs/development.log",
      "cwd": "."
    },
    {
      "id": "feed",
      "title": "Feed",
      "command": "cmux feed tui --opentui",
      "height": 320
    },
    {
      "id": "dashboard",
      "title": "Dashboard",
      "type": "browser",
      "url": "http://127.0.0.1:8877/sidebar",
      "chrome": false
    }
  ]
}

#Polja

PoljeOpis
idStabilan jedinstveni identifikator kontrole. Neka bude kratak i nemoj ga ponovo koristiti za drugu komandu.
titleOznaka prikazana u Dock zaglavlju.
commandKomanda koja se pokreće u Dock terminalu. Obavezna je za terminalske kontrole i pokreće se u login shellu.
typeOpcionalna vrsta kontrole: terminal (zadano) ili browser.
urlStranica koja se otvara. Obavezna je za kontrole preglednika.
chromeOpcionalna vidljivost interfejsa preglednika. Zadana vrijednost je true; false skriva adresnu i alatnu traku, čini Fokusiranje adresne trake bez učinka u tom oknu, a cmux browser goto/reload ostaju dostupni.
cwdOpcioni radni direktorij. Relativne putanje se rješavaju od korijena projekta za projektne konfiguracije ili od home direktorija za globalne konfiguracije.
heightOpcionalna visina kontrole. Kontrole bez height dijele preostali prostor.
envOpcione environment varijable proslijeđene samo toj kontroli.

#Dijeljenje s timom

Dock je napravljen za dijeljenje kroz source control kada komande pripadaju repou.

  • Stavi repo-specifične kontrole u .cmux/dock.json i commituj datoteku.
  • Lične kontrole stavi u ~/.config/cmux/dock.json, posebno izvan repo-a, i drži taj fajl izvan zajedničkog source controla.
  • Ne stavljaj tajne u dock.json. Čitaj ih iz shella, lokalne env datoteke ili postojećih razvojnih alata.

#Zatraži od agenta da ga postavi

Koristi ovaj prompt kada želiš da coding agent napravi Dock kontrole. On kaže agentu da pokrene `cmux docs dock`, pregleda projekat i pita prije nego što pogađa.

Agent prompt
Set up cmux Dock controls for the current context.

First, learn the feature before editing:
1. Run `cmux docs dock` if the cmux CLI is available. If it is not, read https://cmux.com/docs/dock.
2. Inspect the repository or current directory to understand the project type, scripts, package manager, dev servers, logs, task runners, test commands, and any existing TUI tools.
3. If the desired Dock is ambiguous, ask the user what they want monitored or controlled before writing files.

Dock is cmux's right-sidebar terminal and browser control area. A Dock config is JSON with a top-level `controls` array. Terminal controls run commands in Ghostty-backed sections using the user's login shell; browser controls embed URLs. Controls are useful for project dashboards, git/status views, dev server or build status, test watchers, log tails, queues, local services, or fixed web dashboards.

Choose where to write the config:
- In a repository or project directory, create or edit `.cmux/dock.json` so teammates can share it.
- For a personal default outside a repo, create or edit `~/.config/cmux/dock.json`.
- If both exist, project `.cmux/dock.json` is more specific for that project. Nested project configs apply to that directory tree; use the nearest relevant project config instead of writing unrelated controls globally.
- If there is no repo and no clear project root, use the global config only after confirming the user wants a personal Dock.

Schema:
{
  "controls": [
    {
      "id": "short-stable-id",
      "title": "Human label",
      "command": "safe command to run",
      "cwd": "optional/path",
      "height": 220,
      "env": { "NAME": "value" }
    },
    {
      "id": "dashboard",
      "title": "Dashboard",
      "type": "browser",
      "url": "http://127.0.0.1:3000",
      "chrome": false
    }
  ]
}

Rules:
- Keep ids stable, lowercase, and unique.
- `type` is optional: `terminal` is the default, or use `browser`.
- Terminal controls require `command`; browser controls require `url`.
- Browser controls default to `chrome: true`. Set `chrome: false` to hide browser chrome, including the address bar and toolbar; Focus Address Bar then does nothing for that pane, while `cmux browser goto` and `cmux browser reload` remain available.
- Use `cwd` for subdirectories; relative paths resolve from the config base.
- Use `height` only when a control needs a fixed amount of vertical space.
- Use `env` only for non-secret values needed by one control.
- Do not put secrets, tokens, or machine-specific private paths in a shared project config.
- Prefer commands that are safe to start repeatedly and make sense in a terminal.
- Do not invent unavailable scripts. Read package files, Makefiles, Procfiles, README docs, config files, and existing tooling first.
- Keep shared project Docks portable for teammates. Put personal or machine-specific controls in the global Dock.

Deliverable:
- Create or update the appropriate dock.json.
- Preserve existing useful controls unless the user asked to replace them.
- Validate that the JSON parses.
- Summarize what each control does and any commands the user should review before trusting the Dock config.