Repository navigation
Latch v0.34.0: Persistent public-message starboard
Pre-releaseLatch 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