Skip to content

chore: update package manager to pnpm v12#12811

Merged
zkochan merged 7 commits into
mainfrom
update-pnpm-to-v12
Jul 9, 2026
Merged

chore: update package manager to pnpm v12#12811
zkochan merged 7 commits into
mainfrom
update-pnpm-to-v12

Conversation

@zkochan

@zkochan zkochan commented Jul 5, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • Chores
    • Updated the project’s package manager to a newer pnpm alpha release.
    • Adjusted a workspace command to use the updated depth flag format.
    • Removed an outdated workspace package override.

@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e1086f24-c3fd-4e63-a2ee-b0e83880f3c0

📥 Commits

Reviewing files that changed from the base of the PR and between 2b5e9bc and 16b5164.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !pnpm-lock.yaml
📒 Files selected for processing (3)
  • .github/scripts/run-ts-tests-chunk.mjs
  • package.json
  • pnpm-workspace.yaml
💤 Files with no reviewable changes (1)
  • pnpm-workspace.yaml

📝 Walkthrough

Walkthrough

The project updates its pnpm toolchain metadata to 12.0.0-alpha.5, removes the pinned @pnpm/pacquet workspace override, and changes the TypeScript test runner’s pnpm list depth argument format.

Changes

pnpm toolchain update

Layer / File(s) Summary
Update pnpm configuration
package.json, pnpm-workspace.yaml
The configured pnpm version changes to 12.0.0-alpha.5, and the @pnpm/pacquet config dependency override is removed.
Adjust test package listing
.github/scripts/run-ts-tests-chunk.mjs
The test runner passes --depth=-1 as one argument when listing packages.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • pnpm/pnpm#12612: Modifies the same sharded Windows TypeScript test runner and its pnpm list invocation.
  • pnpm/pnpm#11765: Updates pnpm toolchain metadata and the @pnpm/pacquet workspace configuration.
  • pnpm/pnpm#11719: Updates the root pnpm version metadata in package.json.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch update-pnpm-to-v12

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Integrated-Benchmark Report (Linux)

Commit: 41bdaf333678

Each scenario reports direct installs and pnpr installs. Bencher consumes pacquet@HEAD and pnpr@HEAD.

Scenario: Isolated linker: fresh restore, cold cache + cold store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 4.193 ± 0.192 3.999 4.646 1.95 ± 0.10
pacquet@main 4.180 ± 0.184 3.991 4.472 1.95 ± 0.10
pnpr@HEAD 2.149 ± 0.054 2.060 2.226 1.00
pnpr@main 2.197 ± 0.128 2.049 2.432 1.02 ± 0.06
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 4.1927293183200005,
      "stddev": 0.19163205248697363,
      "median": 4.10834073342,
      "user": 3.90130542,
      "system": 3.54549332,
      "min": 3.99936772192,
      "max": 4.6457731869200005,
      "times": [
        4.6457731869200005,
        4.19471068392,
        4.10315153192,
        4.21179809192,
        4.39231800992,
        4.10556683292,
        4.06240680692,
        3.99936772192,
        4.111114633920001,
        4.10108568292
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 4.180159650120001,
      "stddev": 0.1840025559762075,
      "median": 4.092714495920001,
      "user": 3.8819046199999994,
      "system": 3.549110319999999,
      "min": 3.99100806192,
      "max": 4.472306313920001,
      "times": [
        4.262154053920001,
        4.0462214559200005,
        3.99100806192,
        4.472306313920001,
        4.01534480192,
        4.138285345920001,
        4.3931086309200005,
        4.3970350189200005,
        4.038989171920001,
        4.04714364592
      ]
    },
    {
      "command": "pnpr@HEAD",
      "mean": 2.14871041142,
      "stddev": 0.05433836132632036,
      "median": 2.16213093192,
      "user": 2.6678890199999996,
      "system": 3.0794845199999994,
      "min": 2.05998835192,
      "max": 2.22638831392,
      "times": [
        2.16943865292,
        2.05998835192,
        2.11089128992,
        2.07985231892,
        2.21645653192,
        2.15482321092,
        2.17190907292,
        2.12744152792,
        2.22638831392,
        2.16991484292
      ]
    },
    {
      "command": "pnpr@main",
      "mean": 2.19743466022,
      "stddev": 0.1280936910760945,
      "median": 2.20141439942,
      "user": 2.6535283199999995,
      "system": 3.0270749199999996,
      "min": 2.04871482592,
      "max": 2.43210473092,
      "times": [
        2.35980659292,
        2.22932925792,
        2.24893117192,
        2.43210473092,
        2.06933475892,
        2.21846767692,
        2.06877811092,
        2.11451835392,
        2.04871482592,
        2.18436112192
      ]
    }
  ]
}

Scenario: Isolated linker: fresh restore, hot cache + hot store

Command Mean [ms] Min [ms] Max [ms] Relative
pacquet@HEAD 655.7 ± 17.6 632.8 691.3 1.00
pacquet@main 661.8 ± 47.9 629.8 788.1 1.01 ± 0.08
pnpr@HEAD 717.2 ± 14.8 699.9 745.1 1.09 ± 0.04
pnpr@main 722.3 ± 47.6 691.5 852.2 1.10 ± 0.08
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 0.6556674,
      "stddev": 0.017563618207453165,
      "median": 0.6519567163000001,
      "user": 0.38777806000000004,
      "system": 1.3378484199999998,
      "min": 0.6327935838000001,
      "max": 0.6913298678,
      "times": [
        0.6418471008000001,
        0.6492602058000001,
        0.6729522468000001,
        0.6327935838000001,
        0.6581726538000001,
        0.6400412298000001,
        0.6675537128000001,
        0.6546532268,
        0.6480701718,
        0.6913298678
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 0.6618006751000001,
      "stddev": 0.04793767325014555,
      "median": 0.6446410013000001,
      "user": 0.38745376000000004,
      "system": 1.3385665199999996,
      "min": 0.6297963378000001,
      "max": 0.7881175988000001,
      "times": [
        0.6440076168000001,
        0.6297963378000001,
        0.6611332358,
        0.6385519848000001,
        0.6458868898000001,
        0.6376076388,
        0.6452743858000001,
        0.7881175988000001,
        0.6931805848000001,
        0.6344504778000001
      ]
    },
    {
      "command": "pnpr@HEAD",
      "mean": 0.7171516638000001,
      "stddev": 0.014781152702166633,
      "median": 0.7180092853000001,
      "user": 0.41547036000000004,
      "system": 1.3771440199999998,
      "min": 0.6999003708000001,
      "max": 0.7451088008000001,
      "times": [
        0.7184007058,
        0.7361485448000001,
        0.7451088008000001,
        0.7005375788000001,
        0.6999003708000001,
        0.7070403808000001,
        0.7059833968000001,
        0.7198837618000001,
        0.7208952328000001,
        0.7176178648000001
      ]
    },
    {
      "command": "pnpr@main",
      "mean": 0.7223299727000001,
      "stddev": 0.04762297418002603,
      "median": 0.7061898618000001,
      "user": 0.40031616000000003,
      "system": 1.35665572,
      "min": 0.6915194358000001,
      "max": 0.8522069468000001,
      "times": [
        0.6915194358000001,
        0.7337703028000001,
        0.6968188828,
        0.7030170388000001,
        0.7265802658000001,
        0.7048545138000001,
        0.7075252098000001,
        0.7131994478000001,
        0.8522069468000001,
        0.6938076828
      ]
    }
  ]
}

Scenario: Isolated linker: fresh install, cold cache + cold store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 4.321 ± 0.050 4.236 4.400 2.00 ± 0.07
pacquet@main 4.286 ± 0.055 4.187 4.402 1.99 ± 0.07
pnpr@HEAD 2.155 ± 0.069 2.069 2.258 1.00
pnpr@main 2.157 ± 0.116 2.022 2.368 1.00 ± 0.06
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 4.32121646296,
      "stddev": 0.04982309706597351,
      "median": 4.31674748816,
      "user": 3.7732905599999995,
      "system": 3.45671702,
      "min": 4.23587630566,
      "max": 4.40036962666,
      "times": [
        4.40036962666,
        4.31024188466,
        4.28125161066,
        4.35527983866,
        4.32325309166,
        4.38616909066,
        4.28353233066,
        4.329329115659999,
        4.30686173466,
        4.23587630566
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 4.28596578886,
      "stddev": 0.05530251363170166,
      "median": 4.28026864966,
      "user": 3.7596940599999997,
      "system": 3.43098762,
      "min": 4.18663115566,
      "max": 4.40186251266,
      "times": [
        4.31154338266,
        4.40186251266,
        4.18663115566,
        4.2964316796599995,
        4.270363456659999,
        4.27144995566,
        4.256391939659999,
        4.289087343659999,
        4.3204734906599995,
        4.25542297166
      ]
    },
    {
      "command": "pnpr@HEAD",
      "mean": 2.1552438507600007,
      "stddev": 0.06946898699469427,
      "median": 2.1486405176600005,
      "user": 2.48389656,
      "system": 2.9610646199999993,
      "min": 2.0690641376600003,
      "max": 2.25823384866,
      "times": [
        2.0690641376600003,
        2.07903935666,
        2.17239779866,
        2.1640836926600002,
        2.1331973426600004,
        2.22746104666,
        2.12386057466,
        2.25823384866,
        2.24137611566,
        2.08372459366
      ]
    },
    {
      "command": "pnpr@main",
      "mean": 2.15696007656,
      "stddev": 0.11637021229532256,
      "median": 2.13439537716,
      "user": 2.5202227599999993,
      "system": 2.91359782,
      "min": 2.0218742676600003,
      "max": 2.36805709966,
      "times": [
        2.1184886776600003,
        2.14440456166,
        2.14352854366,
        2.36805709966,
        2.0218742676600003,
        2.06885370466,
        2.2281675196600004,
        2.02932139966,
        2.1252622106600003,
        2.32164278066
      ]
    }
  ]
}

