v0.4.1 — Rich messages + LINE Harness cross-link automation
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
updatepath so rotating anapi_keyor fixing aworker_urltypo no longer requires delete-and-recreate (which orphaned every gate referencing the old id). WorkerPATCH /api/line-connections/:id, SDKlineConnections.update(), MCPmanage_line_connectionsactionupdate. manage_engagement_gatesline_connection_iddescription now points at the actually-registered MCP tool (manage_line_connectionsaction='list') instead of a nonexistentlist_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_shortcolumns (migration0012); short id cached lazily via conditional UPDATE to serialize concurrent first-deliveries- New MCP tool
manage_line_connectionswith full CRUD +set_default+test+list_tracked_links+list_traffic_pools manage_engagement_gatesMCP extended withline_connection_id/line_pool_slug- SDK: new
lineConnectionsresource, newLineConnection/CreateLineConnectionInput/LineHarnessTrackedLink/LineHarnessPooltypes,EngagementGatetypes extended withline_*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.mjssopnpm db:migrateactually 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_messagestable + 3 nullable*_rich_message_idcolumns onengagement_gates(legacy text path preserved as fallback)- Worker endpoints:
/api/rich-messagesCRUD +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_gatesextended with*_rich_message_idfields - 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 incta_sent list_recent_reelsfilters locally (max 100 media fetched) so feed posts can't crowd out reels in the returned sliceig-sdk:getMyMedia,getMediaInfonow includemedia_product_type