mirror of
https://github.com/dbl8005/sitrep-panel.git
synced 2026-08-24 07:29:11 +02:00
126 lines
5.1 KiB
Markdown
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
|