Files

126 lines
5.1 KiB
Markdown

<p align="center">
<img src="docs/logo.svg" width="88" height="88" alt="sitrep-panel logo">
</p>
<h1 align="center">sitrep-panel</h1>
<p align="center"><b>Watch your AI agent work, live, in a browser tab — instead of scrolling a transcript.</b></p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a>
<a href="https://github.com/dbl8005/sitrep-panel"><img src="https://img.shields.io/badge/Claude%20Code-Skill-2f6fed" alt="Claude Code Skill"></a>
<a href="https://github.com/dbl8005/sitrep-panel/actions"><img src="https://github.com/dbl8005/sitrep-panel/actions/workflows/validate.yml/badge.svg" alt="CI"></a>
<a href="https://skills.sh/dbl8005/sitrep-panel"><img src="https://skills.sh/b/dbl8005/sitrep-panel" alt="skills.sh installs"></a>
</p>
## The problem
Long agent sessions are hard to watch. The transcript scrolls past faster
than you can read it, and there's no single place that answers "what is it
doing right now, and how did it get here?" without stopping the agent to ask.
**sitrep-panel solves that with one command.** The agent keeps a live local
report of its own work — status, reasoning, screenshots, a running log — and
you watch it update in a browser tab in real time, with zero setup.
<p align="center">
<img src="docs/screenshots/demo.gif" width="640" alt="sitrep-panel updating live in a browser tab: the board, current-work narrative, a screenshot, and the log all filling in as a fictional task progresses, then a dark-mode toggle">
</p>
## Why it's different
It is **not** a hosted artifact, a cloud dashboard, or a chat log replay. It
never leaves your machine, needs no publish step, no account, and no network
access — one static HTML page, served by a script from Python's standard
library. Close the laptop lid and it's gone; open it again and it's still
there.
## What it shows
- **Status board** — four columns: to do, in progress, done, blocked. Synced
from a connected issue tracker (Jira, GitHub Issues, Linear — whatever the
agent already has access to) when one's available, otherwise a plain
checklist the agent maintains by hand. Never fabricated.
- **What's happening now** — a standing paragraph of *why*, not a status
word. Replaced each update, always reflecting the present.
- **Screenshots** — dropped in as they're taken, inline in the log or in
their own gallery.
- **Log** — one entry per real step, newest first: what happened, what was
decided, what was verified.
Light by default, with a real dark-mode toggle — no silent OS-based
switching.
## How it live-reloads
No WebSocket, no build step, no bundler. The page polls a small `meta.json`
file every 2 seconds and reloads the instant its timestamp changes — the
agent just touches that one file after every content update. Everything
else is plain static HTML, CSS, and about 20 lines of vanilla JS.
## Install
```bash
claude plugin marketplace add dbl8005/sitrep-panel
claude plugin install sitrep-panel@sitrep-panel
```
Or clone and point Claude Code at it locally:
```bash
git clone https://github.com/dbl8005/sitrep-panel.git
claude plugin marketplace add ./sitrep-panel
claude plugin install sitrep-panel@sitrep-panel
```
## Usage
```
/sitrep-panel
```
Starts (or resumes) a report for the current project and prints its
`http://localhost:<port>/` URL.
```
/sitrep-panel open # just print the URL, don't touch content
/sitrep-panel archive # move the current report aside, start a fresh one
/sitrep-panel stop # stop the local server (content stays on disk)
```
Everything lives at `.sitrep-panel/` in the project you invoke it from —
gitignored automatically, since it's scratch, not history you commit.
Reports are single-project and single-active-report by design: the URL
stays stable for a whole session instead of minting a new page per task.
## Design principles
- **Local-first, always.** No account, no upload, no third-party server in
the loop. The report never exists anywhere but your machine.
- **Never fabricate.** The status board reflects real tracker data or a
manually-kept checklist — never invented tickets or guessed status.
- **Update, don't rewrite.** The protocol is additive (prepend log entries,
replace the current-work block, touch one timestamp file) so a crashed or
interrupted agent leaves a readable partial report, not a blank page.
- **Zero dependencies.** The server is stdlib Python. The page is HTML, CSS,
and vanilla JS. Nothing to install, nothing to break.
## Contributing
Issues and PRs welcome. `python3 scripts/validate-package.py` checks the
package files; CI runs it plus a real server-start smoke test on every PR.
## Versions
- **1.1.0** — redesign: light mode by default with a real theme toggle, a
logo and wordmark, the status board regrouped into kanban-style columns
instead of a loose card grid, and a sticky section nav for wayfinding
without hiding anything.
- **1.0.0** — initial release: status board, live "what's happening now"
narrative, screenshot gallery, newest-first log, live-reload, optional
tracker-synced board.
## License
MIT