My account: change password, my note on the door, my sessions #373

Closed
littlefox wants to merge 0 commits from issue-352-my-account into main
Owner

Closes #352

Stacked on #351. On my own profile, "Mitt konto": change my password, my note on the door, and my sessions (log any other one out). A changed password is the one used to reconnect after a dropped connection (the session's copy is now shared and updatable), and a kept login stores the new one. Devserver test my_account; account.spec (Lars, new in the seed) plus the profile, reconnect and remember specs pass on all three profiles (36).

🤖 Generated with Claude Code

https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

Closes #352 Stacked on #351. On my own profile, "Mitt konto": change my password, my note on the door, and my sessions (log any other one out). A changed password is the one used to reconnect after a dropped connection (the session's copy is now shared and updatable), and a kept login stores the new one. Devserver test `my_account`; account.spec (Lars, new in the seed) plus the profile, reconnect and remember specs pass on all three profiles (36). 🤖 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
Under a channel's status, "Visa medlemmarna (N)" lists them (invited and
passive ones tagged). Its supervisor invites a person by name and
removes members, asked once more. An invited person sees "Du är inbjuden
hit" with Tacka ja / Tacka nej where the channel's status is, and going
to the channel shows that choice rather than its posts.

Supervisors invite: lyskomd's "Add members by invitation" (on by
default) makes any add by a non-admin an invitation. Adding directly is
for admin mode (#355).

Refs #350

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
# Conflicts:
#	crates/devseed/src/main.rs
Refs #351

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Test: a member opens the channel's status through Om kanalen
All checks were successful
ci / e2e (android) (push) Successful in 23m12s
ci / e2e (iphone) (push) Successful in 24m0s
ci / check (push) Successful in 12m48s
ci / desktop (push) Successful in 19m7s
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 2m17s
ci / e2e (desktop) (push) Successful in 22m41s
53cee2cc35
Refs #350

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Merge issue-350-members into issue-351-moderation
All checks were successful
ci / check (push) Successful in 12m0s
ci / e2e (iphone) (push) Successful in 21m47s
ci / e2e (android) (push) Successful in 18m16s
ci / e2e (desktop) (push) Successful in 20m29s
ci / desktop (push) Successful in 19m9s
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 3m10s
25d32ef4e7
My account: change password, my note on the door, my sessions
Some checks failed
ci / e2e (desktop) (push) Failing after 21m40s
ci / desktop (push) Successful in 20m33s
ci / e2e (iphone) (push) Successful in 20m49s
ci / e2e (android) (push) Successful in 19m16s
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 3m4s
ci / check (push) Successful in 13m7s
cd050f2f8a
On my own profile, "Mitt konto": change my password (the old one, the
new one twice; wrong or different ones are said), put up or take down
my note on the door, and see where I'm logged in, logging any other
session out.

A changed password is the one used to log in again after a dropped
connection (the session's copy is now shared and updatable), and a kept
login (D-032, D-045) stores the new one.

Refs #352

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

Merged into main as part of #377 (the stack's top branch, which contains this one); main green (run #696). Closing.

Merged into main as part of #377 (the stack's top branch, which contains this one); main green (run #696). Closing.
littlefox closed this pull request 2026-10-28 02:25:57 +00:00
Some checks failed
ci / e2e (desktop) (push) Failing after 21m40s
ci / desktop (push) Successful in 20m33s
ci / e2e (iphone) (push) Successful in 20m49s
ci / e2e (android) (push) Successful in 19m16s
perf / perf (pull_request) Has been skipped
ci / plan (push) Successful in 3m4s
ci / check (push) Successful in 13m7s

Pull request closed

Sign in to join this conversation.
No description provided.