Scenario: Isolated linker: fresh install, hot cache + hot store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 1.374 ± 0.013 1.350 1.393 2.10 ± 0.03
pacquet@main 1.388 ± 0.059 1.344 1.549 2.12 ± 0.09
pnpr@HEAD 0.684 ± 0.038 0.653 0.789 1.05 ± 0.06
pnpr@main 0.654 ± 0.007 0.644 0.666 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 1.3739970053800001,
      "stddev": 0.013026242076098857,
      "median": 1.37474124948,
      "user": 1.3360634,
      "system": 1.7049895400000001,
      "min": 1.35019860348,
      "max": 1.39258210148,
      "times": [
        1.37719299048,
        1.39258210148,
        1.3753160704799998,
        1.35867728448,
        1.36837174748,
        1.37416642848,
        1.38127016148,
        1.39067148248,
        1.37152318348,
        1.35019860348
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 1.38753841548,
      "stddev": 0.058972779242372354,
      "median": 1.3718041159799998,
      "user": 1.3500895999999998,
      "system": 1.69201494,
      "min": 1.34372811648,
      "max": 1.54893044748,
      "times": [
        1.40207873548,
        1.3776726474799998,
        1.37028990248,
        1.54893044748,
        1.38298853848,
        1.36277512348,
        1.34372811648,
        1.3559610764799999,
        1.37331832948,
        1.35764123748
      ]
    },
    {
      "command": "pnpr@HEAD",
      "mean": 0.6838603343800002,
      "stddev": 0.037939390303996,
      "median": 0.67367258448,
      "user": 0.3453023,
      "system": 1.30082214,
      "min": 0.6525830224800001,
      "max": 0.7891529034800001,
      "times": [
        0.6525830224800001,
        0.6806085724800001,
        0.6726821204800001,
        0.7891529034800001,
        0.66507500348,
        0.6755487494800001,
        0.6727558474800001,
        0.6828519554800001,
        0.6741062934800001,
        0.67323887548
      ]
    },
    {
      "command": "pnpr@main",
      "mean": 0.65368701098,
      "stddev": 0.006734517258303814,
      "median": 0.65310468298,
      "user": 0.34388680000000005,
      "system": 1.2779603399999997,
      "min": 0.6440972704800001,
      "max": 0.66613586548,
      "times": [
        0.6571131534800001,
        0.66613586548,
        0.6489688054800001,
        0.6611953794800001,
        0.6554424384800001,
        0.64684624148,
        0.6440972704800001,
        0.6555906514800001,
        0.6507669274800001,
        0.65071337648
      ]
    }
  ]
}

