fix(settings): keep the full window inside its monitor work area

Center the bounded Settings window rather than retaining an offscreen cascading position. Record actual26/26 focused and106/106 native success and preserve current distributed acceptance.

Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <jmaes@dmdbrands.com>
This commit is contained in:
James MaesandCodex committed 2026-10-11 19:51:04 -05:00
1 parent 9d5c0d1d51
commit c3c735edd6
5 files changed
+57 -7

No files matched your search

+28
View File
@@ -2,6 +2,34 @@
Updated: 2026-10-11
## Exact9d5c0d1 native acceptance passes; Settings placement corrected locally - 2026-10-11
Exact CI38188145397 focused26/26 and full native106/106 pass, zero failures/skips.
Actual TRX proves repeated physical Contents/source synchronization, offscreen
Nord palette/default pixel/save/reopen, future-schema export, trimmed full-title
hover/click, both Printing cases and raw-inline provenance. Retain current-focused-
9d5c0d1.log/current-native-9d5c0d1.log and reader-regressions-38188145397 actual
TRX/screenshots. Full native duration9m45. Installed114614880391 is live; no
current published/installed/coexistence/signature result inferred.
Inspect actual theme-manager and Printing Settings screenshots. Controls/palettes
are native and explicit, but default OS cascading position pushes right/bottom
edges beyond the hosted monitor. FitWindow previously constrained size only;
MoveAndResize now centers the complete resized window inside its actual monitor
work area. Extend the existing native layout case with independent virtual-
desktop containment, preserving its resizing/draft checks. Zero-warning Release
and full formatting pass locally; fresh runtime/screenshots required. Hold the
next push until current full installed execution is terminal.
Review gate currently fails because no maintainer-owned automated review record
exists for the exact head; never fabricate acknowledgement. Shared signing/
license/inventory/AppKit Help/template Help PRs31/32/36/29/4 remain unmerged drafts
with no reviews, actual starter remotewindows-app-template. Protected release
environment has no signing variables. User-selected OS defaults/Explorer, owner
layout feedback, reviewed shared/license requirements, genuine current-head
review and deployed Azure/shipped signing remain required. No Azure retry, local
input, preview55472 changes, shared merge, tags or production publication.
## Exact1bfab22 terminal evidence retained; corrective candidate ready - 2026-10-11
CI38187115859 is terminal: focused23/26 and native102/106 fail, zero skips.
+10 -6
View File
@@ -1,16 +1,20 @@
# Development Tasks
- [x] Exact9d5c0d1 full native106/106 and focused26/26 pass, zero skips; retain actual TRX/Settings screenshots and logs.
- [x] Correct observed offscreen Settings placement by centering size/position in the actual monitor work area; zero-warning build/format pass.
- [ ] Verify whole-window visibility and inspect complete Settings screenshots on the next exact head; preserve current live installed run before pushing.
- [x] Retain terminal1bfab22 native102/106, focused23/26 and published600-second/no-TRX evidence; same four failures, installed lifecycle not reached.
- [x] Retain exact1bfab22 focused23/26 TRX; long-title tooltip/physical activation passes, offscreen Nord/future-theme lookup and source alignment fail.
- [x] Prepare native scrolling of the owned virtualized theme list to realize the same exact IDs before unchanged selection/assertions/deadline.
- [ ] Execute offscreen palette/default and existing future-schema/export acceptance with local49f0556 repeat-heading correction on the next exact pushed head.
- [x] Exact9d5c0d1 focused26/26/native106/106 prove offscreen palette/default, existing future-schema/export and repeat-heading correction; zero skips.
- [x] Restore trusted heading Tag on the new Contents content Grid so repeat ItemClick can identify the selected row; local zero-warning build/format pass.
- [ ] Verify the unchanged repeated physical Contents activation/source alignment case on the next exact pushed head; client input coordinates are not screen bounds.
- [x] Exact9d5c0d1 unchanged repeated physical Contents/source alignment passes; pointer diagnostics use client coordinates.
- [x] Prepare accessible native theme palette previews, state labels and explicit default radio selection with unchanged copied-draft/save semantics.
- [ ] Execute actual theme palette pixels/default/save/reopen acceptance and inspect its Settings screenshot on the exact next hosted head.
- [x] Exact9d5c0d1 actual palette pixels/default/save/reopen passes and Settings screenshot inspected; new placement correction remains pending.
- [x] Retain terminal b2ecc8c focused23/24/native101/102 and published600-second timeout/no TRX; only source alignment fails in completed suites.
- [x] Prepare fixture-only closure of all owned windows before unchanged FlaUI close/kill fallback; preserve cases/assertions/deadlines.
- [ ] Verify whole published/installed completion and corrected actual source/tooltip/default status on the next exact head.
@@ -18,7 +22,7 @@
- [x] Prepare truthful General effective `.md` default status with bounded read-only Windows querying and automatic/manual refresh;7 actual read-only/isolated adapter tests pass.
- [ ] Verify actual General status/refresh and user-selected OS chooser/Explorer behavior on an installed build; registration alone is not default selection.
- [x] Exactb2ecc8c focused23/24: both Printing cases/raw-inline/picker/Contents options pass, zero skips; retain remaining physical alignment failure.
- [ ] Verify trim-only tooltip placement and actual long-title physical activation plus the unchanged source alignment regression on the next exact hosted head.
- [x] Exact9d5c0d1 trimmed tooltip/physical activation and unchanged source alignment pass in focused/full native suites.
- [x] Retain terminal b5e519e published98/100 TRX: same raw-fold/source-click failures, zero skips; installed lifecycle phase not reached.
@@ -58,7 +62,7 @@
- [x] Update the threat model, renderer attributions and shipped library notices.
- [x] Verify first-reader hosted browser acceptance: 13 native/UI tests passed on f1756d2.
- [x] Verify live reload/browser network scenarios and retain actual theme screenshots on head 77dd04d.
- [ ] Discuss the desired first release and Windows-specific behavior with the owner.
- [x] Owner authorizes signed stable1.0/dev releases with the requested Windows-specific controls/defaults; publication still requires all gates.
- [x] Implement/test directory watching and validated relative viewport state for saves/replacements/deletion recovery.
- [x] Complete actual browser save/lock/replacement/deletion/scroll acceptance (issue #6): hosted native/UI 26/26; published 26/26; installed stable/dev 25/25 each.
- [x] Port Darin's 20 built-in themes and persistent document selection; validate schema, font escaping and invariant CSS.
@@ -195,7 +199,7 @@ checks below do not substitute for current native/distributed acceptance.
- [ ] Pass hosted CI on the actual current implementation; retain native/published/installed TRXs, screenshots and real PDFs.
- [x] Implement gclo-style separate stable/dev package IDs and installed-channel title/data identity;586 core tests/100% measured lines pass.
- [x] Prepare simultaneous owned stable/dev windows/profiles/registrations, real AppKit updates with a live unchanged sibling, and stable uninstall preserving dev;64 tooling tests/all configured analyzer rules pass.
- [ ] Verify the new simultaneous phase on a fresh exact hosted head; actual secondary activation/default chooser remain separate requirements.
- [x] Exact53755ab actual simultaneous windows/profiles/isolated updates/uninstall phase passes; current-head distributed acceptance and OS chooser remain separate requirements.
- [ ] Diagnose dbda6d4 focused17/20 failures with retained native color/focus/hidden-section evidence; preserve exact assertions and remove temporary debug probes before release.
- [ ] Adopt the reviewed/published owned-file signing builder; verify actual Azure resource/profile/publisher and repository-bound OIDC/profile-signer permission.
- [ ] Obtain genuine current-head maintainer review acknowledgement, complete required checks and merge.
+13
View File
@@ -118,3 +118,16 @@ FrameworkElement; an already selected row produces no SelectionChanged event.
The unchanged actual physical source/Contents regression must verify this on the
next head. Pointer diagnostics are client coordinates, not screen-space bounds;
the earlier direct coordinate/tooltip-interception inference was not established.
## Exact current native proof and placement finding
Exact9d5c0d1 / CI38188145397 focused26/26 and native106/106 pass, zero skips.
Actual repeat-click/source geometry, palette pixels/default/save/reopen, future
schema export, trimmed tooltip/physical activation, Printing and raw-inline cases
pass. Retain actual TRX/screenshots under reader-regressions-38188145397 and both
current native/focused logs. Current distributed acceptance remains live.
Actual Settings screenshots reveal the window extends beyond the monitor despite
its bounded size. Local FitWindow now centers the resized window in its monitor
work area; the existing native layout test adds desktop containment. Build/format
pass; fresh rendered visibility and full runtime acceptance remain required.
+3 -1
View File
@@ -85,7 +85,9 @@ internal sealed partial class SettingsWindow : Window
{
double scale = this.DpiScale();
global::Windows.Graphics.RectInt32 area = Microsoft.UI.Windowing.DisplayArea.GetFromWindowId(AppWindow.Id, Microsoft.UI.Windowing.DisplayAreaFallback.Primary).WorkArea;
AppWindow.Resize(new global::Windows.Graphics.SizeInt32(Math.Min((int)(960 * scale), area.Width), Math.Min((int)(720 * scale), area.Height)));
int width = Math.Min((int)(960 * scale), area.Width);
int height = Math.Min((int)(720 * scale), area.Height);
AppWindow.MoveAndResize(new global::Windows.Graphics.RectInt32(area.X + (area.Width - width) / 2, area.Y + (area.Height - height) / 2, width, height));
if(AppWindow.Presenter is Microsoft.UI.Windowing.OverlappedPresenter presenter)
{
presenter.PreferredMinimumWidth = Math.Min((int)(640 * scale), area.Width);
@@ -275,6 +275,9 @@ public partial class AppTests
Window window = session.TopLevelWindows().Single(element => string.Equals(element.Name, session.DisplayName + " — Settings", StringComparison.Ordinal)).AsWindow();
Assert.True(session.MainWindow.IsEnabled);
Assert.True(window.Patterns.Transform.Pattern.CanResize.Value);
var desktop = new System.Drawing.Rectangle(User32.GetSystemMetrics(SystemMetric.SM_XVIRTUALSCREEN), User32.GetSystemMetrics(SystemMetric.SM_YVIRTUALSCREEN),
User32.GetSystemMetrics(SystemMetric.SM_CXVIRTUALSCREEN), User32.GetSystemMetrics(SystemMetric.SM_CYVIRTUALSCREEN));
Assert.True(desktop.Contains(window.BoundingRectangle), "The complete Settings window must fit on the actual desktop.");
window.Patterns.Transform.Pattern.Resize(780, 600);
session.WaitForElement("ReadingAppearanceWidth").Patterns.RangeValue.Pattern.SetValue(320);
session.WaitFor(() => session.FindInApp(cf => cf.ByAutomationId("ReadingAppearanceLimit")) is { IsEnabled: true } control ? control : null, "the immediate width save");