Canopy開発日誌-4月

2026年4月のCanopy開発ログ(日次記録)。月の要約は4月-まとめ

ソースコードを構造(IR)として編集する MoonBit 製エディタ。概要はCanopyとは

今月の大きな流れ

月全体の流れは4月-まとめにまとめた。以下は週次・日次の作業記録。PR番号の一覧は文末のPR索引にある。第1週から EditorProtocol 統一と Markdown block editor の立ち上げが始まる。

4月第1週: EditorProtocol、pretty-printer、Markdown block editor

editorとviewの接続方式をEditorProtocolに統一し、ideal editor/prosemirror example/CodeMirror 6を同じprotocolで扱えるようにした。同時にpretty-printerの出力をViewNodeへ橋渡しし、HTML syntax highlightingを実現した。Markdown向けblock editorも立ち上げ、複数言語・複数viewの編集基盤を並行して拡張した一週間だった。

2026/4/1

Canopy / EditorProtocol、pretty-printer、inspector panel

EditorProtocol Phase 3〜5を実装した。CM6Adapter/PMAdapterの追加、Ideal editor protocol migration、prosemirror example migrationを行った。Ideal editorにsource range、text preview、token spansを表示するinspector panelも追加した(#107)。3月末に着手した Wadler-Lindig pretty-printer engine も annotation support 付きで実装し、get_ast_pretty へ統合した(#106)。

主なPR / Issue: canopy #106, #107

2026/4/2

Canopy / Pretty-printer ViewNode bridge

pretty-printer outputをViewNodeへ変換するbridgeを実装した。get_pretty_viewcompute_pretty_patches、HTMLAdapter syntax highlighting、FFI exportsを追加した。projectionをlanguage-agnosticにするrefactorも並行して進めた(#109)。

主なPR / Issue: canopy #109

2026/4/3

Canopy / Container Phase 2とecho/TinySegmenter

  • Container Phase 2(shared global LVs、text sync)を実装(#112)。
  • echo: コミット履歴や作業ログから意味的に関連する情報を探すAI検索機能。TinySegmenter + bigram blended tokenizerを実装した(#110)。

主なPR / Issue: canopy #110, #112

2026/4/4

Canopy / Markdown edit opsとweb editor

Markdown block editor向けに7つのMarkdownEditOp(SplitBlock、MergeBlocks等)を実装し、web editor pageとTypeScript bridgeを追加した(#113, #114, #115)。

主なPR / Issue: canopy #113, #114, #115

4月第2週: block-input、zipper、B-tree、semantic layer

Markdown block-inputのtextarea overlay、arrow key navigation、backspace mergeなど細かい挙動を整理し、block editorを実用的に磨いた。rose tree zipper(lib/zipper)、generic B-tree library(lib/btree)、semantic layer(lib/semantic)という新しい汎用ライブラリを立ち上げ、MoonBit v0.9 migrationも完了させた。

2026/4/5

Canopy / BlockInputとMarkdownPreview

textarea overlay付きのBlockInput thin input layerと、MarkdownPreview semantic HTML adapterを追加した(#117)。

2026/4/6

Canopy / Block editing fixとscope highlighting

block editorのarrow key navigation、backspace merge、ZWSP placeholder、block ID uniquenessなどのbug fixを行った。Ideal editorではtree viewにscope-colored binder highlightingを追加した(#122)。

主なPR / Issue: canopy #121, #123, #125, #126, #128

2026/4/7

Canopy / Rose tree zipperとMoonBit v0.9

  • rose tree zipper library(lib/zipper)を追加(#130)。
  • Ideal editorのoutline tree keyboard navigationを強化(#132)。
  • full MoonBit v0.9 migration(#131)。

主なPR / Issue: canopy #130, #131, #132

2026/4/8

Canopy / lib/btreeとlib/semantic

  • generic B-tree library(lib/btree)を追加(#137)。
  • lib/semanticにConfidence lattice(推論結果の確信度を階層的に扱う数学的構造)とsymbolic annotatorを追加(#136)。
  • lambda-specific logicをlang/lambda packagesへ抽出(#135)。
  • container block doc sync(#134)。

主なPR / Issue: canopy #134, #135, #136, #137

2026/4/9

Canopy / B-tree range delete extraction

order-treeからB-tree range delete logicをlib/btreeへ移行した。BTreeElem trait統合、range delete whitebox testsを追加した(#138, #139, #140)。

主なPR / Issue: canopy #138, #139, #140

2026/4/10

Canopy / B-tree defensive fix

B-tree delete_rangeのunderfull boundary repair、property-based tests、API narrowing(walker internals非公開化)を追加した。

主なPR / Issue: canopy #141

4月第3週: Language decoupling、egraph optimizer、Web E2E、drag-and-drop

SyncEditorをlambda-specific typesから切り離すLanguageCapabilities[T]を導入し、Canopyを汎用構造編集フレームワークへ近づけた。Lambda evaluatorにはegraph optimizer Tier 3を統合した。品質面ではWeb E2EテストをCIへ追加し、UI面ではideal editorとblock editorの双方でdrag-and-drop foundation、semantic Before/After drop、grip-only dragを実装した。

2026/4/11

Canopy / LanguageCapabilitiesとegraph optimizer

  • LanguageCapabilities[T]でSyncEditorをlambda-specific typesからdecouple(#146)。
  • egraph lambda optimizer Tier 3をcanopyに統合(#158)。
  • Tier 1 + Tier 2 batch escalation with incremental caching(#150)。
  • Web E2EテストをCIへ追加(#145)。
  • lib/btreeのsplice promotion chain repair(#143)。

主なPR / Issue: canopy #142, #143, #145, #146, #147, #148, #150, #151, #152, #158

2026/4/12

Canopy / Drag-and-drop foundation

Ideal editor向けdrag-and-drop foundationを実装した(#174)。Confidence lattice lawsのformal verificationも追加した(#161)。

主なPR / Issue: canopy #161, #172, #173, #174

2026/4/14

Canopy / Drag-and-drop exchange

drag-drop exchange、grip-only drag、position detection、outline DnDを実装した(#176)。

2026/4/15

Canopy / Block editor drag-and-dropとsemantic drop

  • block editorでsemantic Before/After positioning付きdrag-and-drop reordering(#179, #181)。
  • move_blockのlegality validation(#180)。
  • loom Boundary 3 bidirectional type-checkerを統合(#182)。

主なPR / Issue: canopy #179, #180, #181, #182

2026/4/17

Canopy / Document-level undoとlambda diagnostics

  • containerのdocument-level undo grouping(#187)。
  • lambda type-check diagnosticsをweb editorへ表示(#186)。

主なPR / Issue: canopy #185, #186, #187

4月第4週: Unified Parser、FFI split、moon.work

loomのunified @loom.Parser[T]へ移行し、ReactiveParserを廃止した。FFIをjson/markdown/lambdaごとにpackage分割して言語ごとの責務を明確にした。最後にMoonBit workspace機構であるmoon.workを導入し、CIでパッケージ間の依存方向ルールを検証する仕組みを整えた。

2026/4/18

Canopy / Unified Parser[T]とFFI split

  • SyncEditor + lang companions + FFIをunified @loom.Parser[T]へ移行(#200)。
  • FFIをjson/markdown/lambdaごとにpackage分割(#195, #196, #197)。
  • parse recoveryをError ProjNodesとしてsurface(#193)。
  • SyncStatus + watchdog for WebSocket sync recovery(#199)。

主なPR / Issue: canopy #191, #192, #193, #194, #195, #196, #197, #199, #200, #201

2026/4/19

Canopy / loom Stage 5/6 bump

loom Stage 5(remove ReactiveParser)とStage 6にbumpした。MemoMap sweep-on-rebuild、InternId-in-Relation testを取り込んだ。

主なPR / Issue: canopy #202, #203

2026/4/22

Canopy / moon.work workspace導入

MoonBit workspace(moon.work)を導入した。canopy + lib/text-change + lib/zipperをworkspace化し、CIで依存方向ルールを検証する。lib/editor-adapterをnpm package @canopy/editor-adapterへ変換した(#210, #211, #212)。

主なPR / Issue: canopy #210, #211, #212

2026/4/24

Canopy / btree registry化

lib/btreeをmooncakes registry経由のrle@0.2.0に切り替え、独立packageとして整理した。

2026/4/26

Canopy / lambda typecheck pipeline evolution

loomのtypecheck range wedge fixをbumpした。lambda typecheck pipeline evolution planをdocsに追加した。

PR索引

週ごとに折りたたんだ PR / Issue 一覧。GitHub 上の詳細への索引。

4月第1週(4/1〜4/4)

2026/4/1

EditorProtocol、pretty-printer、inspector panel

canopy #106, #107

2026/4/2

Pretty-printer ViewNode bridge

canopy #109

2026/4/3

Container Phase 2とecho/TinySegmenter

canopy #110, #112

2026/4/4

Markdown edit opsとweb editor

canopy #113, #114, #115

4月第2週(4/5〜4/10)

2026/4/5

BlockInputとMarkdownPreview

canopy #117

2026/4/6

Block editing fixとscope highlighting

canopy #121, #123, #125, #126, #128

2026/4/7

Rose tree zipperとMoonBit v0.9

canopy #130, #131, #132

2026/4/8

lib/btreeとlib/semantic

canopy #134, #135, #136, #137

2026/4/9

B-tree range delete extraction

canopy #138, #139, #140

2026/4/10

B-tree defensive fix

canopy #141

4月第3週(4/11〜4/17)

2026/4/11

LanguageCapabilitiesとegraph optimizer

canopy #142, #143, #145, #146, #147, #148, #150, #151, #152, #158

2026/4/12

Drag-and-drop foundation

canopy #161, #172, #173, #174

2026/4/14

Drag-and-drop exchange

canopy #176

2026/4/15

Block editor drag-and-dropとsemantic drop

canopy #179, #180, #181, #182

2026/4/17

Document-level undoとlambda diagnostics

canopy #185, #186, #187

4月第4週(4/18〜4/26)

2026/4/18

Unified Parser[T]とFFI split

canopy #191, #192, #193, #194, #195, #196, #197, #199, #200, #201

2026/4/19

loom Stage 5/6 bump

canopy #202, #203

2026/4/22

moon.work workspace導入

canopy #210, #211, #212