Skip to content

v0.20.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 08:55

Changed

  • /spacestate is switched off for now because it isn't working. It isn't registered, so run just register dev / just register prod after deploying to remove it from Discord. Its code and config stay in place to turn back on.

Added

  • A Deploy dev workflow puts a branch or pull request on the Pixel Dev bot without a laptop: GitHub → Actions → Deploy dev → Run workflow with a PR number, branch or SHA, or just deploy-remote dev 123. It runs just check on that commit, publishes :<sha> and :dev to GHCR, rolls pixel-dev, registers dev slash commands and creates a Sentry release in environment dev. It only runs when someone starts it, refuses PRs from forks, and never touches prod. For it to register commands, a maintainer sets github_register_principal_id in infra/envs/dev to pixel-github-dev's principal ID and applies (it can read the dev discord-token and nothing else). See ADR 0018.
  • Terraform can set the closing-time channel on Azure (discord_closing_time_channel_id in infra/envs/dev and prod). Before, it could only be set by hand on the Container App, and the next apply removed it.
  • /schedule edit takes duration to change how long a scheduled poll stays open, so it's no longer stuck at what it was created with. Polls posted after the edit use it; one already posted isn't changed. It's refused on a message schedule. Needs just register dev / just register prod.

Fixed

  • An announcement channel Pixel couldn't use (the bot status and closing-time channels, and channels set with /admin announcements) now starts posting once it's fixed, without a restart or setting it again. Pixel tries it again shortly after Discord says a channel or role changed, and every 5 minutes, and logs discord.announce_enabled / announcements.route_on when it's back. Before, it stayed off until Pixel restarted. A retry that fails the same way isn't reported again.
  • The reason a channel can't be used is clearer: "there's no channel with that ID" and "the bot can't see the channel" are now told apart, instead of "the channel doesn't exist or the bot can't see it". Pixel also checks its own roles with Discord instead of trusting a cached copy. The runbook has a new troubleshooting entry for this.