Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c0c4835
feat(viz): add viz monitor web dashboard
zevorn Apr 18, 2026
7d63c34
fix(viz): do not exec python in foreground monitor web
zevorn Apr 18, 2026
21f54eb
fix(viz): parse --project flag in viz-restart.sh
zevorn Apr 18, 2026
4ebd4ee
chore(viz): remove unused Chart.js integration
zevorn Apr 18, 2026
1dab865
fix(viz): narrow import-statement regex to avoid false positives
zevorn Apr 18, 2026
a9fb7b4
fix(viz): guard plan-file reads against directory paths
zevorn Apr 18, 2026
1578393
fix(viz): decode SSE log chunks in streaming UTF-8 mode
zevorn Apr 18, 2026
93054a2
fix(viz): only watch active sessions' cache dirs
zevorn Apr 18, 2026
d630a79
fix(viz): constrain session_id to the generator alphabet
zevorn Apr 18, 2026
948ea7c
fix(viz): require --trust-proxy for non-loopback binds
zevorn Apr 18, 2026
93a9103
fix(viz): fail closed in safeMd when DOMPurify is missing
zevorn Apr 18, 2026
1234abd
fix(viz): cheap terminal-status probe in SSE hot loop
zevorn Apr 18, 2026
892e061
fix(viz): invalidate stale methodology report cache
zevorn Apr 18, 2026
8de3545
fix(viz): forward every flag in viz-restart.sh
zevorn Apr 18, 2026
cc87a86
fix(viz): reject cross-origin WebSocket handshakes
zevorn Apr 18, 2026
8c3349a
fix(viz): widen safe-session-id alphabet to accept legacy slugs
zevorn Apr 18, 2026
0ce03d9
fix(viz): honor X-Forwarded-Proto in CSRF port matching
zevorn Apr 19, 2026
45b3c14
fix(viz): preserve finalize phase for live round past build_finish_round
zevorn Apr 19, 2026
1875533
fix(viz): refcount cache watchers and release on SSE client disconnect
zevorn Apr 19, 2026
86f0de9
fix(viz): preserve snapshot after resync when file is transiently empty
zevorn Apr 19, 2026
7539e72
fix(viz): exclude analyzing/finalizing markers from SSE EOF probe
zevorn Apr 19, 2026
08ab1d4
fix(viz): classify git porcelain AM as added, not modified
zevorn Apr 19, 2026
c7ae04a
fix(viz): evict idle LogStream registry entries after EOF
zevorn Apr 19, 2026
bfec5af
fix(viz): use werkzeug safe_join to close static-path existence oracle
zevorn Apr 19, 2026
3543fcd
fix(viz): evict idle LogStream entries via a refcount-zero TTL sweep
zevorn Apr 19, 2026
0cde0f7
fix(viz): filter analytics session ids and escape comparison table HTML
zevorn Apr 19, 2026
53f5b98
fix(viz): count rounds by list length, not 0-based current_round
zevorn Apr 19, 2026
6a062e1
fix(viz): use completed-round count in sanitized issue body
zevorn Apr 19, 2026
a365514
fix(viz): export rounds as completed-round count, not 0-based index
zevorn Apr 19, 2026
6812053
fix(viz): report completed-round count in issue quantitative summary
zevorn Apr 19, 2026
d67da3b
Merge pull request #63 from zevorn/feat/viz-dashboard
SihaoLiu Apr 19, 2026
9003484
fix(viz): handle malformed Origin ports in CSRF check as 403, not 500
SihaoLiu Apr 19, 2026
90ed2a0
fix(viz): compute session duration across full on-disk round range
SihaoLiu Apr 19, 2026
66a8d06
fix(scripts): reject path-traversal session ids in cancel helper
SihaoLiu Apr 19, 2026
9d8aa7b
fix(viz): evict idle LogStream entries without requiring a later release
SihaoLiu Apr 19, 2026
13cd25e
Merge branch 'dev' into beta
SihaoLiu Apr 21, 2026
9345bf0
Merge branch 'dev' into beta
SihaoLiu Apr 30, 2026
373168f
fix(viz): require helper success before invalidating WS cancel cache
SihaoLiu May 1, 2026
f4e5721
chore(release): bump plugin version to 1.17.0
SihaoLiu May 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"name": "humanize",
"source": "./",
"description": "Humanize - An iterative development plugin that uses Codex to review Claude's work. Creates a feedback loop where Claude implements plans and Codex independently reviews progress, ensuring quality through continuous refinement.",
"version": "1.16.0"
"version": "1.17.0"
}
]
}
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "humanize",
"description": "Humanize - An iterative development plugin that uses Codex to review Claude's work. Creates a feedback loop where Claude implements plans and Codex independently reviews progress, ensuring quality through continuous refinement.",
"version": "1.16.0",
"version": "1.17.0",
"author": {
"name": "PolyArch"
},
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ temp
/.claude/settings.json
/.claude/scheduled_tasks.lock

# Local Codex CLI marker (empty file occasionally left behind in worktree)
/.codex

# Humanize state directories (runtime-generated, project-local)
.humanize/
.claude-flow/
Expand Down
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Humanize

**Current Version: 1.16.0**
**Current Version: 1.17.0**

