Repository navigation
Dashboard: loads under a busy tmux; one-pass links; lesson buttons' loading state; hub badges match the Inbox - #107
Merged
Merged
Conversation
…ass links; lesson buttons show they're working; hub badges count the Inbox as the dashboard does - A dashboard refresh asked tmux two calls per window (list-windows for every pane, then display-message); with a busy tmux server each took seconds, so stacksbot's dashboard-data took up to 143s and the page never loaded. resolvePane now reads one list-panes table per session, kept 5s. - The dashboard runs one dashboard-data at a time, shared by every page waiting, killed after 2 minutes; a failed or timed-out run serves the last good data, marked stale. Before, every refresh started another run, and they piled up (one ran for an hour). - linkify made one replacement after another over the same HTML, so an id holding a planner's name (m-…-plan-x) had a link written inside its own href. It is one pass now. - Keep it / Retire it show a spinner, disable both, and the card goes once saved. - hello counts the Inbox as the dashboard does (open questions not let go, plus lessons waiting to be kept), every 10s; the hub's badge takes the nav count's look. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 5, 2026
This was referenced Nov 5, 2026
Member
Author
hhff
added a commit
that referenced
this pull request
Nov 6, 2026
Conflicts resolved keeping main's rules: ownerAnswer (matched, #113), question_hash (#116), owner_rules (#115), per-entry link binding and links in home only (#108), one-pass linkify (#107). Review fixes: - merge: each changed owner settings class needs its own settling; an owner_only class only by the owner's own answer in it (never chat) or their standing rule; --approved takes several answers. A ladder-class answer (monitor-change) never covers an owner_only key or a kit file. - merge: a decision is carried out once; settings acts name what settled them (answer, rule, decision or rung), and an act a merge logged is never a pending landing for a later merge. - monitors: name set last from the key, a name field refused; credentials in a monitor url refused (validate, check-pr/merge); userinfo and query never shown (status, alerts, observations, findings, dashboard, settings); 2xx only is up; state seeded from the log only when state.json is missing; a dead poll's lock is stale at once; no SNI for IP hosts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Five problems the owner hit in the hub tonight.
What
resolvePane: reads onetmux list-panes -stable per session, kept for 5 s, instead oflist-windowsplusdisplay-messagefor every pane./api/data:dashboard-datarun at a time, shared by every page waiting on it;x-devteam-stale: true.linkify: one pass over the escaped text, so a link's ownhrefand text are never scanned again.busyspinner and disable both buttons. The card goes once the answer is saved; on failure the buttons come back.hello, dashboard/hub.html: the hub's badge counts the Inbox exactly as the dashboard's nav does (open questions not let go, plus lessons waiting to be kept). It refreshes every 10 s and takes the nav count's style: 11 px, red, tabular figures, no pill.Why
dashboard-datatook 143 s of wall time on 0.6 s of CPU, waiting on tmux. With six busy agent panes, each tmux call took 1.4 to 8 s, and a refresh made two calls per window. Every refresh then started another run on top, so they piled up, and one Stacks run had been going for an hour.plan-world-model">m-20261105-…: linkify had written a planner link inside the message link'shref.Checked
dashboard-datalogged every tmux call over 1 s: list-windows calls of up to 8 s, capture-pane 5 s, display-message 3.5–4.3 s. Total 41 s on a quiet run, 143 s under load.helloon stacksbot gives the dashboard's count.Migration
None. Restart the dashboard after the sync.
🤖 Generated with Claude Code