feat(enclave): standardize settings page to the redesigned shell (LC-463) #446
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/enclave-settings-redesign"
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?
What
Standardizes
/enclave/{id}/settings(the last page on the old flat full-width single-column style) to the redesigned Settings/Manage/Info shell. Refdata/ref-enclave-settings.jpg. Closes LC-463 (subtasks LC-464..468).Structure (approved)
Vertical-tab Settings shell, five tabs (client-side - single route unchanged):
Standard header + back-to-enclave affordance; every section is a
.lc-set-card; buttons/inputs standardized to.btn/.input.UX fixes
roominfo.js). Owner-only, gating unchanged.?ok=<code>, resolved to a localized message and shown as a toast on load - nothing completes silently. Rotate shows the new code + a toast..lc-switchreflecting current on/off state (Visibility, Coyote, Shame, Share emojis); still submits the same POST-flip value, so the server contract is unchanged.partials/empty_state.htmlfor no bans / emojis / groups.Preserve (no change)
Enclave/role data models, all authz (rename/rotate/kick/transfer/delete/toggles), action routes + methods, validation limits, and
hx-swap-oobtargets - the live member region#lc-enclave-settings-membersand its shared partial (used by the WS OOB fragment) are kept intact.Verification
just build-css,just check(clippy + fmt clean),just test,just test-saasall green (the live-member-wiring test still passes - the template keepsdata-lc-live-topic,#lc-enclave-settings-members, and the/kickcontrol).just verifybuilt the release binary clean; itsserver-upharness lacks the mandatoryLETS_CHAT_BUNYIP_SSO_*startup vars, so the standalone server cannot boot to serve/loginin this sandbox (environmental, not a regression).🤖 Generated with Claude Code
The enclave settings page was the last surface still on the old flat, full-width, single-column style. Brought it in line with the redesigned Settings / Manage / Info pages. Structure (approved): the Settings vertical-tab shell with five tabs - General (Name/Description, Visibility, Invite code), Members, Moderation (Anti-spam, Coyote Mode, Shame tags, Banned users), Customization (Custom emojis, User groups, Branding), and an owner-only Danger zone (Delete). Client-side tabs (enclave_settings.js, hash + sessionStorage), so the single /enclave/{id}/settings route is unchanged. Standard header with a back-to-enclave affordance; every section is a .lc-set-card; buttons/inputs standardized to .btn / .input. UX fixes: - Danger zone: red card with a type-to-confirm gate (reusing the delete-account/room component, already global in roominfo.js). Owner-only (can_delete), unchanged gating. - Save feedback on every action: each redirect-based handler now appends ?ok=<code>, resolved to a localized message and surfaced as a toast on load (enclave_settings.js), so nothing completes silently. Rotate shows the new code + a toast. - Toggle switches (Visibility, Coyote, Shame, Share emojis): styled .lc-switch reflecting the current on/off state, still submitting the same POST-flip value (server contract unchanged); the post-redirect reload renders the new state. - Member rows: role badges, aligned actions, Kick destructive, Kick + Transfer confirms. - Emoji upload: profile-avatar treatment - styled file button, shows the chosen filename, validates png/gif/webp + <=256 KiB before submit with an inline error. - Invite code: one-click copy with a "Copied" flip. - Shared empty-state for no bans / no emojis / no groups. Layout/styling + confirm/feedback/copy UI only: no change to enclave/role data models, authorization rules, server functions, validation limits, or hx-swap-oob targets. The live member region (#lc-enclave-settings-members) and its shared partial (used by the WS OOB fragment) are preserved. Verified with just build-css, just check, just test, just test-saas. just verify built the release binary clean; its server-up harness lacks the mandatory LETS_CHAT_BUNYIP_SSO_* startup vars so the standalone server cannot boot to serve /login in this sandbox (environmental). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>