Skip to content

Release 0.34.0 - #27

Merged
Dim145 merged 1 commit into
mainfrom
release/0.34.0
Aug 30, 2026
Merged

Dim145 merged 1 commit into
mainfrom
release/0.34.0

Conversation

@Dim145

@Dim145 Dim145 commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Messaging: private messages, a public room, and a ticket desk — with the Go relay that fans out to all three.

What ships

Private messages. First contact lands in a request queue rather than the inbox, so a stranger cannot put anything in front of you without your say-so. Optional per-conversation encryption, sealed in the browser. Reactions, replies, edits, read receipts, archiving, muting and search across everything the server can actually read.

A public room. Partitioned by day, with slow mode, mutes, pins and staff broadcasts.

A ticket desk. A member writes to the staff as a body rather than to a person — which is the point: somebody who has blocked the moderator on shift can still reach the desk. Assignment happens by answering. Closed is closed in both directions, with a staff-only reopen as the escape hatch.

Live delivery. A Go relay, fanning out over SSE, with per-user channels and a token the API mints.

The rules it holds to

  • Nothing is on by default. Each surface has its own switch, and an instance running none of them looks like a build that never had them: 404, not 403.
  • Blocking closes every door but the one to the staff.
  • What the staff can read is logged. One route reads a reported private message, never a second one, never a ciphertext, and every read is on a page the whole team can see.
  • Retention is published and enforced. /privacy reads the live settings rather than repeating numbers, and each sweep now has tests — which is how the one that had never deleted a row was found.

Verified before the merge

e2e, clean database 537 across 13 scenarios
Unit 765 web · 429 API
Integration 463
Typecheck API and web templates, 0
Migrations upgrade rehearsal: a database built from main's 49 and brought up on 58 is byte-identical to a fresh one

Operators

Nine migrations (0049–0057). Everything starts switched off; the messaging settings live in the admin panel. The relay is optional — without it the surfaces work by reloading, which is how they were built.

🤖 Generated with Claude Code

@Dim145
Dim145 merged commit cf6194e into main Aug 30, 2026
11 checks passed
@github-actions
github-actions Bot deleted the release/0.34.0 branch August 30, 2026 22:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant