Skip to content

chore: version packages#1108

Merged
suleimansh merged 1 commit into
mainfrom
changeset-release/main
Jul 26, 2026
Merged

chore: version packages#1108
suleimansh merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

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

  • 10b50ef: Rework the Overview's Agents card around the sessions working right now.

    The Recent column is gone — finished sessions already live in the sidebar's session list, so the card kept only the live half — and with it the per-column "Current" eyebrow: "Agents currently working" now reads as a one-liner right next to the card's title. The card also moves up from its slot below Routine work to sit beside the Human Queue, on top of the AI Queue, so what needs you, who is on it, and what the AI takes up next share one row. DashboardData.recentAgents, which existed only to feed the removed column, is dropped from the dashboard payload.

  • 422351c: A parked Claude web question can now be answered from the dashboard. The run view renders the bridge's question as real choices: pick one, confirm the send, and the browser extension types that label into the session's composer and submits it. The pick is deliberately narrow and reversible: the daemon only queues a label of the currently parked question (never free text), the send is a second explicit click, a queued pick can be withdrawn until the extension collects it over the new GET /_bridge/answer, and the extension reports what its delivery did back over POST /_bridge/answered, so the dashboard shows queued, sent, or failed with the reason. The transcript mirror also now keeps the newest text when a page exceeds the mirror cap, instead of sending the rendered system prompt and cutting off the session's actual activity.

  • 422351c: The browser bridge now publishes which cloud sessions are worth watching, at GET /_bridge/sessions, so the extension can open a pinned background tab for each instead of only working while somebody happens to be looking at claude.ai. Recency is the whole filter and has to be: a web run ends at its hand-off, so every one of them reads done whether its session is parked on a question or finished an hour ago, and there is no read-back that would say which. Capped at three, twelve hours back, newest first.

  • 422351c: The browser bridge now mirrors what a Claude web session is saying, not just the question it is parked on. The extension reads the transcript from the session page and posts what changed to POST /_bridge/events, keyed by each message's position so the same message arriving on every DOM change replaces rather than repeats. The run view renders it under the cloud notice. It is a mirror of another product's page rather than a run log of our own: no tool calls, no timings, and nothing arrives while the tab is closed.

  • 422351c: A Claude web run can now show the question its cloud session is parked on, instead of leaving it stranded on claude.ai. A browser extension running in the user's own session reports the question to a new opt-in /_bridge/question endpoint, and the run view renders it. The question is keyed by cloud session id, which a web run already carries, so it lands on the right run even though the run itself ended at the hand-off. Off unless the bridge preference is set, and the route authenticates with its own bearer token rather than the non-loopback guard, since it is the one route meant to be reached from another origin. The first slice was read only; answering from the dashboard ships alongside in this release.

  • 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 / session breadcrumb 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-in pnpm dev:daemon so 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.md entry 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 sendStartTopic RPC starts one beside the project-scoped sendStart, 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.md doesn't respect todo_format.md #1163): both were pointed at as node_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 unused TICKETING_FORMAT_FILE / TODO_FORMAT_FILE path constants go with it, along with the files entries that published the specs for them.

  • bdefcd9: Remove the [Quick wins] preset (PM: auto work on quick-wins #773). It harvested .plan.md companions and appended the quick ones to TODO_AGENTS.md, a step the triage pair ([Do quick-win work] / [Do consensual work], Preset: Do quick-win work #891/Preset: Do consensual work #892) already covers by reading tickets/*.md directly — so the auto-PM rotation now triages straight from tickets rather than harvesting an intermediate plan first, and the launcher no longer offers the button.

  • 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.

  • 91a23ff: Routine work: a Concurrent agents setting (default 2, up to 10) for how many agents the routine keeps going at once. A sweep now tops a project up in one tick, so one click of "Trigger routine now" against a standing queue fans out that many sessions at once, each pinned to its own queue entry.

  • ab64c85: Give every routine on the Overview its own checkbox, so the scheduled sweep can be narrowed to the routines you actually want it spending quota on. Unticking is what gets saved (autoPmOptOut), so every routine stays on by default and one added by a later version runs without anyone re-visiting the setting. An unticked draining routine stands the sweep down rather than falling through to the rotation, and an unticked maintenance sweep leaves its calendar untouched so it still comes due once it is ticked back on.

  • 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 --teleport command that pulls it back to this machine. Also available as framework 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 --cloud flag, 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 (Queue button doesn't seem to work? #1164), which it emits once and folds onto RunMeta.ticket — so the Overview's hot-tickets card can mark a ticket as implementing because 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.

  • 2617720: Tickets are now their own full-width page (Show tickets as whole page instead of sidebar #1144) instead of a tab squeezed into the 27rem right rail, reached from a "Tickets" row in the sidebar (below Overview) rather than needing a project selected first.

    The page is cross-project: every registered project's tickets/*.md backlog gets its own full-width section — the table spans the whole pane rather than sharing it with grid columns — each with its own Import/Update-from-GitHub bar. Each ticket is a one-liner — topics, spiked/planned, the effort its spike/plan recorded, status, then a human-readable age ("2d ago"), "Priority: n", and its GitHub: issue link — dated by its filename (<DATE>_<SLUG>.md) rather than the file's mtime, and sortable by date (the default) or priority, with "Sort by" ties falling back to newest-first. Open/Closed checkboxes filter the backlog (Open only, by default); a project with tickets hidden by the filter says so instead of offering an import for work that already exists.

    Clicking a row opens its own page at /{projectId}/tickets/{filename}, showing the ticket's entire markdown (not just the head a list row reads) and where the Queue button now lives. All of a ticket's meta — date, priority (spelled out as "Priority: n", not a bare number), its GitHub: link (as an issue-number link), status, topics, spiked/planned, and effort — sits below the description in that order.

  • 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

  • 1a41af1: Adds Trigger routine now beside the Routine work card's Auto-run box, so a sweep can be fired on demand instead of waiting out the interval. The loop could always do this — it is what switching the preference on already triggers — but nothing could ask for it directly, so the only way to fast-forward was to tick the box off and on again. The button works with auto-run off too: that preference is consent to spend quota unasked, and clicking is asking, so the daemon runs one sweep — every other stand-down reason (live runs, cooldowns, the quota boundary, unticked routines) still in force — and the schedule stays off.

  • e5014ac: Add "Update from GitHub" to the tickets view, for the second and every later import. It resumes from the lastImportedAt stamp in tickets/meta.json and reconciles rather than refilling: an existing ticket is edited in place, the .spike.md and .plan.md written against it are kept, and a closed issue's ticket goes. The importer writes the stamp too, so the first update has somewhere to resume from, and the view says when tickets/ last caught up.

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.

  • 9b55e52: Fix "Run on: Claude web" failing with --cloud requires a description on any account that has a model preference set. The description is --cloud's own value rather than a loose positional argument, so the --model flag was claiming the slot and the prompt never arrived. The prompt now sits directly after --cloud.

  • 28014f3: A "Run on: Claude web" run now hands off to exactly one cloud session. A run is not a single prompt — the loop prompts again for each pass — and the driver was starting a fresh cloud session every time, so one run opened six of them, all racing on the same repo. The first prompt hands off; every later pass reports that hand-off instead of spending another session.

  • 309a0d7: A run on Claude Code on the web now ends at the hand-off, instead of carrying on locally as if the agent had answered. It had not: a cloud session's replies stay in the cloud, so every phase after the first prompt was reading the driver's own "handed off to " note as the agent's reply. The production-grade checklist found no verdict in it and reported the app un-reviewable, and the backlog gate then asked "Start the next backlog item?" about work that was no longer on this machine, which is why the same question turned up on every cloud run before the session had even replied. The review passes, the backlog loop and the stay-open composer are dropped for this target, and the run view says the session asks its questions and opens its pull request over there.

  • 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.

  • 232f7c9: Fable can now be picked in the dashboard's model menu. The Claude list offered only Default, Opus, Sonnet and Haiku, so the strongest tier silently couldn't be routed to; fable is a documented --model alias of the Claude CLI and passes straight through like the others.

  • 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.

  • 78d8ba2: Fix the Overview's "Hot tickets" card misreading numeric priorities, which left it empty ("No tickets yet.") over a backlog full of urgent tickets.

    The high-priority lane matched bare numbers 0/1 — the P0/P1 convention — while the ticket format's own scale runs 10-0 with 10 acting immediately, so a Priority: 8 ticket never qualified. A bare number now reads on the format's scale, high from 7 up; p0/p1 and the word labels (high, urgent, critical) still count. Closed tickets no longer surface as hot, and the card's empty state now says "Nothing in progress, queued, or high priority." instead of claiming no tickets exist.

  • 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.

  • 1965b98: Only the maintenance sweep describes itself now, in the Overview's Routine work card and the daemon's log line alike, since "Maintenance" alone does not say what it does. The other routines' labels already read as what they do, so their rows lose the line that repeated the label in different words and their log lines say the label itself (AutoPmJob.describe is optional, carried only by the maintenance job).

  • 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 sm the 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. At sm and 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 N section of TODO_AGENTS.md per 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.

  • 847c041: The quota boundary (Refactor quote usage #879) now rises continuously with the clock — a plain pro-rated share of the elapsed week — instead of jumping to the next seventh once every 24 hours. A stepped boundary unlocked a whole day's worth of allowance the instant a new day began (including the entire week's worth on the last day), which read as generous on paper but let a burst of spending land the moment the clock ticked over rather than pacing with it. The usage panel's boundary line moves the same way it always did — it just draws whatever the framework reports. The per-run consumption guard (Consumption limits #519) measures against the same line, so it now carries the same half-day cushion unattended work gets by default: the continuous boundary starts the week at zero, and without the cushion the first whole percent the agent reports would have paused the user's own first run of the week — where the stepped line had always kept at least the current day's seventh in hand. The cushion is fixed, deliberately not the auto-spend slider: holding unattended work back must never tighten the gate on work the user asked for.

  • 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, 9pm where older versions print Jul 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.

  • c73ab9c: Run now on the Overview now opens the session it just started, instead of the project's launcher. It reported the project rather than the run, and selecting a project with no run renders the composer — so the button that starts a routine landed you on an empty "Describe what to build…" box with its own session nowhere on screen.

  • d8b69b9: Fix a session showing (and acting on) the wrong PR (Bug: quick-win triage not working #1251, Bug: update tickets not working #1255). A run's PR is now resolved from the run's own branch names and start time: an open PR on the branch counts, a closed one only when it was created after the run started. Previously the session header could show a predecessor's merged PR (a triage prompt pins its branch name, and gh pr view answers with the newest PR in any state), which also made auto-handoff skip opening the real PR; and once a finished run's worktree was gone, the PR link degraded to whatever branch the project root checkout was on, giving every finished run the same PR. Hands-off web runs are now found through their unique run-id branch, and a branch that no longer exists locally still reports its PR.

  • 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 meant git clean -fdx silently 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.

  • 847c041: Unattended work's default stop line (<Quota> component #960) is now a half-day cushion ahead of the quota boundary, rather than sitting exactly on it. Landing precisely on the boundary looked generous on paper, but it meant any account tracking its own week's pace almost exactly — completely normal — got stopped by ordinary jitter around the line rather than by actually overspending. A fresh install, or any account that has never touched the slider, now gets that room by default; dragging the slider still overrides it same as before.

  • 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.

@gemstack/framework-dashboard@0.4.1

Patch Changes

  • 847c041: Reworked the usage bar per <Quota> component #960: a single track split left-to-right into what's been used (solid) and the budget left for autonomous AI (dimmed, no rounded seam between them), with a round knob on the dimmed segment's edge to drag the limit, and the week's own calendar days labelled above it (TU, WE, ...) with a white separator through the bar at each day's start — placed at local midnight, so a label lands wherever most of that day actually falls rather than at a fixed seventh. The main figure now reads "Over-consuming: 1d" / "Under-consuming: 2h" instead of a percentage of the week — a plain duration (bold, coloured to match the bar's own tone) naming how far ahead of or behind today's pace consumption actually is, with a tooltip explaining what it means; the caption also carries a "show all limits" tooltip — now a real table, so columns line up — with the session and any per-model windows. "Daily soft limit" is renamed "Quota boundary", with a tooltip spelling out what matching it means, split into its own paragraphs and ending on a fun fact about the bar above. The legend and the enabled/disabled status share one row; the enabled/disabled line now has its own tooltip naming what it actually means for the AI queue, and the warning beside it — "⚠️ Eager consumption", also with a tooltip — only appears once the knob clears a full day above the boundary, not merely past it, since resting a few points ahead is normal rather than worth flagging. The knob's own default position — for anyone who has never dragged it — is now a half-day ahead of the boundary rather than sitting exactly on it, matching the framework's real default. The unrelated "spend what's left on the roadmap" toggle is removed from this panel.
  • Updated dependencies [10b50ef]
  • Updated dependencies [2e40414]
  • Updated dependencies [422351c]
  • Updated dependencies [422351c]
  • Updated dependencies [422351c]
  • Updated dependencies [422351c]
  • Updated dependencies [9b55e52]
  • Updated dependencies [28014f3]
  • Updated dependencies [309a0d7]
  • Updated dependencies [c64a074]
  • Updated dependencies [79d1689]
  • Updated dependencies [232f7c9]
  • Updated dependencies [23385a1]
  • Updated dependencies [490b1be]
  • Updated dependencies [46fc0c6]
  • Updated dependencies [9b2107c]
  • Updated dependencies [5e6b674]
  • Updated dependencies [ef0d941]
  • Updated dependencies [78d8ba2]
  • Updated dependencies [4aea51c]
  • Updated dependencies [028ed63]
  • Updated dependencies [fe1cea6]
  • Updated dependencies [1965b98]
  • Updated dependencies [8454be2]
  • Updated dependencies [f09a5d8]
  • Updated dependencies [754b194]
  • Updated dependencies [f1143b8]
  • Updated dependencies [ce0f8da]
  • Updated dependencies [71ab06b]
  • Updated dependencies [2c1e6d4]
  • Updated dependencies [3bac512]
  • Updated dependencies [a3a5029]
  • Updated dependencies [847c041]
  • Updated dependencies [37caf89]
  • Updated dependencies [d3ef9f1]
  • Updated dependencies [b84d51d]
  • Updated dependencies [7085ca1]
  • Updated dependencies [4dc9c40]
  • Updated dependencies [bdefcd9]
  • Updated dependencies [f674fbc]
  • Updated dependencies [91a23ff]
  • Updated dependencies [ab64c85]
  • Updated dependencies [95f54a5]
  • Updated dependencies [c73ab9c]
  • Updated dependencies [cc8af7c]
  • Updated dependencies [d8b69b9]
  • Updated dependencies [f423571]
  • Updated dependencies [b2e95e7]
  • Updated dependencies [e1765be]
  • Updated dependencies [d2ddb4e]
  • Updated dependencies [04dee66]
  • Updated dependencies [2581fce]
  • Updated dependencies [847c041]
  • Updated dependencies [11bd367]
  • Updated dependencies [0e37ffd]
  • Updated dependencies [2617720]
  • Updated dependencies [7509a4c]
  • Updated dependencies [8ddbade]
  • Updated dependencies [1a41af1]
  • Updated dependencies [e5014ac]
  • Updated dependencies [f93b44d]
    • @gemstack/the-framework@1.4.0

@github-actions
github-actions Bot force-pushed the changeset-release/main branch 30 times, most recently from 9d0465d to 15f8891 Compare July 25, 2026 11:19
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 29 times, most recently from 7d9aeeb to 5a8bc49 Compare July 26, 2026 01:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant