Skip to content

Release/v0.6.3 - #57

Merged
albert-gee merged 4 commits into
mainfrom
release/v0.6.3
Oct 21, 2026
Merged

albert-gee merged 4 commits into
mainfrom
release/v0.6.3

Conversation

@albert-gee

Copy link
Copy Markdown
Contributor

No description provided.

* Extend Recent history with qualified document identities

* Unify scoped search in the header and sidebar

* Document and exercise unified sidebar search workflows

* Fix full-document Find and Replace navigation

* Correct scoped sidebar search, Recent ordering and History integration

* Qualify sidebar search workflows and document History navigation

* Fix closed-tab search navigation and History restore initialization

Resolve retained workspace text results against live file buffers or reopen their durable paths, then validate exact source digests and offsets. Suppress feedback from cancelled activation requests.

Allow Editor session initialization and equivalent format metadata during protected History recovery. Preserve source, Undo, disk and format validation; latch target and view changes until completion and dispose the listener.

Cover closed and reopened tabs, changed and deleted files, asynchronous cancellation, and Editor/Reading recovery with exact contents, Undo/Redo, concurrent-change rejection and production native workflows.

* Correct unified search matching and sidebar presentation

* Add effective keyboard shortcuts and grouped sidebar Actions

* Fix effective shortcut dispatch and search presentation

* Clean up history panels, shortcut browsing, and search defaults

* Use borderless themed triggers for shared popup selectors

* Use native list rows for sidebar record identities

* Remove obsolete Notes search option guidance
* Remove eager video resources and completed-render disk barriers

* Eliminate repeated XML span scans and editor tree traversals

* Publish prepared documents without weakening persistence barriers

* Make asynchronous widget and subprocess tests wait for real readiness

* Apply cache regression test style checks

* Wait for saved retention policy before startup history maintenance

* Wait for history and workspace readiness in widget fixtures

* perf: reduce bounded render-cache backpressure

* fix(linux): retain video widgets until host cleanup

* perf(snap): generate portable GTK icon caches during packaging

* test: advance the UI clock while awaiting settings I/O

* perf: expose restoration queues and capture blocked native operations

* Implement natural application close verification and Linux CI smoke testing

* Add `tools/application_close_smoke.py` and `tools/window_close_smoke.dart` to verify natural process exit, clean shutdown persistence, and child process cleanup upon X11 window close requests.
* Support application close scenarios covering plain windows, pending visualization rendering, active video playback, dirty-document save/discard/cancel flows, and document reopening.
* Add native shutdown tracing logs in `web_render_host.cc` and `video_player_host.cc` when `BUSYMARK_NATIVE_TRACE=1` is set.
* Integrate application close smoke steps into Linux CI workflow to require 100 natural closes for release builds and strictly confined Snap packages.
* Add `close-testsrc.mp4` test fixture for video player shutdown tests.
* Document live application close procedures and acceptance requirements in `docs/development/visualizations.md`.

* Require complete child observation and verified close-test cleanup

* Wait for child workers after their thread-group leader exits

A confined WebKit close left its leader in Z state with another thread still
running. Do not classify that process as terminated or stop tracking its
children. Preserve natural-exit failures while verifying bounded identity-pinned
cleanup, including a worker that ignores SIGTERM.

The actual fork/pthread_exit regression and all 13 observer tests pass in both
system and Conda Python. This corrects observation; it does not resolve the
separate native shutdown failure.

* Add pending-initialization scenario and controlled harness to application close smoke tests

* Add the `pending-initialization` smoke test scenario and an isolated `PENDING_HARNESS` that preserves the production content security policy while withholding readiness.
* Add unit test coverage verifying exact content security policy parity between the controlled pending harness and production templates.
* Add active buffer dirty-save validation and hardware keyboard event monitoring to the window close smoke test runner.
* Update visualization documentation and thread-group process cleanup details.

* Strengthen natural-close observation and document readiness checks

* Correct clipboard path expectations and asynchronous test diagnostics

* Capture Local History operation state on checkpoint failures

* test: correct real I/O scheduling and bound suite resource use

Start clipboard and dictionary fixture operations in the real event loop so
filesystem continuations do not depend on each fake widget frame. Add a
controlled import scheduling regression while preserving the original behavior
assertions and wall budget.

Bound independent test-file workers to two, retain internal race concurrency,
and add opt-in PID/interval diagnostics for scoped syscall correlation.
Document the earlier Source helper budget change separately from performance
acceptance. No production source, durability barrier, or timeout is changed.

* Require the reviewed C6 engine in Linux development and Snap builds

Pin the existing framework, engine and toolchain with the unchanged lifetime,
regression and separate ATK patches. Build and cache matching debug, profile and
release inputs privately; verify actual CMake assembly, bundle bytes and mapped
runtime identity without an official-engine fallback.

Integrate native lifetime and natural-exit acceptance into CI and genuine strict
Snap builds. Preserve engine ELF notes from the packager's unnecessary rewrite,
make cached native fixtures portable, and track resource aliases before staging
so incremental fixture rebuilds work. Keep widget-test acceptance separate from
the GTK engine. Full-suite storage-sensitive assertion failures remain under
investigation; this commit makes no release-readiness or performance claim.

* Retain bounded Chromium startup diagnostics in functional tests

* Handle retired Yaru windows in pinned Linux plugin builds

* Reuse unchanged durable Local History tombstone journals

* Protect unattended close probes from owned-window input interference

* Wait for workspace recovery publication before normal shutdown decisions

* Audit normal window input and distinguish activation from keyboard focus

* Record unavailable desktop observation before launch and use system Python in CI

* Reject unmanaged attach that cannot verify the loaded GTK engine

* Keep long-path topic rename previews scrollable

Place rename metadata and shared comparison rows in one lazy scroll body while retaining the header and action footer. Preserve the existing flow assertions and cover long absolute paths; the complete Flutter suite passes.

* Bound restored tab reads and reuse acknowledged view settings

Admit up to four independent restored buffers, preserve order, and drain admitted work on failure. Reconcile unchanged view settings inside the durable write queue; failed loads or saves cannot acknowledge new state. Recovery ownership and close barriers remain; controlled before/after regressions and compiled restoration checks pass.

* Trace startup phases and require XI2-aware input observation

Separate map detection from observer snapshot I/O and add opt-in native/editor phase boundaries. Observe GTK keyboard delivery through owned-window XI2 as well as core events, treating unavailable observation as incomplete. Add a live disposable-display CI regression that fails with the former core-only observer, plus event-scope and failure tests. Preserve natural-exit and identity-verified cleanup acceptance.

* Preserve child startup diagnostics and isolate browser font configuration

* Initialize Linux portal settings asynchronously from local preferences

Keep C6 lifetime/ATK and all SDK/toolchain pins unchanged. Acquire the portal asynchronously with cancellation, weak ownership, coherent settings publication and stale-reply protection. Preserve saved app appearance in the first frame using a one-use acknowledged local-settings handoff.

Add controlled owned-bus and compiled-application regressions through the maintained close observer. Preserve the failing complete-startup GetAll gate: production GTK still synchronously loads unused Inhibit properties; the separate private GTK correction is not integrated.

Require content-based native build invalidation and verified export stamps so changed reviewed sources cannot reuse stale objects. Validated all three native modes (771+4+21 cases each), 4591 widget tests, 83 observer/build/watchdog tests, and affected compiled standalone settings, natural-close and document checks. Strict final-artifact checks remain in progress and are not represented as passing.

* Remove trailing whitespace from the portal fixture

* Isolate all GTK accent probe settings and cache directories

Keep the private AT-SPI bus and fatal-warning coverage while preventing GTK, GSettings and font-cache access through inherited HOME/XDG paths. The actual native lifecycle probe passes with complete child observation and no cleanup survivors.

* Track the actual GTK content window in close input audits

Pre-map discovery could bind to GTK’s hidden leader, and children realized after initial selection escaped keyboard/focus observation. Require the normal content window, verify its mapped identity, and refresh bounded subtree subscriptions through lifecycle notifications. Report subscription times without claiming retrospective input coverage.

The maintained live GTK/XI2 test fails against the unchanged observer and passes after correction, covering pre-content helpers, late child input, and retirement. The 47 observer and 33 engine-tool tests pass. Frozen compiled plain, rendering, pending initialization, and Save/Discard/Cancel/reopen checks pass with short isolated runtime paths. Historical altered-fixture and overlong-runtime failures remain external evidence; this does not establish their application-side cause.

* Run private permission transactions on a bounded worker isolate

* Verify launch failures and watchdog descendant cleanup

* Preserve close-observer launch timing across setup failures

* Restore official Flutter workflows and preserve upstream correction evidence

* Handle owned X11 window retirement during input audits

* Verify descendant admission and anchor owned process captures

* Validate every Yaru generated destination before writing

* Keep independent CI checks running after native gate failures

* Require informative content in restoration image probes

* Remove redundant visualization supersession check

* Reject blocked Yaru parent paths before modifying outputs

* Exercise official SDK build selection with an executable control

* Test History stores with prepared, owned runtime fixtures

* Clean up bounded tracing and preserved patch checks

* Repair permission normalization for unreadable owned directories

On directory-open EACCES, pin the inode with O_PATH and protect it through the held procfs descriptor on the existing serial worker. Preserve no-follow checks, error propagation, descriptor cleanup and publication ordering.

Cover actual mode-0300 atomic publication, worker progress during pathname replacement, symlink rejection and native failure recovery.

* Correlate performance trace spans by invocation

Use process-scoped native IDs and existing UUIDs for Dart spans, including product engines without usable TimelineTask IDs. Keep operation names as filters and reject ambiguous legacy overlap instead of losing pending work.

Cover both native completion orders with real GDB, Dart JIT/AOT and worker producers, process/producer scope and historical log compatibility.

* Protect unreadable state files and recovery lock permissions

* Validate Yaru generated paths against the selected build root

* Respect explicit Flutter SDK and staging destinations

* Prepare History process fixture through public Flutter build

* Correct upstream shutdown review reference

* Distinguish recent-workspace persistence warnings from open failures

* Prepare History process runtime only for interprocess tests

* Handle reaped process snapshots without admitting unowned births

* Separate application CI from native and upstream acceptance

* Share prerequisites across native and upstream CI checks

* Archive runtime experiments and retain product acceptance

* Restore unmodified upstream Yaru window integration

Remove local native plugin patching and its dedicated build and probe infrastructure. Preserve the original locked dependency and initialization, and extend the maintained compiled fixture to verify actual window controls, state events and dragging.

Functional document and confined media checks pass. Official-runtime early-close fatal exits remain release blockers; no Yaru-specific BusyMark failure was established.

* Remove startup investigation machinery and obsolete engine receipts

Unwrap tracing callbacks into direct awaited operations and delete the Dart,
native and test-only tracing protocols. Retain ordinary diagnostics and the
focused pending-initialization shutdown assertion.

Require an actual ELF engine library in the natural-close observer, preserving
mapped inode/device checks, retained descriptors and hashing. Supervise browser
descendants before deleting isolated profiles and keep bounded failure output.

* Restore automatic release-target native regression coverage

Run normal pull requests to main and release/v0.6.3 through the integrated
application workflow. Restore the bounded GTK host, WebKit, renderer and
compiled visualization/PDF checks while keeping stress and strict Snap as
explicit release acceptance.

