Releases: noluyorAbi/autonomous-agent-nightshift
v1.9.0
Added — TUI as the default entry + full control center
nightshift ui is now the front door and a complete control center — you no
longer need an already-running run to open it, and every CLI subcommand is
reachable from inside the TUI.
- Bare
nightshiftlaunches the TUI in a terminal (the default experience).
Piped / non-interactive invocations andnightshift helpstill print help, so
scripting is unchanged. All subcommands behave exactly as before. - Home / launcher state when no run is live: project status, last-run
summary, the detected todo/plan files (with task counts), and actions —
Start · Init · Review · Resume · command palette · Quit. - Command palette (
:) runs every subcommand from inside the TUI
(start · stop · status · review · resume · init · bulletproof · version).
Output-producing commands render in a scrollable modal;startlaunches the
run detached and the view flips to live automatically. - Thin orchestration, no reimplementation. The TUI spawns the real
bin/nightshiftsubcommands (passed in viaNIGHTSHIFT_BIN); the bash
runners and their logic are untouched. - The live monitor/steer view (tasks, log, pause/resume/skip/stop/message) is
unchanged; the UI now switches home↔live automatically as runs start and end. - Bash fallback stays monitor-only; the launcher is the Node UI (Node 22+).
v1.8.0
Added — nightshift ui v2: Claude-Code-grade Ink TUI (Milestone 1)
A ground-up rebuild of the dashboard as a real terminal UI (Node + Ink/React),
replacing the hand-rolled bash ANSI renderer. It is a drop-in client of the
same .agent-logs/ file protocol, so the bash runners are unchanged.
- New
ui/workspace — TypeScript + Ink, bundled by esbuild into a single
self-containedui/dist/cli.js(nonode_modulesships or installs). Requires
Node 22+ (ink 7's floor);bin/nightshiftgates on it and falls back to the
bash UI below that. bin/nightshift uidispatch — uses the Ink TUI when Node 22+ and the
bundle are present, otherwise falls back to the bash UI (scripts/nightshift-ui.sh,
retained).NIGHTSHIFT_UI_BASH=1forces the fallback.- Milestone 1 parity + polish — status badge with live spinner, progress
bar, cost, two-pane tasks + log (summary/events toggle,t), commit preview
for a selected done task, status footer, message bar, help overlay (?),
keyboard nav (j/k, arrows,g/G), and the full cooperative control set
(i//message,p/r/n/s/x,K), all writing the existing control channel.
HonorsNO_COLOR, non-TTY (prints a hint), and--attach DIR. - Tests + CI —
ui/test/protocol.test.ts(8 assertions, the file-protocol
IO layer) plus a headless selftest frame; newui-buildCI job runs typecheck,
unit tests, build, and the selftest. The bash protocol test still guards the
runner side.
Next milestones (per docs/superpowers/specs/2026-05-30-nightshift-ui-v2-ink-tui-design.md):
live agent stream, diff viewer + log scrollback/search, richer messaging
(multiline + delivery ack), mouse + live metrics.
v1.6.0
Added — interactive TUI
nightshift ui— interactive terminal UI (scripts/nightshift-ui.sh, 395 lines). Live view of task list with selection cursor, current phase, validation/chrome attempt counters, last error, and a scrollable log/event pane. Refreshes every 0.2s.qto quit, arrow keys to navigate, toggles for log mode. Pure bash + python3 (for JSON parse). No external TUI library.- Runner state + event emitters. Both
run-agent-loop.shandnightshift-bulletproof.shnow write.agent-logs/run_state.json(current snapshot) and append to.agent-logs/run_events.jsonl(event log) at every phase transition: run_start, task/step_start, validate_start, validate_failed, chrome_start, task/step_complete, tasks_complete, run_complete, stopped. This powers the TUI and any external monitoring. ROADMAP-UI.md— staged plan for evolving the TUI toward a Claude-Code-like experience.
Fixed
- TUI task-list rendering showed doubled checkboxes (
[ ] - [ ]). Cause:${line#- [ ] }parameter strip — bash parses[ ]as a glob character class (one space), not literal brackets, so the prefix was never stripped. Fixed with fixed 6-char offset (${line:6}), since the- [x]checkbox prefix is always exactly 6 chars.
Added — distribution + docs (from this session)
USAGE.md— consolidated how-to-use guide (three install paths + troubleshooting). Surfaces the "must run/plugin installAFTER/plugin marketplace add" gotcha..github/workflows/npm-publish.yml— auto-publish to npm on tag push (needsNPM_TOKENsecret with bypass-2FA; fails-safe when missing).- Branch protection on
mainwith 8 required status checks. No force-push, no deletion. - README install section links to
USAGE.mdand clarifies the/plugin install+ full-restart requirement.
v1.5.2
Added — auto-update notification + self-update command
nightshift updatesubcommand. Detects install channel from$ROOTpath (npm Cellar / Homebrew /~/.claude/skills//~/.claude/plugins/marketplaces// git clone) and runs the matching update command. Invalidates the update-check cache after running.- Daily update check runs before every subcommand except
version,help,update. Fetches latest from npm registry with 3s timeout, caches result in$XDG_CACHE_HOME/nightshift/latest-version(or~/.cache/nightshift/). If newer version exists, prints a one-line yellow notice to stderr. Fails silent on network errors. - Pure-bash semver comparison (
version_lt). No new dependencies. Skips check in non-interactive contexts (CI, pipes) via[ -t 1 ]. Disable viaNIGHTSHIFT_NO_UPDATE_CHECK=1.
Fixed (real bug reported via screenshot)
bin/nightshift helpdisplayed literal\033[1mescape codes instead of bold/colored text. Cause: single-quoted color variables (BOLD='\033[1m') stay as literal 6-char strings;cat <<EOFheredoc does not interpret backslash escapes. Fix: ANSI-C quoting (BOLD=$'\033[1m') so vars contain real ESC bytes that terminals interpret correctly.
Why this release
Combined v1.5.1 (ANSI bug fix) with auto-update feature user requested. Bumping straight to 1.5.2 since v1.5.1 was tagged on GitHub but never published to npm.
v1.5.1
Fixed (real bug reported via screenshot)
bin/nightshift helpdisplayed literal\033[1mescape codes instead of bold/colored text. Cause: color variables used single-quoted strings (BOLD='\033[1m') which stay as literal 6-char strings;cat <<EOFheredoc does not interpret backslash escapes. Fix: ANSI-C quoting (BOLD=$'\033[1m') so vars contain real ESC bytes that terminals interpret correctly.- Affects: all CLI subcommands that print colored output via heredoc (help, version, init).
Why this release
User screenshot showed nightshift help output with raw escape sequences instead of rendered colors. Real, visible regression in v1.4.0 and v1.5.0. Fixed.
v1.5.0
User asked: better Vite/React site with docs + onboarding + playful look, agentic markdown files (CLAUDE.md etc), updated GitHub metadata, and a fix for /plugin marketplace add. Delivered all five.
Site rewrite (Vite + React + Tailwind + Framer Motion)
The single-file static site/index.html is gone. Replaced by a proper SPA in site/:
/— animated hero, how-it-works pipeline cards, slash commands preview, cost callout, use-case grid, final CTA/install— six install channels with copyable commands and comparison table (CLI vs Skill vs Slash commands per channel)/commands— full slash command reference with categories and "when to use"/onboarding— 7-step interactive walkthrough with progress bar and Framer Motion step transitions. Fromnpm installto morning review/docs/*— renders existingdocs/*.mdviareact-markdown + remark-gfm(Vite?rawimports) with sticky sidebar nav. 8 pages: playbook, bulletproof, chrome-testing, qa-checklist, failure-modes, test-loop, cost-safety, FAQ
Dark nightshift theme: deep navy + amber accent, terminal aesthetic, subtle starfield. No emojis. Builds to ~580KB JS.
Site content sync agent
site/scripts/sync-content.ts — deterministic content sync. Reads package.json + commands/*.md, regenerates site/src/content/meta.ts. No LLM calls. Run via npm run sync inside site/. Documented in CLAUDE.md + AGENTS.md.
Agentic markdown files
CLAUDE.md— full working-in-repo guide. Project purpose, file map, conventions, when-to-modify-what.AGENTS.md— multi-agent coordination. Roles, tool authority table..cursorrules— Cursor-specific concise summary..github/copilot-instructions.md— Copilot context.
Marketplace fix
.claude-plugin/marketplace.json was missing. /plugin marketplace add noluyorAbi/autonomous-agent-nightshift failed with Marketplace file not found. Now present.
/plugin marketplace add noluyorAbi/autonomous-agent-nightshift
/plugin install autonomous-agent-nightshift
GitHub metadata
- Homepage URL → npm package page
- Description tightened
- 5 new topics:
claude-code-plugin,npm-package,cli,cli-tool,homebrew
Site URL
Deployed to GitHub Pages via Actions. Live at custom domain once DNS is configured:
http://iyikivarsin.me/autonomous-agent-nightshift/
v1.4.0
Multi-channel distribution. User asked: "make it run so I can download as skill, npm package, cli tool etc". v1.3 shipped install-as-skill-only. v1.4 adds 5 more channels.
Install matrix
| Channel | Command |
|---|---|
| npm | npm install -g autonomous-agent-nightshift |
| Homebrew | brew install --HEAD https://raw.githubusercontent.com/noluyorAbi/autonomous-agent-nightshift/main/Formula/nightshift.rb |
| curl one-liner (Claude Code skill) | curl -fsSL https://raw.githubusercontent.com/noluyorAbi/autonomous-agent-nightshift/main/bin/install.sh | bash |
| Claude Code plugin | /plugin marketplace add noluyorAbi/autonomous-agent-nightshift && /plugin install autonomous-agent-nightshift |
| Tarball | curl -fsSL https://github.com/noluyorAbi/autonomous-agent-nightshift/releases/download/v1.4.0/autonomous-agent-nightshift-1.4.0.tar.gz | tar xz |
| Git clone | git clone https://github.com/noluyorAbi/autonomous-agent-nightshift |
New: unified CLI
After npm install -g or brew install, the nightshift command is on your PATH:
nightshift init add-dark-mode # bootstrap todo + runner in cwd
nightshift start # launch detached
nightshift tail # follow summary log
nightshift status # alive? what task?
nightshift review # morning report
nightshift resume # diagnose + restart after crash
nightshift bulletproof-init # Bulletproof PR sweep bootstrap
nightshift help
Resolves its install root regardless of channel (npm Cellar, Homebrew Cellar, tarball, git clone, or ~/.claude/skills/). Symlink-aware.
New: release automation
.github/workflows/release.yml triggers on tag push, builds a tarball with SHA256, attaches to the GitHub Release. Enables the curl | tar xz install path. Auto-generates release notes from commits if release doesn't exist.
Verified end-to-end
bin/nightshift versionresolves install root correctlybin/nightshift init test-featurein tmp dir bootstraps todo + runner, sed-substitutesTODO_FILE, appends.gitignore- Tarball download from this release: extract →
./bin/nightshift versionworks npm pack --dry-runshows correct payload (100 KB) withbin/nightshiftandbinfield pointing to it
Three install modes, one tool
| Channel | CLI nightshift |
Claude Code skill | Slash commands |
|---|---|---|---|
| npm | yes | no (add via skill install) | no |
| Homebrew | yes | no (add via skill install) | no |
| curl one-liner | no | yes | yes (via plugin) |
| Plugin marketplace | no | yes | yes |
| Tarball / git clone | yes (via PATH) | only if into ~/.claude/skills/ |
only via plugin install |
For full power: install via npm/brew (CLI) and the curl one-liner (skill + slash commands).
Not in this release (acknowledged)
npm publishto the public registry (needs npm auth — pending decision)- Dedicated Homebrew tap repo (currently install via
--HEADURL) - Anthropic-curated marketplace listing (out of repo control)
v1.3.0 — Public release
Repo is now public. First release where the install command actually works for everyone:
```bash
curl -fsSL https://raw.githubusercontent.com/noluyorAbi/autonomous-agent-nightshift/main/bin/install.sh | bash
```
Pre-public sanitization
Final sweep before flipping visibility from private to public.
Removed:
- `examples/todo-design-nightshift.md` — 50-task design overhaul for a real soccer-club client. Contained location/founding-year/postal-code identifiers that couldn't be sanitized while preserving the realism that made it useful. Synthetic `todo-simple-example.md` + `bulletproof-steps-example.md` cover the template need without leakage risk.
Sanitized:
- `examples/qa-checklist-saas.md:97` — "BMW" reference → generic phrasing
- `examples/bulletproof-summary.log` — internal repo URL ×3, branch name ×4 → generic placeholders
- `examples/README.md` — restructured for removed entry
Fixed:
- README `/plugin install` block now shows correct `marketplace add` flow (was implying first-party marketplace presence that didn't exist)
- Dead "Claude Code Skill" badge URL → working docs link
- Added CI status + release version badges
- `install.sh` post-install hint lists all 6 slash commands (was 4)
Verified end-to-end:
- Raw URL reachable anonymously: 200 OK
- `curl ... | bash` against the public URL: clones into `~/.claude/skills/autonomous-agent-nightshift/`, idempotent re-pull works, SKILL.md frontmatter present, all 6 slash commands installed.
What's in the box (v1.3.0)
- 1 skill with NOT-for clause to prevent over-triggering
- 6 slash commands: /nightshift-setup, /nightshift-status, /nightshift-review, /nightshift-resume, /nightshift-debug, /nightshift-bulletproof
- 4 scripts: classic runner, bulletproof PR runner, start/stop wrapper, recursive test loop
- 4 templates: todo, codebase-context, QA checklist, tuning presets
- 4 examples: 2 synthetic (todo + bulletproof steps) + 2 real sanitized (SaaS checklist + 100-step run log)
- 8 docs: master playbook, bulletproof mode, Chrome MCP, QA checklist guide, failure modes, test loop, cost-and-safety, FAQ
- Community: CONTRIBUTING, SECURITY, CHANGELOG, ISSUE/PR templates, .editorconfig, LICENSE (MIT), CI
What's still not done (acknowledged)
- Docker-based fresh-machine install test (only local file:// + curl-from-public verified — clean container test not run)
- Asciinema/GIF hero demo
- Real-world validation run on a foreign OSS project
- Anthropic marketplace listing (custom-marketplace flow works today)
- Branch protection on main (recommended but not configured)
These are nice-to-haves. Repo is production-ready for v1.x as a copy-and-adapt resource.
v1.2.0 — Honest self-audit: cost docs, safety, portability bugs
User asked: "does the repo work, is it a good skill, what's missing?" Self-applied audit. Fixed 2 real bugs, 1 description issue, and 5 missing files.
Real bugs fixed
sed -i ''incommands/nightshift-debug.md— BSD-only syntax. Linux users would have hit `sed: invalid option -- '''`. Replaced with `perl -i -pe` (cross-platform).#!/bin/bashin 2 scripts — macOS ships bash 3.2 at/bin/bash(Apple stuck on GPLv2 forever). Switched all 4 scripts to#!/usr/bin/env bashfor modern-bash discovery via PATH.
Description quality
- SKILL.md frontmatter now includes a
NOT for:clause. Prevents over-triggering on "single bugfix", "architecture decision", "one-shot refactor" queries that shouldn't pull in the full multi-task nightshift workflow.
Missing context (highest-impact addition)
-
docs/07-cost-and-safety.md— real $ cost estimates ($0.50/task Sonnet, $1.50/task Opus, $40-200 per default overnight run), pre-launch safety checklist, --dangerously-skip-permissions handling, disaster recovery commands.Critical: users previously had zero idea what a nightshift costs. Now they do.
-
docs/FAQ.md— common questions by topic (general, cost, setup, during-run, results, skill, defaults rationale). -
README leads with Cost-and-safety section before prerequisites. Risk surfaced up front.
Community files
SECURITY.md— vulnerability disclosure policy.github/ISSUE_TEMPLATE/bug_report.md— structured bug intake.github/ISSUE_TEMPLATE/stack_adapter.md— template for new-stack adapter requests.github/PULL_REQUEST_TEMPLATE.md— PR checklist with sanitization reminder.editorconfig— consistent line endings across contributors
What's still missing (acknowledged)
- End-to-end install.sh test on a fresh machine (never run)
- Asciinema/GIF demo recording
- Marketplace listing setup (so
/plugin installworks without manual marketplace config)
These are nice-to-haves. Repo is now feature-complete for v1.x.
Install
```bash
curl -fsSL https://raw.githubusercontent.com/noluyorAbi/autonomous-agent-nightshift/main/bin/install.sh | bash
```
v1.1.0 — Shellcheck cleanup, synthetic examples, resume/debug commands
Continued the self-applied audit cycle. Beginner-friendly examples, two new diagnostic slash commands, and full shellcheck-warning cleanup.
Added
Slash commands (now 6 total):
/nightshift-resume— diagnose why a run stopped (iteration limit / rate limit / auth / crash / dev-server) and restart cleanly/nightshift-debug— when a task exhausts retries, classify the failure pattern (stale context / scope creep / weak validation / etc) and propose rewrite vs context-fix vs manual implementation
Synthetic examples (fill the beginner gap):
examples/todo-simple-example.md— 5-task dark-mode toggle. Pure template fill, no project-specific context.examples/bulletproof-steps-example.md— 10-step production hardening sweep (CSP, HSTS, rate limiting, Sentry, cookie consent). Shows what BULLETPROOF-STEPS.md input looks like.
The existing real (sanitized) artifacts stay — synthetic examples are the new on-ramp.
Fixed
8 inherited shellcheck warnings across the three runner scripts:
- 6× SC2188 (
> \"\$f\"truncation idiom →: > \"\$f\") - 1× SC2155 (local declare+assign masking — split)
- 1× SC2034 (unused
all_commentsvar — removed)
CI severity restored from error to warning so real lint pressure is preserved.
Install
```bash
curl -fsSL https://raw.githubusercontent.com/noluyorAbi/autonomous-agent-nightshift/main/bin/install.sh | bash
```
Existing installs pull the update via the same command.