openpencil/apps/web
Fini 54131c03c0 feat(ai): 3 new element tools — image_placeholder / comment / modal_shell (48th-50th)
Fills 3 common UI gaps the 47-tool set didn't cover:

- add_image_placeholder_v0: gray box + centered icon + optional
  caption. The "future image slot" affordance. Separate from G()
  (which fetches real images). Emits frame+fill, NEVER image node
  (empty image renders as broken indicator).
- add_comment_v0: avatar + (author + timestamp) header + body.
  Social / UGC / feedback unit. Does NOT handle replies / likes /
  action menu — compose via batch_design.
- add_modal_shell_v0: dimmed scrim + centered card (rounded,
  shadowed) + title + optional subtitle. "Shell" in the name is
  deliberate — this is chrome only; body content goes into the
  `modal-shell-card` role via a follow-up insert.

Wired across all three paths (pen-core buildX + pen-mcp handler +
routes + schema + apps/web shim + Nitro SERVER_BUILDERS) + elements.md
decision-tree entries + keyword map + examples + 3 pen-mcp handler
tests (22 cases total) + 3 A/B v1 corpus prompts in ab-v1/ +
parametric builder test CASES auto-extended in 9 files.

Milestones:
- Tool count: 47 → 50
- Test count: 3045 → 3114 (+69)
- A/B v1 corpus: 5 → 8 prompts
2026-04-22 08:30:00 +08:00
..
public V0.5.0 (#67) 2026-03-22 09:44:04 +08:00
server feat(ai): 3 new element tools — image_placeholder / comment / modal_shell (48th-50th) 2026-04-22 08:30:00 +08:00
src feat(ai): 3 new element tools — image_placeholder / comment / modal_shell (48th-50th) 2026-04-22 08:30:00 +08:00
CLAUDE.md V0.7.0 (#95) 2026-04-11 23:25:13 +08:00
components.json V0.7.0 (#95) 2026-04-11 23:25:13 +08:00
dev.ts V0.7.2-bugfix (#109) 2026-04-14 21:42:56 +08:00
package.json chore(release): bump to v0.7.4 2026-04-17 19:20:19 +08:00
tsconfig.json V0.7.2-bugfix (#109) 2026-04-14 21:42:56 +08:00
vite.config.ts V0.7.0 (#95) 2026-04-11 23:25:13 +08:00