CI / Build & Quality Checks (pull_request) Successful in 1m52s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 8s
CI / Playwright smoke (e2e) (pull_request) Successful in 10m59s
DND was sent as presence unavailable with the literal status text "dnd": it replaced your status, and other clients showed "dnd". Where the server supports MSC3026 (busy_presence), DND now sends presence org.matrix.msc3026.busy and leaves the status alone (Synapse keeps busy across /sync set_presence=online). Busy renders as red "Do Not Disturb" with the real status line; the legacy unavailable + "dnd" encoding is still recognised and still used on servers without it. Status saves / clears no longer downgrade busy. The SDK rejects non-spec presences, so busy goes through a direct authed PUT. Fixes #283 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
12 lines
532 B
TypeScript
12 lines
532 B
TypeScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { BUSY_PRESENCE, isDndPresence } from './busyPresence';
|
|
|
|
test('isDndPresence: busy, or the legacy unavailable + "dnd" text (#283)', () => {
|
|
assert.equal(isDndPresence(BUSY_PRESENCE, '🎮 Gaming'), true);
|
|
assert.equal(isDndPresence(BUSY_PRESENCE, undefined), true);
|
|
assert.equal(isDndPresence('unavailable', 'dnd'), true);
|
|
assert.equal(isDndPresence('unavailable', 'lunch'), false);
|
|
assert.equal(isDndPresence('online', 'dnd'), false);
|
|
});
|