9 Commits
Author SHA1 Message Date
james.maesandClaude Fable 5.2 80bea0f931 fix(connect): a Continue to Slack link, a landing page that exists and a plain refusal
maven / build (push) Successful in 1m35s
build / maven (push) Successful in 1m35s
Install for my organization and Connect Slack on the Connections table
ended on an empty screen with only a Return button. The screen declared
a view field (authorizeUrl) but no component, and a frontend step shows
only the components it declares. The screen is now an HTML component:
one sentence about what happens, a Continue to Slack link to the consent
page (same tab, so Slack can return the browser) and the lifetime of the
link, read from SlackOAuthState.LIFETIME_SECONDS (10 minutes).

After Slack, the callback redirected to /preferences?section=slack,
which the host UI does not serve. It returns to
/app/preferences?section=slack with &result=connected or &error=<code>.

Connecting in an environment without the public URL or the Slack app
secrets failed with "IllegalArgumentException (Slack public URL is
required)" or "Slack secret unavailable". It is refused before any state
is issued with a user-facing message that says Slack is not set up in
this environment, which of the two is missing, and the names of the
missing environment variables, never a value.

The Preferences action still answers with the authorize address as the
whole message: core has no redirect field on an action result.
qqq-frontend-next opens a message that is only an https address.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 06:29:49 -06:00
james.maesandClaude Opus 5.5 1811bbf211 fix(health): an unconfigured Slack app is UNKNOWN, never DOWN
With no SLACK_* secrets at all the app readiness check is NOT_CONFIGURED and
the health indicator reports UNKNOWN (HTTP 200) with configured=false, so an
optional, unset Slack integration can't fail a readiness probe (it took kof22's
probe down). Not-yet-checked is UNKNOWN too. Partial or invalid configuration
stays DOWN. Tests for all three.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 23:54:33 -05:00
james.maesandClaude Opus 5.5 37524048ba refactor(bridge): core #1194 rich messaging fields on RC.7, drop the stand-in
The QBIT_SLACK provider declares its capabilities and returns status, message
id and reasons through core SendMessageOutput; idempotency keys and templates
come from SendMessageInput.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 19:48:26 -05:00
james.maesandClaude Opus 5.5 fb93a01a41 feat(metadata): slack_interaction audit table (child of messages)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:49:22 -05:00
james.maesandClaude Opus 5.5 c0eab35fde feat(outbox): FILE messages via Slack's external upload flow
files.getUploadURLExternal, a streamed upload from core storage (no temp
files), files.completeUploadExternal; expired-lease reconcile by title marker
through files.list; files:read scope added to the manifest and design.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:30:37 -05:00
james.maesandClaude Opus 5.5 ac2427220e feat(metadata): slack_ tables with owner and tenant locks and hidden tokens
Seven tables (workspace, connection, channel, user group, template, message,
attempt), enums, joins, child lists and Postgres DDL. Owner locks on
connection and message; the host tenant lock on workspace and inherited by
join; token fields PASSWORD, hidden, and DENY-locked for every user session.
Tests: validator, owner isolation, two-tenant isolation, token invisibility.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:18:52 -05:00
james.maesandClaude Opus 5.5 cae5b88fa1 docs: design for qbit-slack (per-user, multi-tenant, delivery destinations)
Owner decisions (2026-10-14): all recommendations accepted (standing approval).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:59:39 -05:00
james.maesandClaude Opus 5.5 24be00bafc build: scaffold per the QRun qbit repository standard
Coordinates com.kingsrook.qbits:qbit-slack, qbit-build-parent 2.1.1 with
guardrails enforced, qqq-orb 0.6.9, QQQ 4.1.0-RC.6, Checkstyle and the
JaCoCo gate. Minimal SlackQBitProducer and SlackQBitConfig with a test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:59:38 -05:00
james.maes ee9e890117 Initial commit 2026-10-14 10:48:37 -05:00