Skip to content

Border values: per model | per monitor option (#470 redesign) - #499

Merged
mgth merged 1 commit into
masterfrom
feat/border-values-permonitor
Jul 9, 2026
Merged

Border values: per model | per monitor option (#470 redesign)#499
mgth merged 1 commit into
masterfrom
feat/border-values-permonitor

Conversation

@mgth

@mgth mgth commented Jul 9, 2026

Copy link
Copy Markdown
Owner

Stacks on #498 (the geometry seam). GitHub will retarget this to master once #498 merges.

Redesign of #470. Bezel borders are per-model by design (a property of the make/model, shared by all monitors of the same PnpCode — and the planned online border DB keys on the model). Rather than change the default, this adds an option so users who want per-monitor borders can opt in, without forcing triple-identical-screen users to enter the same values three times.

Changes

  • BorderValues option ("PerModel" default | "PerMonitor"), persisted on the main key.
  • DisplayBorderOverride: a size decorator keeping width/height/position from the shared per-model size but taking the four borders from a per-monitor holder.
  • PhysicalMonitor.EffectivePhysicalSize (the Phase-2 seam) is now reactive on the option: PerMonitor roots geometry at the override, else at the model. A Borders holder carries the per-monitor values; a mirror keeps it aligned with the model while NOT in PerMonitor, so switching modes doesn't jump.
  • Persistence: PerMonitor borders under the monitor key (Layouts\{id}\PhysicalMonitors\{Id}\Borders\*); PerModel keeps the existing per-model key untouched; absent per-monitor key seeds from the model.
  • UI: a "Border values" choice card in the Layout options.

Default is PerModel → existing behaviour and stored values unchanged.

Needs runtime verification (two identical monitors)

  • PerModel: unchanged; borders shared, one save, reload consistent.
  • PerMonitor: borders diverge per monitor, persist under per-Id keys, reload correct.
  • Rotation + borders in both modes; mode switch back and forth (no jump / no data loss).

Plan: .claude/plans/border-values.md.

🤖 Generated with Claude Code

Bezel borders are per-model by design (a property of the make/model), shared by
all monitors of the same PnpCode — and the future online border database keys on
the model. #470 wanted them per-monitor; instead of changing the default, add an
option so users who want it can opt in without forcing triple-identical-screen
users to enter the same values three times.

- ILayoutOptions/LbmOptions: `BorderValues` ("PerModel" default | "PerMonitor"),
  persisted on the main registry key.
- DisplayBorderOverride: a size decorator keeping width/height/position from the
  shared per-model size but taking the four borders from a per-monitor holder.
- PhysicalMonitor: `EffectivePhysicalSize` (the Phase-2 geometry seam) is now
  reactive on the option — PerMonitor roots the chain at the override, else at the
  model. A `Borders` (DisplayBorders) holds the per-monitor values; a mirror keeps
  it aligned with the model while NOT in PerMonitor, so switching modes doesn't
  jump.
- Persistence: PerMonitor borders load/save under the monitor key
  (Layouts\{id}\PhysicalMonitors\{Id}\Borders\*); PerModel keeps the existing
  per-model key untouched. Absent per-monitor key seeds from the model.
- UI: a "Border values" choice card in the Layout options.

Default is PerModel, so existing behaviour and stored values are unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mgth
mgth changed the base branch from feat/border-values-phase2 to master July 9, 2026 17:04
@mgth
mgth merged commit aa0eb59 into master Jul 9, 2026
@funnything1

Copy link
Copy Markdown

the per monitor part does not seem to work, when selecting the per monitor i should be able to customize the boarders even if they are the same model but i am unable to, editing a side of one monitor also changes the sides of the other just like per model.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants