Skip to content

v0.4.1 — Rich messages + LINE Harness cross-link automation

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 11:58
· 36 commits to main since this release

Aggregates v0.3.2 → v0.4.0 → v0.4.1 (intermediate tags were not published on the public mirror).

v0.4.1 — Fixed

  • LINE connection registry now exposes an in-place update path so rotating an api_key or fixing a worker_url typo no longer requires delete-and-recreate (which orphaned every gate referencing the old id). Worker PATCH /api/line-connections/:id, SDK lineConnections.update(), MCP manage_line_connections action update.
  • manage_engagement_gates line_connection_id description now points at the actually-registered MCP tool (manage_line_connections action='list') instead of a nonexistent list_line_connections.

v0.4.0 — Added

  • LINE Harness cross-link automation: engagement gates can bind to a LINE Harness connection + traffic pool. Reward / CTA / reminder URLs are auto-rewritten through a LINE Harness tracked link at delivery time so the recipient's IGSID rides along ?ig=<IGSID> on click, capturing the IG↔LINE userId pair on first friend-add
  • engagement_gates.line_connection_id / line_pool_slug / line_tracked_link_short columns (migration 0012); short id cached lazily via conditional UPDATE to serialize concurrent first-deliveries
  • New MCP tool manage_line_connections with full CRUD + set_default + test + list_tracked_links + list_traffic_pools
  • manage_engagement_gates MCP extended with line_connection_id / line_pool_slug
  • SDK: new lineConnections resource, new LineConnection / CreateLineConnectionInput / LineHarnessTrackedLink / LineHarnessPool types, EngagementGate types extended with line_* fields
  • Admin UI: campaign wizard surfaces a two-mode toggle on the reward URL — 「🔗 LINE Harness 連携」 (auto cross-link) vs 「🌐 URL 直接指定」 (manual URL); campaign detail renders a 🔗 LINE連携 badge with the bound connection, pool, and cached tracked-link short
  • scripts/apply-migrations.mjs so pnpm db:migrate actually applies every migration file (per-statement, idempotent on duplicate-column / already-exists errors)

v0.4.0 — Fixed

  • CI: leftover @line-crm/* workspace filter / dist/line_harness/ paths in deploy workflows renamed to the IG Harness equivalents

v0.3.2 (rolled into this release) — Added

  • Rich DM messages: reusable structured templates (text / image / card / carousel / quick_replies blocks) referenced per slot by engagement gates, expanded into sequential IG Messenger API calls at send time
  • rich_messages table + 3 nullable *_rich_message_id columns on engagement_gates (legacy text path preserved as fallback)
  • Worker endpoints: /api/rich-messages CRUD + test-send, /api/posts/my-reels, /api/posts/bulk-apply-gates
  • MCP tools: manage_rich_messages, list_recent_reels, bulk_apply_gates_to_reels; manage_engagement_gates extended with *_rich_message_id fields
  • SDK resources: richMessages, posts
  • Admin UI: gate detail shows "リッチメッセージ" row when a slot references a rich message
  • Vitest: 3 new tests for rich-CTA / rich-reward / legacy fallback paths

v0.3.2 — Changed

  • Gate create/update + bulk-apply enforce that rich CTA templates contain a CHECK_FOLLOW:{GATE_ID}:{DELIVERY_ID} postback — otherwise deliveries would stall in cta_sent
  • list_recent_reels filters locally (max 100 media fetched) so feed posts can't crowd out reels in the returned slice
  • ig-sdk: getMyMedia, getMediaInfo now include media_product_type