Scenario: Isolated linker: fresh install, cold cache + hot store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 3.067 ± 0.036 3.023 3.139 4.58 ± 0.10
pacquet@main 3.047 ± 0.043 3.002 3.135 4.55 ± 0.11
pnpr@HEAD 0.677 ± 0.012 0.657 0.697 1.01 ± 0.03
pnpr@main 0.669 ± 0.013 0.655 0.695 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 3.06680781566,
      "stddev": 0.03584814851881262,
      "median": 3.0583894800599998,
      "user": 1.8063188399999999,
      "system": 1.97369958,
      "min": 3.02278098356,
      "max": 3.13890501156,
      "times": [
        3.08406205556,
        3.07708182856,
        3.02278098356,
        3.05665106356,
        3.06012789656,
        3.04333428356,
        3.03293541656,
        3.13890501156,
        3.10778077056,
        3.04441884656
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 3.04689064946,
      "stddev": 0.04263955971826759,
      "median": 3.03041132456,
      "user": 1.77852344,
      "system": 1.9710497800000002,
      "min": 3.00163772956,
      "max": 3.13450139856,
      "times": [
        3.03233263556,
        3.02489163956,
        3.02701542756,
        3.02927952256,
        3.00163772956,
        3.00963380256,
        3.03154312656,
        3.08343935356,
        3.13450139856,
        3.09463185856
      ]
    },
    {
      "command": "pnpr@HEAD",
      "mean": 0.67738097346,
      "stddev": 0.011988792687341314,
      "median": 0.6772079930600001,
      "user": 0.34451164,
      "system": 1.3081797800000001,
      "min": 0.65652397456,
      "max": 0.69739145556,
      "times": [
        0.6825465245600001,
        0.6782491405600001,
        0.6718713995600001,
        0.68384193756,
        0.6761668455600001,
        0.66723708256,
        0.6690221725600001,
        0.65652397456,
        0.69739145556,
        0.69095920156
      ]
    },
    {
      "command": "pnpr@main",
      "mean": 0.6690560754600001,
      "stddev": 0.012766002019247807,
      "median": 0.66549878956,
      "user": 0.35101383999999997,
      "system": 1.27761688,
      "min": 0.65482248156,
      "max": 0.6948622855600001,
      "times": [
        0.6581661185600001,
        0.6611016485600001,
        0.65482248156,
        0.66161868556,
        0.66975375356,
        0.6753847725600001,
        0.66937889356,
        0.6948622855600001,
        0.68484545156,
        0.66062666356
      ]
    }
  ]
}

Scenario: Isolated linker: fresh resolve, hot cache, offline

Command Mean [ms] Min [ms] Max [ms] Relative
pacquet@HEAD 654.5 ± 12.0 640.4 675.2 6.06 ± 0.11
pacquet@main 652.0 ± 13.3 637.3 685.9 6.04 ± 0.13
pnpr@HEAD 108.0 ± 0.5 107.0 109.3 1.00 ± 0.01
pnpr@main 108.0 ± 0.5 107.0 108.8 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 0.65447396952,
      "stddev": 0.011994060335464914,
      "median": 0.6529587302200001,
      "user": 0.62471594,
      "system": 0.1476601,
      "min": 0.6404327307200001,
      "max": 0.67515162372,
      "times": [
        0.6415626507200001,
        0.6670784227200001,
        0.6568774757200001,
        0.6537159797200001,
        0.6671730247200001,
        0.67515162372,
        0.6522014807200001,
        0.6404327307200001,
        0.6463523997200001,
        0.6441939067200001
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 0.6519586924200003,
      "stddev": 0.013293831184445416,
      "median": 0.6496697637200001,
      "user": 0.62086194,
      "system": 0.15050469999999996,
      "min": 0.6372960807200001,
      "max": 0.6858768087200001,
      "times": [
        0.6470864067200001,
        0.6508077117200001,
        0.6486203087200001,
        0.65071921872,
        0.6858768087200001,
        0.6410940257200001,
        0.6372960807200001,
        0.6478785467200001,
        0.6510490117200001,
        0.6591588047200001
      ]
    },
    {
      "command": "pnpr@HEAD",
      "mean": 0.10798476224000002,
      "stddev": 0.0005063498522330448,
      "median": 0.10795642572000001,
      "user": 0.027056,
      "system": 0.019093299999999997,
      "min": 0.10695111972000002,
      "max": 0.10932328672000001,
      "times": [
        0.10821227672000001,
        0.10843675172000002,
        0.10739048972000001,
        0.10832016372000002,
        0.10827289672000001,
        0.10774774772000001,
        0.10782948772,
        0.10782790572,
        0.10814568872000001,
        0.10734769072000001,
        0.10932328672000001,
        0.10695111972000002,
        0.10805985672000001,
        0.10741727972000001,
        0.10837406572000001,
        0.10792079072,
        0.10777537572000001,
        0.10795642572000001,
        0.10850908672000001,
        0.10739799372000002,
        0.10802280072,
        0.10810918072,
        0.10768879472000001,
        0.10778463472000001,
        0.10879726472000001
      ]
    },
    {
      "command": "pnpr@main",
      "mean": 0.10797530504000001,
      "stddev": 0.0005246838353278988,
      "median": 0.10816691872,
      "user": 0.027566320000000005,
      "system": 0.018944739999999998,
      "min": 0.10703723972000001,
      "max": 0.10875377372000002,
      "times": [
        0.10737459972,
        0.10777733172000001,
        0.10837748072000002,
        0.10742138672000001,
        0.10844608072,
        0.10875377372000002,
        0.10807593872000001,
        0.10738355672000001,
        0.10824910172,
        0.10855934172000001,
        0.10744554172000001,
        0.10848783772000001,
        0.10778762072,
        0.10703723972000001,
        0.10853459472000002,
        0.10830773072000001,
        0.10711320172000001,
        0.10816691872,
        0.10847610472000001,
        0.10772041572,
        0.10821616172000001,
        0.10761975072,
        0.10849354072,
        0.10721897372000001,
        0.10833840072
      ]
    }
  ]
}

