Skip to main content

CHANGELOG.md

# Changelog

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

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.0] - 2026-07-09

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

### Added

- **Outbound choke point** — `use 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.

[Unreleased]: https://github.com/epinault/slackbox/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/epinault/slackbox/releases/tag/v0.1.0