Skip to content

chore(release): pending release v0.46.1#694

Merged
marcusrbrown merged 5 commits into
releasefrom
next
May 30, 2026
Merged

chore(release): pending release v0.46.1#694
marcusrbrown merged 5 commits into
releasefrom
next

Conversation

@fro-bot
Copy link
Copy Markdown
Contributor

@fro-bot fro-bot Bot commented May 29, 2026

Pending Release: v0.46.1

This PR tracks changes pending release. Released on the next auto-release cycle (Sunday/Wednesday) or via manual dispatch.

Merge this PR to trigger a release. Releases also run automatically on Sunday/Wednesday at 20:00 UTC, or via manual workflow dispatch.

Commits Since Last Release


Auto-generated by the release pipeline. Updated: 2026-05-29 23:37 UTC

…and path validation (#693)

- Require the invoking user to hold Manage Channels before running
  /add-project, closing a privilege-amplification path where any member
  could drive the bot's broader permissions.
- Replace the repo-exists reply that instructed users to rm -rf the
  workspace path — which would delete another user's in-flight clone —
  with a bindings re-read that redirects to the bound channel or asks the
  user to wait.
- Validate the workspace clone response against the full expected path
  (/workspace/repos/owner/repo) instead of a suffix match, rejecting
  adversarial prefixes like /etc/passwd/owner/repo.
@fro-bot fro-bot Bot requested review from fro-bot and marcusrbrown as code owners May 29, 2026 19:01
* docs(solutions): capture Discord slash command orchestration patterns

Permission checks via interaction.appPermissions, bootstrap-wiring test
coverage, IAT handling across the workspace HTTP boundary, multi-phase
partial-failure recovery, and live-cache re-read in collision loops.

* docs(solutions): teach full-path validation and clarify single-process cache interleaving

- Show the full-path equality check (now in source) as the canonical form;
  demote suffix-only to the broken-pattern slot.
- Reframe the channel-cache hazard as inter-await interleaving in a single
  Node process, not OS-level concurrency.
- Point readers to the files defining getCommandRegistry and dispatchCommand.
- Resume from CREATING_CHANNEL when a repo is already cloned but has no
  binding, so re-running /add-project after a post-clone failure heals
  instead of dead-ending on repo-exists. Clones are atomic, so repo-exists
  always means a complete clone; the canonical workspace path is
  reconstructed via a shared workspaceRepoPath helper.
- Refuse new /add-project invocations while the gateway is draining for
  shutdown, with a clear retry message, instead of starting work that gets
  hard-killed mid-flight.
- Fix a missing return on the disk-full clone-error branch that would have
  fallen through with an unset workspace path.
marcusrbrown and others added 2 commits May 29, 2026 16:35
)

Records that /add-project has no programmatic invocation surface — the
orchestration is bound to a Discord interaction, and recovery is via
idempotent retry rather than agent-callable primitives. A Discord-independent
primitive is deferred until a non-Discord caller exists.
@marcusrbrown marcusrbrown merged commit e50ef39 into release May 30, 2026
1 check passed
@marcusrbrown marcusrbrown deleted the next branch May 30, 2026 02:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant