User area: clients overwrite each other's settings (last writer wins) #332
Labels
No labels
area/ci
area/desktop
area/packaging
area/protocol
area/reading
area/ui
area/web
area/writing
kind/bug
kind/feature
kind/infra
kind/request
needs/user
parked
perf
security
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
littlefox/neokom#332
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Interop audit, 2026-10-24.
The user area is last-writer-wins between clients, and a client can undo another's changes. The whole user area is one text, rewritten on every save.
Kom::save_settings,kom.rs) writes the copy it read at login: ourneokomblock, plus thecommonblock (Settings: read-depth-first, created-texts-are-read, presence-messages, language) and theelispblock (mute filters go into elisp'skom-filter-listwhen it has one). Anything changed elsewhere since login (in Emacs, or NeoKOM on another device) is lost on NeoKOM's next save. A save can be as small as following a thread or choosing a channel view.lyskom-save-options,flags.el) keeps other clients' blocks, but fromlyskom-other-clients-user-areas, read when its session started. "Spara inställningar" in Emacs writes back NeoKOM's block as it was then: followed threads, channel views and mute filters added since are lost.Options:
Do option 1. People switching clients is not very common, but when they do we should show good etiquette.
Merged in #383; main run #725 green. Every settings change now re-reads the user area and applies only that change (
Kom::update_settings); saves from one session take turns. Verified by the devserver testuser_area_changes_meet: two NeoKOM sessions with stale copies plus an Emacs-style write ofelisp/commonin between, and all changes survive. All 33 devserver tests pass. settings, mute and lock specs pass on all profiles.