Conversation
…rkflow trigger blocks Co-authored-by: Aymeric Rabot <Aymericr@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Aymericr
marked this pull request as ready for review
September 11, 2026 20:56
|
I hit an error while handling your request (Model unavailable on AI Gateway free tier: Free tier users do not have access to this model. Upgrade to paid credits at https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%3Fmodal%3Dtop-up for unrestricted…). Please try again, rephrase, or reach out if it keeps failing. Error id: 56cf829b-902f-432e-a8dd-69cf6c3c82d0 |
Contributor
|
React Doctor found no new issues. 🎉 Reviewed by React Doctor for commit |
…ntities
okRange expects a normalized offset, but the open-bound and fuzzy-spread
branches of parseRangeOrQty passed the token index. Any range that did not
start the input got a span starting at the token index instead of its source
offset ('call mom over 5 min' -> [2, 19)). Pass p.tokens[i].start, matching
buildRange.
Co-authored-by: Aymeric Rabot <Aymericr@users.noreply.github.com>
- Token highlighter: regexes only propose slices; parseDate/parseDateRange/ parseDuration confirm each one, so a color only appears where lingo read something. Real priority-first overlap resolution, per-token readings, presets that all parse, visible Input instead of an opacity-0 overlay, aria-pressed preset group, zone label deferred to hydration, memoized now. - Remind me: a real Base UI Popover (new ui/popover.tsx) with a trigger, presets that are phrases read through ./date (no hard-coded clocks or fallback times), lingo's own message on failure, Select for the condition, design tokens instead of hex colors, works in light mode. - Workflow rule: editable prompt, findQuantities with span slicing, range min/max via format(), issues surfaced with issueClass, vendor-neutral entity chips with lucide icons, event-only readout when no bound. - Shared date-display helpers; four --token-* category tints in globals.css (light + dark) replace hard-coded Tailwind hues. - Copy: drop 'zero-latency', 'production-ready', brand name-drops and the 'gpu-time' search keyword; wrap all three in DemoFrame like neighbours. Co-authored-by: Aymeric Rabot <Aymericr@users.noreply.github.com>
The calendar, token-highlighter, and remind-me demos print parsed dates as UTC instants in their Output JSON, and the coverage table prints them in its value column. Their SSR reference time is a local wall clock, so the same wall clock is a different instant on the server and in the visitor's browser, and React 19 raised #418 and re-rendered the whole page client side. Instant-bearing text now fills in after hydration; wall-clock labels were already zone-stable and are unchanged. Co-authored-by: Aymeric Rabot <Aymericr@users.noreply.github.com>
Keeps every locale-dependent formatter in one module, which is also what React Doctor's no-locale-format-in-render check expects to see. Co-authored-by: Aymeric Rabot <Aymericr@users.noreply.github.com>
The sub-heading repeated the demo frame's own title directly above it. Neighbouring sections name the idea and let the frame name the widget. Co-authored-by: Aymeric Rabot <Aymericr@users.noreply.github.com>
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.
What
Three docs-site demos built on lingo's spans, reworked after an adversarial review, plus one library bug the demos surfaced.
Site (
apps/site)parseDate/parseDateRange/parseDurationconfirm each one. A color only appears where lingo actually read something; the whole-input reading (single date / range / duration / declined) is shown alongside, with lingo's own issue message when it declines.Popoverwhose presets (tomorrow,next week,this weekend,someday) and free-text field go through the same reader. No hard-coded times: a preset row shows exactly what typing its phrase would give, or—when lingo has no reading.findQuantitiespulls the numeric bounds (below $10k,over 15 minutes) out with spans into the original string; entity chips are vendor-neutral and icon-labelled.--token-*OKLCH variables inglobals.csswith light and dark values, applied viadata-token.lib/date-display.ts(day / clock / range / zone formatters) andui/popover.tsx.Library (
packages/lingo)findQuantitiesreturned mid-word spans for open-bound ranges and fuzzy spreads that did not start the input (call mom over 5 min→[2, 19)): the qualifier branch ofparseRangeOrQtypassed a token index whereokRangeexpects a normalized offset. Spans now start at the qualifier. Regression test ingrammar.test.ts; CHANGELOG under[Unreleased].Hydration fix (pre-existing, site-wide)
/docs,/formsand/escalationon production throw React #418 for any visitor whose browser zone is not UTC, and React re-renders the whole page client-side. Cause: demos hold a local wall-clockSSR_NOWthrough hydration, and the calendar demo's Output JSON / coverage table print UTC instants, which differ per zone. Instant-bearing text now fills in after hydration (useHydrated); wall-clock labels were already zone-stable.Adversarial review → changes
The first version was reviewed adversarially; every finding was addressed:
parseRangeon full sentences) → presets are phrases lingo reads; the one deliberately declined sentence is labelled as such.eight pmclassified as a quantity → word-number hours handled; overlap resolution is priority → length → position instead of earliest-start-wins.nowparameter, un-memoisednew Date()in render, timezone label hydration mismatch → fixed.Superhuman,Linear,gpu-time, "zero-latency", "production-ready") → removed; copy describes what the code does.Select/Popover, visibleInput,aria-pressedpresets, Lucide icons.DemoFrameeverywhere; section headings are thesis-style like their neighbours.Verification
bun run check(typecheck, tests, build, size budgets, corpus gates, zero-deps, docs sync, schema artifacts): green.bun run lint: clean. React Doctor: no new issues on9b1f3a9.TZ=UTC, loaded in headless Chrome withTZ=America/Los_AngelesandPacific/Auckland: no console errors on/,/docs,/forms,/escalation,/integrations.lingo.pascal.app/docs: React #418.lingo_reworked_blocks_walkthrough.mp4
Token highlighter: a sentence lingo declines whole, with the three slices it did confirm
Workflow rule: two thresholds extracted from a typed sentence
Deploy
Production deploys from
mainthrough the Vercel Git integration; merging this PR ships it.To show artifacts inline, enable in settings.