From 8a441582f9f740e21ee8a5723739af5ebbc1ae3a Mon Sep 17 00:00:00 2001 From: pro3958 Date: Wed, 29 Jul 2026 22:20:32 -0700 Subject: [PATCH] fix(layout): persist sidebar collapse preference across reloads (#2764) The app-layout Stimulus controller read this.userIdValue when saving sidebar state but never declared a static values block, so Stimulus did not bind data-app-layout-user-id-value. this.userIdValue was undefined, and every toggle PATCHed /users/undefined, which could not update show_sidebar or show_ai_sidebar. The preference was never stored, so the layout reset on the next load. Declare static values = { userId: String }. String is correct for both UUID and integer ids since the value is only interpolated into the request URL. The layout already renders the attribute and UsersController#user_params already permits both fields, so the update now completes. Fixes #2473 Co-authored-by: agentloop --- app/javascript/controllers/app_layout_controller.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/controllers/app_layout_controller.js b/app/javascript/controllers/app_layout_controller.js index 612114735..ceeec0f33 100644 --- a/app/javascript/controllers/app_layout_controller.js +++ b/app/javascript/controllers/app_layout_controller.js @@ -3,6 +3,7 @@ import { Controller } from "@hotwired/stimulus"; // Connects to data-controller="dialog" export default class extends Controller { static targets = ["leftSidebar", "rightSidebar", "mobileSidebar"]; + static values = { userId: String }; static classes = [ "expandedSidebar", "collapsedSidebar",