Redesign settings as a sidebar window (preview pad, profiles, activity, menu layout)#5
Merged
Merged
Conversation
Replace the single-column settings page with a macOS-style sidebar window: a dark sidebar (General, Event Visibility, Visual Style, Keyboard Shortcuts, Profiles, Activity, Menu Layout) plus a content pane built from cards and switch rows. Populate the panes we already have features for; Profiles, Activity, Menu Layout, and the live Preview Pad are placeholders for the next phases. A working Randomize button shuffles size, duration, and colors.
Give the settings window an interactive Preview Pad: a small canvas that draws real press rings, drag trails, release rings, and the laser glow as you click and drag inside it, reusing the overlay renderers so it matches on-screen behavior. To make the pad the point rather than a redundant echo of live edits, switch the window to a draft model: it edits a detached copy of the settings and the overlays keep running on the committed values. OK applies the draft and persists it; Cancel discards it. While the window is open the live overlay is paused, so the real screen stays quiet and the pad is the sole preview (no laser trailing over the window, no double pulse when clicking in the pad).
Add saved visual profiles (size, duration, colors, visibility toggles; no hotkeys) persisted to %APPDATA%\ClickLightWin\profiles.json. The Profiles pane centers on a "Current Profile" dropdown: switching loads that profile into the draft (previewing in the pad, applied on OK). A built-in Default profile always exists and cannot be deleted, so a user who never makes a profile just works with — and can edit — Default. Save changes updates the selected profile in place; Create makes a new one from the current look; Delete removes it. Profiles import/export as JSON to move setups between machines.
Track per-day click tallies (left/right/middle presses and drag gestures) in an ActivityStore, counted from the global hook and stored only on this PC at %APPDATA%\ClickLightWin\activity.json. Counting runs regardless of Enabled or the settings window being open, persists on a 30s throttle and on exit, and rolls over by day. The Activity pane shows today's total, a seven-day bar chart, and a Left/Right/Middle/Drags breakdown, with a Reset that clears history.
Add a real Menu Layout pane: each tray menu item has a toggle to hide it and a drag handle to reorder it, with Quit always shown. The order and visibility persist in Settings.MenuLayout (part of the OK/Cancel draft), and the tray rebuilds its menu from that layout each time it opens, so changes take effect on the next open. The tray menu is now a flat list in the user's chosen order (the fixed separators are dropped, since they no longer fit arbitrary ordering).
Give the color and profile dropdowns a dark ControlTemplate: a bordered box with a chevron, a dark popup, and accent-highlighted items, so they match the rest of the settings window instead of the default light chrome. The profile dropdown uses an explicit item template so it shows the profile name rather than the type name.
Ship the multi-resolution icon.ico as the app icon: the tray icon, the Settings window icon, and the exe ApplicationIcon (the generated pulse icon stays as a fallback). Show the clicklight-logo.png wordmark at the top of the General settings tab. Both live under the project's Assets folder and are embedded as WPF resources.
Record the sidebar settings window, live Preview Pad, profiles, activity view, configurable tray menu, dark dropdowns, OK/Cancel draft model, and the designed icon and logo under 1.4.0.
Adapt the macOS project's contributing guide for this Windows/.NET codebase: dotnet build/run/test, manual verification steps, code-style notes, and pull-request guidance.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Recreates the macOS ClickLight settings experience on Windows: a dark, sidebar-navigation settings window replacing the single scrolling page, plus the new subsystems behind it. Targets the 1.4.0 release.
What's new
Commits
Built in reviewable phases: sidebar shell → live pad + draft model → profiles → activity → menu layout → dropdown theming → icon/logo → docs (CHANGELOG 1.4.0, CONTRIBUTING, README).
Testing
dotnet buildclean;dotnet test34/34 passing.Notes
%APPDATA%\ClickLightWin\(profiles.json,activity.json); assets are embedded WPF resources undersrc/ClickLightWin/Assets.