Repository navigation
Releases
v0.3.0
What's Changed
Relay control commands
Send !status, !stop, !new or !help as the whole message (@bot !stop in mention-gated channels; /status etc. and the aliases !cancel / !reset also work). They are answered immediately, outside the per-channel run queue:
!status: what is running, for how long, how many messages are queued, and which thread the channel resumes!stop: cancel the running Codex task and drop queued messages!new: forget the channel's resumed thread so the next message starts fresh (CODEX_RESUME_BY_CHANNEL=true)
Messages that arrive while a channel is busy get a ⏳ reaction until their turn starts.
Inbound attachments
Files the user attaches are downloaded into the bridge inbox before the run, and the prompt lists each local path, so codex exec can read them (bot-mode runs previously could not). Per-file failures are reported, and inbox files older than 7 days are pruned. Opt out with CODEX_DISCORD_RELAY_DOWNLOAD_ATTACHMENTS=false.
Process-tree kill
Cancel and timeout used to kill only the codex CLI. Tool commands it had started in their own session (setsid) survived as orphans. Codex now runs as its own process group, and every descendant is collected from the process table before signalling (SIGTERM, then SIGKILL after 2s).
Safer restarts
Shutdown (SIGINT/SIGTERM/SIGHUP) cancels in-flight runs instead of orphaning them and leaves their messages pending. On restart, only pending messages younger than CODEX_DISCORD_REPLAY_MAX_AGE_MS (default 1h, 0 = off) are replayed.
Fixes
queue.json/threads.jsonupdates are serialized per file; concurrent updates could silently drop a writemcpmode yields inbound handling to a live relay, so the interactive Codex and the per-run MCP servers no longer duplicate typing, ack reactions, pairing replies or queue writes;bridge_statusreportsrelay.running;download_attachmentreports per-file failures- Uses
Events.ClientReady(fixes the discord.jsreadydeprecation warning) doctorshows relay state, attachment download and replay settings- discord.js 14.28.1, @modelcontextprotocol/sdk 1.32.2
Release
GitHub Releases now publish to npm via trusted publishing (.github/workflows/release.yml). Earlier GitHub Releases (v0.1.x to v0.2.0) never reached npm, which stayed at 0.1.2.
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
Relay file delivery — bot mode now attaches files, not just text
- Generated images: the relay captures the session rollout's byte offset before each
codex execrun and decodes only theimage_generation_callresults the run appended — exact per-run attribution, cheap even on multi-MB resumed rollouts. Headlesscodex execimage_gen output now reaches Discord. - Outbox deliverables: the prompt points Codex at a per-channel outbox (
CODEX_DISCORD_OUTBOX_DIR, default~/.codex/discord_outbox/<channel-id>/); document/data/archive/media files written there during the run are attached automatically (code files, logs, and dotfiles are ignored). - Attach failures fall back to a text-only reply so the answer itself is never lost.
- Everything is on by default; set
CODEX_DISCORD_RELAY_ATTACHMENTS=falsefor the old text-only behavior. - The outbox joins the
image_genoutput dir as an always-allowed attachment root.
Fixes
- MCP server now advertises the real package version instead of a hardcoded
0.1.0 codex execrunner: stdout retention capped (--jsonemits multi-MB image events), SIGTERM escalates to SIGKILL after 2s on timeout, exit signals reported- Hand-edited
access.jsonchannel entries missingallowUsersno longer crash the inbound gate - Long-message chunking no longer starts continuation chunks with a boundary space
doctorreportsrelayAttachmentsand the outbox path; help output aligned
Full Changelog: v0.1.2...v0.2.0
v0.1.2
What's Changed
- Fix bot mode for Codex CLI >= 0.140 and global-install no-op by @Openclaw-Metis in #2
- Codex 0.140 bot fixes, relay single-instance lock, and Discord image/file attachments by @Openclaw-Metis in #3
- Add recover_generated_image MCP tool (recover image from Codex session rollout) by @Openclaw-Metis in #4
New Contributors
- @Openclaw-Metis made their first contribution in #2
Full Changelog: v0.1.1...v0.1.2