Skip to content

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 20:33
· 17 commits to main since this release

Nebula v0.18.0 is out. Cursor gets a real model and effort picker that keeps itself current, every model and effort list filters as you type, the / finder puts what needs you on top, the root checkout keeps the first worktree row, the selection rail and workspace-tab underline take the session's status color, and make prune keeps target/ from eating the disk.

πŸš€ Launch faster

  • Cursor models and efforts. cursor-agent --model takes one flat id per family and effort (claude-opus-5-thinking-high-fast), so nebula keeps the family as the model and the suffix as the effort and joins them at spawn. Pick them on Settings β€Ί Agents (cursor_model / cursor_effort), in the preset editor, or by drilling β†’ into the Cursor row of the new-session menu. The effort list follows the family β€” -fast variants included β€” and re-fits itself when the family changes, so the CLI never sees an id it refuses.
  • A catalogue that keeps itself current. The lists are a built-in seed merged with cursor-agent --list-models, cached in cursor_models.json beside config.json and refreshed on a background thread once the cache is a day old. Families with no bare id launch their high (else medium) variant when the effort is left at default.

πŸ”Ž Find it faster

  • Type to filter the picker. In any model or effort submenu of the new-session menu, typing narrows the rows β€” opus keeps the Opus families and the title reads Cursor model βŒ• opus β€” ↑/↓ move, Backspace widens, Esc clears the filter before it backs out, and a letter that would leave no rows is refused with a flash. Claude and Codex lists filter the same way.
  • Type to filter the preset editor. On the Harness / Model / Effort rows, typing jumps the row to the best match and ←/β†’ cycle only the matches; the filter shows beside the value as βŒ• opus (3), and Tab / ↑ / ↓ leave the row and drop it.
  • / opens on what needs you. Before you type, the finder lists sessions waiting on you first, then running ones, then unread finishes, then everything else β€” worktrees, projects, workspaces β€” by last interaction, so / Enter is the fastest way back to the row that wants you or the worktree you just left. Typing still ranks the best match first, with that order as the tiebreak.

🧭 Lists that look after themselves

  • The root checkout keeps the first row. In the Worktrees column the βŒ‚ root row is the one fixed seat; the other worktrees still sit most-recent-first under it, and the cursor follows its row across a re-sort.
  • The selection rail wears the status color. The rail beside the selected session, worktree or project row in the focused panel takes the color of that row's status dot β€” yellow mid-turn, violet done and unread, green read, red waiting β€” instead of the theme accent; parent rows use their rollup. Rows without a dot (PR rows, terminals, overlay lists) keep the accent, and an unfocused panel's dim rail is unchanged.
  • So does the open workspace tab. The underline under the open tab in the workspaces bar is painted with the workspace's rollup color, so a red tab means a session in it wants you.

🧹 A lighter checkout

  • make prune. Every release bump and every cargo build / test / check variant leaves another hash of each workspace crate under target/, and on macOS each one keeps its object files β€” ten days of that reached 41 GB. make prune (KEEP=3 by default) keeps the newest three builds of every crate and drops the rest, under cargo's own build lock so it never deletes under a running build; make cycle now runs it between kill and dev. scripts/prune-target.py --dry-run reports without deleting.

⚠️ Heads up

The Cursor --model join happens in the daemon, so run nebula kill before relaunching β€” an older daemon still spawns cursor-agent without a model. No protocol bump this time.

curl -fsSL https://raw.githubusercontent.com/AgentSystemLabs/nebula/main/install.sh | sh