Prepare actual desktop, sandbox, artifact-inspection and named-Snap session
prerequisites. Keep independent checks running after other failures and test
trigger coverage, invocation and prerequisite relationships. Update maintained
build and regression commands without historical investigation prose.

* Keep runtime documentation focused on maintained contracts

* Reject unreadable settings before acknowledging deduplicated saves

* Provide Xvfb for the native shortcut metadata check

* Restore automatic native and strict Snap product checks

* Make Recent persistence warnings accurate after opening or saving

* fix: preserve linked application state directories

* refactor: remove startup investigation machinery and redundant work
* Remove eager video resources and completed-render disk barriers

* Eliminate repeated XML span scans and editor tree traversals

* Publish prepared documents without weakening persistence barriers

* Make asynchronous widget and subprocess tests wait for real readiness

* Apply cache regression test style checks

* Wait for saved retention policy before startup history maintenance

* Wait for history and workspace readiness in widget fixtures

* perf: reduce bounded render-cache backpressure

* fix(linux): retain video widgets until host cleanup

* perf(snap): generate portable GTK icon caches during packaging

* test: advance the UI clock while awaiting settings I/O

* perf: expose restoration queues and capture blocked native operations

* Implement natural application close verification and Linux CI smoke testing

* Add `tools/application_close_smoke.py` and `tools/window_close_smoke.dart` to verify natural process exit, clean shutdown persistence, and child process cleanup upon X11 window close requests.
* Support application close scenarios covering plain windows, pending visualization rendering, active video playback, dirty-document save/discard/cancel flows, and document reopening.
* Add native shutdown tracing logs in `web_render_host.cc` and `video_player_host.cc` when `BUSYMARK_NATIVE_TRACE=1` is set.
* Integrate application close smoke steps into Linux CI workflow to require 100 natural closes for release builds and strictly confined Snap packages.
* Add `close-testsrc.mp4` test fixture for video player shutdown tests.
* Document live application close procedures and acceptance requirements in `docs/development/visualizations.md`.

* Require complete child observation and verified close-test cleanup

* Wait for child workers after their thread-group leader exits

A confined WebKit close left its leader in Z state with another thread still
running. Do not classify that process as terminated or stop tracking its
children. Preserve natural-exit failures while verifying bounded identity-pinned
cleanup, including a worker that ignores SIGTERM.

The actual fork/pthread_exit regression and all 13 observer tests pass in both
system and Conda Python. This corrects observation; it does not resolve the
separate native shutdown failure.

* Add pending-initialization scenario and controlled harness to application close smoke tests

* Add the `pending-initialization` smoke test scenario and an isolated `PENDING_HARNESS` that preserves the production content security policy while withholding readiness.
* Add unit test coverage verifying exact content security policy parity between the controlled pending harness and production templates.
* Add active buffer dirty-save validation and hardware keyboard event monitoring to the window close smoke test runner.
* Update visualization documentation and thread-group process cleanup details.

* Strengthen natural-close observation and document readiness checks

* Correct clipboard path expectations and asynchronous test diagnostics

* Capture Local History operation state on checkpoint failures

* test: correct real I/O scheduling and bound suite resource use

Start clipboard and dictionary fixture operations in the real event loop so
filesystem continuations do not depend on each fake widget frame. Add a
controlled import scheduling regression while preserving the original behavior
assertions and wall budget.

Bound independent test-file workers to two, retain internal race concurrency,
and add opt-in PID/interval diagnostics for scoped syscall correlation.
Document the earlier Source helper budget change separately from performance
acceptance. No production source, durability barrier, or timeout is changed.

* Require the reviewed C6 engine in Linux development and Snap builds

Pin the existing framework, engine and toolchain with the unchanged lifetime,
regression and separate ATK patches. Build and cache matching debug, profile and
release inputs privately; verify actual CMake assembly, bundle bytes and mapped
runtime identity without an official-engine fallback.

