Channel rules: who can read and post, parent channel, keeping, owner #370

Merged
littlefox merged 3 commits from issue-349-channel-rules into main 2026-10-28 01:59:06 +00:00
Owner

Closes #349

Stacked on #348. set-expire left out (experimental in Protocol A). Devserver test channel_rules (including handing over, after which the old owner is refused); manage-channel.spec covers closing (with its confirmation), who may post, an unknown name, and handing over.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

Closes #349 Stacked on #348. set-expire left out (experimental in Protocol A). Devserver test channel_rules (including handing over, after which the old owner is refused); manage-channel.spec covers closing (with its confirmation), who may post, an unknown name, and handing over. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
"Skapa kanal" in Alla kanaler opens a short form: the name, who can read
it (open, closed, secret), anonymous posts and secret members, and an
optional presentation. The channel is created with create-conf, joined,
and opened; the creator is its supervisor. A taken name, a server that
doesn't allow it, and a presentation that fails are said plainly.

kom-client gets admin.rs (ChannelKind, AdminError, create_channel), and
presentations work for any conference, not only my own person.

Refs #347

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
A channel's supervisor (or a member of the supervising conference) gets
"Hantera kanalen" under its status: rename it, write its presentation,
put up or take down the note on the door, and add or remove FAQs. Others
see the status as before. The server has the last word; a refusal is
said as "you may not change this channel".

The note is written as elisp writes it: a text to the server's motd
conference with the channel's name as subject, then set-etc-motd. A FAQ
is a text to the channel marked with faq-text.

Refs #348

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Test: what the channel status shows; phones open it through ⋯
All checks were successful
ci / desktop (push) Successful in 20m8s
ci / e2e (desktop) (push) Successful in 23m9s
ci / e2e (iphone) (push) Successful in 22m55s
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 2m27s
ci / check (push) Successful in 9m57s
ci / e2e (android) (push) Successful in 16m31s
549d5c630c
Refs #347

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Refs #348

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
"Hantera kanalen" gets the rules: open, closed or secret (a stricter
choice asks once more and says what changes), replies to the parent
channel, anonymous posts, secret members; who may post (a person or a
channel's members, empty for everyone); the parent channel; how many
days posts and commented posts are kept; and handing the channel over,
after a warning that you can't change it afterwards. Names are looked up
as typed; none or several matches are said plainly.

set-expire is left out: Protocol A marks it experimental and lyskomd
doesn't act on it.

Refs #349

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Manage a channel: the message stays above the status after a change
All checks were successful
ci / e2e (iphone) (push) Successful in 22m1s
ci / e2e (android) (push) Successful in 19m34s
ci / e2e (desktop) (push) Successful in 19m9s
ci / desktop (push) Successful in 22m32s
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 2m38s
ci / check (push) Successful in 10m5s
ab539efc74
open_conf clears the status line on purpose, so the message for a
change was gone before it showed. A change now reloads the view itself.

Refs #348

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Merge issue-348-manage-channel into issue-349-channel-rules
All checks were successful
ci / check (push) Successful in 12m38s
ci / e2e (desktop) (push) Successful in 22m2s
ci / e2e (android) (push) Successful in 17m33s
ci / desktop (push) Successful in 17m46s
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 3m5s
ci / e2e (iphone) (push) Successful in 27m25s
f3b8620c35
Merge main into issue-349-channel-rules
All checks were successful
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 2m37s
ci / check (push) Successful in 13m5s
ci / e2e (android) (push) Successful in 20m11s
ci / desktop (push) Successful in 20m6s
ci / e2e (iphone) (push) Successful in 20m54s
ci / e2e (desktop) (push) Successful in 22m48s
7ba023fe61
littlefox referenced this pull request from a commit 2026-10-28 15:15:37 +00:00
Sign in to join this conversation.
No description provided.