@cardenelabs/cdl 0.68.0 → 0.70.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,74 @@ CDL (Chainome Diagram Language) の主要変更履歴。
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.70.0] - 2026-09-26
9
+
10
+ ### Fixed
11
+
12
+ - **箱の読み取り値を右端へ寄せ、縦の矢印が数字を割らないようにした** (#870)
13
+
14
+ 箱に読み取り値 (`10 / 10` のような現在値と上限) を書くと、値は箱の上端の中央に出る。
15
+ 同じ帯の上下に置いた箱を矢印で繋ぐと、道筋は受け手の上端の中央へ真下から入る。
16
+ 置き場所が同じなので **必ず交わり**、矢印の先が区切りに刺さって `10 ⯆ 10` に見えていた。
17
+
18
+ ```
19
+ 直す前の実測 (図の座標)
20
+ 読み取り値 `8 / 10` x 88.5 - 121.5
21
+ 矢印の道筋 M 105 278 L 105 341 ← x=105 が読み取り値の真ん中
22
+ ```
23
+
24
+ 指摘は 1 件も出ない。 `validate` も `visualValidateAll` も 0 件を返し、板の大きさも変わらない。
25
+ 画面で見た時にだけ分かる。
26
+
27
+ **読み取り値を箱の右端へ揃えた** (`textAnchor="end"`)。 中央の縦の通り道が空く。
28
+
29
+ 矢印の側ではなく数字の側を動かしたのは、矢印の取り付き点が 2 本並んだ時の振り分けを
30
+ 既に持っており、そこへ別の理由でずらす条件を足すと、両方が効いた時の位置が読めなくなるため。
31
+ 揃える先を右にしたのは、箱の右上が空いている図が多いから (左上には枠の題が来る)。
32
+
33
+ 利用側 (`cardene777/dragon`) の割れていた 4 枚を実測で確かめた。
34
+
35
+ | 部品 | 矢印の x | 読み取り値の範囲 (変更後) |
36
+ |---|---|---|
37
+ | `parts-batch-collector` | 105 | 147 - 180 |
38
+ | `parts-backpressure` | 483 | 514 - 558 |
39
+ | `parts-funnel-3` | 205 | 241 - 285 |
40
+ | `parts-split-box` | 483 | 519.5 - 563.5 |
41
+
42
+ 4 枚とも交わらなくなった。
43
+
44
+ ## [0.69.0] - 2026-09-26
45
+
46
+ ### Fixed
47
+
48
+ - **ガントチャートの依存の線を根元から伸ばし、届いてから次の帯を伸ばすようにした** (#877)
49
+
50
+ 線は両端の行が伸び切った瞬間に丸ごと現れていた。 帯は根元から先へ伸びるのに、線だけが一度に出る。
51
+
52
+ さらに出る順序が図の読み方と逆だった。 図は「前の工程が終わってから次が始まる」 を示すのに、
53
+ 動きは「次の工程の帯が伸び切ってから、その帯へ向かう線が出る」 という順になる。
54
+ 線が届いたから次が始まった、という因果が動きから読めない。
55
+
56
+ **行の持ち時間を 2 つに割る**。 先に入ってくる線を引き (`線の取り分` = 0.35)、残りで帯を伸ばす。
57
+ 行の持ち時間そのものは変えないので、図全体の長さは変わらない。
58
+
59
+ | 何が | 変更前 | 変更後 |
60
+ |---|---|---|
61
+ | 線の出方 | 両端が伸び切った瞬間に丸ごと | 根元から先へ伸びる (`stroke-dashoffset`) |
62
+ | 矢じり | 線と同時 | 線が届いてから |
63
+ | 順序 | 帯 → 帯 → 線 | 帯 → 線 → 帯 |
64
+
65
+ **親が下にある依存だけは今までどおり一度に出す**。 上から下へ読む図で、下から戻る線を先に
66
+ 引くと順序が逆に見えるため。
67
+
68
+ ### Changed
69
+
70
+ - **図の日本語名を `工程表` から `ガントチャート` に変えた** (#877)
71
+
72
+ mermaid の呼び方に揃える。 記法の図種名 (`gantt`) は変えていない。
73
+ 変えたのはコメントと検査の名前で、`packages/cdl/src` と `packages/cdl/test` の 20 箇所。
74
+ 変更履歴の過去の entry は当時の呼び方の記録なので直していない。
75
+
8
76
  ## [0.68.0] - 2026-09-26
9
77
 
10
78
  ### Fixed
@@ -2900,7 +2968,8 @@ Initial OSS release.
2900
2968
  使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
2901
2969
  行き止まりになる。
2902
2970
 
2903
- [Unreleased]: https://github.com/cardene777/cdl/compare/v0.68.0...HEAD
2971
+ [Unreleased]: https://github.com/cardene777/cdl/compare/v0.69.0...HEAD
2972
+ [0.69.0]: https://github.com/cardene777/cdl/compare/v0.68.0...v0.69.0
2904
2973
  [0.68.0]: https://github.com/cardene777/cdl/compare/v0.67.0...v0.68.0
2905
2974
  [0.67.0]: https://github.com/cardene777/cdl/compare/v0.66.0...v0.67.0
2906
2975
  [0.66.0]: https://github.com/cardene777/cdl/compare/v0.65.0...v0.66.0
package/dist/index.cjs CHANGED
@@ -24991,9 +24991,9 @@ function renderRect(shape, x, y, w, h, stateValues, fillColor, strokeColor, opac
24991
24991
  /* @__PURE__ */ jsxRuntime.jsxs(
24992
24992
  "text",
24993
24993
  {
24994
- x: x + w / 2,
24994
+ x: x + w,
24995
24995
  y: y - 6,
24996
- textAnchor: "middle",
24996
+ textAnchor: "end",
24997
24997
  fontSize: 11,
24998
24998
  fontFamily: "monospace",
24999
24999
  fill: "var(--cdl-text-dim, #5a6270)",
@@ -27034,6 +27034,27 @@ function GanttNode({
27034
27034
  const \u884C\u306E\u4F38\u3073 = (row) => \u6BB5\u306E\u4F38\u3073(\u4F38\u3073, row + 1, rowCount);
27035
27035
  const taskById = new Map(\u6574\u3048\u305F.map((t) => [t.id, t]));
27036
27036
  const rowOf = new Map(\u6574\u3048\u305F.map((t, i) => [t.id, i]));
27037
+ const \u7DDA\u306E\u53D6\u308A\u5206 = 0.35;
27038
+ const \u533A\u5207\u308B = (v) => Math.min(1, Math.max(0, v));
27039
+ const \u4E0A\u304B\u3089\u6765\u308B\u7DDA = (row) => {
27040
+ const t = \u6574\u3048\u305F[row];
27041
+ if (t === void 0 || t.dependsOn === void 0) return false;
27042
+ const \u89AA = taskById.get(t.dependsOn);
27043
+ if (\u89AA === void 0) return false;
27044
+ const \u89AA\u306E\u884C = rowOf.get(\u89AA.id);
27045
+ return \u89AA\u306E\u884C !== void 0 && \u89AA\u306E\u884C < row;
27046
+ };
27047
+ const \u5E2F\u306E\u4F38\u3073 = (row) => {
27048
+ const r = \u884C\u306E\u4F38\u3073(row);
27049
+ return \u4E0A\u304B\u3089\u6765\u308B\u7DDA(row) ? \u533A\u5207\u308B((r - \u7DDA\u306E\u53D6\u308A\u5206) / (1 - \u7DDA\u306E\u53D6\u308A\u5206)) : r;
27050
+ };
27051
+ const \u7DDA\u306E\u4F38\u3073 = (\u89AA\u306E\u884C, \u5B50\u306E\u884C) => {
27052
+ if (!drawing) return 1;
27053
+ if (\u89AA\u306E\u884C >= \u5B50\u306E\u884C) {
27054
+ return \u884C\u306E\u4F38\u3073(\u89AA\u306E\u884C) >= 1 && \u884C\u306E\u4F38\u3073(\u5B50\u306E\u884C) >= 1 ? 1 : 0;
27055
+ }
27056
+ return \u533A\u5207\u308B(\u884C\u306E\u4F38\u3073(\u5B50\u306E\u884C) / \u7DDA\u306E\u53D6\u308A\u5206);
27057
+ };
27037
27058
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
27038
27059
  /* @__PURE__ */ jsxRuntime.jsx(
27039
27060
  "rect",
@@ -27142,7 +27163,7 @@ function GanttNode({
27142
27163
  const bx = \u5E2F\u306E\u5DE6(t.startIdx);
27143
27164
  const by = \u5E2F\u306E\u4E0A(row);
27144
27165
  const bw = Math.max(0, \u5E2F\u306E\u53F3(t.endIdx) - bx);
27145
- const \u3053\u306E\u884C = \u884C\u306E\u4F38\u3073(row);
27166
+ const \u3053\u306E\u884C = \u5E2F\u306E\u4F38\u3073(row);
27146
27167
  const \u4ECA\u306E\u5E45 = drawing ? bw * \u3053\u306E\u884C : bw;
27147
27168
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
27148
27169
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -27196,7 +27217,8 @@ function GanttNode({
27196
27217
  const \u624B = Math.max(6, (\u7E26\u306E\u7D42\u308F\u308AY - \u51FA\u767AY) * 0.55);
27197
27218
  const path = `M ${\u51FA\u767AX} ${\u51FA\u767AY} C ${\u51FA\u767AX} ${\u51FA\u767AY + \u624B}, ${\u7740\u5730X} ${\u7E26\u306E\u7D42\u308F\u308AY - \u624B}, ${\u7740\u5730X} ${\u7E26\u306E\u7D42\u308F\u308AY}`;
27198
27219
  const arrowHeadPath = `M ${\u7740\u5730X} ${\u7740\u5730Y} L ${\u7740\u5730X - \u77E2\u3058\u308A\u306E\u5E45 / 2} ${\u7E26\u306E\u7D42\u308F\u308AY} L ${\u7740\u5730X + \u77E2\u3058\u308A\u306E\u5E45 / 2} ${\u7E26\u306E\u7D42\u308F\u308AY} Z`;
27199
- return drawing && !(\u884C\u306E\u4F38\u3073(parentRow) >= 1 && \u884C\u306E\u4F38\u3073(childRow) >= 1) ? null : /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-role": "gantt-arrow", children: [
27220
+ const \u5F15\u3051\u305F = \u7DDA\u306E\u4F38\u3073(parentRow, childRow);
27221
+ return \u5F15\u3051\u305F <= 0 ? null : /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-role": "gantt-arrow", children: [
27200
27222
  /* @__PURE__ */ jsxRuntime.jsx(
27201
27223
  "path",
27202
27224
  {
@@ -27205,10 +27227,11 @@ function GanttNode({
27205
27227
  stroke: "var(--cdl-text-mute, #8a8678)",
27206
27228
  strokeWidth: 2.4,
27207
27229
  strokeLinejoin: "round",
27208
- strokeLinecap: "round"
27230
+ strokeLinecap: "round",
27231
+ ...\u4F38\u3070\u3059dash(drawing, \u5F15\u3051\u305F)
27209
27232
  }
27210
27233
  ),
27211
- /* @__PURE__ */ jsxRuntime.jsx(
27234
+ \u5F15\u3051\u305F < 1 ? null : /* @__PURE__ */ jsxRuntime.jsx(
27212
27235
  "path",
27213
27236
  {
27214
27237
  d: arrowHeadPath,