Skip to content

Changelog

Every release of wdx, generated from the commits by git-cliff: do not edit.

  • give wdx its mark, wdˣ, and put it on the site
  • site: give tide its mark, a terminal window, on the site
  • tide: render Markdown docs and files, m for their source
  • read how much of its account’s limits a Claude Code agent’s ACA tells
  • serve usage as GET /v1/usage and wdx usage
  • tide: show the usage of each AI coding agent’s account in a stats tab
  • add the hub’s API spec and its generated internal/hubapi
  • add the hub’s settings table and home in internal/hub/hubconfig
  • add the hub’s database in internal/hub/hubdb
  • add the hub’s certificate authority in internal/hub/ca
  • serve the hub’s API on its three endpoints in internal/hub/server
  • add wdx-hub’s commands in cmd/wdx-hub and internal/hub/hubcli
  • build and ship wdx-hub, and run it from deploy/hub
  • add the hub’s accounts store, the audit chain and sealing
  • add the hub’s admin commands for accounts and the audit chain
  • serve the hub’s sign-in pages on the web endpoint
  • store a usage row limited when the ACA says so, whatever its percentage
  • read Antigravity’s usage from the quota of its status line
  • read Codex’s usage from its session file
  • read Cursor’s usage from its dashboard API
  • show the usage of Codex, Antigravity and Cursor accounts
  • make machines nodes of the hub’s accounts, on the hub’s side
  • add hublink, the node’s side of the hub
  • add wdx hub login, logout, status and node, served by the daemon
  • keep the docs nodes push on the hub, sealed at rest
  • queue a synced project’s doc changes for the hub in an outbox
  • push synced projects’ docs to the hub with wdx project sync
  • relay streams between two nodes of one user through the hub
  • set up the host’s authenticator code and keep the node’s audit chain
  • open sessions between two nodes of one account with the host’s code
  • serve a node’s API through a session to another node
  • run a command on another node with –node
  • attach to a terminal or an agent on another node with –node
  • open TIDE on another node with wdx tide –node
  • show in the host’s TIDE that a remote session is open
  • wdx-hub update installs and rolls back the installed hub
  • install wdx-hub as a system service with install-hub.sh
  • deploy wdx-hub on Fly.io with make hub-fly-deploy
  • read the draft’s text from every ACA’s input box
  • submit a typed message once its paste shows, and confirm it went
  • close a removed node’s sessions on the account’s other nodes
  • close the sessions into this node from TIDE’s Sessions dialog
  • complete wdx-hub on Tab, and run help and completion on any settings
  • log in to the central hub when wdx hub login has no –url
  • say which usage buckets an agent’s model draws on
  • mark an agent limited while a bucket its model draws on is
  • show in tide that an agent is limited
  • label a holder’s log lines holder, and log each key once
  • say a message queued when its shell or agent ends is kept, not lost
  • write TIDE in capitals in wdx’s own text, as the site does
  • name web.tls_cert before web.tls_key when serve finds both missing
  • site: import Since on the stats page
  • log why the hub link lost control before saying so
  • tell the hub a renewed certificate is saved before using it
  • read the sync status in one transaction and log a push before the outbox changes
  • bind a session’s code to the step it arrived in, and log every hub request before it stops
  • reset the hub’s failed service before an update starts it
  • show the host’s reason when a remote TIDE’s session closes
  • list a bucket’s usage windows together
  • let the hub’s user read the releases in test-hub-install
  • release the update lock while a forked child holds its file
  • let a remote client open a stream beside one in use
  • start a terminal or agent created with –node in the project’s checkout
  • close a node’s sessions on their hosts when it logs out
  • nest a plan of plans’ plans under it in TIDE’s Plans section
  • print Cursor’s footer from the status line wdx pins
  • read Cursor’s tell box at 40 columns, recorded under wdx’s status line
  • put the hub’s first Fly machine in the region asked for
  • refuse –node naming this machine before asking for a code
  • say what to do for a worktree in a repository with no commit
  • log one debug_id on each line of the host’s session streams
  • log where each of the hub’s requests came from
  • name a Unix socket path too long before listening on it
  • pass the host’s last answer on before a session stream closes
  • hand the hub’s control goroutines a copy of the node
  • bound the hub’s request bodies and close idle connections
  • bound what a login costs on the hub
  • cut every stream and session when a node or user is cut off
  • keep secret setting values out of the logs and argv
  • have an update as root trust only what root chose
  • keep a node’s pinned key when the hub says it is gone
  • have a node’s wait after wrong codes keep doubling to an hour
  • give the wait for a session’s confirm a deadline of its own
  • record a node’s certificate saved after the hub sent another
  • show the wrong codes tried since the last session opened
  • audit a node login’s start only once a user answers it
  • count an IPv6 client by its /64 in the hub’s rate limits
  • warn when the hub serves plain HTTP and trusts no proxy
  • treat a pushed doc the hub does not find as refused for good
  • make node login ids unguessable and count unknown ones
  • send a browser to log in again without signing it out on a GET
  • name the hub’s Fly machine and trust Fly’s ingress address
  • deps: upgrade golang.org/x/net to v0.62.0 and filippo.io/edwards25519 to v1.1.1
  • bound every step of reaching another node through the hub
  • notice a dead stream to another node within 30 seconds
  • show reconnecting in a remote TIDE when the project’s stream breaks
  • keep a session in use open, whatever passes through it
  • move the client’s row of a session as the host moves its own
  • close a session gone idle during a suspend, and retry after an error
  • check a session open already with the host before saying unchanged
  • keep no session on the host that its client does not have
  • refuse a stream whose session closed after it was checked
  • leave sessions opened after the hub was asked for the account’s nodes
  • report a logout racing a stream as session_closed, logged_out
  • report a stream to another node cut before it answered as connection_lost
  • close a removed agent’s tabs in a remote TIDE
  • read a remote TIDE’s failed views again once a session opens
  • mark a remote TIDE’s tabs missing as a local TIDE’s are
  • give a tab completion with –node 5 seconds to reach the host
  • keep this machine’s home out of paths for another node
  • give wdx usage –node, as every command the daemon serves has
  • take the project from a parent named by id with agent create –node
  • try the hub again at least once a minute after it goes away
  • send a node’s state once at each control connection
  • welcome a node newer than the hub, and check every node request’s API version
  • let the hub move to another address without nodes logging in again
  • refuse a client whose oldest API version is past the host’s, before any handler
  • answer a newer client’s request the host’s spec does not allow with node_version_unsupported
  • give the host’s protocol range in a refusal between nodes, and accept a range
  • pass the relayed client’s holder version to the holder, which decides
  • exit by the problem’s status when its code is unknown
  • fail only the doc a push refuses, and split a batch refused as usage
  • keep each pushed revision’s hash, and a doc and a plan apart by name
  • write a node’s last seen time when its control connection closes
  • log a stream the host serves under its stream_id
  • refuse an invite’s life below a second before it can overflow
  • back up the hub’s certificate authority, and refuse a start without it
  • give the hub, the link and remote sessions limits tests lengthen
  • close the hub CLI’s connections to the hub when a run ends
  • make unixsocket.MaxPath a constant
  • log what the daemon’s HTTP servers report of connections
  • fail a session’s use when its close reason cannot be read
  • say what is so in remote’s, hublink’s and the daemon’s messages
  • read wdx-hub’s –json in install-hub.sh, never its text
  • name a hub user by –name or –id, with Heading table headers
  • log a connect given up on during its upgrade
  • run gosec, each finding fixed or annotated with its reason
  • run sqlclosecheck and rowserrcheck
  • build with Go 1.26.11 for GO-2026-6859
  • remove an update’s old CA backup with its database backup
  • show only the sections tide.section_order names, default awdpc
  • run one tide per home
  • set out tide’s C-q menu by level, with a Project submenu
  • keep an agent’s model and permissions for every start
  • choose the AI coding agent of a new agent, from those installed and enabled
  • show a plan’s slots, and refuse to land or remove one while it runs
  • run plans of plans, each plan after those before it have landed
  • start a plan its parent lists on the person’s answer, once the plans before it have landed
  • copy a plan of plans with the plans it lists that are not done
  • remove a plan’s agents once it is done or cancelled
  • remove a plan task’s agent as soon as the task is done or skipped
  • give a message starting with ! to the model, never run it
  • add wdx help agents, the manual for an AI agent wdx runs
  • point every agent wdx starts to wdx help agents with a launch note
  • keep tide’s tabs in the daemon, closed by removals through wdx
  • open tide’s tabs from the daemon and send them on every change
  • keep tide’s view in the daemon, outside the line of changes
  • bring tide back as it was left, from the view the daemon keeps
  • mark tide’s tabs whose file or worktree was removed outside wdx
  • keep plans in the docs table, apart from docs by kind
  • check a plan’s YAML, order its DAG and reduce it
  • serve plans through the API, plans of plans included
  • add wdx plan and wdx help plans
  • show plans in tide, a section and a tab of each
  • rename the agent selected in tide with r
  • remove the project shown from tide with C-q p x
  • open a tab from tide’s left pane and stay, or go with Shift+Enter or o
  • close a row’s tab from tide’s left pane with - or C-q -
  • keep plans’ runs and decide each run’s next step
  • land on a branch no checkout has, stop one agent, create one linked
  • run plans: a runner starts and lands their tasks
  • add wdx plan run, plan task done and plan task get
  • show a plan’s run in tide, and run a draft with r
  • collapse tide’s left-pane sections with a click on the heading or z
  • send keys to terminals’ programs by the kitty keyboard protocol
  • answer a plan’s stuck tasks and its run in the store, and decide them in Next
  • land a plan’s tasks with the project’s check, release slots, cancel, retry
  • answer a plan’s stuck tasks and its run through the API
  • add wdx plan pause, resume, cancel, set and plan task retry, land, skip
  • answer a plan’s stuck tasks and its run from tide
  • list the models an AI coding agent offers
  • put docs and plans in folders
  • show docs and plans in folders in tide, and move them with m
  • ask what a new agent is created with in a form in tide
  • add wdx plan copy, archive and unarchive
  • archive and copy plans from their tab in tide
  • add Antigravity as an AI coding agent
  • group a plan’s agents under a row for the plan in tide
  • group a plan’s slots under a row for the plan in tide’s Worktrees section
  • add Cursor as an AI coding agent
  • add Codex as an AI coding agent
  • show and drive plans of plans in tide, with the plans waiting for you
  • read what Codex is doing from its screen
  • give an instant message to Codex’s running turn instead of interrupting it
  • resume a Codex agent’s conversation on every start
  • name the ACA in each session heading of transcript.md
  • keep a copy of a Codex agent’s session files in its backup
  • render a Codex agent’s transcript.md from its session files
  • put back a Codex session file Codex deleted, from its backup
  • tell Codex’s tool calls in a few words in the brief
  • restart a Codex agent in a new session
  • give a Codex agent’s conversation in brief
  • lay out a plan’s DAG as a rail, as git log –graph draws commits
  • draw a plan’s tab as a header, its tasks on the rail and its keys
  • show a plan task’s panel and whole prompt, and plans of plans in the new tab
  • choose the plans tide’s Plans section shows: all, draft and in progress, or completed
  • steer instant messages into Claude Code’s running turn with its send-now keys
  • read a plain message at the agent’s next step, not after its turn
  • open a plan’s PR once it is done, with pr: true
  • rebase a worktree onto its base when asked, with wdx worktree rebase and R in tide
  • stack a plan of plans’ PRs with stacked: true, and rebase a stacked worktree with R
  • widen the plan tab’s panel to what the task list leaves
  • read Antigravity’s box, draft and model from its screen
  • read what Antigravity is doing from its screen
  • resume Antigravity agents in their conversation, learned from a SessionStart hook
  • steer messages into Antigravity’s running turn with alt+m
  • back up Antigravity agents’ conversations and render their transcript
  • brief and restart Antigravity agents
  • run each Cursor agent with a config folder of its own
  • resume a Cursor agent’s chat on every start
  • read Cursor’s screen: ready, draft, model, activity and approvals
  • back up a Cursor agent’s chats as transcript.md and a snapshot of each store
  • steer a Cursor agent, holding a message while a steer is pending
  • restart a Cursor agent and read its history in brief
  • let the agent asking land or rebase its own worktree
  • stop an agent’s leftover processes when its terminal ends
  • sign wdx on macOS at install, so its permissions survive updates
  • scroll tide’s left pane with the wheel
  • sign each release wdx update installs on macOS
  • track each agent’s context size
  • color each agent’s context size, and show it in tide
  • follow a Codex agent’s context size
  • follow a Cursor agent’s context size
  • paint tide’s own dark background, darker in the focused pane
  • tint tide’s open tabs, shown tab and cursor, and soften its headings
  • draw tide’s focused pane in heavy lines
  • follow an Antigravity agent’s context size
  • choose tide’s colors with a tide.theme setting
  • read the prompt a waiting Claude Code agent shows
  • show the prompt a waiting agent answers
  • watch files through one inotify instance the daemon shares
  • watch worktrees and tabs through the daemon’s one inotify instance
  • follow agents’ context sizes through the daemon’s one inotify instance
  • open the daemon’s one inotify instance only once something is watched
  • order tide’s tab events by revision, and send the tabs on quitting
  • run every change to its end when its client leaves, views too
  • mark a tab missing as soon as its file or worktree goes outside git
  • keep a project’s cursor where its view left it, not on its current tab
  • show a plan’s state and counts as of the run getPlan returns with it
  • log every request tide leaves in flight when it quits
  • give Codex a message only once its box is ready
  • tell Antigravity agents to create files in the project, not the note’s folder
  • hold a message until the agent’s terminal reads keys
  • render a Cursor reply again when its bytes repeat
  • read Cursor’s model and box under a long directory
  • run Claude Code agents without the mouse, so tide’s selection works
  • read a checkout removed during a project read as not present
  • show an agent’s info in a tide tab and let it be renamed
  • keep a backup of an agent’s conversation
  • stop an agent’s background session whatever ends or starts it
  • show which AI model an agent runs
  • change the settings in a tide tab
  • show an agent’s model next to its aca
  • close a project in tide with C-q w
  • start an ended agent or terminal again in tide with C-q g
  • open a known project by name or id, or choose from a list
  • review worktrees and their diffs in tide
  • move around tide’s diffs by change, file, line and search
  • review a worktree’s uncommitted changes and ask its agent to commit
  • mark files verified in tide’s diffs
  • comment on tide’s diffs and send the comments as a review
  • find the agent working in a worktree, wherever it started
  • keep every message until its holder has typed it
  • start an agent on a task with wdx agent create –prompt
  • remove a worktree that landed
  • land a worktree on its base by rebase
  • start an agent again in a new session with wdx agent restart
  • land a worktree through a PR with gh
  • read a worktree’s files through the API
  • list a worktree’s files in tide’s left pane
  • read a file in a tab of tide
  • colour a file’s text in its tide tab
  • name the editor tide edits with, and install vi with wdx deps
  • run an editor on a worktree’s file in the daemon
  • edit a file in its tide tab with e
  • ask to save or discard when closing an editor’s tab
  • filter tide’s left pane with /
  • send Alt+arrows to the program in focus with tide’s C-q menu
  • support vim, nvim, nano, hx and emacs as tide’s editor
  • create, rename and delete files and directories in tide’s Code section
  • order tide’s left pane with the tide.section_order setting
  • read a large repository’s worktrees at once and its files with one walk
  • keep docs and their revisions in the database
  • keep a read-only copy of each doc’s latest revision in the home
  • mark changed files in tide’s Code tree
  • count the changed files under each directory in tide’s Code tree
  • serve docs through the API
  • manage docs from the command line with wdx doc
  • write a project’s docs into its repository with wdx doc sync-to-git
  • show the Code section’s worktree in bold
  • show tide’s hidden-tab arrows as ◀ and ▶, not dimmed
  • show a project’s docs in tide’s Docs section and tab
  • find the newest dev release whatever order GitHub lists them in
  • name the newest dev release in a file each release moves
  • see a worktree’s base move whenever it moves
  • keep file contents and comments out of the logs
  • follow a conversation Claude Code moves to the background
  • keep a file’s mark when it is committed while the worktree is read
  • release a holder whose client connects as its shell exits
  • close the terminal’s input only once its read has ended
  • keep a long notice in a text tab’s bar, and describe tide’s Code section
  • send arrow, editing and function keys with Shift, Alt or Ctrl as xterm does
  • never log a doc’s content in the daemon’s requests and responses
  • keep tide’s Code cursor on a new entry until a read shows it
  • prepare the stores’ statements once, and redact only lines with a URL
  • give cobra flag completions only in a run that completes
  • add the terminal commands and stop terminals on project close
  • run wdx terminal attach full-window, as tmux does
  • make update –rollback –json say whether to restore the backup
  • page terminal history by from and count, or by tail
  • answer a request to an unknown endpoint with 400
  • create agents under other agents, shown as a tree
  • show and change settings with wdx setting
  • update wdx in place and roll it back
  • add the terminals table and the terminal.shell setting
  • run a terminal’s shell in a holder process that outlives the daemon
  • supervise terminals’ holders and keep their state
  • serve terminals over the API and stop them with their project
  • keep terminals running when the service stops or restarts
  • publish a GitHub Release for every pushed tag
  • give terminals’ shells WDX_HOME so wdx run in them reaches their daemon
  • list a project’s terminals in project get and add terminal get
  • write the config file from the settings, and anew on every update
  • let the daemon drive holders of protocol version 2
  • keep a terminal’s screen in a headless vt for attach
  • keep a terminal’s output in a spool and its history in files
  • let clients attach to a terminal’s holder
  • add a client that attaches to a terminal’s holder
  • serve a terminal’s history and delete what removed terminals kept
  • add wdx terminal attach and wdx terminal history
  • add a Bubble Tea pane that shows an attached terminal
  • scroll an attached terminal’s pane back through its whole history
  • color attach’s status line by its state
  • show an attached pane at the size another client set
  • say what did not happen on every changing command’s error
  • give a terminal’s updated_at, when its state last changed
  • add wdx tide, the terminal IDE’s layout with placeholder panes
  • let tide list the projects from the daemon at start
  • open closed projects in tide from [Open Project]
  • switch projects in tide with the switcher and Alt+Shift+arrows
  • frame tide’s popups with a title, a body and their keys
  • open a local repository in tide from a directory browser
  • clone and create projects in tide, answering their questions
  • select text inside one tide pane by dragging, copied on release
  • stream a project from the daemon, whole on every change
  • show the project’s terminals as tide’s tabs, followed live
  • create a terminal with C-q t and remove one with C-q x in tide
  • log when a terminal’s vt falls behind its output and catches up
  • list what wdx needs besides itself with wdx deps list
  • install a dependency with wdx deps install –name
  • drop only the features of a missing dependency
  • run AI coding agents as terminals of a project
  • show a terminal’s history alone, read-only, in termview
  • show the selected terminal live in tide’s terminal pane
  • list a project’s agents in tide and show the active one live
  • open and switch projects in framed popups in tide
  • give tide’s left pane a quarter of the width
  • start an agent in a worktree, created when it is new
  • save the dev channel when installing from it
  • take the menu’s letters in tide’s project pane without C-q
  • accept holders of protocol versions 3 and 4
  • read an agent’s activity and draft from its screen
  • keep what an agent is doing in its holder
  • send a message to a terminal with wdx terminal send
  • send tide’s own keys to the program in a pane
  • give a running agent a message with wdx agent send
  • show the version in the status bars and reload tide with C-q r
  • show what an agent is doing in the API, wdx agent and tide
  • show how many messages wait for an agent
  • open agents in tabs in tide’s right pane
  • publish and update from the srjn45/wdx releases
  • build with Go 1.26.10 for its standard library security fixes
  • open terminals’ PTYs without reading a stale PTY number
  • keep attached clients’ output flowing past the hello’s write timeout
  • number an attached pane’s lines as the holder does after a vt reset
  • answer hello without waiting for the holder’s vt
  • keep the holder’s vt going when a program never reads its answers
  • send attached clients the shell’s exit before the holder quits
  • fetch failed history again on the next scroll, not at once
  • give the window back when wdx terminal attach gets a signal
  • refuse ctrl-i and ctrl-m as attach’s prefix key
  • finish a change when the client that asked for it leaves
  • never leave a clone cut short where a project’s checkout goes
  • cancel a change the stopping daemon gives up on, and wait for it
  • let the daemon stop while a terminal’s holder is being dialled again
  • report a terminal removed with –stop-running as stopped
  • stop a project’s terminals together, not one after another
  • stop a terminal’s holder even when nothing watches it
  • delete the sockets killed holders leave behind
  • stop the daemon a failed update started before putting the old one back
  • never lose the rollback point, nor fail an update that worked
  • finish an update’s switch when wdx is interrupted during it
  • refuse a rollback once another install replaced the update
  • always say a signal held during an update’s switch
  • stream a release’s archive to disk instead of into memory
  • let launchd wait for the daemon to stop
  • attach shows the screen under less or vim, and the pen and line drawing
  • keep out of history lines that never scrolled off the screen
  • free what scrolls off the alternate screen
  • retry starting the daemon while its binary is text file busy
  • keep the last screen in history before telling of the shell’s exit
  • stop Claude Code’s idle title from printing at its prompt
  • keep all of a shell’s output in history when the vt is behind at its exit
  • select a terminal created in tide whichever comes first
  • keep a clone that is cancelled once it is in place
  • stop a terminal whose connection to its holder just dropped
  • scaffold wdx CLI with release build and installer
  • add projects with open –local and close
  • add project remove
  • add project open –git
  • add project create
  • add flags to answer prompts without a terminal
  • add –json output and exit codes
  • support –json in project open
  • support –json in project create
  • add project list
  • add project get
  • add –help with output, errors and –json
  • add structured JSON logging with debug_id
  • load settings once into a config passed by value
  • name projects by –id or –name in close and remove
  • read settings from /config.yaml
  • add the daemon API spec and the daemon serving it
  • serve every command through the daemon
  • install and manage the daemon as a systemd or launchd service
  • log the error code at the top level of returned lines
  • send the daemon’s request metrics over OTLP
  • run Grafana with the logs and metrics via wdx observe
  • color text output and split errors into hint and debug_id lines
  • render help in our own layout, with examples and help topics
  • complete commands, flags and projects in bash, zsh and fish
  • tag releases on a stable and a dev channel