Integrate native lifetime and natural-exit acceptance into CI and genuine strict
Snap builds. Preserve engine ELF notes from the packager's unnecessary rewrite,
make cached native fixtures portable, and track resource aliases before staging
so incremental fixture rebuilds work. Keep widget-test acceptance separate from
the GTK engine. Full-suite storage-sensitive assertion failures remain under
investigation; this commit makes no release-readiness or performance claim.

* Retain bounded Chromium startup diagnostics in functional tests

* Handle retired Yaru windows in pinned Linux plugin builds

* Reuse unchanged durable Local History tombstone journals

* Protect unattended close probes from owned-window input interference

* Wait for workspace recovery publication before normal shutdown decisions

* Audit normal window input and distinguish activation from keyboard focus

* Record unavailable desktop observation before launch and use system Python in CI

* Reject unmanaged attach that cannot verify the loaded GTK engine

* Keep long-path topic rename previews scrollable

Place rename metadata and shared comparison rows in one lazy scroll body while retaining the header and action footer. Preserve the existing flow assertions and cover long absolute paths; the complete Flutter suite passes.

* Bound restored tab reads and reuse acknowledged view settings

Admit up to four independent restored buffers, preserve order, and drain admitted work on failure. Reconcile unchanged view settings inside the durable write queue; failed loads or saves cannot acknowledge new state. Recovery ownership and close barriers remain; controlled before/after regressions and compiled restoration checks pass.

* Trace startup phases and require XI2-aware input observation

Separate map detection from observer snapshot I/O and add opt-in native/editor phase boundaries. Observe GTK keyboard delivery through owned-window XI2 as well as core events, treating unavailable observation as incomplete. Add a live disposable-display CI regression that fails with the former core-only observer, plus event-scope and failure tests. Preserve natural-exit and identity-verified cleanup acceptance.

* Preserve child startup diagnostics and isolate browser font configuration

* Initialize Linux portal settings asynchronously from local preferences

Keep C6 lifetime/ATK and all SDK/toolchain pins unchanged. Acquire the portal asynchronously with cancellation, weak ownership, coherent settings publication and stale-reply protection. Preserve saved app appearance in the first frame using a one-use acknowledged local-settings handoff.

Add controlled owned-bus and compiled-application regressions through the maintained close observer. Preserve the failing complete-startup GetAll gate: production GTK still synchronously loads unused Inhibit properties; the separate private GTK correction is not integrated.

Require content-based native build invalidation and verified export stamps so changed reviewed sources cannot reuse stale objects. Validated all three native modes (771+4+21 cases each), 4591 widget tests, 83 observer/build/watchdog tests, and affected compiled standalone settings, natural-close and document checks. Strict final-artifact checks remain in progress and are not represented as passing.

* Remove trailing whitespace from the portal fixture

* Isolate all GTK accent probe settings and cache directories

Keep the private AT-SPI bus and fatal-warning coverage while preventing GTK, GSettings and font-cache access through inherited HOME/XDG paths. The actual native lifecycle probe passes with complete child observation and no cleanup survivors.

* Track the actual GTK content window in close input audits

Pre-map discovery could bind to GTK’s hidden leader, and children realized after initial selection escaped keyboard/focus observation. Require the normal content window, verify its mapped identity, and refresh bounded subtree subscriptions through lifecycle notifications. Report subscription times without claiming retrospective input coverage.

The maintained live GTK/XI2 test fails against the unchanged observer and passes after correction, covering pre-content helpers, late child input, and retirement. The 47 observer and 33 engine-tool tests pass. Frozen compiled plain, rendering, pending initialization, and Save/Discard/Cancel/reopen checks pass with short isolated runtime paths. Historical altered-fixture and overlong-runtime failures remain external evidence; this does not establish their application-side cause.

* Run private permission transactions on a bounded worker isolate

* Verify launch failures and watchdog descendant cleanup

* Preserve close-observer launch timing across setup failures

* Restore official Flutter workflows and preserve upstream correction evidence

