You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
S-10: the active-project banner is maintained by nothing — it announced DecadeDrop at the start of a hypeForge session #37
On 2026-09-29 the maintainer started a session, renamed it hypeForge (/rename hypeForge) and asked to work on hypeForge. The session-start banner said the opposite:
ACTIVE PROJECT — render this to the maintainer …
╭─ DecadeDrop · store 02 of DropKit · …
mindForge's own briefing in the same start-up was right (last session: yesterday — hypeForge: project started …). So one start-up screen carried two different answers to "what are we working on?", and the assistant rendered the wrong one first before switching to hypeForge by hand.
Why
The banner does not come from mindForge's code. It comes from a personal hook, ~/.claude/hooks/active-project-status.sh (written 2026-09-23), which prints scripts/status.sh of whatever path is in a one-line pointer file:
The pointer was set by hand on 23 September and nothing ever updates it: not a session rename, not mindforge wrap, not a change of repo. It stays correct only while nobody switches projects. This is the same family as #28 (a rolling handoff maintained by nothing): a file that is only right if someone remembers to edit it.
The hook also sits outside any repo, so it has no tests, no history and no issue tracker of its own. That is why this issue lives here, next to the briefing it competes with.
What would fix it (to decide)
Derive, do not store. The banner follows the same source as the briefing: the last wrapped session's focus, or the most recently touched repo with a scripts/status.sh.
Follow the session name. When a session is renamed to a project's name, point the banner at that project.
Make wrap move the pointer.mindforge wrap "<focus>" … rewrites ~/.claude/active-project when the focus names a project with scripts/status.sh.
At least flag disagreement. If the pointer and the briefing's last session name different projects, the banner says so instead of speaking with confidence.
Option 1 or 3 removes the hand-edited step, which is what failed. Option 4 is the minimum: it makes the drift visible instead of silent.
How we'll know it's done
Starting a session after wrapping a hypeForge session shows hypeForge in the banner, without editing any file by hand.
A deliberate mismatch (pointer on one project, last wrap on another) is flagged at start-up, not rendered as fact.
The hook is either moved into this repo with a test, or replaced by a mindforge subcommand.
mindforge active replaces the personal hook. The pointer lives in the state folder (~/.claude/state/active-project); an existing ~/.claude/active-project is adopted and moved there on first run. --show, --clear and <path> (refused unless the folder has scripts/status.sh) manage it by hand when needed.
wrap moves the pointer (option 3). Every repo under the roots and every queue project with a scripts/status.sh is a candidate; the longest name found in the focus as a whole word, case-insensitive, wins. A focus naming no project leaves the pointer alone.
Disagreement is said (option 4). The banner compares the pointer with the project the last wrapped session's focus names; when they differ it prints ACTIVE PROJECT DISAGREES: the pointer says X, but the last wrapped session was about Y and asks the assistant to confirm before treating either as fact. The stale status still prints, after the warning.
How we know it's done, from the issue: a session after a wrap naming a project shows that project without any hand edit — tested; a deliberate mismatch is flagged at start-up — tested; the hook is a mindforge subcommand with 19 checks. The maintainer's settings.json now calls mindforge active; the old script is a shim.
Activity
docs(todo): S-10 (#37) — the active-project banner is maintained by n…
fix: the 0.1.8 batch — tone on Windows, one spelling per repo, python…
jetomev commentedon Oct 13, 2026
Fixed in v0.1.8 (
6b7c925, https://github.com/jetomev/mindforge/releases/tag/v0.1.8) — options 3 and 4 from the issue, plus the hook moved into the repo.mindforge activereplaces the personal hook. The pointer lives in the state folder (~/.claude/state/active-project); an existing~/.claude/active-projectis adopted and moved there on first run.--show,--clearand<path>(refused unless the folder hasscripts/status.sh) manage it by hand when needed.wrapmoves the pointer (option 3). Every repo under the roots and every queue project with ascripts/status.shis a candidate; the longest name found in the focus as a whole word, case-insensitive, wins. A focus naming no project leaves the pointer alone.Disagreement is said (option 4). The banner compares the pointer with the project the last wrapped session's focus names; when they differ it prints
ACTIVE PROJECT DISAGREES: the pointer says X, but the last wrapped session was about Yand asks the assistant to confirm before treating either as fact. The stale status still prints, after the warning.How we know it's done, from the issue: a session after a wrap naming a project shows that project without any hand edit — tested; a deliberate mismatch is flagged at start-up — tested; the hook is a
mindforgesubcommand with 19 checks. The maintainer's settings.json now callsmindforge active; the old script is a shim.