Scenario: Isolated linker: fresh restore, cold cache + cold store + cold pnpr

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 6.966 ± 0.146 6.771 7.132 1.39 ± 0.04
pacquet@main 6.964 ± 0.144 6.818 7.284 1.39 ± 0.04
pnpr@HEAD 5.001 ± 0.102 4.848 5.169 1.00 ± 0.03
pnpr@main 4.999 ± 0.108 4.871 5.172 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 6.96605315388,
      "stddev": 0.14587738209129397,
      "median": 6.97707099208,
      "user": 4.05991466,
      "system": 3.8247993799999995,
      "min": 6.77105538258,
      "max": 7.13245858158,
      "times": [
        7.03624400258,
        7.06397941458,
        7.13245858158,
        7.12358758658,
        6.83671727658,
        6.82672098958,
        6.77105538258,
        6.91789798158,
        7.1305607465800005,
        6.82130957658
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 6.963556656180001,
      "stddev": 0.1439829016823795,
      "median": 6.91671682408,
      "user": 4.02259606,
      "system": 3.84142698,
      "min": 6.8181582055800005,
      "max": 7.2842367255800005,
      "times": [
        6.83446738858,
        6.8181582055800005,
        6.94466744258,
        6.92779232058,
        6.905641327580001,
        7.11736354558,
        7.03212851158,
        7.2842367255800005,
        6.87102715358,
        6.90008394058
      ]
    },
    {
      "command": "pnpr@HEAD",
      "mean": 5.000582384079999,
      "stddev": 0.10189158118801318,
      "median": 5.001675155580001,
      "user": 2.7570732599999994,
      "system": 3.2636564799999994,
      "min": 4.84782616958,
      "max": 5.16934144958,
      "times": [
        5.004135943580001,
        5.08053801358,
        5.11116359558,
        4.910906654580001,
        5.16934144958,
        4.84782616958,
        5.03351520958,
        4.958589287580001,
        4.9992143675800005,
        4.89059314958
      ]
    },
    {
      "command": "pnpr@main",
      "mean": 4.99936708558,
      "stddev": 0.10841850226500996,
      "median": 4.9573054370800005,
      "user": 2.72950086,
      "system": 3.26675628,
      "min": 4.87081048558,
      "max": 5.17233246658,
      "times": [
        5.17233246658,
        4.88524154858,
        4.95532289758,
        5.00547656958,
        4.94689034958,
        4.93581141058,
        4.87081048558,
        4.959287976580001,
        5.15533743558,
        5.10715971558
      ]
    }
  ]
}

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🐰 Bencher Report

Branchpr/12811
Testbedpacquet
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
isolated-linker.fresh-install.cold-cache.cold-store📈 view plot
🚷 view threshold
4,321.22 ms
(+1.90%)Baseline: 4,240.68 ms
5,088.82 ms
(84.92%)
isolated-linker.fresh-install.cold-cache.hot-store📈 view plot
🚷 view threshold
3,066.81 ms
(+1.26%)Baseline: 3,028.72 ms
3,634.47 ms
(84.38%)
isolated-linker.fresh-install.hot-cache.hot-store📈 view plot
🚷 view threshold
1,374.00 ms
(+1.88%)Baseline: 1,348.63 ms
1,618.35 ms
(84.90%)
isolated-linker.fresh-resolve.hot-cache.offline📈 view plot
🚷 view threshold
654.47 ms
(+2.60%)Baseline: 637.87 ms
765.44 ms
(85.50%)
isolated-linker.fresh-restore.cold-cache.cold-store📈 view plot
🚷 view threshold
4,192.73 ms
(+4.76%)Baseline: 4,002.13 ms
4,802.56 ms
(87.30%)
isolated-linker.fresh-restore.cold-cache.cold-store.cold-pnpr📈 view plot
🚷 view threshold
6,966.05 ms
(+1.97%)Baseline: 6,831.16 ms
8,197.39 ms
(84.98%)
isolated-linker.fresh-restore.hot-cache.hot-store📈 view plot
🚷 view threshold
655.67 ms
(+2.50%)Baseline: 639.68 ms
767.62 ms
(85.42%)
🐰 View full continuous benchmarking report in Bencher

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

