Repository navigation
chore: sync master into dev and add beta snapshot publish - #1017
Closed
johnleider wants to merge 47 commits into
Closed
johnleider wants to merge 47 commits into
johnleider wants to merge 47 commits into
Conversation
The Official Emerald UI Kit for Figma is on the Vuetify Store. Point the landing card and install note at the product, and document the MIT Vue package vs paid Figma companion split.
…app bar (#963) * docs: wrap long headings and inline code instead of widening the mobile viewport Long API tokens in h1-h3 (useIntersectionObserver, SUPPORTS_*) and inline code paths had no break opportunity and pushed the layout viewport past the phone width, panning the whole page. The mobile header-anchor ::after was also in flow, extending scrollWidth by ~1em past the widest line. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: let wide prose tables scroll with a visible affordance on mobile width:100% resolved to max(container, min-content) at phone widths, squeezing every wrappable column to one word per line while the last column sat off-canvas with no scroll signal. Tables now take their natural width (capped at 42rem) and scroll inside the markdown wrapper, whose clipped edge fades via a scroll-driven mask; browsers without scroll timelines get a thin styled scrollbar instead. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: wrap breadcrumbs and truncate non-link crumbs at narrow widths The nowrap current-page crumb pushed the trail past 320px viewports (createOverflow, BuNumberField). The list now wraps, and crumbs without a link keep a truncate backstop for single over-long tokens. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: fit the app bar on 320px screens by collapsing social icons below 430px The right cluster (theme, Discord, GitHub, account, settings) needed ~384px, leaving sign-in and settings untappable at 320 and clipping the gear at 375. Below 430px the Discord/GitHub icons collapse away (both stay reachable in the page footer) and bar padding and cluster gap tighten one step; 430px and up render exactly as before. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: pin the mobile header-anchor hash to the heading's last line Follow-up to c49bdc0 per review: the abspos ::after took flex static positioning from its inline-flex parent and painted over the heading's first characters, so it gets explicit offsets — heading-relative, at the inline-end of the last line, which a wrapped heading leaves short (the first line is full by construction, and anything hung past the text end re-widens the page). The overflow-wrap rules are also scoped under 768px to match the defect and the original commit's intent. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: scope mobile table rules to markdown-emitted tables and flip the edge fade for RTL Follow-up to 4e1f143 per review: the width clamp and fade matched any table wrapper under .markdown-body, squashing example and app tables that manage their own widths (DataGrid demos, benchmarks, freshness, API index). Both markdown pipelines now stamp their wrapper with .docs-table and the rules target only that. The fade gradient gains a [dir=rtl] override (scroll progress starts at the right edge there) and the -webkit-mask-image prefix the file uses elsewhere. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: add the footer to the fullscreen layout The skillz tour player and the 404 page had no AppFooter, so collapsing the app-bar social icons below 430px left those routes with no Discord or GitHub link at all. They now carry the same inset footer as the default layout. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: drop the inset prop from the fullscreen footer Follow-up to 31d9124 per review: inset adds md:ms-[230px], but AppMain carries no nav offset, so the footer indented against un-indented content on md+. Bare AppFooter, as home.vue uses it. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: stamp docs-table on the API index tables and outrank the base width rule structurally Follow-up to e0c5f3c per review: DocsApiIndex hand-writes the same overflow wrapper the markdown pipelines emit, so its tables missed the mobile width fix and fade; both wrappers now carry .docs-table. The mobile width rule also selects both wrapper classes so it outranks the base table rule at (0,3,2) instead of tying at (0,2,2) and winning on source order alone. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ
…ction cache (#964) * docs(DiscoveryContent): keep mobile tour cards inside the viewport The mobile branch anchors only the card's vertical edge, so a target spanning most of the viewport (Ask AI panel, an expanded code pane) left no room on the anchored side and pushed the card off-screen (using-the-docs#ask-ai-panel rendered at y=-189 with Exit/Back unreachable). Measure the target when a step activates: flip top/bottom when the anchored side can't hold a card, and center over targets taller than 60vh, where neither side can. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs(skillz): wrap the detail-page action row at phone widths With a completed tour the header cluster (duration + Reset + Restart + Next CTA) runs ~400px wide and clipped the primary CTA at 375. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs(api): invalidate the API extraction cache when package sources change api-cache.json never expired, so a manifest extracted before a component landed 404s its minted /api/<slug> route forever (/api/data-grid and /api/data-table with a pre-1.1 cache) and resurrects internals the barrel no longer exports (createFocusTraversal/createObserver ghosts in the /api/ index "Other" category). Stamp the cache with a fingerprint of packages/0/src component+composable files and regenerate on mismatch. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs(DiscoveryContent): stop the activator poll when its step deactivates The rAF poll loop was gated only on unmount, so next/back/exit while polling let a stale loop measure() and set isReady for a step no longer active. Bail when root.isActive drops. Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ
* docs: fix P1 example layouts at phone widths (wave 3a) - treeview settings-panel: stack description pane below the tree under sm so labels no longer paint through the fixed w-48 sidebar - create-rating StarRating: let the rating label wrap under the stars instead of crushing to one-character lines - emerald tabs vertical: shrink-guard the tablist and stack the demo column-wise below 600px - emerald pagination summary: wrap the control row so Next stays visible and tappable (works around the Pagination.Root fit-measurement gap for non-page slot content; package issue reported separately) - benchmarks summary cards: single column below sm to stop page h-scroll Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: fix home, health, and example layouts at phone widths (wave 3b) - DocsFreshnessTable: wrap the table footer and hide First/Last page buttons below sm so the pagination row no longer sets a ~395px layout width on /health - HomeHero: stack the CTA pair below sm so Get Started is no longer clipped at the left edge at 320 - HomeEcosystem: truncate explore-card labels instead of clipping mid-glyph (also closes the home 320 h-scroll flake) - create-trinity ToastConsumer: stack the tuple tiles below sm so the mono labels stop overlapping - number-field CartLineItems: wrap line items so product names keep a full line and prices stop wrapping word-per-line Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ * docs: fix P2 example clipping at phone widths (wave 3c) - use-reduced-motion basic: wrap the mode row so the MOTION chip is no longer clipped at the card edge - create-breadcrumbs basic: wrap the demo trail so every crumb stays reachable inside the overflow-hidden preview panel - splitter playground: truncate explorer labels so narrow panes ellipsize instead of clipping mid-glyph Claude-Session: https://claude.ai/code/session_01UTCx471779RNB2pVGuW1RQ
0.1.0 was first-created with npm publish, so the tarball still has workspace:^ and catalog: protocol strings. A play patch changeset puts 0.1.1 on the current Version Packages PR; pnpm pack rewrites both to semver.
GitHub's Latest badge is last-write-wins. A cut that also mints @paper/* or @vuetify/play was leaving that last DS/play release as Latest instead of the substrate v* tag. Pass --latest on the stable v* mint and --latest=false on every other.
* chore(deps): refresh catalog to latest installable Same-major catalog bump under the 14-day age gate (vue/vite/eslint age-excluded). Absorb the type/lint/knip fallout in the same PR. Bumps: vue 3.5.42, vite 8.2.2, vue-tsc 3.3.10, tsdown 0.22.14, satori 0.29.1, eslint-config-vuetify 4.7.2, knip 6.32.2, @vue/repl 4.7.2 (re-patched), plus the rest of the same-major set. Holds: majors, rollup-plugin-sass rc, simple-git-hooks (too new). Vue 3.5.42 needed catalog-pinned vue on paper/emerald/genesis (they were stuck on 3.5.39 via autoInstallPeers) and MaybeRefOrGetter widening for useTemplateRef in createOverflow / useDragDrop. * chore(ci): fix playwright cache key and hold vue-component-meta Playwright 1.62.1 needs a new Chromium; the cache key was still 1.61.0 so CI restored a stale binary and skipped install. vue-component-meta 3.3.10 extracted 0 components (silent catch), so API markdown twins never wrote and lychee 404'd /api/*.md. Hold at 3.2.7; log extract failures so this does not fail silent next time.
Co-authored-by: johnleider <9064066+johnleider@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
…rcel v0.dev (#977) * docs: sweep bare 'v0' prose toward 'Vuetify0' to disambiguate from Vercel v0.dev - Changed first-mention-per-section prose references from bare 'v0' to 'Vuetify0' - Preserved @vuetify/v0 package references, #v0/ import paths, --v0-* CSS variables - Preserved code examples, namespace identifiers, and technical references - 95 files changed, 306 insertions(+), 306 deletions(-) across docs prose Before: 1254 bare 'v0' matches | After: 996 matches (258 prose references changed) Resolves naming collision confusion with Vercel's v0.dev AI product. * docs: restore @vuetify/v0 and finish Vuetify0 prose --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* docs: document markdown twins on ai-tools page * docs: clarify markdown twin paths for index pages
* docs(philosophy): align axioms with source and adapter CSS carve-out Resolve PHILOSOPHY vs source contradictions: readonly is type-load-bearing with runtime wrap on plugin fallbacks only, DOM-query is a component-Root fire-and-forget read, theme adapters emit custom properties and color-scheme, and over-axioms (slots, aria-disabled, locale strings, Locale dual-mode, overlay roots, createQueue) are narrowed to match the tree. * fix(useTheme): stop emitting element-level color on [data-theme] ThemeAdapter.generate() still writes custom properties and color-scheme. It no longer sets color: var(--*-on-background) on the theme selector — applying tokens is Paper's job. * fix(createFilter): track reactive keys keys now accepts a ref or getter (MaybeRefOrGetter<readonly string[]>), so changing which fields are searched re-runs the filter. Passing a plain string[] is unchanged.
The v1.0 / unreleased-dev copy is outdated. Leave AppBanner wired so a future announcement can register a ticket, and default --app-banner-h to 0 so the shell does not reserve a 24px gap.
Disabled Toggle.Root now sets the HTML disabled attribute when as is "button" (the default) and omits aria-disabled on that path. Non-button hosts still get aria-disabled.
Docs toolbar actions now show the themed tooltip on hover and keyboard focus, and share the app's tooltip delay region.
Follow-up to #988. Remaining docs chrome still used native title for hover labels; those now go through AppTooltip so they share the plugin region. Examples keep native title.
Remember the selected rail in localStorage via useStorage, defaulting to Vuetify One. Enroll the pref on the always-mounted menu bar so the watcher survives the v-if'd dialog unmount.
Component/composable pages posted examples+api blobs (~4.5–11.5KB) and CF returned 403 HTML without CORS (Failed to fetch). Send a slim API summary only, drop example source, keep payload ≤2KB. Tracked on johnleider/ops#45.
* docs(benchmark): default history tooltip to last 5 runs Show only the 5 most recent benchmark runs in the trend tooltip by default. Users can click 'Show all N runs' to see full history. The sparkline still shows full history for visual context. * docs(benchmark): make history tooltip interactive/hoverable Add interactive prop to Tooltip.Root so users can move the pointer onto the tooltip content and click 'Show all N runs' without the tooltip disappearing when leaving the sparkline. --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
#966 stacked coarse-pointer py-2 on every row on top of gap-2, which made the mobile nav drawer too sparse. Drop the extra padding, shrink the chevron hit area to 24px, and use gap-1 below md.
Keep Vue-managed empty state out of the observed node so childList logs are not polluted, and add Update Text so characterData actually fires.
Monaco has no formatter for .vue, so Format did nothing on App.vue. Prettier now formats those files. An Auto format switch on the Format item and in editor settings runs it when the editor blurs, and is off by default so a blur rewrite cannot autosave a One playground. The blur path writes the file that lost focus. vue-repl flushes editor changes onto whichever file is active 250ms later, which would otherwise paste the formatted text into the file you just switched to.
Vue's browser compiler rejects `import type` from a package inside defineProps, defineEmits, and defineModel. Rewrite those imports to a relative src/v0-macros.ts shim when an example loads, and keep the shim out of the deletable file tree.
xs through xxl now follow the threshold key that matched. andUp and andDown use the fixed xs-to-xxl order, so an out-of-order custom map keeps name and the boolean flags in agreement.
* docs(paper): lock spec exclusivity and orchestrator wrapping A design system implements one pinned spec, all of it and nothing else. Vuetify wraps that package (v0 Button → MdButton → VBtn) and does not own Material. Onyx ships before Material. Emerald, Bulma, and Genesis SPECs name what they deliberately omit. * docs(agents): show the skills install for every package manager The skills add command was an npx-only fence. Match the other install blocks: pnpm, npm, yarn, and bun. * chore(dev): regenerate composable auto-imports Pick up the popover plugin globals and drop the duplicated V0Error export.
The guide offered three plugins/v0.ts files, and the theme cookie default made the color-scheme branch unreachable. One plugin now renders theme CSS on the server, shares viewport width, and installs hydration. Getting Started points at that file instead of a second one.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
…de-group (#1008) Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: johnleider <9064066+johnleider@users.noreply.github.com>
* docs: improve @paper/emerald README * docs: improve @paper/bulma README * docs: improve @vuetify/play README * docs: add Genesis package README * docs: fix license badge link * docs: fix license badge link * docs: fix license badge link * docs: fix license badge link * docs: improve Play README accessibility * docs(bulma): use centered Vuetify0 wordmark * docs(emerald): use centered Vuetify0 wordmark * docs(genesis): use centered Vuetify0 wordmark * docs: align package README logo size and alignment with packages/0 Co-authored-by: John Leider <johnleider@users.noreply.github.com> * docs: center package README logos Co-authored-by: John Leider <johnleider@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: John Leider <johnleider@users.noreply.github.com>
Archbox history snapshots for the two published versions that had no point in the series. Same host and bench suite as 1.2.1.
# Conflicts: # apps/docs/src/pages/systems/bulma/modal.md # packages/genesis/SPEC.md # pnpm-lock.yaml # pnpm-workspace.yaml
pnpm release:beta versions from a clean dev checkout, publishes under the beta dist-tag, and restores the tree so the version line never lands in git.
unicorn/no-process-exit allows process.exit only in shebang scripts and signal handlers. The refusals have to abort; exitCode alone would continue and could publish from the wrong branch.
Master's eslint flags unused regexp groups and unescaped CSS selectors. The devtools origin check and the Tour / focus-trap queries are the only hits.
Contributor
|
Member
Author
|
Closing this. The master sync and the beta-publish script are separate changes, and squash-merging this PR would collapse the commits already on master into one new SHA. Master is being merged into dev as a merge commit on its own. |
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.
Sync
origin/masterinto the dev line and add a local beta publish that does not commit version bumps.devpackage versions were still 1.2.0 while npmlatestis 1.2.3. A snapshot calculated from that stale line would publish1.2.1-beta-<datetime>, which is behind the stable release. This merge brings the public manifests in line with npm so the next beta calculates as1.3.0-beta-<datetime>.Beta publish
pnpm release:beta(scripts/changeset-beta.js) is the process. It is not changesets pre mode, anddevis not added torelease.yml.The script only runs from a clean checkout of the branch named
devwhose HEAD equalsorigin/dev. It runschangeset version --snapshot beta(config setssnapshot.useCalculatedVersion), builds, thenchangeset publish --tag beta --no-git-tag, and restores the working tree. Snapshot rewrites topackage.json/CHANGELOG.mdand the applied changeset files are never committed. Those files stay ondevfor the later stable cut.Install with
pnpm add @vuetify/v0@beta. A^1.2.3range will not take the beta.latestis not moved. No GitHub Release is minted.npm whoamihas to succeed locally; therelease.ymlOIDC publisher does not cover this script.The same run also publishes
@paper/genesis,@paper/emerald,@paper/bulma, and@vuetify/playunderbeta, because a prerelease does not satisfy theirworkspace:^ranges.@vuetify/paperstays private.This PR does not publish. After it lands on
origin/dev, log in to npm and runpnpm release:betafrom a cleandevcheckout.Merge resolutions
apps/docs/src/pages/systems/bulma/modal.md—useFocusTrapexists in Vuetify0; BuModal's migration onto it is still pending.packages/genesis/SPEC.md— keeps theGnDocsBadgetoken rows and the--v0-dividerrow.pnpm-workspace.yaml— master's catalog pins, plus dev's@vue/devtools-apiandvite-plugin-vue-devtools.pnpm-lock.yaml— regenerated from that catalog withpnpm install --lockfile-only.The merge also picks up master's eslint rules. Four test and example selectors now pass the id through
CSS.escape, and the devtools localhost check uses non-capturing groups. Behavior is unchanged.Fourteen patch changesets that already shipped on master are dropped by the merge: breadcrumbs ellipsis, button keyboard focus, data-table locale, datagrid resize, emerald calendar width, form fail-closed, form required, accent-insensitive match, input control omit-undefined, popover content id, popover plugin namespace, progress indeterminate, selection-layer cleanup, and tabs item focus target. They must not be re-noted on the 1.3.0 cut.