Click Rate redesign: split delay vs. frequency + Taneth theme#1
Merged
Conversation
Refreshes the dark theme from neutral grey/green to the Taneth palette (deep-green surfaces, warm gold accent). Adds AccentForegroundBrush so text on accent fills uses a dark color that meets WCAG AA contrast. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Splits the Click Rate input into a Mode radio (Delay/Frequency) plus a unit dropdown that swaps with the mode, with a live conversion hint and a "very fast" warning at >100/s. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Click Rate row now starts with a Mode radio (Delay / Frequency) that swaps the unit dropdown's contents and shows a live conversion hint, so users no longer have to mix milliseconds and rates in the same control. - Parser: adds sec/min/hour units; enforces 1 ms ≤ delay ≤ 360 min and ≤ 1000 clicks/sec via MinDelayMs / MaxDelayMs constants. All previous formats keep parsing, so CLI scripts are unaffected. - Settings: new ClickRateMode field; legacy "/s" and "/min" values silently migrate to (Frequency, per_sec) and (Frequency, per_min) on first load. - UI: live "≈ X clicks/sec" / "≈ X ms between clicks" hint; switches to Danger color with "Very fast — input may not register reliably" warning when effective rate exceeds 100/s. - Tests: 38 new tests cover new units, both bound boundaries, frequency/duration disambiguation, and settings migration. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The first Test step ran `dotnet test --no-build` against a path that nothing produced, causing every Windows build since the workflow was added to fail before reaching the second Test step. Drop the broken step; the remaining `dotnet test` does build + run in one shot, which is what the test project needs because it Compile-Includes source from the main project. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- MainWindow: 500 → 458 px to match the 16 px side margins after the Click Rate block grew to two rows. - release.yml: switch to self-contained PublishSingleFile so the released artifact runs on any Windows machine without requiring the .NET 10 preview runtime. Adds compression to keep size down. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
The Click Rate input previously mixed two paradigms (delay-per-click vs. clicks-per-time-unit) into a single value+unit row. This PR splits them into a Mode radio (Delay / Frequency) that swaps the unit dropdown's contents and shows a live conversion hint, so users no longer have to mix milliseconds and rates in the same control.
Bundles the Taneth theme refresh that was already in the working tree.
Highlights
◉ Delay ○ Frequencyradios above a[value] [unit ▾]row, with a live≈ 10 clicks/sechint underneath. When the effective rate exceeds 100/s the hint turns red and reads⚠ Very fast — input may not register reliably.ms/sec/min) and Frequency (per sec/per min/per hour).100ms,10/s,10cps,600/min,600cpm,10 times per second, …) still parses. New tokens:s/sec/seconds,m/min/minutes,/h/cph/times per hour. CLI scripts are unaffected."/s"and"/min"values silently migrate to(Frequency, per_sec)/(Frequency, per_min)on first load.Out of scope
Spec
Full design spec at
docs/superpowers/specs/2026-04-25-click-rate-redesign-design.md.Test plan
dotnet build windows/QuadClicker.csproj -c Release— cleandotnet test windows/Tests/QuadClicker.Tests.csproj -c Release— 77 / 77 passsettings.json— migrated silently, no crash--version/--helpstill work🤖 Generated with Claude Code