Release prerelease packages (next) - #3079
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
Contributor
|
Tick the box to add this pull request to the merge queue (same as
|
github-actions
Bot
force-pushed
the
changeset-release/next
branch
4 times, most recently
from
August 31, 2026 16:12
95debda to
5dcbf53
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
16 times, most recently
from
September 9, 2026 15:53
e20d180 to
c238dfe
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
from
September 9, 2026 23:02
c238dfe to
053f7b6
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 next, this PR will be updated.
nextis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonnext.Releases
@ethlete/components@1.0.0-next.60
Major Changes
8b90cd4Bracket: a relayout now animates, with newthirdPlaceTopOffset,finalRoundHeaderGap,alignRoundHeadersandfocusInsetsettings and a--et-bracket-move-durationtoken;BracketLayout.drawEdgesnow returns aBracketDrawinginstead of an SVG string.59adb91Bracket pick card: per-side pick marks, a note line, areadonlyresults mode and slot wording fromprovideBracketLabels. Breaking: theunresolvableLabelandunavailableLabelinputs are gone.4033412Breaking: three features are opt-in. ImportMENU_SEARCH_IMPORTSforetMenuSearch, registerprovideSchedulerEditSurface()for the default appointment editor, andprovideStreamPip()for picture-in-picture on player slots.Minor Changes
40f6464Bracket: addmigrateBracketPicks()so a pick follows its participant when a pairing changes, plusrealParticipantOutranksPickandkeepPickWhileFeederSideIsOpenonresolveBracketSlot().c6cd941Bracket: add a framework-free prediction graph and resolver, prediction-aware slot states, an operable pick card, and focused round layout controls.eb7135aStandings: add<et-standings-pick>, a group table a viewer reorders by drag or arrow keys, plusstandingPickOutcomeandstandingPickStartOrderin@ethlete/bracket.Patch Changes
56d8504mirroredSingleEliminationBracketLayout's JSDoc now describes the fold as it works: it stops at thefirst round it cannot halve, and that round and every later one are drawn whole in the middle.
edb7e77Anet-buttonkeeps atabindexits consumer set on the element. The host binding no longer removes it, so an opted-out control such as the scrollable's navigation buttons stays out of the tab order.4033412Color input: an empty string reads as unselected andcolorContrastshares the picker's parser. A pasted OTP keeps its digits through separators, and choice-field support messages animate in severity order.4033412Range inputs no longer spin forever registering a side in development,generateBracketDataForEthleteaccepts a stage whose leading rounds are empty, and forms and the calendar report a misplaced headless piece with an actionable error.4033412Focus follows the keyboard again: calendar arrow keys move DOM focus, the cascader sheet keeps it while drilling, a suffix-button icon click no longer steals it, and tableEnterdrills before it clicks the row.4033412Menu search keeps the runtime metadata Angular needs for its directives, and the phone input imports only the six select declarations its template uses.4033412Component CSS now loads with the feature that needs it. Calendar, dropzone, overlay, scheduler, select, cascader, table and the rich text editor ship none of their opt-in chrome unused, and related components share one stylesheet.4033412Toggletip follows a dismissal as it starts and re-opens during the leave transition; Escape dismisses a hover-shown tooltip from anywhere without blocking a dialog behind it.4033412Command palette: the search field dropsaria-controlsand reportsaria-expanded="false"with no results, andetCommandPaletteShortcutcloses a palette opened throughinjectCommandPalette()instead of stacking one.4033412Table selection checkboxes carry their accessible names again, the grid's default remove button emits the item'sremoveoutput, and pagination clamps a page past the end to the last one.291e658et-match-participantdraws the participant's first letter when an emblem is missing or fails to load, andletterboxes a non-square logo instead of cropping it. A TBD slot stays blank.
480a1caA nav tab link that a user reached with Tab follows on Enter again - the tab bar no longer swallows a key it does not act on - and Space no longer follows a disabled link.4326376Overlays can be mountedpassiveand are then skipped as the top layer, so a dialog still closes on a backdrop press while a tooltip shows inside it.0952147Overlay: a breakpoint strategy switch now adds or removes the arrow and the drag handle with the strategy, instead of keeping the ones the overlay mounted with.6c744bbdefineQueryForm:branch()now debounces and runs the reset graph like the source form and exposesliveValue; the filter overlay appliesliveValueon submit.@ethlete/agent-rules@0.1.0-next.15
Minor Changes
2178b4fThree skills vendored from mattpocock/skills:grilling,domain-modeling, and thegrill-with-docsentry point that runs both.2178b4fNew opt-insubagent-model-policyhook: a Claude Code subagent call must name itsmodel, andfableasks the user first. The newsubagent-modelsrule says which model fits which task.Patch Changes
5e44c17Thehandoffskill now tells the agent to name only its own invocation form, so a saved handoff no longer reports the Claude Code and Codex commands side by side.b9ec4bfA handoff is now written only when work is actually left: thehandoffskill tests for it first, and thecontext-warninghook's auto-mode escalation no longer forces a file.848482econtext-warninghook: the critical tier now asks the agent to finish or hand off instead of forcing a handoff, and every later prompt repeats the remaining budget.e7e4604Context warnings now distinguish sub-agent pressure from the main session and track each thread independently.@ethlete/bracket@1.0.0-next.1
Minor Changes
8b90cd4Bracket: a relayout now animates, with newthirdPlaceTopOffset,finalRoundHeaderGap,alignRoundHeadersandfocusInsetsettings and a--et-bracket-move-durationtoken;BracketLayout.drawEdgesnow returns aBracketDrawinginstead of an SVG string.59adb91Bracket pick card: per-side pick marks, a note line, areadonlyresults mode and slot wording fromprovideBracketLabels. Breaking: theunresolvableLabelandunavailableLabelinputs are gone.40f6464Bracket: addmigrateBracketPicks()so a pick follows its participant when a pairing changes, plusrealParticipantOutranksPickandkeepPickWhileFeederSideIsOpenonresolveBracketSlot().c6cd941Bracket: add a framework-free prediction graph and resolver, prediction-aware slot states, an operable pick card, and focused round layout controls.eb7135aStandings: add<et-standings-pick>, a group table a viewer reorders by drag or arrow keys, plusstandingPickOutcomeandstandingPickStartOrderin@ethlete/bracket.Patch Changes
4033412Bracket: a stage draws while a later round is empty, a mirrored fold converges for a field that is not a power of two, and swiss rounds past a full table group instead of throwing.@ethlete/cli@2.1.0-next.9
Minor Changes
f7ce2ebet updatenow writes the new range into everypackage.jsonin the repo, not only the root one, and refuses a dist tag that points at an older version than the repo is on.@ethlete/query@6.0.0-next.46
Minor Changes
03f0285<et-query-devtools-lazy>renders nothing withoutprovideQueryDevtools()- no floating button, noshortcut, no panel download - and the now-public
isQueryDevtoolsEnabled()is what it gates on.2d3107dGQL over POST sendsvariablesas a JSON object, as the spec requires, instead of a JSON string. A server that relied on the string must accept the map. GET is unchanged.6704678withDefaultRetry()andwithEthleteApiErrors()now retry only the client they are on. Before, the first call installed the policy process-wide. Migration: add the feature to every client that should retry - a second client without it no longer retries.6c744bbdefineQueryForm:branch()now debounces and runs the reset graph like the source form and exposesliveValue; the filter overlay appliesliveValueon submit.4033412HTTP queries gaincreateHeadQueryandcreateOptionsQuerywith their secure twins, andcreateFakeQueryPersistenceStore()can fail a removal withfailNextRemoves(count).ececb72Auth:withTokenExpirationWarningreads the expiry claim named by its newexpiresInPropertyNameoption, so a token that carries the expiry under another name no longer reports no expiry at all.Patch Changes
0dbb0fdThe panel drops a client's Cache, Faults and Events entries once that client's injector is destroyed,instead of keeping them alive for as long as one of its queries has a tombstone.
4033412Legacy interop:abort()publishesCancelled, a secondexecute()while loading is a no-op again, a poll reportsrefreshing,triggerImmediatelyruns at once, andstate$replaysPrepared.4033412Legacy query containers: teardown destroys an uncacheable query, stops the poll of the last container, tracks dependents per injector, tears down the store's listeners, and leaves a superseded mutation to settle.4033412LegacyQueryForm: values track control writes withoutobserve(), a commit no longer cancels an in-flight route change, and a committed value keeps its type through the form's own URL write.4033412Legacy:[etInfinityQueryTrigger]no longer throws NG0200,v2BuildQueryCacheKeytakes the method,setAuthProviderkeeps the refresh cookie, the prepare fallback survives several applications, and the barrel's re-exports carry@deprecated.4033412Multi-tab auth: a follower waits for the leader's in-flight refresh and spends one token per rotation, a cached login is no longer broadcast, andwithTrackinghonorstrackInternalEvents.4033412Bearer auth: a login that races the cookie restore, an empty2xxbody and a refresh that yields no tokens now settle the session instead of stranding it, and the cookie clears in every reachable scope.4033412Caching: the key covers the request method and case-folds header names, and an entry's secure, refreshable and retention flags follow the queries still bound to it rather than the one that made it.4033412Query: theET800circular-dependency guard counts only executions with identical args and measures its window with its own clock, so a fast-typed search no longer trips it.4033412Query devtools: a tombstone drops the destroyed view, override recorders and host elements are released, the floating pills settle after first paint, and the Forms tab links every reader of a form.4033412Error handling: a malformedviolationsbody degrades to a form-leveletServerErrorinstead of throwing, and the416,408,410and425status texts are corrected.4033412Query:execute()after destroy warns instead of throwing NG0205,executeUntilSettledsettles on cancel,reset()detaches the request, a batch records a throwing item, and snapshots keep their own signals.4033412defineQueryForm: an emptied array commits as itsnulldefault,skipResetsandskipFieldsno longer leak into the next change, a value written beforeobserve()survives, andliveValuereports the controls.4033412defineQueryForm: two forms writing in one tick keep each other's params,appendToUrl: falseleaves a foreign param alone,0reads back as a number, and a commit no longer cancels a route change.4033412GraphQL: a document is parsed once and minified without breaking on comments or string literals,rawResponsecan declare its own envelope, and secure queries over POST cache like the rest.4033412Query persistence: mutations are never stored, one opted-in consumer is enough, GraphQL over POST persists, a failed IndexedDB open is retried, and a purge always beats a hydration or index load in flight.4033412Query types:QueryContextandsetDefaultQueryRetryFnleave the published types,createQueryFeature()takes anytypestring, andcreateQuerySubmission'sonSuccessallows thenulla204hands it.4033412Query stacks and sequences:deduplicateArgsapplies withoutappend, each response runs its features once,fetchPreviousPage()returns the page it made, and every link reports the builttotal.c962f78Testing entry point:setupQueryTestnow installs one console filter instead of nesting anew one per call, and exposes
restoreConsole.installFakeWebLocksremoves theabortlisteners it adds. The websocket double reports
withCredentials().4033412Query: atransformResponsethat throws lands inerror()with code0, keeps the last goodresponse(), and no longer re-runswithSuccessHandling.4033412validateWithQuery: the in-flight request stops when the field goes idle, and the internal query's cache entry and resource are released with the form that owns them.4033412WebSockets: a room joined before the socket connects sends onejoin-room, and a frame carrying noroomstring is reported as malformed without flooding production logs.@ethlete/timetrack@0.1.0-next.6
Minor Changes
a2a44edCollect the token spend of every coding-agent turn as anagent-usageevent, read from the Claude Code session log.e64d8e2AddparseCodexSessionLog(): the Codex CLI's rollout logs read for their sessions and each turn'stoken spend. A cursor now carries the session state a log states once rather than per record.
0f046dfA short list of applications ships as no work context, media players and messengers, andholdsWorkAppstakes any of them back one at a time.21d78f6Pull request activity on github.com is read throughgh, beside GitLab's. It stores no token, it isoff until the switch in Settings is on, and it says when GitHub's 300-event cap cut a window short.
f38dc5aGitLab activity is read throughglab, which holds its own login, so the app stores no token tocollect. A source now reports "not installed" and "not logged in" as two distinct states.
bb0dde7Settings gainnoWorkContextApps: applications the user says never hold a checkout, reported withtheir own
no-work-contextcause instead of as unjudged time.b6c9d05streamDay()takes the project links and drops a checkout a private link covers: no line, noevidence, no spend.
TimetrackProjectLinkandmatchProjectLink()move to the model, so a readeroutside
correlatecan honour a link.2e98dd5READABLE_MSis exported: the duration under whichformatDurationMsreads0m, so a caller candrop a line that would carry no number.
55f4f16AddstreamDay(): what a local day was worked on, for how long and what the agents spent, one lineper checkout.
backfillAgentSpend$()fills in the spend of days collected before it.e1ff549Add the@ethlete/timetrack/testingentry point: a stateful fake Jira, Tempo, GitLab and git backend, plus the seedable world the app's end-to-end suite drives.9612097streamDay()books a turn to its checkout by working directory alone, so an agent that ran whilenobody was at the machine still bills. Each stream reports that time as
unattendedMs, outside bothpresence and engaged time.
a27d9d1An unnamed focus row carries the window titles behind it, each with its own total, longest first. Aprivate checkout keeps none.
4c533fcUnnamed focus is now judged against the span: agapis an application that names checkoutselsewhere, and one that never names a checkout reads as
unknown.b8dbea3streamDayreportsfocusMsandunnamedFocus: the focused-window time no checkout took, perapplication and per cause, so the Other applications line can be read apart.
0fbe8cbThe window source status reports what it reads on this machine, and the fake world seeds it, so amissing capability no longer reads as a wrong number.
Patch Changes
78216c9Both agent parsers read the prompts a person typed asagent-promptevents: an instant, a session anda checkout, never the text. They key like spend, so a log read again stores each one once.
f680628streamDay()reportsambiguousNames: the checkout names a window claimed that two checkouts share.The time folds into the other-applications line, and the day now says why.
47abe4cExclusion rules now apply per calendar occurrence, and a Google account with a rejected refresh token reports that it stopped working instead of retrying forever.396b6edA call a rule counts as work now proposes its own weak row in the day review, on the same issue a meeting lands on. Time a meeting already claims is cut out first.d937c1aA call the app was killed in the middle of no longer counts to now. The next run ends it where thewatching stopped, so a killed run cannot claim every hour since.
68c7997A GitLab or calendar failure now clears on the next clean run. It used to clear only in the append step, which a run with no credential never reaches, so a fixed token left the old error on screen.c1855fcThe v2 day reads editor heartbeats to name the checkout a window title cannot. A meeting title is no longer quotable evidence.4e83e1bThe e2e fake world serves seeded agent session logs, and its store now honours dedupe keys and keepscursors, so a collector's re-read behaves the way the real store makes it behave.
dcd6d68Git scan: a worktree no longer books the whole repository's commits as its own — a commit is read onceand named by the checkout that holds its branch.
2004b27Ask for the GitLab token scope the activity feed needs./eventsis documented asread_userorapi, andread_apidoes not cover it, so a token made from the old instruction answered 403.9939df6A Google token error now names which request failed and keeps Google's own description. A rejectedauthorization code no longer reports that the stored token needs a reconnect.
f680628NewreadHeadBranches$()reads the branch a checkout was on at an instant from its reflog, so a dayholding no git event for a checkout can still name its branch.
c1855fcThe day counts calls, from which process holds the microphone.TimetrackCallRulesdecide at read time whether a call was work, and default to no.54855a9applyExclusionRulestests a title pattern against the checkout anagent-promptnames, as it alreadydoes for a turn's spend. A rule that hides a repository now hides its prompts too.
ff168afstreamDay()rebuilds a day no window observed from the prompts the user typed, with a turn bridgingthe minutes between two of them. It reports the rebuilt part as
rebuiltMs. See ADR 0006.0373c98A rebuilt day keeps a turn for a checkout no project link covers, and names a stream after adirectory only when something says the directory is a checkout. See ADR 0006.
63b06b1A URL in a window title is stored without its query string, and a focus that does not move no longer reads as time no window watched.3bafba7repairStoredTitles$applies the window-title redaction to the titles already stored, which the rule could not reach because it only runs on the way in.aed6f3astreamDay()keeps unrelated windows off a checkout: the sticky context now comes only from awindow title, and only inside the application that set it.
c1855fcA window evidence row names the application when the window source reports no title, so untitled windows no longer collapse into one blank row.@ethlete/core@5.0.0-next.57
Patch Changes
ae96d23Core: overlays close and restore focus in a pop-up window,unbindPropsundoes everythingbindPropsapplied, cookie helpers no-op on the server,equal()comparesDates by tag, andmemoizeSignalcaches per application.4326376Overlays can be mountedpassiveand are then skipped as the top layer, so a dialog still closes on a backdrop press while a tooltip shows inside it.ef2277dAn overlay now restores focus to its opener only when focus is still inside it at teardown, so an outside press that focuses another control keeps focus there.@ethlete/query-devtools@1.0.0-next.11
Patch Changes
2bfa704The response diff now reports a changedBlob,Date,MaporSetinstead of reading twoof them as identical, and searching a folded slice no longer overflows on a cyclic value.
0dbb0fdThe panel drops a client's Cache, Faults and Events entries once that client's injector is destroyed,instead of keeping them alive for as long as one of its queries has a tombstone.
197ba4cQuery devtools exports stop carrying live credentials: a copied report slims its args, a session export omits auth-provider bodies and redacts credential-named keys, and an unchainable secure request drops itsAuthorization.03f0285<et-query-devtools-lazy>renders nothing withoutprovideQueryDevtools()- no floating button, noshortcut, no panel download - and the now-public
isQueryDevtoolsEnabled()is what it gates on.33251a2Devtools panel: the Settings client picker now narrows the Events tab, exports survive cyclic and non-JSON bodies, theno authchip covers mocks with a query string, and copy confirmations reset again.timetrack-app@0.2.0-next.0
Minor Changes
c80f21bThe app version now advances through a changeset, like a published package, so the build stamp names the release it came from.