Releases: Shudesu/ig-harness-oss
Releases · Shudesu/ig-harness-oss
Release list
v0.4.6 — fix: replyToComment uses query params
Patch release.
Fixed
- `replyToComment` always failed with code 100 / subcode 33 (`Object does not exist, cannot be loaded due to missing permissions, or does not support this operation`). The SDK sent the message as a JSON body, but the IG Graph API only accepts query-parameter encoded `message` for `/replies`. Switched to `POST /{comment_id}/replies?message=`.
- Symptom was: every engagement gate configured with `comment_reply_text` silently failed to post the public @username reply. DM dispatch was unaffected.
v0.4.5 — fix: unique resource names (no more hardcoded ig-harness)
Patch release. Critical fix for anyone with a prior deployment on the same Cloudflare account.
Fixed
- Hardcoded resource names caused silent overwrite of existing Worker bindings. Previously scaffolder used `ig-harness` for the Worker, `ig-harness` for the D1 database, and `ig-harness-images` for the R2 bucket. On any account that already had an ig-harness Worker, re-running the scaffolder would silently re-bind the existing Worker to a new D1/R2, breaking the prior deployment.
- Now generates a random 8-char hex suffix once per setup and applies it to all three resources: `ig-harness-` / `ig-harness--images`. Suffix is persisted in the state file so resumes pick the same names.
npm
- `create-ig-harness@0.4.5` published
Upgrade
```bash
npx create-ig-harness@latest
```
v0.4.4 — fix: deploy-only wrangler.deploy.toml
Patch release.
Fixed
- Worker deploy intermittently sent `YOUR_ACCOUNT_ID` to the Cloudflare API even though the scaffolder had already determined the correct account id. Root cause: the deploy step overwrote the user-facing `wrangler.toml` in-place and restored it on completion, which on some runs raced with wrangler's own config resolution path. Now writes a deploy-only `wrangler.deploy.toml` and passes `--config wrangler.deploy.toml`, so the user's wrangler.toml is never touched.
npm
- `create-ig-harness@0.4.4` published
Upgrade
```bash
npx create-ig-harness@latest
```
v0.4.3 — fix: build workspace packages before Worker deploy
Patch release.
Fixed
create-ig-harnessscaffolder failed at `wrangler deploy` with `Could not resolve @ig-harness/ig-sdk` for every external user. The scaffolder went straight from `pnpm install` to `wrangler deploy` without ever running `pnpm -r build`, so Worker bundling failed because workspace `dist/` directories were empty.- Re-runs against an existing `~/.ig-harness/` clone previously only ran `git pull` and skipped install+build, leaving stale dependencies. Now install + build run unconditionally.
npm
- `create-ig-harness@0.4.3` published
Upgrade
```bash
npx create-ig-harness@latest
```
v0.4.2 — fix: create-ig-harness clones from OSS mirror
Patch release.
Fixed
create-ig-harnessscaffolder failed for external users (#1). The repo URL was hardcoded toShudesu/ig-harness.git(private), sonpx create-ig-harnessalways errored ongit clonewith a permission failure. Now points atShudesu/ig-harness-oss.git.package.jsonrepository.urlmetadata also corrected to the public mirror.
npm
create-ig-harness@0.4.2published
Upgrade
```bash
npx create-ig-harness@latest
```
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
v0.3.1 — Engagement gate internals patch
Patch release.
Changed
- Engagement-gate worker service internals refactored (
packages/db/src/engagement-gates.ts) manage_engagement_gatesMCP tool description and parameter shape revised for clarity (no breaking changes to action surface)
Notes
This release is a maintenance patch with no schema changes and no SDK API breakage.
v0.3.0 — Engagement Gates + LINE Harness cross-link
First public release.
Added
- Engagement Gates with ManyChat-style follow-check loop (comment-trigger → CTA DM → follow check → reward DM, or follow-reminder loop on miss)
- Cross-platform UUID linking with LINE Harness via shared-secret webhook so an IG follower can be matched to the same person's LINE friend record
- Campaign Dashboard
/campaignsfor gate CRUD + delivery analytics @ig-harness/sdkengagement-gates resource@ig-harness/mcp-servermanage_engagement_gatesMCP tool- Vitest suite for worker services (17 tests)
Removed
- Outgoing webhooks (dead code, no backing route)
google-calendarservice (unused)
Notes
- Project was previously published as
instagram-harness/@instagram-harness/*and renamed toig-harness/@ig-harness/*on 2026-04-08 to address a Meta trademark complaint. The old npm packages are deprecated.