🐰 Bencher Report

Branchpr/12811
Testbedpnpr

⚠️ WARNING: No Threshold found!

Without a Threshold, no Alerts will ever be generated.

Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the --ci-only-thresholds flag.

Click to view all benchmark results
BenchmarkLatencymilliseconds (ms)
isolated-linker.fresh-install.cold-cache.cold-store📈 view plot
⚠️ NO THRESHOLD
2,155.24 ms
isolated-linker.fresh-install.cold-cache.hot-store📈 view plot
⚠️ NO THRESHOLD
677.38 ms
isolated-linker.fresh-install.hot-cache.hot-store📈 view plot
⚠️ NO THRESHOLD
683.86 ms
isolated-linker.fresh-resolve.hot-cache.offline📈 view plot
⚠️ NO THRESHOLD
107.98 ms
isolated-linker.fresh-restore.cold-cache.cold-store📈 view plot
⚠️ NO THRESHOLD
2,148.71 ms
isolated-linker.fresh-restore.cold-cache.cold-store.cold-pnpr📈 view plot
⚠️ NO THRESHOLD
5,000.58 ms
isolated-linker.fresh-restore.hot-cache.hot-store📈 view plot
⚠️ NO THRESHOLD
717.15 ms
🐰 View full continuous benchmarking report in Bencher

