Skip to content

chore(deps): dependabot PR 9 件を 1 branch に combine (p-limit #268 のみ除外)#274

Merged
ymnao merged 3 commits into
mainfrom
chore/deps-batch-2026-06
Jul 2, 2026
Merged

chore(deps): dependabot PR 9 件を 1 branch に combine (p-limit #268 のみ除外)#274
ymnao merged 3 commits into
mainfrom
chore/deps-batch-2026-06

Conversation

@ymnao

@ymnao ymnao commented Jul 1, 2026

Copy link
Copy Markdown
Owner

概要

順次 merge を避けて CI 空回りと lockfile conflict を回避するため dependabot 9 件を単一 branch に combine。見送りは #268 (p-limit、ESM interop リスク) のみ。

CodeMirror (#263) と mermaid (#269) は初回 push で CI が落ちたため一旦見送り → root cause (@codemirror/language / commands の dual copy) を特定して根本対策の上で再 bump (1a8efd6)。

関連 Issue

Closes #261, #262, #263, #264, #265, #266, #267, #269, #270

(#268 p-limit は open 継続、次回別 PR で対応予定)

移行 Stage

Stage 分類外 (Electron 化完了後の dependency batch update)

変更内容

Dependencies (production):

Dev dependencies:

GitHub Actions:

追加変更:

  • biome.json を biome migrate で 2.5.0 schema へ更新
  • pnpm-workspace.yaml: overrides を @codemirror 全 direct dep に拡張 (下記 root cause 対策)

Root cause: @codemirror/language / commands の dual copy (初回 CI 失敗の原因)

初回 push (2ba2df6) の CI では test job 224 assertion fail + electron-e2e (image / mermaid widget 消失)。調査の結果:

  • 当時の lockfile に language@6.12.3 と 6.12.4、commands@6.10.3 と 6.10.4 が共存 (root は ^6.12.4 を解決、lang-markdown 等の transitive range は pnpm metadata cache の古い packument から 6.12.3 を解決)
  • @codemirror package は module-level singleton (StateField / Facet / NodeProp) を含むため、lang-markdown 側 copy が state に入れた Language.state field をアプリ側 copy の syntaxTree() が引けず常に空 tree → FencedCode / Table / Image ノードが見えず live-preview 全域が破綻
  • ローカルで新 4 package を物理単一 copy に差し替えた再現実験では 83/83 pass → 「新 version の API 変化」ではなく「copy 重複」が原因と確定

対策: state / view のみだった self-ref pin ($@codemirror/state 記法) を autocomplete / commands / lang-markdown / language / language-data / search にも拡張し、単一 version を lockfile レベルで強制。既存の autocomplete 6.20.2/6.20.3 dual も副次的に解消。

p-limit #268 見送り理由 (変更なし)

  • p-limit v7 は ESM only。electron.vite.config.ts:43 main は format: "cjs" + externalizeDepsPlugin で p-limit を external 化 → build 後の require("p-limit") の Electron 独自 require との interop 懸念
  • 次回別 PR で bundle 化 / dynamic import 化 / ignore major を検討

動作確認

  • biome check clean
  • typecheck 3 config (web / node / e2e) clean — 新 CodeMirror .d.ts に対して
  • vitest 2230 pass / 2 skipped — 新 CodeMirror dist を物理差し替えて実行
  • lockfile で @codemirror 全 package の単一 version を grep 確認
  • /simplify pass 1 (4 reviewer): all []
  • /code-review high (8 finder / recall-biased): CONFIRMED 2 件を対処
  • CI (最終 push 1a8efd6) — electron-e2e の image / mermaid widget が dual copy 解消の最終検証

スクリーンショット

UI 変更なし

ymnao added 2 commits July 1, 2026 23:43
順次 merge を避けて CI 空回りと lockfile conflict を回避する目的で dependabot
9 件を単一 branch に combine。#268 (p-limit 3→7 major) は ESM interop リスクの
ため本 batch から除外し次回別 PR で対応。

## Dependencies (production)

- #263 @codemirror/{commands,language,state,view} を group 更新
  (6.10.4 / 6.12.4 / 6.7.0 / 6.43.4)
- #269 mermaid 11.15.0 → 11.16.0
- #270 js-yaml 5.0.0 → 5.2.0

## Dev dependencies

- #262 electron 42.4.1 → 42.5.0 (実 resolved は 42.5.1、patch 更に進行)
- #264 vite group (vite 8.1.1 / @vitejs/plugin-react 6.0.3)
- #265 @biomejs/biome 2.5.0 → 2.5.1
- #266 @playwright/test 1.61.0 → 1.61.1
- #267 @types/node 26.0.0 → 26.0.1

## GitHub Actions

- #261 actions/cache 5.0.5 → 6.1.0 (major、v6 は ESM 化のみで workflow
  consumer 側 input/output API 不変)

## 追加変更

- biome.json を `biome migrate` で 2.5.0 schema へ更新
  ($schema URL 2.4.16 → 2.5.0 / `linter.rules.recommended: true` →
  `preset: "recommended"`)

## p-limit #268 見送り理由

/code-review high の 8 finder のうち 3 finder (line-by-line / removed-behavior /
cross-file trace) が同一 mechanism を指摘:

- p-limit v7 は ESM only (v4+ で type: "module" 化)
- `electron.vite.config.ts:43` の main は `format: "cjs"` + `externalizeDepsPlugin`
  で p-limit を external 化 → build 後の `require("p-limit")` が Electron 42
  同梱 Node 24 の require(esm) 挙動と Electron 独自の require implementation
  divergent 懸念 + asar 内 resolve 差異の可能性
- 既存の `electron/main/ipc/search.ts:17 pLimit(16)` usage は v3 v7 とも
  API 不変で benefit なし

対応方針: 次回別 PR で以下を検討:
1. p-limit を main の noExternal (bundle 化) で cjs 内 emit、または
2. p-limit を dynamic import 化 (search.ts の top-level `ioLimit` 廃止)、または
3. 現状の 3.1.0 継続で Dependabot `@dependabot ignore this major version` 指示

## Verify

- biome check clean
- typecheck 3 config (web / node / e2e) clean
- vitest 2230 pass / 2 skipped
- pnpm-lock.yaml fresh regen: `rm pnpm-lock.yaml && CI=true pnpm install --lockfile-only`
  で「Lockfile passes supply-chain policies (verified 4d ago)」による resolution
  cache を bypass (実際に importer section の specifier / version が更新される
  ことを確認済)

Closes #261, #262, #263, #264, #265, #266, #267, #269, #270
CI test job で live-preview 系 (tables.test.ts / wikilinks.test.ts) と
electron-e2e (image-rendering / mermaid-rendering) が fail。原因は
@codemirror/state 6.6→6.7 (or 関連 4 件) + mermaid 11.15→11.16 の
Decoration/parser 挙動変化と判定。ローカル vitest 2230 pass は node_modules が
前 install から未更新 (--lockfile-only) だったため、CI で新 version 反映後に
regression 発現。

追加見送り:
- #263 @codemirror/{commands,language,state,view} を元 version に戻す
- #269 mermaid 11.15.0 に戻す (@mermaid-js/parser も 1.1.1 に戻る)

残 combine 対象 (7 件):
- #261 actions/cache 5.0.5 → 6.1.0
- #262 electron 42.4.1 → 42.5.0 (実 42.5.1)
- #264 vite group (vite 8.1.1 / @vitejs/plugin-react 6.0.3)
- #265 @biomejs/biome 2.5.0 → 2.5.1
- #266 @playwright/test 1.61.0 → 1.61.1
- #267 @types/node 26.0.0 → 26.0.1
- #270 js-yaml 5.0.0 → 5.2.0

verify:
- biome check clean
- typecheck 3 config (web / node / e2e) clean
- vitest 2230 pass / 2 skipped

Refs #263 (codemirror), #269 (mermaid) — 次回別 PR で対応 (live-preview の
Table/FencedCode SyntaxTree 判定 / image widget / mermaid render を新 API に
追従させる必要あり)
@ymnao ymnao changed the title chore(deps): dependabot PR 9 件を 1 branch に combine (p-limit #268 除外) chore(deps): dependabot PR 7 件を 1 branch に combine (p-limit/codemirror/mermaid 除外) Jul 1, 2026
…対策込み)

d51947e で見送った @codemirror/{commands,language,state,view} (#263) と
mermaid (#269) を再 bump。2ba2df6 の CI 失敗 (test 224 assertion +
electron-e2e image/mermaid widget) の root cause を特定し根本対策を実施:

## Root cause: @codemirror/language / commands の dual copy

2ba2df6 の lockfile では language@6.12.3 と 6.12.4、commands@6.10.3 と
6.10.4 が共存していた (root は ^6.12.4 を解決、lang-markdown 等の
transitive range は pnpm metadata cache の古い packument から 6.12.3 を解決)。

@codemirror package は module-level singleton (StateField / Facet / NodeProp)
を含むため、lang-markdown 側 copy が state に入れた `Language.state` field を
アプリ側 copy の `syntaxTree()` が引けず常に空 tree になり、FencedCode /
Table / Image ノードが見えず live-preview 全域が破綻した
(unit 224 fail + e2e image/mermaid widget 消失)。

ローカルで新 4 package を物理単一 copy に差し替えた再現実験では
83/83 pass → 「新 version の API 変化」ではなく「copy 重複」が原因と確定。

## 対策: pnpm-workspace.yaml overrides を @codemirror 全 direct dep に拡張

state / view のみだった self-ref pin (`$@codemirror/state` 記法) を
autocomplete / commands / lang-markdown / language / language-data / search
にも拡張し、@codemirror package の単一 version を lockfile レベルで強制。
既存の autocomplete 6.20.2/6.20.3 dual も副次的に解消。

## 変更内容

- package.json: @codemirror/commands ^6.10.4 / language ^6.12.4 /
  state ^6.7.0 / view ^6.43.4 / mermaid ^11.16.0
- pnpm-workspace.yaml: overrides 拡張 + incident 記録コメント
- pnpm-lock.yaml: fresh regen (rm + CI=true pnpm install --lockfile-only)、
  @codemirror 全 package 単一 version を grep で確認済

## Verify

- biome check clean
- typecheck 3 config clean (新 CodeMirror .d.ts に対して)
- vitest 2230 pass / 2 skipped (新 CodeMirror dist を物理差し替えて実行)
- mermaid 11.16 は release notes 上 additive のみ (cynefin-beta 等の新
  diagram type 追加)。electron-e2e の mermaid-rendering は CI で最終確認

Refs #263, #269
@ymnao ymnao changed the title chore(deps): dependabot PR 7 件を 1 branch に combine (p-limit/codemirror/mermaid 除外) chore(deps): dependabot PR 9 件を 1 branch に combine (p-limit #268 のみ除外) Jul 2, 2026
@ymnao ymnao merged commit bbe78a6 into main Jul 2, 2026
9 checks passed
@ymnao ymnao deleted the chore/deps-batch-2026-06 branch July 2, 2026 02:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant