Skip to content

Releases: informent/Latch

Latch v0.35.0: Starboard recovery and cleanup

Choose a tag to compare

@informent informent released this 12 Oct 16:45
7e5979e

Latch v0.35.0

Starboard recovery and cleanup

  • Five new staff commands: history, exact-post recovery, retirement, source removal and bounded pruning.
  • Saved deletion intent survives restart and lost Discord responses. Cleanup requires verified ownership or Discord Unknown Message proof.
  • Bulk deletion continues after an individual failure. Removed sources retain their highlights until staff act.
  • All staff replies are private and suppress mentions. The generated COMMANDS.md lists all 216 command paths across 26 suites.

Upgrade

Stop the bot and back up all thirteen stores before upgrading. Run npm run register after upgrading. Starboard reads formats 1 and 2 and writes format 2 on the next successful mutation; rollback needs a compatible pre-upgrade backup. Keep one process per store set.

Verification

1,015 tests passed locally with coverage floors enforced. All 49 isolated runtime checks passed. Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

This remains a prerelease. Live Discord acceptance and full competitor parity are unfinished. No paid command gates or third-party runtime packages. MIT licensed.

CI: https://github.com/informent/Latch/actions/runs/38279444600

Latch v0.34.0: Persistent public-message starboard

Choose a tag to compare

@informent informent released this 12 Oct 02:30
603eb0b

Latch v0.34.0: Persistent public-message starboard

New feature

  • /starboard configure: choose a public destination, add public source channels and set a threshold from 2 to 50.
  • /starboard status: privately inspect settings, tracked records and pending publication IDs.
  • /starboard pause: stop publishing and refreshes while keeping saved highlights.
  • /starboard sync: reconcile one message using current Discord reactions.

Normal star reactions count, excluding bots and the source author. Latch posts a message link with mentions and previews suppressed; it does not copy text, embeds or attachments. Private channels, threads, announcement channels and NSFW sources are rejected, with visibility rechecked before publication.

Publication intent is saved before sending. Existing highlights update in place, with ownership verification. A worker reconciles up to five tracked highlights per minute after restart. Ambiguous responses remain pending and are checked against the newest 100 destination posts rather than blindly resending. Source deletion events remove verified highlights.

Setup and upgrade

Back up the existing installation first. Preserve your private .env and all configured store paths. Extract the new source, run npm run doctor, run npm run register, restart and run npm run doctor:live. Guided setup's Community extras preset includes starboard. On an existing installation, set DISCORD_STARBOARD_ENABLED=true and keep Gateway enabled. No privileged Message Content intent is required for starboard alone.

The bot needs View Channel and Read Message History in sources, plus Send Messages in the destination. Staff need Manage Server. Configure the destination and source, then test with two or more non-author human reactions in a public test channel.

Starboard setup and recovery | All 211 command paths

Persistence and limits

The new guild-bound starboard.json uses format 1 and joins doctor and thirteen-store backups. Complete legacy twelve-store backups are still verifiable, with starboard reported absent. Older versions cannot verify the new manifest; use a backup from the matching version when rolling back.

One destination, up to 20 sources and 500 retained receipts are supported. Once highlighted, a message remains highlighted if its count drops, with its displayed count refreshed. Reaction scans and queued work are bounded. Rich quotes, multiple boards, retention cleanup and source removal are not implemented. Missed offline source deletions and unresolved publication receipts can require staff inspection. The worker refreshes tracked messages; it does not discover messages whose reactions occurred entirely while offline.

Verification

  • 989 automated tests passed, including 36 starboard tests and one legacy-backup compatibility test.
  • 43 isolated runtime smoke checks, including starboard signed configuration, synchronization, duplicate protection, private status and backup recovery.
  • Coverage floors, JavaScript syntax, generated command reference and publication checks passed.
  • Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

Free and open source, with no new runtime dependency or paid tier. This is a source prerelease. Simulated checks do not prove live Discord reaction delivery, permission behavior or recovery. Live acceptance and complete competitor parity remain pending.

CI: https://github.com/informent/Latch/actions/runs/38195929926

Latch v0.33.0: AutoMod policies and filter editing

Choose a tag to compare

@informent informent released this 12 Oct 01:34
379539f

Latch v0.33.0: AutoMod policies and filter editing

New commands

  • /automod policy: choose blocking, alerts and timeout combinations.
  • /automod keywords-edit: replace keywords while keeping regex, allowed words and action settings.
  • /automod mentions-edit: change mention limits and optional raid detection, including explicit disabling.
  • /automod rename: change the name while keeping the native rule ID.

Rule inspection now shows alert destinations and timeout duration. Edits preserve enable state, exemptions and unrelated settings, serialize within the bot, skip identical writes and include requester audit reasons. Timeout policies require compatible rule types and extra staff permissions. Alert channels are validated against the current server.

Upgrade

Back up your current installation and preserve your private .env and store paths. Extract the new source, run npm run doctor, run npm run register to install the updated command definitions, restart the bot, then run npm run doctor:live. Existing native rules remain in Discord; there is no local store migration in this update.

New setup and policy examples: AutoMod guide. All 207 command paths: command reference.

Changes to enabled rules take effect immediately. Disable first if you need a review period. Alert actions log matching user content in the selected channel, so choose an appropriate staff channel. Policies completely replace the action list.

Verification

  • 952 passing automated tests, including 39 AutoMod regressions added since v0.32.0.
  • 38 isolated runtime smoke checks, including seven signed AutoMod workflow checks.
  • Coverage floors, syntax, generated command reference and publication-text checks passed.
  • Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

This is a source prerelease. Runtime checks use a simulated Discord adapter. Live Discord enforcement, stable acceptance and complete competitor parity remain pending. No paid tier or runtime dependency was added.

CI: https://github.com/informent/Latch/actions/runs/38192325373

Latch v0.32.0: Support queues and paged history exports

Choose a tag to compare

@informent informent released this 12 Oct 00:29
c2641ac

Latch 0.32.0: Support queues and history exports

Support queues

  • Filter tickets by active/open/closing/closed/reopening/all states, owner, handler and assignment status.
  • Members can browse only their own active or closed records. Staff filters preserve private replies and suppress mentions.
  • Use accurate filtered pagination, complete IDs and deterministic numeric ordering.

History exports

  • Export up to 1000 messages across ten pages and continue through older windows using before cursors.
  • Add explicit pagination/exhaustion metadata, optional gzip, exact-file SHA256 digests and safe text/JSON unpacking.
  • Recheck current requester roles, membership and read permissions after collection, and verify bot read access before exporting.
  • Reject duplicate/stalled/cross-channel pages, exhausted read budgets and size limits. No silent truncation or bot-side local transcript files.

Verification: 913 tests passed, including 47 new regressions, with enforced coverage floors. All 31 isolated runtime checks passed. The generated reference contains 203 command paths with expanded options. Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

Upgrade: re-register commands for queue filters and before/compression options. No additional ticket store migration. Downloaded JSON snapshots now use schema 2 with pagination fields; update consumers accordingly. Preserve complete stopped-process backups for rollback.

Limits: 45-second collection budget, 8 MiB normalized/uncompressed data caps, 2 MiB upload cap. Separate access checks/uploads have their own request budgets. Snapshots are not atomic archives; deleted/out-of-window messages, attachment bytes and non-text interactive data remain excluded. Message Content access affects returned content. Keep private downloads private. See docs/TICKET-TRANSCRIPTS.md and docs/TICKET-QUEUE.md.

Free MIT source prerelease. Real Discord upload/content validation and full live acceptance remain unfinished. Music, advanced antinuke, automatic archives and full competitor parity remain unfinished.

CI: https://github.com/informent/Latch/actions/runs/38188109103

Latch v0.31.0: Private ticket conversation exports

Choose a tag to compare

@informent informent released this 11 Oct 23:31
b4f7493

Latch 0.31.0: Private ticket exports

  • Add /ticket transcript for private text or JSON downloads of 1 to 100 recent messages. Defaults: 50 messages, text, current ticket channel.
  • Recheck current human membership, support/admin privileges and effective channel read permissions. Guests cannot export conversations.
  • Preserve exact numeric message ordering and include normalized authors, IDs, timestamps, replies, returned text, attachment links and embed text.
  • Send one bounded multipart attachment on the private response without storing local transcripts or copying conversation data into backups.
  • Reject oversize exports instead of truncating them. Document content-intent limits and omitted data.

Verification: 866 tests passed, including 32 new export/upload regressions, with enforced coverage floors. All 27 isolated runtime checks passed. The reference lists 203 command paths across 25 roots. Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

Upgrade: re-register commands. No new store format is introduced. Continue complete stopped-process backups; existing ticket format 2, economy format 3 and community format 3 need compatible backups when rolling back to older releases.

Export limits: recent-message snapshots only, not full archives. Older/deleted messages, attachment bytes, embed images, reactions, polls, stickers and components are excluded. Message Content access can affect returned text, embeds and attachments. Links can expire. Keep downloaded private conversation data private. See docs/TICKET-TRANSCRIPTS.md.

Free MIT-licensed source prerelease. Actual Discord file uploads, content access and full live acceptance remain unverified. Music, advanced antinuke and complete competitor parity remain unfinished.

CI: https://github.com/informent/Latch/actions/runs/38184545442

Latch v0.30.0: Ticket guests and closure recovery

Choose a tag to compare

@informent informent released this 11 Oct 23:02
b90f134

Latch 0.30.0: Ticket guests

  • Add /ticket guest add, /ticket guest remove and /ticket guest list, for support staff managing up to 20 screened human guests per open ticket.
  • Preserve unrelated channel permissions and verify the entire overwrite set after changes.
  • Save grant intent before Discord writes; retain failed grants/removals for explicit retry after restart.
  • Close revokes all saved guests before finalizing. Reopen restores the owner without reinviting former guests.
  • Include guest records in verified twelve-store backups and add signed runtime guest/closure recovery checks.

Verification: 834 tests passed, including 40 new guest regression tests, with enforced coverage floors. All 25 isolated runtime checks passed. The complete command reference contains 202 paths across 25 roots. Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

Upgrade: stop the bot and back up configuration plus all twelve stores together. This release reads ticket formats 1 and 2; the next successful ticket mutation writes format 2. Older releases need a complete compatible backup for rollback. Re-register commands after upgrading.

Permission limits: saved lists record access intent, not effective permissions. Discord administrators bypass channel overwrites. Other independent staff access remains. See docs/TICKET-GUESTS.md for retry, removal and closure behavior.

Free MIT-licensed source prerelease. Live Discord acceptance, music, advanced antinuke and complete competitor parity remain unfinished.

CI: https://github.com/informent/Latch/actions/runs/38182665972

Latch v0.29.1: Release verification and runtime privacy

Choose a tag to compare

@informent informent released this 11 Oct 22:06
630cb5b

Latch 0.29.1

  • Run npm run release:verify for the complete automated test, coverage, syntax, command, publication and isolated runtime gate.
  • Save new JSON evidence with -- --json --output release-evidence/verification.json. CI retains reports for Windows and Linux on Node 22 and 24.
  • Prevent unexpected HTTP, background and shutdown failures from leaking private exception text; handle null errors and broken loggers safely.
  • Ignore all twelve default JSON stores and generated verification evidence.
  • Refresh release instructions and the roadmap to reflect implemented giveaway, template and utility features.

Verification: 794 tests passed, including 13 new regressions, with enforced coverage floors. All 18 isolated signed runtime and backup recovery checks passed. The command reference contains 199 paths across 25 roots. Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

This remains a free MIT-licensed source prerelease. Live Discord acceptance, music, advanced antinuke and full Bleed/Greed parity remain unfinished. Existing commands and store formats are compatible; no registration or data migration is required. Keep complete stopped-process backups before upgrading.

CI: https://github.com/informent/Latch/actions/runs/38179049624

Latch v0.29.0: Giveaway customization and recovery

Choose a tag to compare

@informent informent released this 11 Oct 21:52
f051c58

Giveaway customization and recovery

Create a giveaway with descriptions, human host attribution, HTTPS images and thumbnails. Edit those details without replacing the entry message, inspect the saved embed privately, or reset one presentation field or all of them.

  • Four new edit paths: host, description, image and thumbnail.
  • Private preview without entry buttons, plus presentation resets.
  • Five-entry list pages with complete prizes, exact IDs and optional retained history.
  • Durable message refresh retries after restart, including failed initial publication.
  • Current human host checks, staff permissions and mention suppression.
  • Version 3 giveaway details included in verified backups.

Upgrade

Stop the bot and back up all twelve stores before upgrading. Community versions 1 and 2 load unchanged; the next successful community mutation writes version 3. Earlier releases reject version 3, so rollback requires a compatible complete backup. Re-run npm run register after upgrading to expose the new commands and options.

Descriptions allow 1500 characters. Media URLs allow 1024 characters and must use HTTPS DNS hostnames without credentials, fragments, custom ports or IP hosts. URLs are validated locally, while Discord renders the media. Completed history is retained for seven days after delivery while the scheduler runs.

Verification

  • 781 tests passed, including 31 new feature checks.
  • Coverage: 94.56% lines, 86.88% branches, 89.11% functions.
  • All 199 command paths match the generated command reference.
  • 18 isolated runtime smoke checks include signed giveaway creation/edit/preview/reset and verified backup recovery.
  • Syntax and publication text checks passed locally.
  • Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

Free MIT-licensed source. Live Discord operation and full Bleed/Greed parity remain unverified, so this is a prerelease. Download the source ZIP and verify it against SHA256SUMS before following the included setup guide.

CI: https://github.com/informent/Latch/actions/runs/38178053056

Latch v0.28.1: Complete panel and role menu lists

Choose a tag to compare

@informent informent released this 11 Oct 20:41
c17f257

Complete panel and role menu lists

Ticket-panel and role-menu lists now show five complete entries per page instead of silently dropping entries at Discord's response limit. Both commands include full titles, exact numeric ID ordering, totals, page counts and pending publication status. Multiline titles stay on one readable row.

Use /ticketpanel list page:2 or /rolemenu list page:2 to continue. Re-register commands after upgrading to expose the optional page argument. No storage migration is needed.

Verification

  • 750 tests passed, including 24 new regression checks.
  • Coverage: 94.19% lines, 86.55% branches, 89.00% functions.
  • All 193 command paths match the generated command reference.
  • Syntax, publication text and 13 isolated runtime smoke checks passed locally.
  • Windows/Linux Node 22/24 and container CI passed on the exact merged commit.

Free MIT-licensed source. This remains a prerelease: live Discord behavior and full Bleed/Greed parity are not verified. Download the source ZIP and verify it against SHA256SUMS before following the included setup guide.

CI: https://github.com/informent/Latch/actions/runs/38173185263

Latch v0.28.0: Saved template management

Choose a tag to compare

@informent informent released this 11 Oct 20:23
319cb93

Latch 0.28.0 adds saved embed management:

  • /template clone name destination creates an independent copy under an unused name.
  • /template rename name destination changes the saved name while retaining the embed.
  • Both require Manage Messages, reply privately and leave published announcements unchanged.
  • Existing names cannot be overwritten. Rename works at full capacity; cloning requires a free slot. Atomic writes preserve previous state on failure.

Verification: 726 tests, including 32 new checks for permissions, persistence, collisions, capacity and recovery. Windows/Linux Node 22/24 and container CI passed on the exact merged commit. The generated reference has 193 paths across 25 roots.

Upgrade: back up all twelve stores, replace source, run npm run doctor and npm run register. Store formats are unchanged.

This remains a source prerelease. Live Discord acceptance, production deployment and full competitor parity remain unverified.

CI: https://github.com/informent/Latch/actions/runs/38171927559