All notable changes to this project are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.1.0 - 2026-07-09

Initial release — a Swoosh-style Slack library with a fake Slack dev UI.

Added

  • Outbound choke pointuse Slackbox.Notifier generates post_message/1,2 (alias deliver/1,2), post_ephemeral/1,2, update/1,2, delete/1,2, open_view/2,3, and respond/2,3, all dispatching through a single Slackbox.Adapter.call/3 to a per-environment adapter.
  • Slackbox.Message — composable pipe builders (to_channel/2, text/2, blocks/2, thread/2, to_user/2, unfurl_links/2), Block Kit helpers (section/1, actions/1, button/2), action_ids/1, and to_payload/1.
  • Slackbox.Adapters.Live — a Req-based Slack Web API client for production (chat.postMessage/postEphemeral/update/delete, views.open, and response_url replies) with Slack ok:false/rate-limit handling.
  • Slackbox.Adapters.Local — captures messages into an in-memory Slackbox.Store and renders them in a real-time LiveView "fake Slack" dashboard (Slackbox.DashboardLive) with a per-message raw-payload inspector.
  • Slackbox.Adapters.Test + Slackbox.TestAssertions — capture outbound calls and assert on them (assert_message_sent/1, refute_message_sent/1, assert_ephemeral_sent/1, assert_message_updated/1, assert_view_opened/1).
  • Inbound simulation — clicking a Block Kit button, submitting a modal, or firing an event in the fake UI POSTs a real Slack-shaped payload (block_actions, view_submission, view_closed, event_callback) to your app's endpoint, with a working response_url and optional HMAC request signing (Slackbox.Signature, Slackbox.Simulator, Slackbox.ResponsePlug).
  • Slackbox.Test — payload builders (block_actions/1, view_submission/1, event/2, form_body/1, signature_headers/2) for unit-testing your Slack endpoints without the UI.
  • mix slackbox.demo — a standalone demo server to try the whole loop at http://localhost:4000 without a real Slack workspace.