chore: version packages#1108
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
30 times, most recently
from
July 25, 2026 11:19
9d0465d to
15f8891
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
28 times, most recently
from
July 25, 2026 22:32
67f52bf to
8945c70
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 25, 2026 23:21
8945c70 to
665b9b4
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@gemstack/the-framework@1.4.0
Minor Changes
79d1689: Re-skin the dashboard onto the landing page's Everforest identity (IBM Plex Sans, warm dark palette, squarer corners) and rename the two queues to "Human Queue" and "AI Queue" so the dashboard and the-framework.ai read as one product.
23385a1: Dashboard: remove the top navbar and move its chrome into the sidebar (brand, a prominent Overview, an expandable Projects nav, and the Local/theme/notifications/Settings controls in a footer). Add a
project / sessionbreadcrumb and an always-available session-details disclosure (agent + spend) to the session toolbar, and fold the toolbar's actions (GitHub, folder, editor, Serve, Stop, Remove worktree, Delete, Open session) into a single overflow menu. Polish the Recents rail: themed scrollbar, a sticky label with a scroll-driven fade, lighter weights, and a hover marquee for long titles. Stop the toolbar flickering on session navigation (keep-previous on the git status / GitHub reads). Add an opt-inpnpm dev:daemonso the dev server can start runs by proxying to the daemon.46fc0c6: Rework the dashboard Overview around what matters at a glance (Improve dashboard #1139).
Usage moves to the top as the first thing you see. The two cross-project queues now sit side by side: a Human Queue ("Agents awaiting your approval, review, or input") and an AI Queue ("Tasks AI will work on next"), the latter showing every queued item in full as bullet points rather than collapsing to "+N more". A new Agents view lists the sessions working now and the ones just finished in two columns — Current and Recent — each row clickable straight into its session and dated in plain language ("22s ago", "2w ago") with the exact moment on hover. Hot tickets narrows to the three lanes worth surfacing — In progress, AI Queue (tickets an open
TODO_AGENTS.mdentry links to), and High priority — in a two-column layout.The redundant cards are gone: the KPI tiles, run outcomes, the projects table, and the "Overview" title with its tagline. Session activity is removed for now, to return later.
ef0d941: Add a "Hot tickets" overview to the dashboard.
The Overview now has a cross-project glance at the tickets that matter right now, in three lanes: In progress (tickets the agent has planned or spiked), Up next (high priority, not started yet), and Queued (the rest of the open backlog). Each row names its project and jumps into it when selected.
It pools every project's
tickets/, so it is a projection of the same files the agent plans from, polled so it stays live. Empty lanes collapse to a single header line, so an import-heavy repo where everything sits queued still reads as designed.2c1e6d4: Start a run with no project, in a neutral scratch directory.
A "topic" run starts project-less: it spawns in a neutral scratch dir under the config home with no repo or worktree, so the agent has no code to touch. This is the "ask a question, plan, or draft a ticket without a repo" path. It still produces the normal run lifecycle (events.jsonl, run.json, settle) inside the scratch dir.
A new
sendStartTopicRPC starts one beside the project-scopedsendStart, keeping the home-default behavior untouched. The scratch dir is retained on failure or stop and removed on a clean finish, mirroring the worktree retention rule. The UI for it is tracked separately.4dc9c40: fix(the-framework): carry the ticket and backlog format specs in the run's system channel (
TODO_AGENTS.mddoesn't respecttodo_format.md#1163): both were pointed at asnode_modules/@gemstack/the-framework/prompts/*.md, a path that only resolves when the framework is a root dependency of the repo it works on, so the agent was told to follow a format it could not open. The spec still ships with the package and is never written into the user's repo (feat(framework): "Suggest new tickets" preset (#462) #674), it is just handed over rather than left to be found. The two unusedTICKETING_FORMAT_FILE/TODO_FORMAT_FILEpath constants go with it, along with thefilesentries that published the specs for them.f674fbc: Add a repos-directory preference with an opt-in auto-grant (Topics: 'directory of repos' setting with opt-in auto-grant #1123): a root directory the project-registration flow will default into, plus an off-by-default toggle that auto-adds every git repo directly inside it on daemon boot.
95f54a5: Show the routine work on the Overview: the jobs the idle sweep fires (drain the queue, harvest quick-wins, triage, spike & plan, the maintenance sweep), each with a "Run now" button that starts it against a project immediately, plus the single auto-run checkbox that says when the next sweep is due. The list is the daemon's own job table rather than a copy, so the two cannot drift.
cc8af7c: "Run on: Claude web" is a real run target now, not a placeholder. Picking it hands the session to Claude Code on the web on your own account: the work runs on Anthropic's infrastructure at no local CPU cost, does its own git worktree and opens its own pull request, and the run view links straight to the session plus the
claude --teleportcommand that pulls it back to this machine. Also available asframework run --run-on web.This is a hand-off rather than a streamed run, and deliberately so: a cloud session exposes no read-back API of any kind, so following the work happens on claude.ai or through the branch it pushes. Nothing here drives the claude.ai UI — it goes through the CLI's own
--cloudflag, with the same subscription auth every other target uses.f423571: feat(the-framework): record the ticket a run is implementing (Record the ticket a run starts from, for a true 'implementing' status #1117): a draining run is started with the ticket its queue entry links back to (
Queuebutton doesn't seem to work? #1164), which it emits once and folds ontoRunMeta.ticket— so the Overview's hot-tickets card can mark a ticket asimplementingbecause a run says so, instead of inferring it from the plan or spike the work left behind.b2e95e7: A session's agent id is now visible, and clicking it copies the command that reopens that session in a terminal. The id was recorded all along and shown nowhere, so a conversation you wanted to continue outside the dashboard could not be named. The id on its own is not enough either: the CLI matches a session by the directory it ran in, and that directory is usually gone by then, because a run that finishes cleanly has its worktree removed. The copied command recreates the path first, which is what makes the resume actually find the session.
The same menu's folder item is now named for what it opens. Once a session's worktree is gone the item resolves to the project root, and calling that "the session's folder" was a lie the user had no way to see.
2581fce: One shared sidebar on every route, rebuilt on the shadcn Base UI sidebar.
The sessions rail used to vanish the moment no project was selected, so the home/Overview had no left column while a session page did. It is now the shadcn Base UI sidebar, rendered on every route, so the two read as the same app.
On the Overview it pools recent sessions across every project (a new cross-project read), each row naming its project and jumping into it when selected; a selected project still shows its own runs.
"New" is now project-aware: with no project it opens the add-project dialog (there is nowhere to run a session yet), with one project it starts there, and with several it opens a picker so you choose where. In a project already, it starts another session there.
7509a4c: feat(the-framework): let a project-less topic run bind to a project via an await gate, with the registered projects injected into its context as the list to pick from (Topics: bind-project and create-project await-gates #1121)
8ddbade: feat(the-framework): re-home a bound topic run into its project (Topics: re-home a run's cwd/worktree on bind #1122): the daemon watches for the recorded bind, allocates a worktree in the chosen project, resumes the same agent session there via continue-run, and tears down the scratch, so a bound topic run becomes an ordinary run living in the project's worktree
Patch Changes
2e40414: Auto PM now sweeps as soon as "Spend what's left on the roadmap" is switched on, instead of up to ten minutes later, and the usage panel says what the last sweep decided. Every decision was already logged, but the log is the daemon's stdout and the toggle is in a browser, so a sweep standing down for a reason looked exactly like one quietly working.
c64a074: The dashboard no longer goes to a blank white screen when a view hits a render error. It had no error boundary, so any uncaught error while drawing a view — a stray line off the live feed, a panel reading a field the daemon had not written yet — unmounted the whole React tree to the root and left nothing on screen and nothing to click. It read as random because it was data-driven: a particular event, a particular poll, a particular moment. A caught render error now shows a recoverable card on the themed shell — Try again, or Reload — and logs the stack to the console so the next occurrence leaves a trace, rather than taking the session with it.
490b1be: Onboarding steps now say which ones are optional, and their marks read as checkboxes rather than radio buttons: an outlined circle suggested one choice out of a set, when the rows are independent things to tick. The Overview also drops its subtitle, which restated what the page already showed.
9b2107c: Commit what a session left in its checkout when its work is handed off, so a settled agent that never committed no longer dead-ends at "No commits between main and the-framework/...". The finishing step also stops calling an empty branch a dead end while the work is sitting uncommitted next to it.
5e6b674: Clicking a hot ticket that no run has picked up now opens its project's launcher with the ticket already in the composer, instead of an empty one. Also fixes an opening draft being dropped whenever the editor finished initialising after the composer mounted, which affected a draft carried from another device too.
4aea51c: Make "Import tickets from GitHub" ask for the same thing wherever it is pressed. The preset's prompt was the button's own label repeated back, naming neither the destination nor the format, while the tickets panel spelled out the real instruction in a constant of its own. The instruction now lives on the preset and the panel reads it from there.
028ed63: "Import tickets from GitHub" now lands on the session it just started. From the onboarding checklist it started the run and then navigated by project alone, which is the project's launcher, so the import ran out of sight and the dashboard looked like it had lost track of its own work. A run started from a surface with nothing selected now carries the project it runs in along with its id, and a refused start leaves you where you are with the reason shown.
fe1cea6: The light theme sits on a white canvas instead of Everforest's cream paper. The greens stay, darkened to stay readable on white.
8454be2: Tag the ticket a drain run implements when the drain is started by hand, not only when the daemon's sweep starts it. A drain fired from the dashboard worked the queue's next entry but recorded nothing about it, so the Overview's "in progress" lane stayed empty while the work was being done.
f09a5d8: Fix the navbar overflowing the page at narrow widths.
Below a narrow viewport the top nav pushed the whole document wider than the screen, so the page scrolled sideways and slid the app off-screen. The cause was the nav's fixed clusters: the brand mark plus wordmark on one side and the "New session" button plus the icon buttons on the other were both
shrink-0, so together with the project picker they could not fit a phone-width viewport.Below
smthe nav now folds down to what fits: the brand keeps its mark (still the link home) but drops the "The Framework" wordmark, the "New session" button collapses to its+icon (still labelled for a screen reader), and the project picker caps narrower and truncates a long name. Atsmand up everything is exactly as before. Verified by driving a real browser at 375px and 420px (no page scroll) and at 1200px (labels back); jsdom cannot see this class of layout bug.754b194: Name what the sidebar's "New" makes: it reads "New session". The session list below it is titled "Recent sessions" and keeps its heading when empty, so "No sessions yet." reads as the state of that list.
f1143b8: Make the dashboard Overview's Human Queue and AI Queue links meaningful, or drop them.
The Human Queue's "Awaiting" and "Unpushed" rows now open the session they name — a run paused on a question, or one holding unpushed work — instead of landing on the project launcher, which is what their "Open the session" label always promised. The AI Queue's per-project header is no longer a link: it is a read-only "what's next" list, and a project name that jumped to the launcher was an odd redirect, so the header is plain text now; the work itself is opened from Hot tickets and Agents.
ce0f8da: Polish the dashboard Overview's typography and spacing.
Every card now has a consistent 16px title with its one-line description dropped to a smaller muted tier, so each reads as a clear title → description → content hierarchy instead of a title and description at the same size. Row text is unified at one size — the Human Queue's item titles had been rendering larger than every other card's — the AI Queue's queued items are more legible, its per-project counts read as filled pills, and the Agents view's Current/Recent columns get a single ruled header row rather than two stacked muted lines. No behavioural change.
71ab06b: Stop a stale dashboard tab from reverting your theme, and every other preference with it. A settings write now sends only the keys it changed, the daemon merges them over what is stored and hands back the result, and a tab re-reads both preference tiers when it comes back to the foreground.
3bac512: Three follow-ups from using the handoff for real. A session whose work is already in the base no longer offers an Open PR that GitHub can only refuse: the commit list was read with git's symmetric difference, so commits belonging to the base counted as the session's own. The launcher gear offers one Open PR row instead of a pair whose Push branch half was greyed out and explained away whenever Open PR was on, which is the default. And the Overview's queue card shows a queued ticket's title rather than the raw markdown link it is written as, with the agent's note moved to the tooltip.
a3a5029: Queueing a ticket now places it in a
## Priority Nsection ofTODO_AGENTS.mdper the backlog format, and the entry links back to the ticket it came from. It used to be appended to the end of the file, which meant a ticket you deliberately queued was worked last, behind everything already there, and the entry carried nothing but a title so the ticket was lost the moment it was queued.37caf89: A quota readout whose week can't be placed is now an error in the usage panel — "Couldn't parse quota", quoting the reset text that failed — instead of the week quietly degrading to a plain figure. The silent fallback hid a real defect: the boundary (and with it unattended work) was gone, and nothing on screen said so.
d3ef9f1: The usage bar no longer disappears for the rest of the daemon's life after one usage readout the framework could not parse. A single unrecognized answer used to be treated as a statement about the account, which wiped the retained reading and stopped the poller permanently, so the panel fell back to a sentence and looked as though the bar had been reverted. An unparseable answer describes that one read, not the install, so it is now transient like a failed fetch: the reading is kept, the poller keeps asking, and the panel dates the numbers it is still showing rather than presenting them as current.
b84d51d: The usage bar is back for accounts on newer Claude Code, which prints reset times as
Jul 28, 9pmwhere older versions printJul 28 at 9pm. The comma form didn't parse, so the quota week couldn't be placed and the dashboard quietly fell back to plain figures — and unattended work stood down for want of a boundary.7085ca1: The right rail only shows what it has: a tab whose panel is empty (Docs, Tickets, Log) is no longer offered, and a rail with nothing in it is not rendered at all.
e1765be: Dashboard: the session's status (stopped, ready for merge, failed) is a small label beside the ⋮ menu in the session toolbar instead of a banner over the feed, and the one session that cannot be continued says so in the composer's placeholder rather than in a note above it.
d2ddb4e: Session history is now committed, so it survives the repo being cleaned. A project's finished runs used to be archived to a gitignored
.the-framework/runs/, which meantgit clean -fdxsilently deleted every session a project had ever run. They are now archived to.the-framework/<your git email>/sessions/and committed alongside the conversations. Sessions archived before this are still listed, and every user's sessions show in the project's history.04dee66: A session that has finished now offers the step that finishes it. The dashboard treated "the process is up" as "the agent is working", but a settled session stays alive to take your next message, so its arming checkboxes never gave way to the action they describe and a finished session had nothing to click. It now switches when the agent settles, offers one button named Open PR rather than a Push branch / Open PR pair nobody could tell apart, and says why in the cases where there is nothing to open — no commits, no branch, no remote.
11bd367: Menu rows that open a submenu now line up with the rest of the menu. The row justified its contents to spread the chevron to the far end, which also spread everything before it, so a trigger whose label was plain text had that label pushed toward the middle while every ordinary row sat left. The chevron now moves itself to the end instead, which leaves the label where it belongs and makes the two ways of writing a trigger behave the same. Visible on "Open in editor" and, in a repo with several servable apps, "Serve".
0e37ffd: Add a "Suggest new features" preset.
The Agentic-PM presets covered proposing work items you describe (Suggest new tickets), researching the outside market (Market research), and choosing among tickets that already exist (Suggest tickets to work on) — but not proposing net-new features from the product itself. This fills that corner: it studies what the product does today and proposes features it should have next, writing each as a ticket under
tickets/for the normal triage pipeline to pick up.Autonomous rather than gated, like the other suggest-class presets: a proposal is a reviewable ticket, so the human triages later instead of approving mid-run, which also keeps it usable on a schedule. Paramless — it scopes itself to the whole product, so there is no blank to fill.
f93b44d: Open the session a row on the Overview is describing. "Working now" rows, and hot tickets a run is implementing, carried the run they named and then navigated by project alone, landing on that project's launcher instead of the session.