* Handle owned X11 window retirement during input audits

* Verify descendant admission and anchor owned process captures

* Validate every Yaru generated destination before writing

* Keep independent CI checks running after native gate failures

* Require informative content in restoration image probes

* Remove redundant visualization supersession check

* Reject blocked Yaru parent paths before modifying outputs

* Exercise official SDK build selection with an executable control

* Test History stores with prepared, owned runtime fixtures

* Clean up bounded tracing and preserved patch checks

* Repair permission normalization for unreadable owned directories

On directory-open EACCES, pin the inode with O_PATH and protect it through the held procfs descriptor on the existing serial worker. Preserve no-follow checks, error propagation, descriptor cleanup and publication ordering.

Cover actual mode-0300 atomic publication, worker progress during pathname replacement, symlink rejection and native failure recovery.

* Correlate performance trace spans by invocation

Use process-scoped native IDs and existing UUIDs for Dart spans, including product engines without usable TimelineTask IDs. Keep operation names as filters and reject ambiguous legacy overlap instead of losing pending work.

Cover both native completion orders with real GDB, Dart JIT/AOT and worker producers, process/producer scope and historical log compatibility.

* Protect unreadable state files and recovery lock permissions

* Validate Yaru generated paths against the selected build root

* Respect explicit Flutter SDK and staging destinations

* Prepare History process fixture through public Flutter build

* Correct upstream shutdown review reference

* Distinguish recent-workspace persistence warnings from open failures

* Prepare History process runtime only for interprocess tests

* Handle reaped process snapshots without admitting unowned births

* Separate application CI from native and upstream acceptance

* Share prerequisites across native and upstream CI checks

* Archive runtime experiments and retain product acceptance

* Restore unmodified upstream Yaru window integration

Remove local native plugin patching and its dedicated build and probe infrastructure. Preserve the original locked dependency and initialization, and extend the maintained compiled fixture to verify actual window controls, state events and dragging.

Functional document and confined media checks pass. Official-runtime early-close fatal exits remain release blockers; no Yaru-specific BusyMark failure was established.

* Remove startup investigation machinery and obsolete engine receipts

Unwrap tracing callbacks into direct awaited operations and delete the Dart,
native and test-only tracing protocols. Retain ordinary diagnostics and the
focused pending-initialization shutdown assertion.

Require an actual ELF engine library in the natural-close observer, preserving
mapped inode/device checks, retained descriptors and hashing. Supervise browser
descendants before deleting isolated profiles and keep bounded failure output.

* Restore automatic release-target native regression coverage

Run normal pull requests to main and release/v0.6.3 through the integrated
application workflow. Restore the bounded GTK host, WebKit, renderer and
compiled visualization/PDF checks while keeping stress and strict Snap as
explicit release acceptance.

Prepare actual desktop, sandbox, artifact-inspection and named-Snap session
prerequisites. Keep independent checks running after other failures and test
trigger coverage, invocation and prerequisite relationships. Update maintained
build and regression commands without historical investigation prose.

* Keep runtime documentation focused on maintained contracts

* Reject unreadable settings before acknowledging deduplicated saves

* Provide Xvfb for the native shortcut metadata check

* Restore automatic native and strict Snap product checks

* Make Recent persistence warnings accurate after opening or saving

* fix: preserve linked application state directories

* refactor: remove startup investigation machinery and redundant work

* docs: restore shared Local History search contract

* fix: enhance recovery logic in search session opening. Handle typed failure codes across Nextcloud notes and track creation reveal state

* Fix reviewed Notes interaction races and recovery outcomes

* fix: preserve conflict drafts and local account access
@albert-gee albert-gee self-assigned this Oct 21, 2026
@albert-gee
albert-gee merged commit a5ee774 into main Oct 21, 2026
5 checks passed
@albert-gee
albert-gee deleted the release/v0.6.3 branch October 21, 2026 23:55
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.

1 participant