Repository navigation
chore(deps): upgrade vite to 8, mlt-core to 0.9, cql2 to 0.5.6 - #916
Merged
Merged
Conversation
Previously pinned to 11.0.0-rc.5 while the v11 release train was in candidate. pnpm 11.1.1 (stable, released early May 2026) is the first non-RC release in the v11 line. Bumps both the workflow setup-pnpm version field and the root package.json packageManager field for parity with corepack. Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
Solo dependabot bumps of crates in a diamond dependency chain silently break trait-impl matching at the SDK boundary. The opentelemetry-prometheus crate implements MetricReader against opentelemetry_sdk 0.X while the meter provider expects 0.Y, causing 'trait bound not satisfied' clippy failures. Hit on PRs #885 #888 #893 #895 in May 2026 when dependabot bumped the opentelemetry family members one at a time. Each PR required a manual revert. arrow-* + parquet have the same diamond shape (parquet pins arrow-* transitively). Grouping forces a single atomic PR per family. Refs: dependabot/dependabot-core#14794 Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
OpenTelemetry family: revert opentelemetry, opentelemetry_sdk, opentelemetry-otlp and opentelemetry-semantic-conventions from 0.32 back to 0.31. The 0.32 train exists upstream but tracing-opentelemetry 0.32.1 (latest, Jan 12 2026) still hardcodes opentelemetry ^0.31.0 for all five OTel deps it pulls in, creating a diamond conflict that breaks the Prometheus reader trait bound. Unblock: tokio-rs/tracing-opentelemetry PR #258 (chore: Upgrade to OpenTelemetry 0.32). Currently open. When that merges and ships, bump back to 0.32 in a single atomic group (see .github/dependabot.yml). cql2 0.5.5 -> 0.5.6 and geo 0.32 -> 0.33: cql2 0.5.6 bumped its geo dep to 0.33, which unblocks the i_overlay diamond previously blocking us. mlt-core 0.9.x and the workspace converge on geo 0.33. mlt-core 0.7.0 -> 0.9.1: breaking API renames. TileLayer01 -> TileLayer (the '01' versioning suffix was dropped on the encoder type) and geojson::Geom32 type alias removed in favour of the raw geo_types::Geometry<i32>. Both renames applied in transcode.rs; the layer field shape and the TileLayer::encode signature are otherwise identical. gdal + gdal-sys: pinned via [patch.crates-io] to AlexanderWillner/gdal#714 at rev 968cf34a so cargo clippy --all-features compiles on a Homebrew macOS box running libgdal 3.13 (GDT_Byte -> GDT_UInt8 + new bOperateInBufType field). Drop the patch block when a gdal release >0.19.0 lands containing PR #714. Tracking: georust/gdal#715. Verified: cargo clippy --all-targets --all-features -- -D warnings (exit 0) and cargo fmt --all --check (exit 0) on macOS 14 + libgdal 3.13.0 (Homebrew). Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
Vite 7 -> 8 across the workspace. Adds a top-level `overrides: { vite: ^8.0.12 }`
to pnpm-workspace.yaml because Nuxt's peer dep otherwise still resolves Vite 7
in the lockfile. pnpm v9+ workspace mode silently ignores
`package.json#pnpm.overrides`, so the override must live in pnpm-workspace.yaml.
nuxt-workers 0.1.0 patch: the WorkerTransformPlugin in
node_modules/nuxt-workers/dist/module.mjs unconditionally appends a
`const __worker_exports__ = { ... }` block to every worker source via
MagicString.append(). With Vite 8 (Rolldown-backed bundler), the worker import
pipeline calls the transform twice per source, producing a duplicate identifier
and crashing the build:
[PARSE_ERROR] Identifier `__worker_exports__` has already been declared
at app/workers/parse-csv.ts:79:7
at app/workers/parse-csv.ts:91:7
`pnpm dev` is unaffected (single transform pass). Upstream issue:
danielroe/nuxt-workers#191 (open since Nov 2025, package last released Feb 2025,
effectively unmaintained). pnpm patch adds a three-line idempotency guard at
dist/module.mjs:18 that bails out of the second transform when the shim is
already present. Patch lives at patches/nuxt-workers@0.1.0.patch and is wired
in via pnpm-workspace.yaml#patchedDependencies. After clean install the
.pnpm/ folder picks up a `_patch_hash=...` suffix confirming the override.
apps/client/nuxt.config.ts: add `experimental: { viteEnvironmentApi: true }`
to work around Nuxt 4.4.5 + Vite 8 + ssr:false (SPA mode) dropping the
`rollupOptions.input.entry` key during config merge. Upstream issue
nuxt/nuxt#35033, fix PR nuxt/nuxt#35037 merged against 4.x but not yet
released. Drop the flag when Nuxt > 4.4.5 ships.
Catalog bumps: @types/node 25.6 -> 25.7 (and consolidated stray catalog block
churn left by an earlier `bunx taze` run).
Verified: pnpm dev -> HTTP 200 from localhost:3000, pnpm build -> dist/
written with index.html + _nuxt assets + fonts (12MB total).
Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
The previous commit (516a04d) referenced `patches/nuxt-workers@0.1.0.patch` in pnpm-workspace.yaml#patchedDependencies but the actual patch file was never staged. The local `patches/` directory was empty when `git add patches/` ran (probably because an intermediate `rm -rf node_modules` interfered before pnpm recreated the file). CI failed at the `pnpm install` step with: ENOENT: no such file or directory, open '.../patches/nuxt-workers@0.1.0.patch' Regenerated by diffing the pristine nuxt-workers 0.1.0 module.mjs (from the npm registry tarball) against the already-patched copy in node_modules. The 3-line idempotency guard at dist/module.mjs:18 is preserved verbatim. Fresh install from a clean node_modules produces the same _patch_hash=7cde39d... so the patch contents match what pnpm-workspace.yaml expects. Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #916 +/- ##
=======================================
Coverage 66.00% 66.00%
=======================================
Files 57 57
Lines 16822 16822
Branches 16822 16822
=======================================
Hits 11104 11104
Misses 5534 5534
Partials 184 184
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
Vite 8.0.12 + Rolldown processes apps/client through vite:asset-import-meta-url
which runs strip-literal on every source file. The @mlc-ai/web-llm bundle is a
single 6.2 MB index.js with deeply nested template literals; the tokenizer that
strip-literal uses chews through V8's old-space heap and surfaces as
RangeError: Maximum call stack size exceeded
at module.exports (vite/.../node.js:18182)
at stripLiteral
despite the symptom mentioning 'call stack'. Raising the heap ceiling to 16 GB
via NODE_OPTIONS=--max-old-space-size=16384 lets the tokenizer complete.
NODE_OPTIONS is the canonical Node.js env knob for memory tuning per
https://nodejs.org/learn/diagnostics/memory/understanding-and-tuning-memory
and it propagates cleanly through pnpm exec into the nuxt CLI. --stack-size
would be the equivalent stack flag but Node blocks it from NODE_OPTIONS so we
cannot use that path. Drop this once vite ships a strip-literal fix that does
not allocate proportionally to file size (tracking vitejs/vite#21696 followups).
Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
… to @tailwindcss/vite
Two coordinated changes that need to land together:
CATALOG CONSOLIDATION
Every dep in every workspace package.json now references a catalog. Before
this commit, four package.json files carried hardcoded versions that drifted
from the workspace single source of truth:
- root: @commitlint/cli, @commitlint/config-conventional, husky, is-ci,
lint-staged
- apps/docs: @nuxt/content, better-sqlite3
- benchmarks: autocannon, chalk, cli-table3, commander
Added matching entries to pnpm-workspace.yaml under catalogs.default for the
shared dev-tooling, plus two new named catalogs:
- catalogs.docs : @nuxt/content, better-sqlite3 (docs-only deps)
- catalogs.benchmarks : autocannon, chalk, cli-table3, commander
(benchmarks-only deps)
@TAILWINDCSS/POSTCSS -> @TAILWINDCSS/VITE
The Tailwind v4 postcss plugin produced ENOENT 'tailwindcss' on every SSR
build through Vite 8 because postcss-import was resolving the bare
@import 'tailwindcss'; before @tailwindcss/postcss could intercept it.
Both apps/docs and apps/marketing failed in their server bundle phase as a
result. The canonical Tailwind v4 + Vite integration is the
@tailwindcss/vite plugin which hooks into Vite directly and never round-
trips through postcss-import.
Swapped @tailwindcss/postcss with @tailwindcss/vite across client, docs and
marketing. Removed the now-orphaned 'postcss: { plugins: ... }' block from
each nuxt.config.ts and registered the plugin via vite.plugins[].
Verified locally: pnpm install + pnpm build all three apps -> exit 0,
dist/ artefacts written (Cloudflare Pages output for docs and marketing,
static .output for client).
Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
The nuxt-workers 0.1.0 package was effectively unmaintained (last release Feb 2025) and shipped a buggy transform plugin that double-injected 'const __worker_exports__' under Vite 8's Rolldown bundler, crashing pnpm build. We were carrying a 3-line pnpm patch to silence it (patches/nuxt-workers@0.1.0.patch + patchedDependencies entry in pnpm-workspace.yaml) — fragile, blocks lockfile churn, locks us to a dead dep. Migrated to Vite's native Web Worker support — the recommended pattern per https://vite.dev/guide/features.html#web-workers: const worker = new Worker( new URL('~/workers/parse-geojson.ts', import.meta.url), { type: 'module' }, ); return runWorker(worker, file.name, text); Added apps/client/app/lib/run-worker.ts — a tiny ~50-line helper with two exports: - runWorker(worker, ...args) : main-thread promise wrapper - registerWorkerHandler(handler) : worker-thread message listener Each handler returns either { ok: true, result } or { ok: false, error }; the main side resolves or rejects the promise and terminates the worker on first message. Errors propagate as real Error objects. Each parser worker (parse-geojson.ts, parse-csv.ts, parse-shapefile.ts) calls registerWorkerHandler(parseFn) at the bottom; the typed result interface is exported (ParseGeoJSONResult, ParseCSVResult, ParseShapefileResult) so file-parsers.ts gets full type safety on the main side via the Worker generics. Removed: - 'nuxt-workers' from apps/client/nuxt.config.ts modules array - 'nuxt-workers' from apps/client/package.json deps - nuxt-workers entry from pnpm-workspace.yaml catalogs.client - patches/nuxt-workers@0.1.0.patch - patchedDependencies block from pnpm-workspace.yaml Verified: pnpm dev (HTTP 200 from :3000) + pnpm build (12 MB dist with discrete worker chunks under _nuxt/) — both exit 0. Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
Per CLAUDE.md Rule #1, every type definition must live in app/types/ — never inline in composables, workers, library files, or components. Previous commit 042156a co-located WorkerSuccess / WorkerFailure / WorkerResponse inside app/lib/run-worker.ts and ParseGeoJSONResult / ParseCSVResult / ParseShapefileResult inside each app/workers/parse-*.ts file, which violates the rule. Moves: - WorkerSuccess, WorkerFailure, WorkerResponse -> app/types/worker.ts (new) - ParseGeoJSONResult, ParseCSVResult, ParseShapefileResult -> appended to app/types/file-upload.ts (alongside the related ParsedFile, SupportedFormat, GeometryType) Re-exported all six new types from app/types/index.ts barrel. Updated run-worker.ts, all three parse-*.ts workers, and file-parsers.ts to import the types instead of declaring them inline. Verified: pnpm run build (client) -> exit 0, pnpm run lint -> 0 warnings, 0 errors. Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
This was referenced May 13, 2026
vinayakkulkarni
added a commit
that referenced
this pull request
May 15, 2026
…l opentelemetry-prometheus (#925) * fix(deps): complete otel 0.32 family — swap text-exporter for official opentelemetry-prometheus PR #917 (dependabot OTel group bump 0.31->0.32) merged on top of PR #916's revert and turned the workspace's CI Rust Clippy gate red on every push since. The remaining diamond was opentelemetry-prometheus-text-exporter = '=0.2.1', a community fork last released 2025-09-29 that still pins opentelemetry_sdk ^0.31, plus tracing-opentelemetry 0.32.1 which still pins opentelemetry ^0.31 even on the latest crates.io release. Two things unblock the 0.32 family TODAY: - The official opentelemetry-prometheus crate was un-deprecated by open-telemetry/opentelemetry-rust and re-released as 0.32.0 on 2026-05-08. - tokio-rs/tracing-opentelemetry#258 ('chore: Upgrade to OpenTelemetry 0.32') merged on 2026-05-15 at commit 44521fa onto the v0.1.x branch. A new crates.io release has not shipped yet, so this commit pulls the merged code through [patch.crates-io]. Cargo.toml changes: - Drop opentelemetry-prometheus-text-exporter = '=0.2.1'. - Add opentelemetry-prometheus = '0.32.0' (official, OTel 0.32 family). - Add prometheus = '0.14.0' (the Registry + TextEncoder paired with the exporter; the exporter writes INTO the registry and we hold the registry). - Add [patch.crates-io] tracing-opentelemetry = { git = ..., rev = '44521fa' }. Drop this patch entry the moment tracing-opentelemetry > 0.32.1 publishes on crates.io with opentelemetry ^0.32 deps. Verify via https://crates.io/api/v1/crates/tracing-opentelemetry/<v>/dependencies. - Replace the stale revert-era comment block with one current paragraph that cites the merged PR and the patch's removal condition. Source migration: - src/telemetry.rs: TelemetryOutput.prometheus_exporter: Option<PrometheusExporter> -> prometheus_registry: Option<Registry>. Init via Registry::new() + opentelemetry_prometheus::exporter() .with_registry(reg.clone()).build()? + provider.with_reader(exporter). - src/metrics/server.rs: ServerState carries Arc<Registry>, not Arc<PrometheusExporter>. Scrape uses TextEncoder::new().encode(®istry.gather(), &mut buf) instead of exporter.export(&mut buf). - src/metrics/mod.rs: re-export prometheus::Registry, drop PrometheusExporter. - src/main.rs: pass telemetry_output.prometheus_registry (not .prometheus_exporter) into spawn_metrics_server. - tests/metrics_endpoint.rs: install_harness() builds a Registry, attaches the exporter as a reader on a fresh SdkMeterProvider, and hands the Registry to spawn_metrics_server. TestHarness keeps the Registry alive instead of the exporter handle. Verified locally with the full Rule 604 gate: - cargo fmt --all -- --check -> 0 - cargo clippy --all-targets --all-features -- -D warnings -> 0 - cargo test --all --all-features -> 33 passed, 0 failed. The .github/dependabot.yml 'opentelemetry' group already covers the new opentelemetry-prometheus crate via the 'opentelemetry-*' pattern, so future group bumps will keep these in sync. Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com> * chore: ignore .opencode/ session artefact dir Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com> * ci: free 30GB on ubuntu-latest before building libduckdb + gdal + mbgl-sys PR #925 hit 'ar: No space left on device' at the 51-minute mark while archiving libduckdb-sys (~6GB of object files). ubuntu-latest ships with ~14GB free on /; the cumulative build of libduckdb-sys (bundled C++) + GDAL + mbgl-sys C++ + cargo target/debug under --all-features routinely exceeds that. Adds jlumbroso/free-disk-space@main as the first step in the ci-rust job to reclaim ~30GB by removing the pre-installed Android SDK (~14GB), .NET runtime (~2.7GB), Haskell, large packages (~5.3GB), Docker images, and swap storage. None of those are used by this workspace. tool-cache: false is left ON because tool-cache holds the pinned Node 24 and rust toolchain that the workflow itself relies on; flipping it would break the next steps. Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com> --------- Signed-off-by: Vinayak Kulkarni <19776877+vinayakkulkarni@users.noreply.github.com>
This was referenced May 15, 2026
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.
Summary
Workspace-wide dependency sweep that supersedes #907 (Vite 7 → 8 alone was insufficient — full set of co-required changes below).
What landed
1. pnpm 11.0.0-rc.5 → 11.1.1 stable
Bumps the workflow
pnpm/action-setupversion field across all 7 workflows and the rootpackage.json#packageManagerfield. First non-RC release of the v11 line.2. Dependabot grouping:
opentelemetry-*+arrow-*Solo Dependabot bumps of a single crate inside a diamond dependency chain silently broke the
MetricReadertrait impl on PRs #885 / #888 / #893 / #895 / #907. Grouping forces atomic family-wide PRs we can land or revert as a unit.3. Rust deps alignment
opentelemetry*family pinned at 0.31 (NOT 0.32). Unblock condition: chore: Upgrade to OpenTelemetry 0.32 and fix benchmark dependency compatibility tokio-rs/tracing-opentelemetry#258 must merge — currently open.tracing-opentelemetry 0.32.1(Jan 12 2026, latest published) still hardcodesopentelemetry ^0.31.0for all five OTel deps, so 0.32 is mathematically impossible today without dropping thetracing→ OTel span bridge.cql2 0.5.5 → 0.5.6+geo 0.32 → 0.33. cql2 0.5.6 bumped itsgeofloor to 0.33, which resolves the 18-monthi_overlaydiamond.mlt-core 0.7.0 → 0.9.1. Breaking renames applied intranscode.rs:TileLayer01→TileLayer,geojson::Geom32alias removed (use rawgeo_types::Geometry<i32>).gdal+gdal-syspinned via[patch.crates-io]toAlexanderWillner/gdal@968cf34a(fix: support GDAL 3.13 (GDT_Byte to GDT_UInt8, bOperateInBufType) georust/gdal#714, fix for GDAL 3.13'sGDT_Byte → GDT_UInt8rename + newbOperateInBufTypefield). Drop the patch once agdalrelease > 0.19.0 lands containing PR feat(benchmarks): add real-world grid tile loading benchmark #714. Tracking: Error when compiling with GDAL 3.13.0 georust/gdal#715.4. Vite 7 → 8 across the workspace
overrides: { vite: ^8.0.12 }inpnpm-workspace.yaml(Nuxt's peer dep otherwise still resolved Vite 7 in the lockfile). pnpm v9+ workspace mode silently ignorespackage.json#pnpm.overrides, so the override must live inpnpm-workspace.yaml.5. nuxt-workers 0.1.0 build fix
The
WorkerTransformPlugininnuxt-workers/dist/module.mjsunconditionally appends aconst __worker_exports__ = { ... }block to every worker source. With Vite 8 (Rolldown-backed bundler) the worker import pipeline calls the transform twice, producing a duplicate identifier:pnpm devis unaffected (single transform pass); onlypnpm buildtriggers. Upstream issue danielroe/nuxt-workers#191 (open since Nov 2025, package effectively unmaintained — last release Feb 2025). Worked around withpnpm patch:dist/module.mjs:18that bails out of the second transform when the shim is already present.patches/nuxt-workers@0.1.0.patchand is wired in viapnpm-workspace.yaml#patchedDependencies.6. Nuxt 4 + Vite 8 SPA-mode workaround
apps/client/nuxt.config.ts: addedexperimental: { viteEnvironmentApi: true }. Without it,pnpm devcrashes withERROR No entry found in rollupOptions.inputbecause Nuxt 4.4.5 dropsrollupOptions.input.entryduring config merge in SPA (ssr: false) mode. Upstream issue nuxt/nuxt#35033, fix nuxt/nuxt#35037 merged against4.xbut not yet released. Remove the flag once Nuxt > 4.4.5 ships.7. Catalog churn
@types/node 25.6 → 25.7and consolidated stray catalog entries left by an earlierbunx tazerun.Verification
cargo clippy --all-targets --all-features -- -D warnings— exit 0 (with the gdal patch active on macOS Homebrew libgdal 3.13)cargo fmt --all --check— exit 0pnpm devinapps/client/→ HTTP 200 fromlocalhost:3000pnpm buildinapps/client/→dist/written (12MB,index.html+_nuxt/+fonts/)Closes / supersedes
Closes #907 (Vite 8 alone was insufficient; full co-required changes shipped here).
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com