@cardenelabs/cdl 0.21.2 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,96 @@ CDL (Chainome Diagram Language) の主要変更履歴。
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.23.0] - 2026-09-02
9
+
10
+ ### Added
11
+
12
+ - **交わる線を弧で跨ぐようにした** (#608)
13
+
14
+ engine は交差を数えるだけで、交わった所の描き方を持たなかった。
15
+ 2 本が同じ点で重なるので十字に潰れ、下をくぐる線が切れたようにも見える。
16
+ 破線どうしだと刻みが噛み合って、その一点だけ塗り潰されたように見えていた。
17
+
18
+ 経路が確定した後に交点を洗い出し、横に走る側の直線区間へ半径 11 の弧を差し込む。
19
+ 横が跨ぐのは、図を横に読むので縦線を跨ぐ方が視線の流れを切らないため。
20
+ 両方が縦なら後から出た方が右へ膨らむ。
21
+
22
+ 差し込むのは直線の区間だけ。 角の丸めと弓は形そのものが意味を持つので制御点ごと書き戻す。
23
+ 端から 26 の内側にある交点は跨がない = そこは端の印が立つ場所で弧と重なる。
24
+
25
+ - **同じ通り道を並んで走る線をずらすようにした** (#610)
26
+
27
+ 線が箱を避ける通り道は「塞ぐ箱の端 + 余白」 で決まるので、同じ箱を避ける線は必ず同じ列を
28
+ 通る。 engine は重なりを警告に出すが、直す仕掛けを持っていなかった。
29
+
30
+ 破線どうしが重なると刻みが噛み合って隙間が埋まり、実線に見える。
31
+ ER 図では実線が「識別する関係」 を指すので、関係の種類そのものが違って読める。
32
+
33
+ 経路が確定した後に、同じ直線を 40 以上並んで走る区間を見つけて、後から出る線の側を
34
+ 26 ずらす。 ずらした先が箱なら反対側を試し、両側とも塞がるならずらさない。
35
+
36
+ 同じ節から出る線は重ねたまま残す (#211)。 幹線から順に降りる 1 本の線として読め、
37
+ 読み手は共有した起点から分岐を辿れる。
38
+ 端点を含む区間も動かさない = 動かすと線の根元が箱の辺の中央から外れる。
39
+
40
+ 4 つの表と 4 つの関係を持つ ER 図で、並走が 4 件から 2 件に減る。
41
+
42
+ - **同じ辺に入る線の終点を辺に沿って離すようにした** (#611)
43
+
44
+ 複数の線が 1 つの辺に入ると、終点が辺の中央 1 点に集まって根元が重なる。
45
+
46
+ 出る側は触らない。 起点が 1 点に収束する形は「1 つの節から複数の線が発散する」 という
47
+ 意味を持つ (#429)。 入る側にはその意味が無く、重なりは意図した形ではなく副産物なので、
48
+ そちらだけを直す。
49
+
50
+ 経路を引き終えてから末尾を「辺に沿って助走 → 辺へ垂直に入る」 の 2 区間に差し替える。
51
+ 終点を先に動かすと引き方の分岐が変わり、迂回していた線が箱を貫通した。
52
+
53
+ 離す間隔は行 1 つ分 (56)。 4 隅に刺さらないよう両端に余白を残し、詰まるなら離さない。
54
+ 同じ 2 点を結ぶ線 (#941 が重なりを残すと決めた範囲)、箱に当たる線、交差が増える線は
55
+ 元のまま残す。
56
+
57
+ 1 つの節に線が集まる図で、根元の重なりが 3 組から 1 組 (3 本) / 10 組から 6 組 (5 本) に減る。
58
+ 経路の大半を共有する線どうしは、分かれる点が交差として数えられるので離れない。
59
+
60
+ - **関係から lane と stack の並びを決める純関数を足した** (#599)
61
+
62
+ ### Changed
63
+
64
+ - **群を分ける空行をやめて行の間隔を揃えた** (#606)
65
+
66
+ 群の区切りは **行頭の印** が持っている = ER は鍵の名前に下線、クラス図は持ち物が四角で
67
+ 振る舞いが山形。 空行はその 2 つ目の手掛かりで、代わりに行の間隔を不揃いにしていた
68
+ (鍵と値を持つ箱だけ境目が広がる)。
69
+
70
+ 空行を外すと、2 行の箱どうしが同じ高さで完全に揃う。
71
+
72
+ #604 で空行の送りを半分にする形を入れたが、群を示す役目が行頭の印と重複していたため
73
+ 実装ごと戻した。
74
+
75
+ - **札を線に沿って動かして他の線と箱から離すようにした** (#601)
76
+
77
+ ここまでの置き直しは全て縦方向で、線に沿って動かす経路が無かった。
78
+ いま被っている札だけを対象にするので、落ち着いている図の座標は動かない。
79
+
80
+ ## [0.22.0] - 2026-08-30
81
+
82
+ ### Changed
83
+
84
+ - **箱が中身より高い時、字を中央へ寄せるようにした** (#597)
85
+
86
+ 段の高さは行内の最大値で決まるので、行に高い箱が 1 つあると同じ行の箱もそこまで伸びる。
87
+ 字は上から置かれるため、伸びたぶんがそのまま下に空いていた。
88
+
89
+ 実測 = dragon の見本で `BEGIN tx` の箱が 240 に伸びているのに中身は 67。 字が上端に
90
+ 貼り付き、同じ縦列の下 2 つ (67 のまま) と不揃いに見えていた。
91
+
92
+ 余りを上下で分ける。 3 段 (小見出し / 名前 / 説明) は同じ量だけ動かすので、段どうしの
93
+ 間隔は変わらない。
94
+
95
+ 行を持つ箱と値を持つ箱は動かさない (行は上端から数え、値は下端から置くので重なる)。
96
+ 小型の箱と、字を中央へ寄せる 2 種別も元から中央にあるので対象外。
97
+
8
98
  ## [0.21.2] - 2026-08-30
9
99
 
10
100
  ### Fixed
@@ -1095,7 +1185,9 @@ Initial OSS release.
1095
1185
  使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
1096
1186
  行き止まりになる。
1097
1187
 
1098
- [Unreleased]: https://github.com/cardene777/cdl/compare/v0.21.2...HEAD
1188
+ [Unreleased]: https://github.com/cardene777/cdl/compare/v0.23.0...HEAD
1189
+ [0.23.0]: https://github.com/cardene777/cdl/compare/v0.22.0...v0.23.0
1190
+ [0.22.0]: https://github.com/cardene777/cdl/compare/v0.21.2...v0.22.0
1099
1191
  [0.21.2]: https://github.com/cardene777/cdl/compare/v0.21.1...v0.21.2
1100
1192
  [0.21.1]: https://github.com/cardene777/cdl/compare/v0.21.0...v0.21.1
1101
1193
  [0.21.0]: https://github.com/cardene777/cdl/compare/v0.20.1...v0.21.0