Repository navigation
Preserve CSS easing values in Motion previews - #8199
Conversation
|
Here's a visual recap of what changed: Open the full interactive recap |
…-preview-20261025
* workspace-credential-lookup: error treated as absent -> typed retryable 503 * workspace-credential-error-propagation: 503 stopped at the resolver -> alternate key is tried and HTTP status is preserved
…261025' into fix/design-css-easing-preview-20261025 # Conflicts: # templates/design/actions/apply-motion-edit.localhost.spec.ts # templates/design/actions/apply-motion-edit.ts # templates/design/shared/motion-code.spec.ts
* fix: keep Clips recording pages scrollable in short windows * fix: keep short-window scroll scoped to recordings
* test: cover submission receipts and execution fences * test: verify direct busy chat admission * test: name direct and UI queue coverage * test: allow chat queue verification to finish * test: capture background run diagnostics * test: retain stale run evidence * fix(core): keep claimed workers alive during setup * test(core): include stale deadline in run-store mocks * test(core): align background finalization assertion * test(core): complete run-store stale-time mocks * fix(core): keep background setup heartbeat live until handoff * test(core): assert setup heartbeat beyond stale window * fix(core): bound background setup heartbeat * fix(core): bound background setup finalization * fix(core): keep claimed setup failures observable * fix(core): preserve process-run failure response * fix(core): finalize pre-start worker errors
…261025' into fix/design-css-easing-preview-20261025 # Conflicts: # templates/design/e2e/motion-browser.spec.ts # templates/design/e2e/motion-controls.browser.spec.ts
… Content filters (#8035) * Add text and relative date filter operators to Content collections Text filters add does not contain, starts with and ends with. Date filters add on or before, on or after, relative days (today, tomorrow, yesterday) and an is within operator for relative ranges, resolved against the caller's today each time a view is read. A date without a time now covers its whole day in both the shared evaluator and the Files navigation SQL. Operator and chip labels move into the database message catalogs for every locale. * Give the new Content filter test queries a filter mode * Count rolling date ranges from today, compare filter times as timestamps, and keep a range's start when leaving between - past/next 7 and 30 days now span 7 and 30 calendar days, today included. - Files navigation SQL compares a moment as timestamptz, so offset bounds and the database's default timestamps agree with the shared evaluator, and handles equals / does not equal on a moment instead of skipping them. - Saving a view rejects a date filter value no comparison can read; empty and unfinished range ends still save mid-edit. - Switching from between to a one-date operator keeps the range's start. * Check date filter values on personal View overrides too The shared and personal View saves now use one check, contentDatabaseDateFilterValueError, so an unknown is_within token or an unreadable date is rejected on either path. * Read filter and row times without an offset in the caller's time zone Date properties store times as wall-clock values ("2026-10-22T18:00"), and a filter value can be written the same way. new Date() read both in the host's zone, so the server (UTC on hosted servers) and the browser could disagree on the same saved filter. contentDatabaseFilterInstant reads them in the request's x-user-timezone on the server and in the browser's own zone on the client; a written offset still decides the moment. Bounds are normalized to UTC ISO strings, and an impossible day such as 2026-02-30T10:00 no longer rolls over into March. * Read only ISO date filter times, compare day rows by day, and tie cursors to the zone - contentDatabaseFilterInstant reads only an ISO date and time (optional seconds, fraction and offset); strings like 10/22/2026, 2026-10 or 5 no longer become moments through the runtime's Date parser. - A wall-clock time a daylight-saving change skips moves forward by the change, and a repeated one is the first of the two, as JavaScript dates do. - A row without a time compared with a timed value is compared by day: the day the moment falls on in the caller's zone. - A between orders a day and a time by when each starts and ends, not by text. - A Files navigation cursor under a filter with a time records the caller's time zone, so it can't be reused from another zone. * Check new date filters on every View save, trim navigation text like the evaluator, and cache zone formatters The legacy Files save and the full replace now reject an unreadable date too, checking only filters a save adds or changes so an older view still saves. * Read row times to the millisecond in Files navigation, keep a relative day's date when switching to between, and read fewer zone offsets per row * Skip a between filter with a blank end until it's filled in, in both readers and the filter count * Compare each View's date filters with that View's saved ones, letting a new view copy any * Give each end of a date range the single date's picker, editing a timed end as text A range's ends were plain date inputs, which show a relative day or a timed value blank and drop it on edit. Each end now has the Exact date / Today / Tomorrow / Yesterday picker, and a timed end is edited as text. Switching a relative day to between keeps it as the start again. Creating a view through the agent setup path compares its filters with every saved view's, as a full save does. * Hold a typed time in its field until it reads as a date A timed date filter value is edited as text, and each keystroke reached the filter, so pausing partway through a time autosaved an unreadable value and showed a failed-save toast. The field now passes text on only once it reads as a date, marks an unfinished one invalid, and drops it on blur. * Close the operator menu once a filter operator is picked Both operator menus, in the filter chip editor and the advanced filter row, kept themselves open after a pick, covering the value field that comes next until Escape or a click elsewhere. They now close like the editor's property and relative-day pickers, and the filter editor stays open. The menus that add filters or groups, or move filters, still stay open for repeated use. * Pick a date filter's text or date field from its current value A date filter's field chose once, when it first appeared, whether to edit its value as text (a value with a time) or with a date input. Filter rules are keyed by property and position, so removing an earlier rule on the same property handed its field to the next one, and a timed value could land in a date input that hid its time and dropped it on edit. The field now follows the value it shows, and stays text while it's being edited, so taking the time out still doesn't switch it mid-edit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Give date filters Notion's operators and relative range picker The date operator menu drops "Is not", matching Notion's nine date operators. A rule that already uses it keeps it in the menu with its label, and the evaluator, API and agent actions still accept it. "Is within" now picks Past, This or Next, a count from 1 to 999 for Past and Next, and day, week, month or year, instead of seven fixed ranges. Tokens are past_<n>_<unit>, next_<n>_<unit> and this_<unit>. Either form of the unit reads, and saves write the singular for 1. Ranges are whole days that count today, month and year steps take a shorter month's last day, and weeks start on Sunday. last_week and next_week are gone. A rule switched to "is within" starts at the past 7 days. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * End a next-months range on a shorter month's last day The next month from 31 January ended on 27 February: 31 January plus a month lands on 28 February, and the range then stopped the day before. When a next month or year range lands on a shortened month end, it now runs through that day, so 29, 30 and 31 January all run through 28 February while 28 January still ends on the 27th. Past ranges already started on the 1st after a short month, so they don't change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Word relative date units in each locale's plural forms and drop a date draft on a menu choice The relative date picker's unit labels were a singular and a plural per locale, which can't say Arabic's forms for 2, for 3 to 10 and for 11 up. They're now plural keys with every CLDR category, picked with Intl.PluralRules for the page's locale. Choosing a relative day or Exact date from the value menu now clears an unsaved typed date, as leaving the field does, so Exact date shows the saved date rather than the half-typed one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… flags, lint and escape-hatch guards (#8206) * Ratchet framework strictness: typed action contracts, strict compiler flags, lint and escape-hatch guards - defineAction infers its return type from outputSchema and requires run to return what the schema accepts; outputErrorStrategy defaults to "strict"; "fallback" is deprecated; defineActionErrors declares a closed error-code set. - tsconfig.base.json turns on noUncheckedIndexedAccess, exactOptionalPropertyTypes, noImplicitOverride and noFallthroughCasesInSwitch; projects with a backlog opt out explicitly. The core CLI and templates/plan are now type-checked under strict. - oxlint 1.89.0 / oxlint-tsgolint 7.0.2005. - New guards: action-output-schema, compiler-strictness, strict-lint, no-new-escape-hatches. * Fix CI and review feedback on the strictness ratchet - Changeset for the other publishable packages the flag flip touched. - Carry the toolkit-provider narrowing to every template copy (ui-primitives sync), repin the QR spec's blob id, and state "warn" in the MCP specs and chat specs that relied on the old default or an explicit undefined key. - Infer results from outputSchema for parameter-based actions too, and type "warn"/"fallback" results as output-or-input instead of output only. - compiler-strictness: map src/cli files to tsconfig.cli.json, and compare each changed tsconfig structurally against the merge-base so a removed `true` or a multiline `false` is caught. - action-output-schema: fail closed on spreads, non-literal options, namespaced calls, and `outputSchema: undefined`. * Close remaining gaps in the strictness ratchet guards - compiler-strictness: also watch every flag strict implies (so strictNullChecks: false under strict fails), and judge a changed extends by the effective config at HEAD. - action-output-schema: recognize aliased defineAction imports, resolve identifier and shorthand outputSchema values within the file, and read outputErrorStrategy through consts, rejecting values it cannot read. - ActionOutputResult includes undefined for "fallback", which returns outputFallback as given. * fix: close action output schema guard gaps * fix: recognize derived Zod output schemas * fix: recognize long Zod schema chains
* Update iOS quick-action routing for Expo 58 * Upgrade mobile app to Expo SDK 58 * Adopt Expo Router navigation shell * Update MCP guard for Router mail route * Fix formatting for widget asset manifests * Harden mobile session bootstrap and storage * Bound native session token mutation waits * Preserve session token ordering after timeout * Fix queued session token mutation deadlines
|
Addressed the latest review’s remaining points in This was sent from a bot |
* feat(core): add typed decisions API * feat(core): default decisions to Jev * feat(core): gate unverified Jev scores * docs: format Decisions documentation * fix: harden Decisions provider handling * fix: close Decisions review edge cases * fix: preserve Decisions credential failures and fallback deadlines * fix(core): honor decision cancellation during credential lookup * fix(core): bound decision credential resolution * fix(core): bound Decisions input payloads * fix(core): bound decision status lookups * fix(core): validate decision evaluation metrics * test(core): allow remaining Jev timeout budget * fix(core): check Jev readiness in parallel * fix(core): bound calibration error bins * fix(core): satisfy Decisions guard checks * fix(core): remove redundant credential-cache guards * docs: clarify Decisions provider-order scope
There was a problem hiding this comment.
Builder reviewed your changes — looks good ✅
Review Details
Incremental review of PR #8199 at head 03892656. This update only adjusts the native Motion browser test: it adds a helper to clear persisted canvas state and reload the current screen, increases the timeout, and uses the helper in the persistence flow. Two independent review passes found no clear issues; the reloaded page remains on the same screen and readiness checks are retained. Risk: Low; no product behavior changes.
🧪 Browser testing: Skipped — PR delta only modifies E2E test code, with no user-facing runtime impact.

What changed
Verification
pnpm guards: 93 checks passed.pnpm typecheck: passed.Behavioral coverage does not include screenshot review.