> Derived from the [GAAC (GitHub-as-a-Context)](https://github.com/SihaoLiu/gaac) project.

Expand Down Expand Up @@ -74,8 +74,15 @@ Requires [codex CLI](https://github.com/openai/codex) for review. See the full [
humanize monitor skill # All skill invocations (codex + gemini)
humanize monitor codex # Codex invocations only
humanize monitor gemini # Gemini invocations only
humanize monitor web # Browser dashboard for the current project
```

The `humanize monitor web` subcommand launches a per-project browser dashboard
that layers on top of the same data sources the terminal monitors read. It runs
in the foreground by default; pass `--daemon` for the background tmux launcher
and `--host` / `--port` / `--auth-token` to configure remote access. See the
upgrade note: `/humanize:viz` has been removed in favour of `humanize monitor web`.

## Monitor Dashboard

<p align="center">
Expand Down
107 changes: 107 additions & 0 deletions docs/drafts/viz-monitor-web.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Draft: Optimize viz-dashboard — Merge into `humanize monitor` as a Web View

## Background

The `feat/viz-dashboard` branch currently introduces a `/humanize:viz` Claude
slash command and a local visualization dashboard for Humanize. While the
dashboard does show some data, the visualization of a *live, dynamically
running RLCR loop* is not clear enough today: status, progress per round, and
streamed log output are hard to follow as a loop progresses.

Separately, Humanize already ships a CLI-side monitoring capability that the
user runs in another terminal (NOT inside Claude Code):

```bash
source <path/to/humanize>/scripts/humanize.sh # or add to .bashrc / .zshrc

humanize monitor rlcr # RLCR loop
humanize monitor skill # All skill invocations (codex + gemini)
humanize monitor codex # Codex invocations only
humanize monitor gemini # Gemini invocations only
```

This monitor capability already captures live state (RLCR rounds, skill / Codex
/ Gemini invocations, log output). The web dashboard does not need to invent
its own capture pipeline — it should consume what `humanize monitor` already
provides.

## Goal

Optimize the viz-dashboard branch so that:

1. The dashboard becomes a **web view** layered on top of the existing
`humanize monitor` data sources, rather than an independent capture layer.
2. The dashboard can show **multiple live RLCR loops simultaneously**, with
per-loop status and streamed log output.
3. The entry point moves out of Claude (no more `/humanize:viz` slash command)
and into the `humanize monitor` CLI command, as a new web-online viewing
subcommand.
4. The new capability targets **online / remote viewing in a browser**, not a
local-only viewer that requires the user to be on the same machine running
Claude.
5. Useful features from the existing viz-dashboard branch — notably **cross-
conversation querying** (browsing past sessions / loops across different
Claude conversations) — are preserved.

## Non-goals

- Reimplementing the monitor capture pipeline (`humanize monitor rlcr/skill/
codex/gemini`). The dashboard consumes it; it does not replace it.
- Continuing to ship `/humanize:viz` as a Claude slash command.
- Adding chart panels or features explicitly removed in commit 1b575fe
("multi-project switcher + restart + remove chart panels").

## Required behaviors

1. **CLI entry point unification**
- Remove `commands/viz.md` and any `/humanize:viz` Claude command surface.
- Add a new `humanize monitor` subcommand (name to be agreed during
planning, e.g. `humanize monitor web` or `humanize monitor dashboard`)
that starts the web dashboard server.
- The other `humanize monitor rlcr|skill|codex|gemini` subcommands must
keep working unchanged (terminal-attached live tail).

2. **Live multi-loop view**
- The web dashboard MUST be able to display 2+ concurrently running RLCR
loops at the same time, each with:
- current status (running, paused, converged, stopped, …)
- current round / phase
- live streamed log output, updated in near real time

3. **Reuse existing monitor data**
- The dashboard MUST source its data from the same files / events that
`humanize monitor rlcr/skill/codex/gemini` already read. It MUST NOT add
a parallel capture mechanism (no new hooks just for the dashboard).

4. **Online / remote-viewable**
- The dashboard MUST be reachable from a browser over the network, not
only via `localhost` on the machine running Claude. Concrete binding /
auth design to be agreed during planning.

5. **Cross-conversation history**
- Cross-conversation querying (browsing past loops from different Claude
conversations / sessions) from the existing viz-dashboard branch MUST be
preserved.

## Branch hygiene

Before implementation begins, the branch `feat/viz-dashboard` MUST be rebased
onto the latest `upstream/dev` (humania-org/humanize). Several relevant changes
have landed on `upstream/dev` after the branch diverged, including:

- `Add ask-gemini skill and tool-filtered monitor subcommands` (introduces the
`humanize monitor skill|codex|gemini` subcommands the dashboard must reuse)
- `Remove PR loop feature entirely` (the viz-dashboard branch still references
PR-loop concepts via `commands/cancel-pr-loop.md`, `commands/start-pr-loop.md`,
`hooks/pr-loop-stop-hook.sh`)
- Multiple monitor / hook fixes

The rebase is therefore both a precondition for correctness (the dashboard
consumes the new monitor subcommands) and a cleanup step (PR-loop references
must be dropped).

## Out of scope (for this plan)

- Changes to RLCR semantics, hooks, or skill behavior.
- Authentication providers, identity systems, or multi-user account models —
basic remote-access protection is in scope, but full IAM is not.
Loading
Loading