Skip to content

Releases: Shudesu/ig-harness-oss

v0.4.6 — fix: replyToComment uses query params

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 16:33

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)

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 14:01

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

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 13:43

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

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 13:36

Patch release.

Fixed

  • create-ig-harness scaffolder 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

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 12:15

Patch release.

Fixed

  • create-ig-harness scaffolder failed for external users (#1). The repo URL was hardcoded to Shudesu/ig-harness.git (private), so npx create-ig-harness always errored on git clone with a permission failure. Now points at Shudesu/ig-harness-oss.git.
  • package.json repository.url metadata also corrected to the public mirror.

npm

  • create-ig-harness@0.4.2 published

Upgrade

```bash
npx create-ig-harness@latest
```

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

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 11:58

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

v0.3.1 — Engagement gate internals patch

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 11:58

Patch release.

Changed

  • Engagement-gate worker service internals refactored (packages/db/src/engagement-gates.ts)
  • manage_engagement_gates MCP 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

Choose a tag to compare

@Shudesu Shudesu released this 25 Apr 11:58

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 /campaigns for gate CRUD + delivery analytics
  • @ig-harness/sdk engagement-gates resource
  • @ig-harness/mcp-server manage_engagement_gates MCP tool
  • Vitest suite for worker services (17 tests)

Removed

  • Outgoing webhooks (dead code, no backing route)
  • google-calendar service (unused)

Notes

  • Project was previously published as instagram-harness / @instagram-harness/* and renamed to ig-harness / @ig-harness/* on 2026-04-08 to address a Meta trademark complaint. The old npm packages are deprecated.