zkochan added a commit that referenced this pull request Jul 7, 2026
…tore index (#12829)

Runtime archives (Node.js / Bun / Deno) ship no package.json, so pacquet
synthesizes one carrying name, version, and bin. That synthesized manifest was
only added to the in-memory cas_paths in fetch_binary_resolution_to_cas, after
the download had already queued the store-index row, so the persisted
PackageFilesIndex recorded no package.json and no bundled manifest.

A cold fetch masks this — the current install's slot still gets the manifest
from cas_paths. But a warm install materializes the runtime straight from the
store-index row (via the warm-batch prefetch, which never calls
fetch_binary_resolution_to_cas), so the slot lands without a package.json and
the warm-batch bin linker finds no bin. That is the CI failure on
#12811: the root install cold-fetches node@runtime:26.4.0 and the
later pnpm dlx node@runtime:26.4.0 warm-reads the manifest-less row and dies in
getBinName with dlx_read_manifest.

Thread the synthesized manifest into the two binary download paths as
append_manifest, mirroring pnpm's appendManifest: fold it into the extracted
output's cas_paths, the row's files map, and its bundled manifest before the
row is persisted, so warm and cold installs land the same slot. This brings
pacquet in line with the TypeScript stack, which already bakes appendManifest
into the files index via addManifestToCafs.
zkochan added a commit that referenced this pull request Jul 7, 2026
Support the recursive project-listing path used by the pnpm repo CI test chunker.

Pacquet's `list` depth parser already treated `-1` as project-only mode, but clap rejected `--depth -1` before the parser saw it. In addition, `dispatch_query::list` ignored the recursive flag, so `pn -r list --depth=-1 --json` returned only the workspace root. The chunker then found no `.test` scripts and skipped every Windows chunk.

Allow hyphen-prefixed depth values, pass the recursive flag into `list` and `ll`, and render selected workspace projects for recursive project-only listings. This matches TypeScript pnpm for `pn -r list --depth -1 --json` and keeps filtered recursive selection on the shared workspace filtering path.

Sanitize root package names in tree-mode labels before printing dependency-free roots, matching pacquet's existing terminal-output sanitizer for other list labels. The TypeScript list helper still prints raw names and can be aligned in a separate TS changeset if maintainers want exact parity for that hardening.

Also map the current `pkg` command in the version-switch command-name helper so the merge commit remains exhaustive under Dylint.

Adds parser, integration, and renderer regressions for the CI command shape, package-param project-only parity, and root-label sanitization.

Related to #12811.
@zkochan
zkochan marked this pull request as ready for review July 9, 2026 22:12
Copilot AI review requested due to automatic review settings July 9, 2026 22:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Upgrade package manager to pnpm v12 (alpha) and align CI tooling

⚙️ Configuration changes 🐞 Bug fix 🕐 20-40 Minutes

Grey Divider

AI Description

• Switch repo package manager pin to pnpm 12.0.0-alpha.5 for development consistency.
• Regenerate pnpm lockfile/workspace metadata to match pnpm v12 packaging behavior.
• Fix CI package listing invocation to use pnpm v12-compatible --depth flag syntax.
Diagram

graph TD
  A["GitHub Actions CI"] --> B["run-ts-tests-chunk.mjs"] --> C["pnpm v12"]
  C --> D["package.json"]
  C --> E["pnpm-lock.yaml"]
  C --> F["pnpm-workspace.yaml"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Wait for pnpm 12 stable (non-alpha) before pinning
  • ➕ Reduces risk of upstream breaking changes in an alpha release
  • ➕ Less churn in lockfile metadata as pnpm 12 stabilizes
  • ➖ Delays adoption work and any pnpm 12-only fixes/features
  • ➖ May extend the period of dual-support burden across tooling
2. Use Corepack to manage pnpm 12 without pinning an alpha in package.json
  • ➕ Keeps repo metadata cleaner while still enabling pnpm 12 usage
  • ➕ Allows CI to explicitly control the pnpm version via Node/Corepack setup
  • ➖ Developers still need correct Corepack setup; drift is possible
  • ➖ May be less explicit than a hard packageManager pin for local environments
3. Pin pnpm 11.x and add compatibility shims for scripts
  • ➕ Avoids lockfile/toolchain changes tied to pnpm 12 packaging
  • ➕ Lower immediate rollout risk
  • ➖ Continues accumulating pnpm 12 migration debt
  • ➖ May require maintaining two code paths in CI/scripts longer

Recommendation: The PR’s approach (explicitly pinning pnpm 12 and updating CI/script compatibility plus regenerating lockfiles) is the most direct way to ensure consistent behavior across developers and CI. The main concern is that the pinned version is an alpha; if stability is a priority, consider pinning pnpm 12 stable once available, but the current changes are appropriate if early validation/migration is the goal.

Files changed (4) +126 / -293

Bug fix (1) +1 / -1
run-ts-tests-chunk.mjsFix pnpm recursive list depth flag for pnpm v12 +1/-1

Fix pnpm recursive list depth flag for pnpm v12

• Updates the pnpm CLI invocation used to enumerate workspace packages to use the pnpm v12-compatible '--depth=-1' syntax. Prevents CI/package selection logic from breaking due to argument parsing changes.

.github/scripts/run-ts-tests-chunk.mjs

Other (3) +125 / -292
package.jsonPin packageManager/devEngines to pnpm 12.0.0-alpha.5 +2/-2

Pin packageManager/devEngines to pnpm 12.0.0-alpha.5

• Bumps the repository-level 'packageManager' field and 'devEngines.packageManager.version' from pnpm 11.9.0 to 12.0.0-alpha.5. This makes the expected pnpm version explicit for tooling and developer environments.

package.json

pnpm-lock.yamlRegenerate lockfile for pnpm v12 executable packaging +123/-287

Regenerate lockfile for pnpm v12 executable packaging

• Updates package manager dependency entries from pnpm 11.9.0 to 12.0.0-alpha.5 and replaces the previous pacquet-based config dependency footprint with pnpm v12 '@pnpm/exe.*' artifacts. Also includes incidental transitive version bumps and snapshot metadata reshaping resulting from the new pnpm resolution output.

pnpm-lock.yaml

pnpm-workspace.yamlRemove pnpm configDependencies entry no longer needed in v12 +0/-3

Remove pnpm configDependencies entry no longer needed in v12

• Deletes the 'configDependencies' block referencing '@pnpm/pacquet', aligning workspace configuration with pnpm v12 behavior and the regenerated lockfile.

pnpm-workspace.yaml

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 18 rules

Grey Divider


Action required

1. Pacquet bump workflow mismatch 🐞 Bug ⚙ Maintainability
Description
This PR removes the @pnpm/pacquet configDependency, but the scheduled update-lockfile workflow
still runs pnpm add --config @pnpm/pacquet, so the next automation run will re-add pacquet and
rewrite pnpm-workspace.yaml/pnpm-lock.yaml (recurring churn and likely conflicts). Removing the
configDependency also changes install behavior (pnpm no longer delegates install materialization to
pacquet), so the workflow and workspace config need to be aligned.
Code

pnpm-workspace.yaml[L354-356]

-configDependencies:
-  '@pnpm/pacquet': 0.11.12
-
Evidence
pnpm-workspace.yaml no longer declares any configDependencies entry for pacquet, and the
lockfile's env document shows configDependencies: {}. However, the scheduled update-lockfile
workflow still executes pnpm add --config @pnpm/pacquet, which will re-add that config dependency
and force lockfile/workspace manifest changes. The pnpm changelog documents that adding pacquet to
configDependencies changes the install engine behavior (delegation to pacquet).

pnpm-workspace.yaml[350-360]
pnpm-lock.yaml[4-14]
.github/workflows/update-lockfile.yml[51-75]
pnpm11/installing/commands/CHANGELOG.md[520-533]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The repo no longer declares `@pnpm/pacquet` under `configDependencies`, but the scheduled lockfile update workflow still adds/bumps it every run. This will reintroduce pacquet and regenerate `pnpm-workspace.yaml` and `pnpm-lock.yaml` on the next scheduled dispatch.

## Issue Context
`configDependencies` controls whether pnpm delegates install materialization to pacquet. If the intent is to stop using pacquet in this repo, the workflow should stop adding it. If the intent is to keep pacquet, the configDependencies removal should be reverted.

## Fix Focus Areas
- .github/workflows/update-lockfile.yml[51-75]
- pnpm-workspace.yaml[350-360]
- pnpm-lock.yaml[4-15]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread pnpm-workspace.yaml
Comment on lines -354 to 356
configDependencies:
'@pnpm/pacquet': 0.11.12

enableGlobalVirtualStore: true

enablePrePostScripts: false

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Pacquet bump workflow mismatch 🐞 Bug ⚙ Maintainability

This PR removes the @pnpm/pacquet configDependency, but the scheduled update-lockfile workflow
still runs pnpm add --config @pnpm/pacquet, so the next automation run will re-add pacquet and
rewrite pnpm-workspace.yaml/pnpm-lock.yaml (recurring churn and likely conflicts). Removing the
configDependency also changes install behavior (pnpm no longer delegates install materialization to
pacquet), so the workflow and workspace config need to be aligned.
Agent Prompt
## Issue description
The repo no longer declares `@pnpm/pacquet` under `configDependencies`, but the scheduled lockfile update workflow still adds/bumps it every run. This will reintroduce pacquet and regenerate `pnpm-workspace.yaml` and `pnpm-lock.yaml` on the next scheduled dispatch.

## Issue Context
`configDependencies` controls whether pnpm delegates install materialization to pacquet. If the intent is to stop using pacquet in this repo, the workflow should stop adding it. If the intent is to keep pacquet, the configDependencies removal should be reverted.

## Fix Focus Areas
- .github/workflows/update-lockfile.yml[51-75]
- pnpm-workspace.yaml[350-360]
- pnpm-lock.yaml[4-15]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@github-actions github-actions Bot added the reviewed: coderabbit CodeRabbit submitted an approving review label Jul 9, 2026
@qodo-code-review

Copy link
Copy Markdown

PR Code Suggestions ✨

Warning

/improve is deprecated. Use /agentic_review instead (removal date not yet scheduled).

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
General
Add error handling around JSON.parse

Wrap the JSON.parse(stdout) in a try/catch block to handle malformed JSON output
and log the raw output for debugging.

.github/scripts/run-ts-tests-chunk.mjs [46-47]

 const stdout = await capturePnpm([...filterArgs, '-r', 'list', '--depth=-1', '--json'])
-return JSON.parse(stdout)
+let list
+try {
+  list = JSON.parse(stdout)
+} catch (err) {
+  console.error('Failed to parse JSON from pnpm list:', stdout)
+  throw err
+}
+return list
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why: Adding error handling to JSON.parse improves the script's robustness and debugging capabilities in CI, though it is a minor enhancement.

Low
  • More

@zkochan
zkochan merged commit 25da8c8 into main Jul 9, 2026
29 checks passed
@zkochan
zkochan deleted the update-pnpm-to-v12 branch July 9, 2026 22:49
graphite-app Bot pushed a commit to voidzero-dev/vite-plus that referenced this pull request Jul 10, 2026
pnpm/pnpm main now pins packageManager to pnpm v12 alphas (pnpm/pnpm#12811).
The @pnpm/exe v12 alpha ships a placeholder bin that pnpm's version
self-switch executes before the install script replaces it with the real
binary, failing with a shell syntax error and breaking this job on every
main run.

Pin the clone to the latest stable tag (packageManager [email protected], the
same version the last green run used) and support an optional ref field
in the repos list so future pins are one-line changes.
fengmk2 added a commit to voidzero-dev/vite-plus that referenced this pull request Jul 10, 2026
pnpm/pnpm main now pins packageManager to pnpm v12 alphas
(pnpm/pnpm#12811).
The @pnpm/exe v12 alpha ships a placeholder bin that pnpm's version
self-switch executes before the install script replaces it with the real
binary, failing with a shell syntax error and breaking this job on every
main run.

Pin the clone to the latest stable tag (packageManager [email protected], the
same version the last green run used) and support an optional ref field
in the repos list so future pins are one-line changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

reviewed: coderabbit CodeRabbit submitted an approving review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants