scripta v0.6.0
v0.5.0 リリース後の内部品質改善ラウンド。ユーザー向け振る舞い変更はなく、内部 refactor 7 件を集約。zustand selector の useShallow 適用 (#206)、settings migration の versioned array 化 (#208)、2 モード e2e の振り分け基準明文化 (#207)、wikilink target query 経由の in-editor highlight (#225)、3 panel 共通 collapse hook の抽出 (#226)、scan store の race-prevention pattern factory 化 (#228)、backlink scan の producer-side trim による render-time allocation 削減 (#227) を実施。
ダウンロード
各 OS の配布物は 未署名(コード署名・公証なし、v0.2.0 / v0.3.0 / v0.4.0 / v0.5.0 と同方針)。
| OS | アーキテクチャ | ファイル |
|---|---|---|
| macOS | Apple Silicon | scripta-0.6.0-arm64.dmg |
| macOS | Intel | scripta-0.6.0.dmg |
| Windows | x64 | scripta.Setup.0.6.0.exe |
| Linux | AppImage | scripta-0.6.0.AppImage |
| Linux | .deb | scripta-next_0.6.0_amd64.deb |
初回起動時の手順(未署名のため警告が出ます)
- macOS: 初回は Finder で .app を Ctrl+クリック → 「開く」 を選択(または
xattr -d com.apple.quarantine /Applications/scripta.app) - Windows: SmartScreen の「Windows によって PC が保護されました」で 「詳細情報」 → 「実行」 を選択
- Linux (.deb): パッケージ名は
scripta-nextですが、起動するアプリはscriptaです(package.json:name と productName の差分による命名、機能は同じ)
主な変更内容
詳細は CHANGELOG.md を参照。
Internal
- AppLayout の workspace selector に
useShallowを適用 (#206 → #229): zustand store selector が tabs 配列の参照同一性に依存して不要な再 render を起こしていた問題を、useShallowで構造比較に切り替えて解消 - settings に
_schemaVersionを導入し migration を versioned array 化 (#208 → #230):loadSettings()の ad-hoc なdelete s.theme等の inline migration を、MIGRATIONS: ReadonlyArray<{ from: number; to: number; run(ctx): void }>形式の versioned array に置換。将来の non-idempotent migration や_schemaVersionfield 自体の write 順序を一元化できるように整備 - 2 モード e2e の重複 spec を整理 + 振り分け基準を ADR-0009 に集約 (#207 → #231): renderer-only モード (Vite +
window.apimock) と実 Electron 起動モード (_electron.launch) の 2 モード e2e で発生していた重複 spec を整理し、各モードでカバーすべき範囲の振り分け基準を ADR-0009 §「各モードの役割分担」に canonical 化 - BacklinkPanel / UnresolvedLinksPanel の onNavigate に wikilink target を query として渡す (#225 → #232): backlink / unresolved wikilink から navigate した先のエディタで、ジャンプ元の wikilink target を query string として渡すことで in-editor highlight が走るようにし、SearchPanel と同等の UX に統一
- 3 panel 共通の
useCollapseTogglehook を抽出 (#226 → #233): SearchPanel / BacklinkPanel / UnresolvedLinksPanel で重複していた collapse toggle ロジック (useState(() => new Set())+ lazy init +resetの re-render skip 含む) をuseCollapseToggleとして抽出 - backlink / wikilink store の
_scanIdrace-prevention pattern をcreateScanActionfactory に共通化 (#228 → #234): backlink store / wikilink store の scan action が同一構造で重複保持していた_scanIdincrement + race check +Omit<Partial<TState>, "_scanId" | "loading">型による不変条件防御パターンをcreateScanActionfactory として共通化。3 件目の scanner store 追加時の同パターン再実装コストを削減 - backlink / unresolved wikilink scan で
lineContentを producer 側で 1 度 trim する (#227 → #235):iterateWikilinkOccurrenceshelper が yield するWikilinkReferenceのlineContentを producer 側で 1 度line.trim()し、consumer (BacklinkPanel render-time /buildInitialContent) の冗長な.trim()呼び出しを排除。e2e mock も対称に trim 化 (ADR-0009 parity)
Dependencies
v0.5.0 リリース以降、新規 dependabot bump なし。package.json の dependencies / devDependencies は v0.5.0 時点と同一。
Full Changelog: v0.5.0...v0.6.0