RES-Slim v0.3.6 — Settings console UX transformation
Settings console UX rework. No functional module changes in this release — only the settings page itself.
What changed
Sidebar
- Categories no longer accordion-collapse. Every category stays expanded by default so the full 45-module list is always scannable. Click a category header (chevron flips) to collapse just that one — siblings never collapse under the user. This was the single biggest friction point: selecting a module in one category used to close every other category, forcing users to re-find their place every time they wanted to jump between groups.
- Inline toggle switch on every module row. No more navigate-then-toggle two-click dance. Flip modules on/off directly in the sidebar without loading their options workspace.
alwaysEnabledmodules (Menu, Version, etc.) show a lock dot instead of a toggle. - Filter chip row (
All / On / Off / Modified) above the module list with live counts. Lets you see just the modules you've touched before saving, or just the disabled ones, without scrolling.
Header
- Global Save + Discard + stage-status bar in the top header, replacing the per-module workspace Save button. Unsaved changes are visible and actionable from any module you're viewing.
- Dirty state renders warning-colored with a live count: "3 changes staged across 2 modules"
- Saved state renders success-colored with a pulse animation on commit
- Discard button appears alongside when the stage is dirty and hard-resets via
Options.stage.reset()
- Dropped the
/r/Enhancementsidebar link (wrong for a private fork that explicitly stripped upstream RES), the "Settings" eyebrow, and the marketing subtitle. Header is now a single clean title row.
Internals
- New shared
toggleModuleEnabled(id)function is the single entry point for enable/disable. Both the sidebar inline toggle and the workspace toggle call it. Global save/discard also call it when re-syncing the sidebar after a commit. - New
syncSidebarModuleState(moduleID, enabled)keeps the sidebar toggle visually in sync with stage + commit operations without a full re-render. - Removed dead selectors from
options.scss:#moduleOptionsSave,.workspaceStageStatus,.moduleActionRow,.moduleWorkspaceEyebrow,#RESConsoleSubredditLink,.consoleEyebrow,.consoleSubtitle. - Added:
.globalStageBar,.globalSaveButton,.globalDiscardButton,.filterChips,.filterChip,.filterChipCount,.moduleRow,.moduleRowToggle,.moduleRowLock,.categoryButtonChevron,.sidebarFooter.
Install
CRX (signed, auto-updates from prior RES-Slim CRX installs — same extension ID)
- Download
res-slim-chrome-v0.3.6.crx. - Drag and drop into
chrome://extensionswith Developer mode enabled.
Zip (unpacked)
- Download
RES-Slim-v0.3.6-chrome.zipand extract. - Load unpacked from
chrome://extensions.
Verification
yarn oncecleanyarn eslint lib/options/cleanyarn stylelintcleannpx flow check: 1 pre-existing error only (scrollIntoView({ block: 'nearest' })— flow-bin 0.84dom.js.flowout of date, the value is spec-valid)- Preview rendered in playwright at 1200×1500 to validate layout, spacing, filter chip counts, dirty-state colors, category expand state, inline toggles, lock dot on alwaysEnabled modules