From dc3117dc143a5119ffdd55cae08e101c9cab3b0a Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:08:40 +0000 Subject: [PATCH 01/17] Promote nodes accepted by merged #45 to review: reviewed Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/app/accessibility.md | 2 +- features/app/dialogs.md | 2 +- features/app/infrastructure.md | 2 +- features/app/packaging/index.md | 2 +- features/app/packaging/installer.md | 2 +- features/app/updates/index.md | 2 +- features/app/updates/install.md | 2 +- features/app/updates/package-managed.md | 2 +- features/app/updates/release-channels.md | 2 +- features/app/updates/release-picker.md | 2 +- features/app/window/index.md | 2 +- features/browser/directory-monitoring/index.md | 2 +- features/browser/directory-monitoring/network-checks.md | 2 +- features/browser/folder-customization.md | 2 +- features/browser/navigation/folder-jump.md | 2 +- features/browser/navigation/recent.md | 2 +- features/browser/navigation/startup-arguments.md | 2 +- features/browser/properties/index.md | 2 +- features/browser/properties/media.md | 2 +- features/browser/properties/raw-metadata.md | 2 +- features/browser/properties/size.md | 2 +- features/browser/scrolling.md | 2 +- features/browser/search/filter/enter-target.md | 2 +- features/browser/search/index.md | 2 +- features/browser/selection/click-modes.md | 2 +- features/browser/selection/index.md | 2 +- features/browser/selection/marquee.md | 2 +- features/browser/selection/pointer-intent.md | 2 +- features/browser/sidebar/connect-to-server.md | 2 +- features/browser/sidebar/index.md | 2 +- features/browser/sidebar/pins/drag-to-pin.md | 2 +- features/browser/sidebar/rail.md | 2 +- features/browser/tabs/index.md | 2 +- features/browser/tabs/session-restore.md | 2 +- features/browser/thumbnails/cache.md | 2 +- features/browser/thumbnails/index.md | 2 +- features/browser/thumbnails/workers.md | 2 +- features/browser/view-modes/columns.md | 2 +- features/browser/view-modes/density.md | 2 +- features/browser/view-modes/folder-views.md | 2 +- features/browser/view-modes/icons.md | 2 +- features/browser/view-modes/list/index.md | 2 +- features/browser/view-modes/sorting.md | 2 +- features/browser/view-modes/text-size.md | 2 +- features/devices/volumes/camera.md | 2 +- features/devices/volumes/drive-dialogs.md | 2 +- features/devices/volumes/encrypted.md | 2 +- features/devices/volumes/index.md | 2 +- features/devices/volumes/release.md | 2 +- features/devices/volumes/udiskie-unlock.md | 2 +- features/integration/10xer-mode/file-chooser.md | 2 +- features/integration/10xer-mode/index.md | 2 +- features/integration/10xer-mode/search.md | 2 +- features/integration/file-manager-interface/index.md | 2 +- .../integration/file-manager-interface/service-activation.md | 2 +- features/integration/open-with/index.md | 2 +- features/integration/open-with/recent-apps.md | 2 +- features/integration/open-with/terminal.md | 2 +- features/integration/portal-file-chooser/image-conversion.md | 2 +- features/integration/portal-file-chooser/setup.md | 2 +- features/integration/portal-file-chooser/url-download.md | 2 +- features/operations/archives/extraction-safety.md | 2 +- features/operations/archives/index.md | 2 +- features/operations/archives/preview.md | 2 +- features/operations/archives/rar.md | 2 +- features/operations/clipboard/conflicts.md | 2 +- features/operations/clipboard/index.md | 2 +- features/operations/create.md | 2 +- features/operations/drag-and-drop/copy-or-move.md | 2 +- features/operations/drag-and-drop/index.md | 2 +- features/operations/filesystem-compatibility/index.md | 2 +- features/operations/filesystem-compatibility/leftovers.md | 2 +- features/operations/filesystem-compatibility/open-files.md | 2 +- features/operations/progress/dock.md | 2 +- features/operations/progress/index.md | 2 +- features/operations/progress/jobs.md | 2 +- features/operations/rename.md | 2 +- features/operations/trash/animation.md | 2 +- features/operations/trash/empty.md | 2 +- features/operations/trash/fuse-refusals.md | 2 +- features/operations/trash/restore.md | 2 +- features/operations/undo.md | 2 +- features/preview/preview-panel/documents/odt.md | 2 +- features/preview/preview-panel/documents/scrollbar.md | 2 +- features/preview/preview-panel/gcode.md | 2 +- features/preview/preview-panel/index.md | 2 +- features/preview/preview-panel/media/audio.md | 2 +- features/preview/preview-panel/media/video.md | 2 +- features/preview/preview-panel/model-views.md | 2 +- features/preview/preview-panel/routes.md | 2 +- features/preview/preview-panel/sandbox.md | 2 +- features/preview/quick-preview/folder-peek.md | 2 +- features/remote/file-providers/external.md | 2 +- features/remote/file-providers/index.md | 2 +- features/remote/file-providers/integrations.md | 2 +- features/remote/file-providers/kde-connect.md | 2 +- features/remote/file-providers/localsend.md | 2 +- features/remote/file-providers/network-locations.md | 2 +- features/settings/diagnostics.md | 2 +- features/settings/preferences/date-format.md | 2 +- features/settings/preferences/language.md | 2 +- features/settings/preferences/storage.md | 2 +- features/settings/themes/icons/index.md | 2 +- features/settings/themes/interface-font.md | 2 +- features/settings/themes/omarchy.md | 2 +- 105 files changed, 105 insertions(+), 105 deletions(-) diff --git a/features/app/accessibility.md b/features/app/accessibility.md index f4f0f52..686ef0d 100644 --- a/features/app/accessibility.md +++ b/features/app/accessibility.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#341, pr: lgse/strata#415} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/accessibility.rs] tests: [src/ui/accessibility/tests.rs, tests/qa/scenarios/accessibility, tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl] docs: [docs/testing.md] diff --git a/features/app/dialogs.md b/features/app/dialogs.md index 51d0408..d149b29 100644 --- a/features/app/dialogs.md +++ b/features/app/dialogs.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#88, pr: lgse/strata#91} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/modal.rs, src/ui/modal/layout.rs, src/ui/controls.rs, src/ui/blur.rs] tests: [src/ui/modal/tests.rs, src/ui/controls/tests.rs, src/ui/window/tests/keyboard_dispatch/overlay_focus.rs, tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/app/infrastructure.md b/features/app/infrastructure.md index de537a9..beb11c0 100644 --- a/features/app/infrastructure.md +++ b/features/app/infrastructure.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#14, pr: lgse/strata#27} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/model/mod.rs, src/ui/settings.rs, src/adapters/local_files.rs, src/ui/mod.rs, src/main.rs, src/app/mod.rs, src/adapters/mod.rs, src/services/mod.rs, src/ui/resize_feedback.rs, src/ui/preferences/trashed.rs, src/adapters/volume/mounts.rs, src/adapters/volume/mount_snapshot.rs, README.md, THIRD_PARTY_LICENSES.md, data/licenses, data/strata.gresource.xml, AGENTS.md, typos.toml, clippy.toml, Cargo.toml, Cargo.lock, mise.toml, mise.lock, scripts/benchmark-scroll.py, src/build_info.rs, src/services/native_fs.rs, src/ui/keys/bindings.rs, src/ui/keys/bindings/**, build.rs, deny.toml, scripts/quality.sh, scripts/quality_ci.py, scripts/test-headless.py, scripts/integration_tests.py, src/ui/settings/install_command.rs, src/adapters/local_operations/fs_ops.rs, src/adapters/local_operations/native_fs.rs, src/adapters/local_operations/work_queue.rs, src/trusted_command.rs, src/adapters/gio_close.rs, src/adapters/volume/mount_watch.rs, src/adapters/volume/mount_lanes.rs, src/adapters/local_operations/probes.rs, src/util/ui_thread.rs, src/util/ui_thread/**, scripts/trace-main-io.py, tests/qa/main-io-allowlist.toml, .agents/skills, .claude/skills, .gitignore, .cursor/CLOUD.md, .dockerignore, CONTRIBUTING.md, scripts/check.sh, src/qa.rs, src/qa/**, src/ui/accessibility/qa.rs, scripts/qa*.sh, scripts/qa_*.py, scripts/lib/qa-container.sh, scripts/headless/**, scripts/image_*.py, tests/container/**, tests/fixtures/harness.json, src/logging.rs, src/metrics.rs, src/services/listeners.rs, src/services/network_error.rs, src/ui/close_guard.rs, src/ui/browser/paths.rs, src/ui/browser/entry_animation.rs, data/icons/scalable/actions/**, .github, .gitattributes, CLAUDE.md, LICENSE, rustfmt.toml, skills-lock.json, docs/assets, docs/evidence, scripts/discord_triage.py, scripts/profile-fixture.sh, scripts/generate-fixture.sh, scripts/quality-durations.json, scripts/release_version.py, scripts/start-dev.sh, src/services/package_manager.rs, src/ui/browser/location.rs] tests: [src/model/tests.rs, src/adapters/local_files/tests.rs, src/adapters/local_files/tests/browse.rs, src/adapters/volume/mounts/tests.rs, src/test_support.rs, src/test_support/**, scripts/test_benchmark_scroll.py, src/build_info/tests.rs, scripts/test_quality_ci.py, scripts/test_quality_runner.py, scripts/test_headless_runner.py, scripts/test_integration_tests.py, src/ui/settings/install_command/tests.rs, src/trusted_command/tests.rs, src/adapters/gio_close/tests.rs, src/adapters/local_operations/tests/closes.rs, src/adapters/volume/mount_watch/tests.rs, src/adapters/volume/mount_lanes/tests.rs, src/adapters/local_operations/probes/tests.rs, src/adapters/local_operations/fs_ops/tests.rs, src/adapters/volume/mounts/tests/byte_paths.rs, scripts/test_trace_main_io.py, tests/qa.rs, tests/qa/*.rs, tests/qa/foreign_drag_source.py, tests/qa/baselines/**, src/qa/tests.rs, src/qa/tests/**, scripts/test_qa_*.py, scripts/test_image_*.py, tests/qa/scenarios/visual_baselines, src/logging/tests.rs, src/metrics/tests.rs, src/services/listeners/tests.rs, src/services/network_error/tests.rs, scripts/test_discord_triage.py, scripts/test_makefile.py, scripts/test_release_version.py, src/tests.rs, src/ui/preferences/tests/preferences.rs, src/ui/window/tests/preferences.rs, tests/qa/fixtures/file_drag_source.py, src/services/package_manager/tests.rs, src/ui/browser/location/tests.rs] docs: [docs/performance-baseline.md, docs/hardened-configuration.md, docs/unsafe-code.md, docs/testing.md, docs/packaging.md] diff --git a/features/app/packaging/index.md b/features/app/packaging/index.md index b0bcbc4..8f65362 100644 --- a/features/app/packaging/index.md +++ b/features/app/packaging/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#49, pr: lgse/strata#182} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [data/io.github.lgse.Strata.desktop, data/icons/scalable/apps/io.github.lgse.Strata.svg] tests: [] docs: [site/src/reference/install.md, docs/packaging.md] diff --git a/features/app/packaging/installer.md b/features/app/packaging/installer.md index e1ca24b..0eaf5b8 100644 --- a/features/app/packaging/installer.md +++ b/features/app/packaging/installer.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#329, pr: lgse/strata#330} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [install.sh, data/locales/installer.json, scripts/installer_messages.py] tests: [scripts/test_installer.py, scripts/testdata] docs: [docs/internationalization.md, docs/signed-updates.md] diff --git a/features/app/updates/index.md b/features/app/updates/index.md index 43dba63..f06ce9c 100644 --- a/features/app/updates/index.md +++ b/features/app/updates/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#22} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/update_check.rs] tests: [src/services/update_check/tests.rs, src/ui/settings/tests/updates.rs] docs: [docs/preferences.md] diff --git a/features/app/updates/install.md b/features/app/updates/install.md index 3df4a1b..6bdaf96 100644 --- a/features/app/updates/install.md +++ b/features/app/updates/install.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#24, pr: lgse/strata#26} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/update_install.rs, src/services/update_install/**, data/update-keys.json, scripts/sign_update_manifest.py] tests: [src/services/update_install/tests.rs, src/services/update_install/review_tests.rs, src/services/update_install/archive/tests.rs, src/services/update_install/command/tests.rs, src/services/update_install/download/tests.rs, src/services/update_install/manifest/tests.rs, src/ui/settings/tests/update_dialog.rs, scripts/test_sign_update_manifest.py, tests/fixtures/signed-update] docs: [site/src/reference/signed-updates.md] diff --git a/features/app/updates/package-managed.md b/features/app/updates/package-managed.md index 7f262b0..5d1b613 100644 --- a/features/app/updates/package-managed.md +++ b/features/app/updates/package-managed.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#195, pr: lgse/strata#196} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/install_source.rs] tests: [src/services/install_source/tests.rs] docs: [docs/packaging.md] diff --git a/features/app/updates/release-channels.md b/features/app/updates/release-channels.md index f3657ae..cc4fd0e 100644 --- a/features/app/updates/release-channels.md +++ b/features/app/updates/release-channels.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#61, pr: lgse/strata#97} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/release_channel.rs] tests: [src/services/release_channel/tests.rs] docs: [docs/releasing.md] diff --git a/features/app/updates/release-picker.md b/features/app/updates/release-picker.md index e2486a0..bf8b658 100644 --- a/features/app/updates/release-picker.md +++ b/features/app/updates/release-picker.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1779, pr: lgse/strata#1781} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/settings/release_picker.rs] tests: [src/ui/settings/tests/release_picker.rs] related: [app/updates/install, app/updates/release-channels] diff --git a/features/app/window/index.md b/features/app/window/index.md index 0cc4ba0..b2a1a4b 100644 --- a/features/app/window/index.md +++ b/features/app/window/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#580} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/window/composition.rs, src/ui/window/composition/layout.rs, src/ui/decoration.rs] tests: [src/ui/decoration/tests.rs] docs: [docs/architecture.md, site/src/reference/keyboard-navigation.md] diff --git a/features/browser/directory-monitoring/index.md b/features/browser/directory-monitoring/index.md index 59af027..4983380 100644 --- a/features/browser/directory-monitoring/index.md +++ b/features/browser/directory-monitoring/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#137, pr: lgse/strata#154} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/app/browser/loading.rs, src/app/browser/loading/metadata.rs, src/app/browser/directory_changes.rs, src/app/browser/publication.rs, src/app/browser/deferred.rs, src/app/browser/operation_updates.rs, src/app/browser/operation_events.rs, src/adapters/local_files/monitors.rs] tests: [src/app/browser/loading/tests.rs, src/app/browser/loading/metadata/tests.rs, src/app/browser/directory_changes/tests.rs, src/app/browser/publication/tests.rs, src/app/browser/deferred/tests.rs, src/app/browser/operation_updates/tests.rs, src/app/browser/tests/monitor.rs, src/app/browser/tests/staging.rs, src/app/browser/tests/relocation.rs, src/app/browser/tests/operations.rs, src/app/browser/tests/metadata.rs, tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl, tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl] docs: [docs/architecture.md, docs/performance-baseline.md, docs/filesystem-compatibility.md] diff --git a/features/browser/directory-monitoring/network-checks.md b/features/browser/directory-monitoring/network-checks.md index b92cd4f..b726c69 100644 --- a/features/browser/directory-monitoring/network-checks.md +++ b/features/browser/directory-monitoring/network-checks.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1590, pr: lgse/strata#1729} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/app/browser/freshness.rs, src/ui/presence.rs] tests: [src/app/browser/freshness/tests.rs, src/ui/presence/tests.rs] related: [settings/preferences, browser/view-modes, integration/portal-file-chooser, remote/file-providers/network-locations] diff --git a/features/browser/folder-customization.md b/features/browser/folder-customization.md index fd42dfc..0109381 100644 --- a/features/browser/folder-customization.md +++ b/features/browser/folder-customization.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#211, pr: lgse/strata#294} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/customization.rs, src/ui/preferences/item_customizations.rs] tests: [tests/qa/scenarios/dialogs_and_menus/customization-follows-move-and-trash.jsonl, tests/qa/scenarios/dialogs_and_menus/customize-takes-focus-single-escape.jsonl, tests/qa/scenarios/dialogs_and_menus/background-customize-ancestor-column.jsonl] docs: [docs/preferences.md] diff --git a/features/browser/navigation/folder-jump.md b/features/browser/navigation/folder-jump.md index 36847e8..6d37cb8 100644 --- a/features/browser/navigation/folder-jump.md +++ b/features/browser/navigation/folder-jump.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#276, pr: lgse/strata#959} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/navigation_history.rs] tests: [src/services/navigation_history/tests.rs] related: [browser/search, integration/10xer-mode] diff --git a/features/browser/navigation/recent.md b/features/browser/navigation/recent.md index b47b908..f4a7ab0 100644 --- a/features/browser/navigation/recent.md +++ b/features/browser/navigation/recent.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1082, pr: lgse/strata#1083} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [] tests: [src/app/browser/tests/recent.rs, tests/qa/scenarios/recent] related: [browser/sidebar, browser/context-menu, browser/view-modes/sorting, integration/open-with, settings/preferences] diff --git a/features/browser/navigation/startup-arguments.md b/features/browser/navigation/startup-arguments.md index b464688..5d335c3 100644 --- a/features/browser/navigation/startup-arguments.md +++ b/features/browser/navigation/startup-arguments.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#649, pr: lgse/strata#673} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/open_argument.rs] tests: [src/ui/window/open_argument/tests.rs, tests/qa/scenarios/startup_arguments] related: [integration/file-manager-interface, remote/file-providers, browser/tabs] diff --git a/features/browser/properties/index.md b/features/browser/properties/index.md index 2c0c897..d8f99df 100644 --- a/features/browser/properties/index.md +++ b/features/browser/properties/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#71, pr: lgse/strata#243} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/properties.rs] tests: [tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl, tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl] docs: [] diff --git a/features/browser/properties/media.md b/features/browser/properties/media.md index 7d6119e..922cfee 100644 --- a/features/browser/properties/media.md +++ b/features/browser/properties/media.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#979, pr: lgse/strata#984} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/properties/media.rs, src/sandbox/metadata.rs] tests: [src/ui/browser/properties/media/tests.rs, src/sandbox/metadata/tests.rs, tests/qa/scenarios/properties_media/media-details-properties-only.jsonl] docs: [site/src/reference/preview-sandbox.md] diff --git a/features/browser/properties/raw-metadata.md b/features/browser/properties/raw-metadata.md index c4de747..dde75a2 100644 --- a/features/browser/properties/raw-metadata.md +++ b/features/browser/properties/raw-metadata.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1168, pr: lgse/strata#1171} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/raw_details.rs, src/sandbox/raw_metadata.rs, src/sandbox_helper/raw_metadata.rs] tests: [src/ui/raw_details/tests.rs, src/sandbox/raw_metadata/tests.rs, src/sandbox_helper/raw_metadata/tests.rs, tests/qa/scenarios/properties_media/raw-details-preview-and-properties.jsonl] docs: [site/src/reference/preview-sandbox.md] diff --git a/features/browser/properties/size.md b/features/browser/properties/size.md index 0ef01e5..a2454bc 100644 --- a/features/browser/properties/size.md +++ b/features/browser/properties/size.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#556, pr: lgse/strata#558} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/directory_summary.rs] tests: [src/adapters/directory_summary/**, tests/qa/scenarios/properties_size] related: [operations/trash/empty] diff --git a/features/browser/scrolling.md b/features/browser/scrolling.md index 8124ceb..753c2ae 100644 --- a/features/browser/scrolling.md +++ b/features/browser/scrolling.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#293, pr: lgse/strata#311} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/scrolling.rs, src/ui/scrolling/popover.rs] tests: [src/ui/scrolling/tests.rs, src/ui/scrolling/popover/tests.rs, tests/qa/scenarios/popover_scrolling, tests/qa/mutations/popover-scrolling.patch] related: [browser/tabs, browser/view-modes, browser/view-modes/columns, browser/view-modes/text-size, browser/selection, operations/drag-and-drop/column-autoscroll] diff --git a/features/browser/search/filter/enter-target.md b/features/browser/search/filter/enter-target.md index 98cf0f6..14a5177 100644 --- a/features/browser/search/filter/enter-target.md +++ b/features/browser/search/filter/enter-target.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1643, pr: lgse/strata#1822} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/enter_target.rs] tests: [src/ui/enter_target/tests.rs, tests/qa/scenarios/filter_results/filter-enter-opens-top-match.jsonl] related: [browser/view-modes, browser/view-modes/columns, integration/10xer-mode] diff --git a/features/browser/search/index.md b/features/browser/search/index.md index 2388550..0d4523e 100644 --- a/features/browser/search/index.md +++ b/features/browser/search/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#222} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/services/search.rs, src/ui/search.rs, src/ui/window/composition/search.rs] tests: [src/services/search/tests.rs, src/services/search/tests/multi_root.rs, src/services/search/tests/performance.rs, src/services/search/tests/refresh.rs, src/ui/search/tests.rs, tests/qa/scenarios/search_filter_sort/global-search-*] docs: [docs/preferences.md] diff --git a/features/browser/selection/click-modes.md b/features/browser/selection/click-modes.md index 1333a80..eade091 100644 --- a/features/browser/selection/click-modes.md +++ b/features/browser/selection/click-modes.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#213, pr: lgse/strata#220} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [] tests: [tests/qa/scenarios/click_modes, tests/qa/mutations/click-modes.patch, tests/qa/mutations/click-mode-preference.patch] related: [preview/quick-preview, operations/rename, browser/sidebar, browser/view-modes/columns, browser/selection/marquee] diff --git a/features/browser/selection/index.md b/features/browser/selection/index.md index 7ec6240..3eb26b8 100644 --- a/features/browser/selection/index.md +++ b/features/browser/selection/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#521, pr: lgse/strata#526} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/collection_interaction.rs, src/app/navigation/selection.rs] tests: [src/ui/collection_interaction/tests.rs, src/app/browser/tests/selection.rs, tests/qa/scenarios/selection, tests/qa/scenarios/background_selection, tests/qa/scenarios/escape_selection, tests/qa/scenarios/monitor_selection, tests/qa/mutations/shift-click-range.patch] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/browser/selection/marquee.md b/features/browser/selection/marquee.md index b567490..e1a6b2a 100644 --- a/features/browser/selection/marquee.md +++ b/features/browser/selection/marquee.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#189, pr: lgse/strata#203} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/marquee.rs] tests: [src/ui/marquee/tests.rs, tests/qa/scenarios/marquee_scrolling] docs: [docs/preview-panel-layout.md] diff --git a/features/browser/selection/pointer-intent.md b/features/browser/selection/pointer-intent.md index 2d79ea9..95e9c14 100644 --- a/features/browser/selection/pointer-intent.md +++ b/features/browser/selection/pointer-intent.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#517, pr: lgse/strata#522} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/pointer.rs] tests: [src/ui/pointer/**, tests/qa/scenarios/pointer_intent] related: [operations/drag-and-drop, preview/preview-panel, operations/rename] diff --git a/features/browser/sidebar/connect-to-server.md b/features/browser/sidebar/connect-to-server.md index 1411b88..5cbe655 100644 --- a/features/browser/sidebar/connect-to-server.md +++ b/features/browser/sidebar/connect-to-server.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1725, pr: lgse/strata#1726} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/network_location.rs, src/ui/window/network_location/**] tests: [src/ui/window/network_location/tests.rs] related: [remote/file-providers/network-locations, browser/navigation/location-bar, browser/sidebar/pins] diff --git a/features/browser/sidebar/index.md b/features/browser/sidebar/index.md index d1dd4c4..56c5642 100644 --- a/features/browser/sidebar/index.md +++ b/features/browser/sidebar/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#104, pr: lgse/strata#106} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/window/sidebar.rs, src/ui/window/sidebar_drop_feedback.rs, src/ui/window/keyboard/sidebar.rs] tests: [src/ui/window/tests/bookmarks.rs, src/ui/window/tests/sidebar.rs, src/ui/window/sidebar_drop_feedback/tests.rs, tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl, tests/qa/scenarios/locations/sidebar-place-navigates.jsonl] docs: [docs/preferences.md, site/src/reference/keyboard-navigation.md] diff --git a/features/browser/sidebar/pins/drag-to-pin.md b/features/browser/sidebar/pins/drag-to-pin.md index 37a6524..078d4ae 100644 --- a/features/browser/sidebar/pins/drag-to-pin.md +++ b/features/browser/sidebar/pins/drag-to-pin.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1690, pr: lgse/strata#1692} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/pinned_drop.rs, src/adapters/directory_validation.rs] tests: [src/ui/window/pinned_drop/tests.rs, src/adapters/directory_validation/tests.rs, tests/qa/scenarios/sidebar_pinning, tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl] related: [operations/drag-and-drop, integration/portal-file-chooser, browser/sidebar] diff --git a/features/browser/sidebar/rail.md b/features/browser/sidebar/rail.md index a030a67..d4d5c3a 100644 --- a/features/browser/sidebar/rail.md +++ b/features/browser/sidebar/rail.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1602, pr: lgse/strata#1606} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/sidebar_toggle.rs] tests: [src/ui/sidebar_toggle/tests.rs, src/ui/window/tests/rail.rs] related: [preview/preview-panel/layout, app/window, integration/10xer-mode, integration/portal-file-chooser] diff --git a/features/browser/tabs/index.md b/features/browser/tabs/index.md index 4e22ca5..1b0071b 100644 --- a/features/browser/tabs/index.md +++ b/features/browser/tabs/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#108, pr: lgse/strata#1484} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/window/composition/tabs.rs, src/ui/window/composition/tabs/**, src/ui/browser/tab_location.rs, src/app/browser/navigation_lifecycle.rs] tests: [src/ui/window/composition/tabs/tests.rs, src/ui/window/composition/tabs/tests/reopen.rs, src/ui/browser/tab_location/tests.rs, src/ui/window/tests/keyboard_dispatch/open_in_new.rs, tests/qa/scenarios/tabs, tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl] docs: [site/src/reference/keyboard-navigation.md, site/src/reference/10xer-mode.md, docs/keyboard-navigation.md] diff --git a/features/browser/tabs/session-restore.md b/features/browser/tabs/session-restore.md index 864ef03..e8841b4 100644 --- a/features/browser/tabs/session-restore.md +++ b/features/browser/tabs/session-restore.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1531, pr: lgse/strata#1532} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/tabs_session.rs] tests: [src/ui/tabs_session/tests.rs] docs: [docs/preferences.md] diff --git a/features/browser/thumbnails/cache.md b/features/browser/thumbnails/cache.md index b84c400..dc68fa6 100644 --- a/features/browser/thumbnails/cache.md +++ b/features/browser/thumbnails/cache.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#273, pr: lgse/strata#274} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/thumbnail_cache.rs] tests: [src/ui/thumbnail_cache/tests.rs] related: [browser/properties/raw-metadata] diff --git a/features/browser/thumbnails/index.md b/features/browser/thumbnails/index.md index 45449aa..edbc89d 100644 --- a/features/browser/thumbnails/index.md +++ b/features/browser/thumbnails/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#41, pr: lgse/strata#43} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/thumbnail.rs, src/ui/thumbnail/viewport.rs, src/ui/thumbnail/slot.rs, src/sandbox_helper/appimage.rs] tests: [src/ui/thumbnail/tests.rs, tests/qa/mutations/stl-thumbnails-live-preference.patch, src/ui/thumbnail/viewport/tests.rs, src/ui/thumbnail/slot/tests.rs, src/sandbox_helper/appimage/tests.rs] docs: [site/src/reference/preview-sandbox.md, docs/preview-sandbox.md] diff --git a/features/browser/thumbnails/workers.md b/features/browser/thumbnails/workers.md index 2d03065..25fc646 100644 --- a/features/browser/thumbnails/workers.md +++ b/features/browser/thumbnails/workers.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#516, pr: lgse/strata#1081} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/sandbox/browser.rs, src/sandbox/browser/worker.rs, src/sandbox/browser/wire.rs, src/sandbox/browser/process.rs, src/ui/thumbnail/background.rs] tests: [src/sandbox/browser/tests.rs, src/ui/thumbnail/background/tests.rs, tests/qa/scenarios/browser_workers, tests/qa/scenarios/thumbnail_worker_settings] docs: [docs/preferences.md] diff --git a/features/browser/view-modes/columns.md b/features/browser/view-modes/columns.md index a49d81d..dcec644 100644 --- a/features/browser/view-modes/columns.md +++ b/features/browser/view-modes/columns.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#140, pr: lgse/strata#171} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/browser/columns.rs, src/ui/browser/columns/rows.rs, src/ui/browser/columns/reveal.rs] tests: [src/ui/browser/columns/tests.rs, tests/qa/scenarios/column_background, tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl, tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl, tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl, tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl] docs: [docs/preview-panel-layout.md, docs/preferences.md] diff --git a/features/browser/view-modes/density.md b/features/browser/view-modes/density.md index d0af955..a0d0119 100644 --- a/features/browser/view-modes/density.md +++ b/features/browser/view-modes/density.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1774, pr: lgse/strata#1776} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/density_slider.rs] tests: [src/ui/window/tests/appearance_density.rs] docs: [docs/preferences.md] diff --git a/features/browser/view-modes/folder-views.md b/features/browser/view-modes/folder-views.md index 93e9436..e49bf38 100644 --- a/features/browser/view-modes/folder-views.md +++ b/features/browser/view-modes/folder-views.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1563, pr: lgse/strata#1565} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/preferences/folder_view_settings.rs, src/ui/preferences/folder_views.rs, src/ui/preferences/folder_views/**, src/app/browser/folder_sorts.rs] tests: [src/ui/preferences/folder_views/tests.rs, src/app/browser/tests/folder_sorts.rs] docs: [docs/preferences.md] diff --git a/features/browser/view-modes/icons.md b/features/browser/view-modes/icons.md index a309263..2c82096 100644 --- a/features/browser/view-modes/icons.md +++ b/features/browser/view-modes/icons.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#322, pr: lgse/strata#328} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/icons_cell.rs, src/ui/icons_cell/**] tests: [src/ui/icons_cell/tests.rs] related: [browser/thumbnails, operations/rename, browser/view-modes/folder-views] diff --git a/features/browser/view-modes/list/index.md b/features/browser/view-modes/list/index.md index b8db91d..fd3b834 100644 --- a/features/browser/view-modes/list/index.md +++ b/features/browser/view-modes/list/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#188, pr: lgse/strata#191} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser_modes/list_factory.rs] tests: [tests/qa/scenarios/view_switching/list-column-resize-tracks-pointer.jsonl] related: [browser/navigation] diff --git a/features/browser/view-modes/sorting.md b/features/browser/view-modes/sorting.md index 2b27711..8d49c18 100644 --- a/features/browser/view-modes/sorting.md +++ b/features/browser/view-modes/sorting.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#40, pr: lgse/strata#44} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/app/browser/sorting.rs, src/services/mime_type.rs, src/ui/browser/pane_header.rs] tests: [src/app/browser/sorting/tests.rs, src/services/mime_type/tests.rs, tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl, tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl] docs: [docs/preferences.md] diff --git a/features/browser/view-modes/text-size.md b/features/browser/view-modes/text-size.md index c96cab7..6e6600a 100644 --- a/features/browser/view-modes/text-size.md +++ b/features/browser/view-modes/text-size.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#155, pr: lgse/strata#252} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/preferences/text_size.rs] tests: [src/ui/preferences/tests/text_size.rs, src/ui/theme/tests/text_size.rs, tests/qa/scenarios/text_size] docs: [docs/preferences.md] diff --git a/features/devices/volumes/camera.md b/features/devices/volumes/camera.md index 226ed0f..4527a54 100644 --- a/features/devices/volumes/camera.md +++ b/features/devices/volumes/camera.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#833, pr: lgse/strata#834} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_files/camera_photos.rs, src/services/camera_preview.rs, src/ui/browser/camera_scroll.rs, src/ui/thumbnail/camera.rs] tests: [src/adapters/local_files/camera_photos/tests.rs, src/services/camera_preview/tests.rs, src/app/browser/tests/camera_photos.rs, src/ui/thumbnail/camera/tests.rs] docs: [site/src/reference/preview-sandbox.md] diff --git a/features/devices/volumes/drive-dialogs.md b/features/devices/volumes/drive-dialogs.md index 423b156..765508b 100644 --- a/features/devices/volumes/drive-dialogs.md +++ b/features/devices/volumes/drive-dialogs.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1293, pr: lgse/strata#1331} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/drive_dialogs.rs, src/ui/window/drive_dialogs/**, src/ui/window/drive_ops.rs, src/ui/window/device_labels.rs, src/ui/missing_tools.rs] tests: [src/ui/window/drive_dialogs/tests.rs, src/ui/window/drive_ops/tests.rs, src/ui/window/device_labels/tests.rs, src/ui/missing_tools/tests.rs] related: [browser/sidebar, operations/progress, app/dialogs] diff --git a/features/devices/volumes/encrypted.md b/features/devices/volumes/encrypted.md index 384b476..f8118cc 100644 --- a/features/devices/volumes/encrypted.md +++ b/features/devices/volumes/encrypted.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#935} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/volume_password.rs] tests: [src/ui/window/volume_password/tests.rs] related: [devices/volumes/udiskie-unlock, app/accessibility] diff --git a/features/devices/volumes/index.md b/features/devices/volumes/index.md index 007e8fb..0c28602 100644 --- a/features/devices/volumes/index.md +++ b/features/devices/volumes/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#441, pr: lgse/strata#493} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/devices.rs] tests: [src/ui/window/devices/tests.rs] docs: [] diff --git a/features/devices/volumes/release.md b/features/devices/volumes/release.md index 9272fb9..9703f22 100644 --- a/features/devices/volumes/release.md +++ b/features/devices/volumes/release.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#295, pr: lgse/strata#296} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/device_release.rs] tests: [src/ui/window/device_release/tests.rs] docs: [docs/filesystem-compatibility.md] diff --git a/features/devices/volumes/udiskie-unlock.md b/features/devices/volumes/udiskie-unlock.md index fb27e55..388e207 100644 --- a/features/devices/volumes/udiskie-unlock.md +++ b/features/devices/volumes/udiskie-unlock.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#537, pr: lgse/strata#1047} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/window/unlock_argument.rs, src/portal_setup/udiskie.rs, src/ui/udiskie_preferences.rs, data/udiskie/unlock] tests: [src/ui/window/unlock_argument/tests.rs, src/portal_setup/udiskie/tests.rs, src/ui/udiskie_preferences/tests.rs] docs: [docs/packaging.md, docs/preferences.md] diff --git a/features/integration/10xer-mode/file-chooser.md b/features/integration/10xer-mode/file-chooser.md index 6747cce..ff4bb55 100644 --- a/features/integration/10xer-mode/file-chooser.md +++ b/features/integration/10xer-mode/file-chooser.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1261, pr: lgse/strata#1311} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/window/keyboard/chooser.rs] tests: [src/ui/chooser/tests/keyboard.rs] docs: [site/src/reference/portal-file-chooser.md] diff --git a/features/integration/10xer-mode/index.md b/features/integration/10xer-mode/index.md index ec11b78..40c35b2 100644 --- a/features/integration/10xer-mode/index.md +++ b/features/integration/10xer-mode/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1152, pr: lgse/strata#1267} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/tenxer_mode.rs, src/ui/window/keyboard/escape.rs, src/ui/window/keyboard/prompts.rs, src/ui/window/composition/tenxer_splash.rs, data/brand/tenxer-splash.png, src/ui/shortcut_footer/chord_panel.rs] tests: [src/ui/window/tests/keyboard_dispatch/escape_precedence.rs, src/ui/window/tests/keyboard_dispatch/mode_exit.rs, src/ui/window/composition/tenxer_splash/tests.rs] docs: [site/src/reference/10xer-mode.md, docs/10xer-mode.md] diff --git a/features/integration/10xer-mode/search.md b/features/integration/10xer-mode/search.md index 08a1f27..6d14c49 100644 --- a/features/integration/10xer-mode/search.md +++ b/features/integration/10xer-mode/search.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1246, pr: lgse/strata#1297} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/find.rs, src/ui/browser/listing_filter.rs, src/ui/browser/listing_search.rs, src/ui/browser/result_selection.rs, src/services/path_match.rs] tests: [src/ui/window/tests/keyboard_dispatch/footer_prompt.rs, src/ui/browser/find/tests.rs, src/services/path_match/tests.rs, tests/qa/scenarios/search_filter_sort/tenxer-footer-filter-commits.jsonl] related: [browser/search, browser/search/filter] diff --git a/features/integration/file-manager-interface/index.md b/features/integration/file-manager-interface/index.md index c215fdd..4c2f5f0 100644 --- a/features/integration/file-manager-interface/index.md +++ b/features/integration/file-manager-interface/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#290, pr: lgse/strata#317} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/file_manager1.rs, data/io.github.lgse.Strata.FileManager1.service] tests: [src/adapters/file_manager1/tests.rs, tests/qa/scenarios/file_manager_interface/**] docs: [docs/packaging.md] diff --git a/features/integration/file-manager-interface/service-activation.md b/features/integration/file-manager-interface/service-activation.md index a1c2be4..69c19d7 100644 --- a/features/integration/file-manager-interface/service-activation.md +++ b/features/integration/file-manager-interface/service-activation.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1810, pr: lgse/strata#1811} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/child_environment.rs] tests: [src/child_environment/tests.rs] related: [app/infrastructure, integration/open-with, integration/open-with/terminal, browser/context-menu, operations/progress/jobs, remote/file-providers/external, settings/preferences, preview/preview-panel/documents] diff --git a/features/integration/open-with/index.md b/features/integration/open-with/index.md index c2b6d77..87fd100 100644 --- a/features/integration/open-with/index.md +++ b/features/integration/open-with/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#174, pr: lgse/strata#421} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/open_with.rs, src/ui/browser/desktop.rs] tests: [src/ui/open_with/tests.rs, src/ui/browser/desktop/tests.rs, tests/qa/scenarios/open_with/**, tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl, tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl] docs: [] diff --git a/features/integration/open-with/recent-apps.md b/features/integration/open-with/recent-apps.md index d985bfc..ead4056 100644 --- a/features/integration/open-with/recent-apps.md +++ b/features/integration/open-with/recent-apps.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#1354} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/recent_apps] tests: [src/ui/recent_apps/tests.rs] related: [integration/open-with] diff --git a/features/integration/open-with/terminal.md b/features/integration/open-with/terminal.md index e79857a..2cfe1a4 100644 --- a/features/integration/open-with/terminal.md +++ b/features/integration/open-with/terminal.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#160, pr: lgse/strata#161} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/terminal.rs] tests: [src/ui/terminal/tests.rs, tests/qa/scenarios/terminal/**] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/integration/portal-file-chooser/image-conversion.md b/features/integration/portal-file-chooser/image-conversion.md index a71bc5d..56e692c 100644 --- a/features/integration/portal-file-chooser/image-conversion.md +++ b/features/integration/portal-file-chooser/image-conversion.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1386, pr: lgse/strata#1387} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/chooser/image_conversion.rs, src/services/image_conversion.rs, src/sandbox_helper/image_conversion.rs] tests: [src/ui/chooser/tests/image_conversion.rs, src/services/image_conversion/tests.rs, src/sandbox_helper/image_conversion/tests.rs, tests/qa/scenarios/chooser_image_conversion/**] related: [integration/portal-file-chooser/url-download, preview/preview-panel] diff --git a/features/integration/portal-file-chooser/setup.md b/features/integration/portal-file-chooser/setup.md index 7787654..75cb0d3 100644 --- a/features/integration/portal-file-chooser/setup.md +++ b/features/integration/portal-file-chooser/setup.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#120, pr: lgse/strata#175} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/portal_setup.rs, src/portal_setup/omarchy.rs, src/ui/portal_preferences.rs, src/ui/desktop_integration.rs, data/portal] tests: [src/portal_setup/tests.rs, src/portal_setup/omarchy/tests.rs, src/ui/portal_preferences/tests.rs] related: [app/packaging/installer, integration/file-manager-interface, settings/preferences, app/updates] diff --git a/features/integration/portal-file-chooser/url-download.md b/features/integration/portal-file-chooser/url-download.md index 0b0516c..c998b32 100644 --- a/features/integration/portal-file-chooser/url-download.md +++ b/features/integration/portal-file-chooser/url-download.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1279, pr: lgse/strata#1285} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/remote_download.rs, src/ui/chooser/download.rs] tests: [src/services/remote_download/tests.rs] related: [integration/portal-file-chooser, integration/portal-file-chooser/image-conversion] diff --git a/features/operations/archives/extraction-safety.md b/features/operations/archives/extraction-safety.md index b1c9bc9..73793f4 100644 --- a/features/operations/archives/extraction-safety.md +++ b/features/operations/archives/extraction-safety.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#109, pr: lgse/strata#116} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_operations/archive/destination.rs] tests: [src/adapters/local_operations/archive/destination/tests.rs] related: [operations/filesystem-compatibility] diff --git a/features/operations/archives/index.md b/features/operations/archives/index.md index bd47e8f..acfed87 100644 --- a/features/operations/archives/index.md +++ b/features/operations/archives/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#81} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/archive.rs, src/adapters/local_operations/archive.rs, src/adapters/local_operations/archive/compression.rs, src/adapters/local_operations/archive/decoders.rs, src/adapters/local_operations/archive/extraction.rs] tests: [src/ui/browser/archive/tests.rs, src/adapters/local_operations/archive/tests.rs, src/adapters/local_operations/archive/fixtures.rs, src/adapters/local_operations/archive/compression/**, src/adapters/local_operations/archive/decoders/tests.rs, src/adapters/local_operations/archive/decoders/fixtures/**, src/adapters/local_operations/archive/extraction/tests.rs, src/app/browser/tests/archive_activation.rs, tests/qa/scenarios/archive_activation, tests/qa/scenarios/archive_conflicts, tests/qa/scenarios/archive_errors, tests/qa/scenarios/archive_reveal, tests/qa/fixtures/content-encrypted.7z, tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl, tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl] docs: [site/src/reference/archives.md, site/src/reference/keyboard-navigation.md, docs/archives.md] diff --git a/features/operations/archives/preview.md b/features/operations/archives/preview.md index 53d0906..dc41aae 100644 --- a/features/operations/archives/preview.md +++ b/features/operations/archives/preview.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1151, pr: lgse/strata#1090} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/preview/archive.rs, src/adapters/local_operations/archive/listing.rs] tests: [src/adapters/local_operations/archive/listing/tests.rs, tests/qa/scenarios/archive_preview] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/operations/archives/rar.md b/features/operations/archives/rar.md index 9f8ba56..068aefd 100644 --- a/features/operations/archives/rar.md +++ b/features/operations/archives/rar.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#816, pr: lgse/strata#832} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_operations/archive/decoders/rar.rs, src/rar_extraction.rs, src/sandbox/archive.rs, src/sandbox_helper/archive_rar.rs] tests: [src/adapters/local_operations/archive/decoders/rar/tests.rs, src/rar_extraction/tests.rs, src/sandbox/archive/tests.rs, src/sandbox_helper/archive_rar/tests.rs, tests/fixtures/rar/**] related: [browser/thumbnails, preview/preview-panel/sandbox] diff --git a/features/operations/clipboard/conflicts.md b/features/operations/clipboard/conflicts.md index 6cd1b4c..9e8b62b 100644 --- a/features/operations/clipboard/conflicts.md +++ b/features/operations/clipboard/conflicts.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#7, pr: lgse/strata#25} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_operations/replacement.rs, src/adapters/local_operations/merge_aside.rs] tests: [tests/qa/scenarios/copy_conflicts, src/adapters/local_operations/tests/conflicts.rs, src/adapters/local_operations/tests/merge.rs, src/adapters/local_operations/tests/replacement.rs, tests/qa/mutations/keep-both.patch] related: [operations/drag-and-drop, operations/filesystem-compatibility, operations/filesystem-compatibility/leftovers, app/infrastructure] diff --git a/features/operations/clipboard/index.md b/features/operations/clipboard/index.md index 875fa93..5ff1467 100644 --- a/features/operations/clipboard/index.md +++ b/features/operations/clipboard/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#287, pr: lgse/strata#289} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/browser/clipboard.rs, src/ui/browser/transfer.rs, src/adapters/local_operations/transfer_targets.rs] tests: [src/ui/browser/clipboard/tests.rs, src/ui/browser/transfer/tests.rs, src/adapters/local_operations/tests/copy.rs, src/adapters/local_operations/tests/moves.rs, src/adapters/local_operations/tests/naming.rs, src/adapters/local_operations/tests/paste_results.rs, tests/qa/scenarios/clipboard, tests/qa/mutations/clipboard.patch, tests/qa/mutations/cut.patch, tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl, tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/operations/create.md b/features/operations/create.md index b9fcc45..83079b1 100644 --- a/features/operations/create.md +++ b/features/operations/create.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#4} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_operations/create_entry.rs] tests: [src/adapters/local_operations/tests/create_entry.rs, tests/qa/scenarios/created_entry_columns, tests/qa/scenarios/entry_management/clicking-inside-keeps-new-entry.jsonl, tests/qa/scenarios/entry_management/new-file-collision-dialog.jsonl, tests/qa/scenarios/entry_management/new-folder-collision-dialog.jsonl, tests/qa/scenarios/entry_management/new-folder-with-selection-groups.jsonl, tests/qa/scenarios/entry_management/new-items-in-empty-directory.jsonl, tests/qa/scenarios/entry_management/undo-created-folder-trashes.jsonl, tests/qa/mutations/new-entry-collision.patch] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/operations/drag-and-drop/copy-or-move.md b/features/operations/drag-and-drop/copy-or-move.md index abfd60d..cbffc3f 100644 --- a/features/operations/drag-and-drop/copy-or-move.md +++ b/features/operations/drag-and-drop/copy-or-move.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#248, pr: lgse/strata#502} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/transfer_action.rs, src/adapters/volume.rs] tests: [src/services/transfer_action/tests.rs, src/adapters/volume/tests.rs, src/adapters/volume/tests/lookup_regressions.rs, tests/qa/scenarios/cross_volume_drop/cross-volume-plain-copy.jsonl] related: [operations/clipboard, operations/trash/restore, devices/volumes] diff --git a/features/operations/drag-and-drop/index.md b/features/operations/drag-and-drop/index.md index e77b41a..962d13e 100644 --- a/features/operations/drag-and-drop/index.md +++ b/features/operations/drag-and-drop/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#285, pr: lgse/strata#350} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [] tests: [tests/qa/scenarios/drag_and_drop/drag-cancels-folder-peek.jsonl, tests/qa/scenarios/drag_and_drop/drag-file-onto-folder.jsonl, tests/qa/scenarios/drag_and_drop/drag-from-clipped-column-narrow-window.jsonl, tests/qa/scenarios/drag_and_drop/drag-onto-pane-background.jsonl, tests/qa/scenarios/drag_and_drop/drop-folder-into-itself.jsonl, tests/qa/scenarios/drag_and_drop/empty-name-space-drag-starts-marquee.jsonl, tests/qa/scenarios/drag_and_drop/filtered-result-to-sidebar-folder.jsonl, tests/qa/scenarios/drag_and_drop/folder-into-another-folder.jsonl, tests/qa/scenarios/drag_and_drop/multi-selection-drag-moves-every-entry.jsonl, tests/qa/scenarios/drag_and_drop/release-outside-cancels-drag.jsonl, tests/qa/scenarios/drag_and_drop/row-padding-drag-view-policy.jsonl, tests/qa/scenarios/drag_and_drop/selected-blank-space-starts-file-drag.jsonl, tests/qa/scenarios/sidebar_file_drops, tests/qa/mutations/drag-and-drop.patch] docs: [docs/preferences.md] diff --git a/features/operations/filesystem-compatibility/index.md b/features/operations/filesystem-compatibility/index.md index 09d6d5b..a618c8b 100644 --- a/features/operations/filesystem-compatibility/index.md +++ b/features/operations/filesystem-compatibility/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1590, pr: lgse/strata#1615} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_operations/placement.rs, src/adapters/local_operations/copy_engine.rs, src/adapters/local_operations/copy_engine/**, src/adapters/local_operations/case_variants.rs, src/adapters/local_operations/environment.rs, src/adapters/local_operations/mount_profile.rs, src/adapters/local_operations/names.rs, src/adapters/local_operations/names/fix.rs, src/adapters/local_operations/owed.rs, src/adapters/local_operations/typed_names.rs, src/adapters/volume/mount_capabilities.rs, src/adapters/volume/names.rs, src/ui/browser/transfer_report.rs, src/services/item_identity.rs, src/model/hidden_names.rs] tests: [src/adapters/local_operations/tests/placement.rs, src/adapters/local_operations/tests/fs_quirks.rs, src/adapters/local_operations/tests/file_copy.rs, src/adapters/local_operations/tests/folder_copy.rs, src/adapters/local_operations/tests/aliases.rs, src/adapters/local_operations/mount_profile/tests.rs, src/adapters/volume/names/tests.rs, src/ui/browser/transfer_report/tests.rs, scripts/fslab/**, src/services/item_identity/tests.rs, src/adapters/local_operations/environment/tests.rs, src/model/hidden_names/tests.rs] docs: [docs/filesystem-compatibility.md] diff --git a/features/operations/filesystem-compatibility/leftovers.md b/features/operations/filesystem-compatibility/leftovers.md index 5314dbf..db68145 100644 --- a/features/operations/filesystem-compatibility/leftovers.md +++ b/features/operations/filesystem-compatibility/leftovers.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1590, pr: lgse/strata#1729} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_operations/leftovers.rs, src/app/browser/leftovers.rs, src/ui/browser/leftovers.rs] tests: [src/adapters/local_operations/tests/leftovers.rs, src/app/browser/tests/leftovers.rs, src/ui/browser/leftovers/tests.rs] related: [operations/clipboard/conflicts, operations/archives, operations/delete] diff --git a/features/operations/filesystem-compatibility/open-files.md b/features/operations/filesystem-compatibility/open-files.md index 82bffda..aaf5d31 100644 --- a/features/operations/filesystem-compatibility/open-files.md +++ b/features/operations/filesystem-compatibility/open-files.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1590, pr: lgse/strata#1729} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/local_operations/release.rs, src/adapters/local_operations/holders.rs, src/adapters/local_operations/deferred_close.rs, src/services/file_activity.rs] tests: [src/adapters/local_operations/tests/release.rs, src/adapters/local_operations/holders/tests.rs, src/services/file_activity/tests.rs] related: [operations/filesystem-compatibility/leftovers, operations/delete, preview/preview-panel/sandbox, devices/volumes/release] diff --git a/features/operations/progress/dock.md b/features/operations/progress/dock.md index 44fc02c..2a434f5 100644 --- a/features/operations/progress/dock.md +++ b/features/operations/progress/dock.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1360, pr: lgse/strata#1393} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/progress_dock.rs, src/ui/progress_dock/**, src/ui/notice.rs, src/app/browser/operation_events/background.rs] tests: [src/ui/progress_dock/tests.rs, src/ui/browser/progress/tests/minimization.rs, src/ui/browser/progress/tests/minimization/**, src/app/browser/tests/background_operations.rs] related: [operations/delete, devices/volumes, operations/clipboard/send-to, remote/file-providers/external] diff --git a/features/operations/progress/index.md b/features/operations/progress/index.md index 5a78cb9..2a1c066 100644 --- a/features/operations/progress/index.md +++ b/features/operations/progress/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#11, pr: lgse/strata#75} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/progress.rs, src/ui/browser/progress/context.rs, src/ui/browser/progress/presentation.rs, src/adapters/local_operations/progress.rs] tests: [src/ui/browser/progress/tests.rs, src/app/browser/operation_events/tests.rs, src/adapters/local_operations/tests/progress.rs, src/adapters/local_operations/tests/sync.rs] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/operations/progress/jobs.md b/features/operations/progress/jobs.md index 38eede3..7601c14 100644 --- a/features/operations/progress/jobs.md +++ b/features/operations/progress/jobs.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#36, pr: lgse/strata#1085} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/jobs.rs, src/ui/jobs.rs, src/adapters/local_jobs.rs] tests: [src/services/jobs/tests.rs, src/ui/jobs/tests.rs, src/adapters/local_jobs/tests.rs, src/adapters/local_jobs/tests/lifecycle.rs] docs: [site/src/reference/custom-actions.md] diff --git a/features/operations/rename.md b/features/operations/rename.md index acb4f28..38b0156 100644 --- a/features/operations/rename.md +++ b/features/operations/rename.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#115} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/inline_edit.rs, src/ui/collection_edit.rs] tests: [tests/qa/scenarios/inline_renaming, tests/qa/scenarios/entry_management/rename-from-context-menu.jsonl, tests/qa/scenarios/entry_management/rename-shortcuts-leave-location.jsonl, tests/qa/scenarios/rename_visibility, tests/qa/mutations/rename-caret.patch, tests/qa/mutations/rename-click-away.patch, tests/qa/mutations/rename-enter.patch, tests/qa/mutations/rename-error-dialog.patch, tests/qa/mutations/rename-escape.patch, tests/qa/scenarios/dialogs_and_menus/rename-onto-existing-rejected.jsonl] docs: [site/src/reference/keyboard-navigation.md] diff --git a/features/operations/trash/animation.md b/features/operations/trash/animation.md index 96b035a..7c934d6 100644 --- a/features/operations/trash/animation.md +++ b/features/operations/trash/animation.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#626} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/browser/fly_to_trash.rs] tests: [src/ui/browser/fly_to_trash/tests.rs] related: [operations/delete/dissolve] diff --git a/features/operations/trash/empty.md b/features/operations/trash/empty.md index faf9686..47f4a8a 100644 --- a/features/operations/trash/empty.md +++ b/features/operations/trash/empty.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#53} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/trash.rs] tests: [src/adapters/trash/tests.rs] related: [browser/properties/size, browser/view-modes, operations/filesystem-compatibility/open-files] diff --git a/features/operations/trash/fuse-refusals.md b/features/operations/trash/fuse-refusals.md index 2e5e704..b1d89fa 100644 --- a/features/operations/trash/fuse-refusals.md +++ b/features/operations/trash/fuse-refusals.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#1614} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/trash_support.rs] tests: [src/adapters/trash_support/tests.rs] related: [operations/filesystem-compatibility] diff --git a/features/operations/trash/restore.md b/features/operations/trash/restore.md index 33b85c6..bc23dff 100644 --- a/features/operations/trash/restore.md +++ b/features/operations/trash/restore.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#478, pr: lgse/strata#502} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/trash_restore.rs, src/adapters/local_operations/restore.rs] tests: [src/adapters/trash_restore/**, src/adapters/local_operations/tests/restore_safety.rs] docs: [docs/trash-restore-testing.md] diff --git a/features/operations/undo.md b/features/operations/undo.md index aa42464..af2fc25 100644 --- a/features/operations/undo.md +++ b/features/operations/undo.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#298, pr: lgse/strata#301} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [] tests: [src/app/browser/tests/undo.rs, src/app/browser/tests/undo_refresh.rs, src/adapters/local_operations/tests/undo.rs, tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl] docs: [] diff --git a/features/preview/preview-panel/documents/odt.md b/features/preview/preview-panel/documents/odt.md index 61ee7f7..8db9695 100644 --- a/features/preview/preview-panel/documents/odt.md +++ b/features/preview/preview-panel/documents/odt.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1813, pr: lgse/strata#1834} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/odt.rs] tests: [src/services/odt/tests.rs, tests/fixtures/documents/report.odt] related: [preview/preview-panel/sandbox, preview/preview-panel/find] diff --git a/features/preview/preview-panel/documents/scrollbar.md b/features/preview/preview-panel/documents/scrollbar.md index da3a7a4..8f9bf7e 100644 --- a/features/preview/preview-panel/documents/scrollbar.md +++ b/features/preview/preview-panel/documents/scrollbar.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1749, pr: lgse/strata#1752} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/virtual_preview/scrollbar.rs, src/ui/virtual_preview/scrollbar/position.rs] tests: [src/ui/virtual_preview/scrollbar/tests.rs] related: [preview/preview-panel/find, integration/portal-file-chooser] diff --git a/features/preview/preview-panel/gcode.md b/features/preview/preview-panel/gcode.md index 1ab35b0..5c356fa 100644 --- a/features/preview/preview-panel/gcode.md +++ b/features/preview/preview-panel/gcode.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1863, pr: lgse/strata#1864} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/sandbox_helper/model/gcode.rs] tests: [src/sandbox_helper/model/gcode/tests.rs] related: [preview/preview-panel/model-views, preview/preview-panel/sandbox, browser/thumbnails] diff --git a/features/preview/preview-panel/index.md b/features/preview/preview-panel/index.md index 56066f8..713dbfa 100644 --- a/features/preview/preview-panel/index.md +++ b/features/preview/preview-panel/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#17} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/preview.rs, src/services/preview.rs, src/adapters/local_preview.rs, src/adapters/local_preview/remote.rs, src/ui/preview/components.rs, src/sandbox_helper/archive_cover.rs] tests: [src/services/preview/tests.rs, src/adapters/local_preview/tests.rs, src/adapters/local_preview/tests/cover_preview.rs, src/adapters/local_preview/tests/remote_preview.rs, src/adapters/local_preview/remote/tests.rs, src/ui/preview/tests/pdf.rs, src/ui/preview/tests/operations.rs, src/sandbox_helper/archive_cover/tests.rs, tests/fixtures/documents/password-protected.pdf, tests/fixtures/documents/owner-restricted.pdf, tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl, tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl, tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl, tests/qa/scenarios/preview_media_layout] docs: [site/src/reference/preview-sandbox.md] diff --git a/features/preview/preview-panel/media/audio.md b/features/preview/preview-panel/media/audio.md index cb42159..d7bc445 100644 --- a/features/preview/preview-panel/media/audio.md +++ b/features/preview/preview-panel/media/audio.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1288, pr: lgse/strata#1289} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/preview/audio.rs, src/ui/preview/audio, src/ui/preview/waveform.rs, src/ui/preview/waveform, src/media/peaks.rs, src/media/peaks] tests: [src/ui/preview/audio/tests.rs, src/ui/preview/audio/analysis/tests.rs, src/ui/preview/audio/details/tests.rs, src/ui/preview/tests/audio.rs, src/ui/preview/waveform/tests.rs, src/media/peaks/tests.rs, src/ui/window/tests/keyboard_dispatch/audio_tracks.rs] related: [preview/preview-panel/media/video, browser/search, integration/10xer-mode] diff --git a/features/preview/preview-panel/media/video.md b/features/preview/preview-panel/media/video.md index e718ed2..12bbe0a 100644 --- a/features/preview/preview-panel/media/video.md +++ b/features/preview/preview-panel/media/video.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1417, pr: lgse/strata#1474} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/preview/video.rs, src/ui/preview/video, src/media/storyboard.rs, src/media/storyboard, src/ui/media/ambient.rs, src/ui/media/ambient] tests: [src/ui/preview/tests/video.rs, src/ui/preview/video/badges/tests.rs, src/ui/preview/video/details/tests.rs, src/ui/preview/video/storyboard/tests.rs, src/media/storyboard/tests.rs, src/ui/media/ambient/tests.rs, src/ui/window/tests/keyboard_dispatch/video_clips.rs, tests/qa/scenarios/preview_video] related: [preview/preview-panel/media/audio, browser/properties, integration/open-with, settings/themes] diff --git a/features/preview/preview-panel/model-views.md b/features/preview/preview-panel/model-views.md index 2e4010e..306d39e 100644 --- a/features/preview/preview-panel/model-views.md +++ b/features/preview/preview-panel/model-views.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1225, pr: lgse/strata#1276} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/preview/model.rs, src/sandbox/model.rs, src/services/model_preview.rs, src/sandbox_helper/model.rs, src/sandbox_helper/model/embedded.rs] tests: [src/ui/preview/model/tests.rs, src/ui/preview/tests/model.rs, src/sandbox/model/tests.rs, src/adapters/local_preview/tests/model_preview.rs, src/sandbox_helper/model/tests.rs, src/sandbox_helper/model/embedded/tests.rs, tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl] related: [preview/preview-panel/media/video, preview/preview-panel/layout, preview/quick-preview, settings/themes] diff --git a/features/preview/preview-panel/routes.md b/features/preview/preview-panel/routes.md index 6ed0d5d..a646aaf 100644 --- a/features/preview/preview-panel/routes.md +++ b/features/preview/preview-panel/routes.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1841, pr: lgse/strata#1842} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/services/route_preview.rs, src/sandbox_helper/route.rs, src/sandbox_helper/route/fit.rs, src/sandbox_helper/route/geometry.rs, src/sandbox_helper/route/render.rs, src/sandbox_helper/route/xml.rs, src/ui/preview/route.rs, src/ui/preview/route/player.rs, src/ui/preview/route/plot.rs, src/ui/preview/route/position.rs] tests: [src/sandbox_helper/route/tests.rs, src/ui/preview/route/position/tests.rs, src/ui/preview/tests/route.rs, src/adapters/local_preview/tests/route_preview.rs, tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl] related: [preview/preview-panel/media, preview/preview-panel/sandbox, settings/preferences] diff --git a/features/preview/preview-panel/sandbox.md b/features/preview/preview-panel/sandbox.md index 76a8956..51f0ec0 100644 --- a/features/preview/preview-panel/sandbox.md +++ b/features/preview/preview-panel/sandbox.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#6, pr: lgse/strata#17} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/sandbox.rs, src/sandbox_helper.rs, src/sandbox/runtime.rs] tests: [src/sandbox/tests.rs, src/sandbox_helper/tests.rs, src/sandbox/runtime/tests.rs] docs: [site/src/reference/preview-sandbox.md, docs/preview-sandbox.md] diff --git a/features/preview/quick-preview/folder-peek.md b/features/preview/quick-preview/folder-peek.md index b30d97b..d94b58b 100644 --- a/features/preview/quick-preview/folder-peek.md +++ b/features/preview/quick-preview/folder-peek.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#132} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/app/peek.rs, src/ui/browser/peek.rs] tests: [src/app/peek/tests.rs, src/ui/browser/peek/tests.rs] docs: [docs/preferences.md] diff --git a/features/remote/file-providers/external.md b/features/remote/file-providers/external.md index c3402b1..b9a6cb0 100644 --- a/features/remote/file-providers/external.md +++ b/features/remote/file-providers/external.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1356, pr: lgse/strata#1385} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/file_providers.rs, src/services/file_providers, src/ui/file_providers.rs, src/ui/file_providers] tests: [src/services/file_providers/tests.rs, src/services/file_providers/transport/tests.rs, src/ui/file_providers/tests.rs, tests/qa/scenarios/file_providers] docs: [site/src/reference/file-providers.md, docs/file-providers.md] diff --git a/features/remote/file-providers/index.md b/features/remote/file-providers/index.md index 4a18cbe..9e9c14d 100644 --- a/features/remote/file-providers/index.md +++ b/features/remote/file-providers/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#20, pr: null} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [] tests: [] docs: [] diff --git a/features/remote/file-providers/integrations.md b/features/remote/file-providers/integrations.md index c120b23..3becbf2 100644 --- a/features/remote/file-providers/integrations.md +++ b/features/remote/file-providers/integrations.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1741, pr: lgse/strata#1748} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/integration_catalog.rs, src/ui/settings/integrations.rs, data/icons/scalable/actions/strata-blocks.svg, data/icons/scalable/actions/strata-cloud.svg, data/icons/scalable/actions/strata-git-branch.svg, data/icons/scalable/actions/strata-smartphone.svg] tests: [src/services/integration_catalog/tests.rs, src/ui/settings/integrations/tests.rs] docs: [docs/file-providers.md, integrations/README.md] diff --git a/features/remote/file-providers/kde-connect.md b/features/remote/file-providers/kde-connect.md index a655126..576870a 100644 --- a/features/remote/file-providers/kde-connect.md +++ b/features/remote/file-providers/kde-connect.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1703, pr: lgse/strata#1704} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [integrations/kdeconnect/provider.py, integrations/kdeconnect/messages.json, integrations/kdeconnect/catalog.toml, integrations/kdeconnect/LICENSE] tests: [integrations/kdeconnect/tests] docs: [integrations/kdeconnect/README.md] diff --git a/features/remote/file-providers/localsend.md b/features/remote/file-providers/localsend.md index c98359f..260738d 100644 --- a/features/remote/file-providers/localsend.md +++ b/features/remote/file-providers/localsend.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1754, pr: lgse/strata#1756} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [integrations/localsend/provider.py, integrations/localsend/messages.json, integrations/localsend/catalog.toml, integrations/localsend/LICENSE] tests: [integrations/localsend/tests/test_provider.py] docs: [integrations/localsend/README.md] diff --git a/features/remote/file-providers/network-locations.md b/features/remote/file-providers/network-locations.md index b232d21..96ef527 100644 --- a/features/remote/file-providers/network-locations.md +++ b/features/remote/file-providers/network-locations.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#20, pr: lgse/strata#31} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/adapters/gio_location.rs, src/app/browser/remote.rs] tests: [src/adapters/gio_location/tests.rs, src/app/browser/remote/tests.rs, scripts/sftp-fixture.sh] docs: [site/src/reference/remote-sftp.md, docs/remote-sftp.md] diff --git a/features/settings/diagnostics.md b/features/settings/diagnostics.md index 4a8922b..85dd8d4 100644 --- a/features/settings/diagnostics.md +++ b/features/settings/diagnostics.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1734, pr: lgse/strata#1735} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/services/diagnostics.rs, src/ui/settings/diagnostics.rs, data/icons/scalable/actions/strata-stethoscope.svg] tests: [src/services/diagnostics/tests.rs, src/ui/settings/diagnostics/tests.rs] docs: [docs/diagnostics.md] diff --git a/features/settings/preferences/date-format.md b/features/settings/preferences/date-format.md index 11447e6..2041eb8 100644 --- a/features/settings/preferences/date-format.md +++ b/features/settings/preferences/date-format.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: null, pr: lgse/strata#180} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/util/mod.rs, data/locales/dates.json] tests: [src/util/tests.rs] related: [browser/properties] diff --git a/features/settings/preferences/language.md b/features/settings/preferences/language.md index aa0102e..6edcf3f 100644 --- a/features/settings/preferences/language.md +++ b/features/settings/preferences/language.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1517, pr: lgse/strata#1519} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/i18n.rs, data/locales/counts.json] tests: [src/i18n/tests.rs, src/i18n/catalog_tests.rs] docs: [docs/internationalization.md] diff --git a/features/settings/preferences/storage.md b/features/settings/preferences/storage.md index 3f6d250..3c698c0 100644 --- a/features/settings/preferences/storage.md +++ b/features/settings/preferences/storage.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#212, pr: lgse/strata#518} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/ui/preferences/bindings.rs, src/ui/preferences/save_notice.rs, src/storage.rs, src/storage/writer.rs] tests: [src/ui/preferences/tests.rs, src/ui/preferences/bindings/tests.rs, src/ui/preferences/fixtures.rs, src/storage/tests.rs, src/storage/writer/tests.rs, tests/qa/scenarios/preferences] related: [] diff --git a/features/settings/themes/icons/index.md b/features/settings/themes/icons/index.md index 884a2dc..f802130 100644 --- a/features/settings/themes/icons/index.md +++ b/features/settings/themes/icons/index.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#169, pr: lgse/strata#170} branch: null reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: draft +review: reviewed code: [src/assets.rs, src/assets/vector.rs, data/icons/scalable/actions/strata-video.svg, data/icons/scalable/actions/strata-file-archive.svg, data/icons/scalable/actions/strata-chevron-down-symbolic.svg, data/icons/scalable/actions/strata-minus-symbolic.svg, data/icons/scalable/actions/strata-plus-symbolic.svg] tests: [src/assets/tests.rs, src/assets/vector/tests.rs] related: [browser/view-modes/icons, browser/folder-customization, settings/themes/icons/catppuccin] diff --git a/features/settings/themes/interface-font.md b/features/settings/themes/interface-font.md index 63d08ec..082a88a 100644 --- a/features/settings/themes/interface-font.md +++ b/features/settings/themes/interface-font.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1217, pr: lgse/strata#1696} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/theme/font.rs, data/fonts] tests: [] related: [browser/view-modes/text-size, settings/themes] diff --git a/features/settings/themes/omarchy.md b/features/settings/themes/omarchy.md index 288d2c4..082dd0a 100644 --- a/features/settings/themes/omarchy.md +++ b/features/settings/themes/omarchy.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1198, pr: lgse/strata#1482} branch: null reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: draft +review: reviewed code: [src/ui/theme/omarchy.rs] tests: [src/ui/theme/omarchy/tests.rs] related: [] From 5382f9d9a87ee1375b10f491624f0476a99e254c Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:18:55 +0000 Subject: [PATCH 02/17] Advance watermark to 44bfeab; bump reviewed_at on signature-only preview and devices nodes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/devices/volumes/camera.md | 2 +- features/preview/preview-panel/index.md | 2 +- features/preview/preview-panel/layout.md | 2 +- features/preview/preview-panel/model-views.md | 2 +- features/preview/preview-panel/routes.md | 2 +- features/preview/quick-preview/folder-peek.md | 2 +- qa/sweeps/devices.md | 2 +- qa/sweeps/preview.md | 2 +- sources.yaml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/features/devices/volumes/camera.md b/features/devices/volumes/camera.md index 4527a54..ce39667 100644 --- a/features/devices/volumes/camera.md +++ b/features/devices/volumes/camera.md @@ -3,7 +3,7 @@ title: Camera photos status: shipped origin: {issue: lgse/strata#833, pr: lgse/strata#834} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/adapters/local_files/camera_photos.rs, src/services/camera_preview.rs, src/ui/browser/camera_scroll.rs, src/ui/thumbnail/camera.rs] tests: [src/adapters/local_files/camera_photos/tests.rs, src/services/camera_preview/tests.rs, src/app/browser/tests/camera_photos.rs, src/ui/thumbnail/camera/tests.rs] diff --git a/features/preview/preview-panel/index.md b/features/preview/preview-panel/index.md index 713dbfa..cdce77c 100644 --- a/features/preview/preview-panel/index.md +++ b/features/preview/preview-panel/index.md @@ -3,7 +3,7 @@ title: Preview panel status: shipped origin: {issue: null, pr: lgse/strata#17} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/preview.rs, src/services/preview.rs, src/adapters/local_preview.rs, src/adapters/local_preview/remote.rs, src/ui/preview/components.rs, src/sandbox_helper/archive_cover.rs] tests: [src/services/preview/tests.rs, src/adapters/local_preview/tests.rs, src/adapters/local_preview/tests/cover_preview.rs, src/adapters/local_preview/tests/remote_preview.rs, src/adapters/local_preview/remote/tests.rs, src/ui/preview/tests/pdf.rs, src/ui/preview/tests/operations.rs, src/sandbox_helper/archive_cover/tests.rs, tests/fixtures/documents/password-protected.pdf, tests/fixtures/documents/owner-restricted.pdf, tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl, tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl, tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl, tests/qa/scenarios/preview_media_layout] diff --git a/features/preview/preview-panel/layout.md b/features/preview/preview-panel/layout.md index 8510fd6..8b818a7 100644 --- a/features/preview/preview-panel/layout.md +++ b/features/preview/preview-panel/layout.md @@ -3,7 +3,7 @@ title: Preview panel layout status: shipped origin: {issue: lgse/strata#885, pr: lgse/strata#888} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/preview/layout.rs, src/ui/preview/session.rs, src/ui/preview/media_layout.rs, src/ui/preview/player_layout.rs, src/ui/browser/preview.rs] tests: [src/ui/preview/tests.rs, tests/qa/scenarios/preview_session, tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl, tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl, tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl, tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl, tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl] diff --git a/features/preview/preview-panel/model-views.md b/features/preview/preview-panel/model-views.md index 306d39e..66dc130 100644 --- a/features/preview/preview-panel/model-views.md +++ b/features/preview/preview-panel/model-views.md @@ -3,7 +3,7 @@ title: 3D model previews status: shipped origin: {issue: lgse/strata#1225, pr: lgse/strata#1276} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/preview/model.rs, src/sandbox/model.rs, src/services/model_preview.rs, src/sandbox_helper/model.rs, src/sandbox_helper/model/embedded.rs] tests: [src/ui/preview/model/tests.rs, src/ui/preview/tests/model.rs, src/sandbox/model/tests.rs, src/adapters/local_preview/tests/model_preview.rs, src/sandbox_helper/model/tests.rs, src/sandbox_helper/model/embedded/tests.rs, tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl] diff --git a/features/preview/preview-panel/routes.md b/features/preview/preview-panel/routes.md index a646aaf..fa3c79b 100644 --- a/features/preview/preview-panel/routes.md +++ b/features/preview/preview-panel/routes.md @@ -3,7 +3,7 @@ title: Offline route previews status: shipped origin: {issue: lgse/strata#1841, pr: lgse/strata#1842} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/services/route_preview.rs, src/sandbox_helper/route.rs, src/sandbox_helper/route/fit.rs, src/sandbox_helper/route/geometry.rs, src/sandbox_helper/route/render.rs, src/sandbox_helper/route/xml.rs, src/ui/preview/route.rs, src/ui/preview/route/player.rs, src/ui/preview/route/plot.rs, src/ui/preview/route/position.rs] tests: [src/sandbox_helper/route/tests.rs, src/ui/preview/route/position/tests.rs, src/ui/preview/tests/route.rs, src/adapters/local_preview/tests/route_preview.rs, tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl] diff --git a/features/preview/quick-preview/folder-peek.md b/features/preview/quick-preview/folder-peek.md index d94b58b..e6a3bc0 100644 --- a/features/preview/quick-preview/folder-peek.md +++ b/features/preview/quick-preview/folder-peek.md @@ -3,7 +3,7 @@ title: Folder peek status: shipped origin: {issue: null, pr: lgse/strata#132} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/app/peek.rs, src/ui/browser/peek.rs] tests: [src/app/peek/tests.rs, src/ui/browser/peek/tests.rs] diff --git a/qa/sweeps/devices.md b/qa/sweeps/devices.md index 369c3ff..da59e46 100644 --- a/qa/sweeps/devices.md +++ b/qa/sweeps/devices.md @@ -1,6 +1,6 @@ --- title: Devices sweep -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 tools: [docs/preview-sandbox.md, data/udiskie/unlock, scripts/sftp-fixture.sh] --- diff --git a/qa/sweeps/preview.md b/qa/sweeps/preview.md index 19f1bab..121d070 100644 --- a/qa/sweeps/preview.md +++ b/qa/sweeps/preview.md @@ -1,6 +1,6 @@ --- title: Preview sweep -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 tools: [docs/preview-sandbox.md, docs/document-previews.md, docs/preview-panel-layout.md, tests/fixtures/spreadsheets, tests/fixtures/documents, docs/testing.md, tests/qa/keyboard.rs, tests/fixtures/harness.json] --- diff --git a/sources.yaml b/sources.yaml index 10bc8fb..d9c2cdd 100644 --- a/sources.yaml +++ b/sources.yaml @@ -4,7 +4,7 @@ upstream: fork: repo: wmfeht/strata # Last upstream commit the sync has processed. Set at backfill hand-off. -watermark: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +watermark: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 # The documentation site under site/: the stable release it describes and where it is published. site: release: v1.0.0 From dd7b7db046afb26fd5b3b6cdd76609aa649859c6 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:22:24 +0000 Subject: [PATCH 03/17] Sync app area for lgse/strata#1934, #1909, #1918, #1837 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/app/accessibility.md | 6 ++-- features/app/dialogs.md | 6 ++-- features/app/infrastructure.md | 9 ++++-- features/app/keyboard-shortcuts/remapping.md | 2 +- features/app/packaging/index.md | 6 ++-- features/app/packaging/installer.md | 5 +-- features/app/updates/index.md | 32 +++++++++++++++----- features/app/updates/install.md | 5 +-- features/app/window/index.md | 2 +- features/app/window/key-dispatch.md | 2 +- qa/sweeps/app.md | 20 +++++++++--- 11 files changed, 68 insertions(+), 27 deletions(-) diff --git a/features/app/accessibility.md b/features/app/accessibility.md index 686ef0d..9898f91 100644 --- a/features/app/accessibility.md +++ b/features/app/accessibility.md @@ -3,8 +3,8 @@ title: Accessibility status: shipped origin: {issue: lgse/strata#341, pr: lgse/strata#415} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/accessibility.rs] tests: [src/ui/accessibility/tests.rs, tests/qa/scenarios/accessibility, tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl] docs: [docs/testing.md] @@ -21,6 +21,8 @@ App-wide accessible semantics for screen readers and AT-SPI automation. It cover - In every view, each entry is named with its display name and described as "Folder" or "File". lgse/strata#415 - A symbolic link is described as "Folder link" or "File link", a dangling link as "Broken link", and any other file type as "Other". lgse/strata#415 (unverified) +- A folder the user can't read or enter is described as "Folder that requires administrator access". lgse/strata#1837 +- A link to such a folder is described as "Folder link that requires administrator access". lgse/strata#1837 (unverified) - Each pane is a group named after its directory and described as "Columns view", "Icons view", or "List view". lgse/strata#415 - The entry list inside a pane is named after its directory and described as "Files". lgse/strata#415 - In an empty, unreadable, or still-loading directory, the focusable pane is named after the directory. lgse/strata#1533 diff --git a/features/app/dialogs.md b/features/app/dialogs.md index d149b29..762e0fc 100644 --- a/features/app/dialogs.md +++ b/features/app/dialogs.md @@ -3,8 +3,8 @@ title: Modal dialogs status: shipped origin: {issue: lgse/strata#88, pr: lgse/strata#91} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/modal.rs, src/ui/modal/layout.rs, src/ui/controls.rs, src/ui/blur.rs] tests: [src/ui/modal/tests.rs, src/ui/controls/tests.rs, src/ui/window/tests/keyboard_dispatch/overlay_focus.rs, tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl] docs: [site/src/reference/keyboard-navigation.md] @@ -33,6 +33,8 @@ The shared shell behind Strata's action dialogs: the blurred backdrop, open and - Confirmation dialogs open with the confirm button focused, so Enter confirms and Escape cancels: Permanently delete, Empty Trash, Restore, paste and archive Replace, Run, and Forget saved password. lgse/strata#1206 - With focus outside a text field, Enter activates the focused button and toggles a focused checkbox or switch, so Enter with Cancel focused cancels. lgse/strata#1052, lgse/strata#175 (unverified) - With focus outside a text field, an unmodified arrow key moves focus to the nearest button, menu button, checkbox, switch, or entry in that direction; Down on a menu button opens its menu. lgse/strata#175 (unverified) +- An error dialog that offers an action, such as Open as Administrator for an unreadable folder, opens with that accent button focused. lgse/strata#1837 (unverified) +- In that dialog, Close, the close button, and Escape dismiss it without running the action. lgse/strata#1837 (unverified) - While a dialog is open, focus that moves outside it is returned to the dialog's layer, not to a button inside it. lgse/strata#1432 ### Focus after closing diff --git a/features/app/infrastructure.md b/features/app/infrastructure.md index beb11c0..7988595 100644 --- a/features/app/infrastructure.md +++ b/features/app/infrastructure.md @@ -3,8 +3,8 @@ title: Shared location model and listing adapter status: shipped origin: {issue: lgse/strata#14, pr: lgse/strata#27} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/model/mod.rs, src/ui/settings.rs, src/adapters/local_files.rs, src/ui/mod.rs, src/main.rs, src/app/mod.rs, src/adapters/mod.rs, src/services/mod.rs, src/ui/resize_feedback.rs, src/ui/preferences/trashed.rs, src/adapters/volume/mounts.rs, src/adapters/volume/mount_snapshot.rs, README.md, THIRD_PARTY_LICENSES.md, data/licenses, data/strata.gresource.xml, AGENTS.md, typos.toml, clippy.toml, Cargo.toml, Cargo.lock, mise.toml, mise.lock, scripts/benchmark-scroll.py, src/build_info.rs, src/services/native_fs.rs, src/ui/keys/bindings.rs, src/ui/keys/bindings/**, build.rs, deny.toml, scripts/quality.sh, scripts/quality_ci.py, scripts/test-headless.py, scripts/integration_tests.py, src/ui/settings/install_command.rs, src/adapters/local_operations/fs_ops.rs, src/adapters/local_operations/native_fs.rs, src/adapters/local_operations/work_queue.rs, src/trusted_command.rs, src/adapters/gio_close.rs, src/adapters/volume/mount_watch.rs, src/adapters/volume/mount_lanes.rs, src/adapters/local_operations/probes.rs, src/util/ui_thread.rs, src/util/ui_thread/**, scripts/trace-main-io.py, tests/qa/main-io-allowlist.toml, .agents/skills, .claude/skills, .gitignore, .cursor/CLOUD.md, .dockerignore, CONTRIBUTING.md, scripts/check.sh, src/qa.rs, src/qa/**, src/ui/accessibility/qa.rs, scripts/qa*.sh, scripts/qa_*.py, scripts/lib/qa-container.sh, scripts/headless/**, scripts/image_*.py, tests/container/**, tests/fixtures/harness.json, src/logging.rs, src/metrics.rs, src/services/listeners.rs, src/services/network_error.rs, src/ui/close_guard.rs, src/ui/browser/paths.rs, src/ui/browser/entry_animation.rs, data/icons/scalable/actions/**, .github, .gitattributes, CLAUDE.md, LICENSE, rustfmt.toml, skills-lock.json, docs/assets, docs/evidence, scripts/discord_triage.py, scripts/profile-fixture.sh, scripts/generate-fixture.sh, scripts/quality-durations.json, scripts/release_version.py, scripts/start-dev.sh, src/services/package_manager.rs, src/ui/browser/location.rs] tests: [src/model/tests.rs, src/adapters/local_files/tests.rs, src/adapters/local_files/tests/browse.rs, src/adapters/volume/mounts/tests.rs, src/test_support.rs, src/test_support/**, scripts/test_benchmark_scroll.py, src/build_info/tests.rs, scripts/test_quality_ci.py, scripts/test_quality_runner.py, scripts/test_headless_runner.py, scripts/test_integration_tests.py, src/ui/settings/install_command/tests.rs, src/trusted_command/tests.rs, src/adapters/gio_close/tests.rs, src/adapters/local_operations/tests/closes.rs, src/adapters/volume/mount_watch/tests.rs, src/adapters/volume/mount_lanes/tests.rs, src/adapters/local_operations/probes/tests.rs, src/adapters/local_operations/fs_ops/tests.rs, src/adapters/volume/mounts/tests/byte_paths.rs, scripts/test_trace_main_io.py, tests/qa.rs, tests/qa/*.rs, tests/qa/foreign_drag_source.py, tests/qa/baselines/**, src/qa/tests.rs, src/qa/tests/**, scripts/test_qa_*.py, scripts/test_image_*.py, tests/qa/scenarios/visual_baselines, src/logging/tests.rs, src/metrics/tests.rs, src/services/listeners/tests.rs, src/services/network_error/tests.rs, scripts/test_discord_triage.py, scripts/test_makefile.py, scripts/test_release_version.py, src/tests.rs, src/ui/preferences/tests/preferences.rs, src/ui/window/tests/preferences.rs, tests/qa/fixtures/file_drag_source.py, src/services/package_manager/tests.rs, src/ui/browser/location/tests.rs] docs: [docs/performance-baseline.md, docs/hardened-configuration.md, docs/unsafe-code.md, docs/testing.md, docs/packaging.md] @@ -69,6 +69,11 @@ The location model, URI display and diagnostic rules, and the directory-listing - A helper in a configured directory whose canonical target lies outside those roots is rejected, and the search moves to the next directory. lgse/strata#1746 - With no trusted copy in any directory, the lookup fails closed. lgse/strata#1055, lgse/strata#1746 +### Build switches + +- A build with `STRATA_UPDATER` set to a value other than `enabled` or `disabled`, such as `disable`, fails with `STRATA_UPDATER must be "enabled" or "disabled"`. lgse/strata#1934 +- A `STRATA_UPDATER` value is trimmed first, and an empty value builds with the updater. lgse/strata#1934 (unverified) + ### File manager activation - Started with `--gapplication-service` before any `--`, Strata re-execs before GTK starts, with `no-portals` appended to `GDK_DEBUG`, such as `misc:no-portals`. lgse/strata#1811 diff --git a/features/app/keyboard-shortcuts/remapping.md b/features/app/keyboard-shortcuts/remapping.md index 782b6fe..463bcbf 100644 --- a/features/app/keyboard-shortcuts/remapping.md +++ b/features/app/keyboard-shortcuts/remapping.md @@ -3,7 +3,7 @@ title: Remappable shortcuts per map status: shipped origin: {issue: lgse/strata#1884, pr: lgse/strata#1885} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/keys/command.rs, src/ui/keys/alias.rs, src/ui/keys/capture.rs, src/ui/keys/conflicts.rs, src/ui/preferences/keymap.rs, src/ui/window/keyboard/direct.rs, src/ui/settings/keyboard.rs] tests: [src/ui/keys/command/tests.rs, src/ui/keys/alias/tests.rs, src/ui/keys/conflicts/tests.rs, src/ui/preferences/tests/keymap.rs, src/ui/settings/keyboard/tests.rs, src/ui/window/tests/keyboard_dispatch/keymap_overrides.rs, src/ui/window/tests/keyboard_dispatch/keymap_conflicts.rs, src/ui/window/tests/keyboard_dispatch/structural_aliases.rs, src/ui/window/tests/keyboard_dispatch/direct_commands.rs, tests/qa/scenarios/keymap] diff --git a/features/app/packaging/index.md b/features/app/packaging/index.md index 8f65362..4292fc1 100644 --- a/features/app/packaging/index.md +++ b/features/app/packaging/index.md @@ -3,8 +3,8 @@ title: Packaging and installation status: shipped origin: {issue: lgse/strata#49, pr: lgse/strata#182} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [data/io.github.lgse.Strata.desktop, data/icons/scalable/apps/io.github.lgse.Strata.svg] tests: [] docs: [site/src/reference/install.md, docs/packaging.md] @@ -21,7 +21,7 @@ How Strata reaches a desktop: the desktop entry and application icon that let sh - `io.github.lgse.Strata.desktop` sets `Icon=io.github.lgse.Strata` and `StartupWMClass=io.github.lgse.Strata`, matching the GTK application ID. lgse/strata#182 - The entry declares `MimeType=inode/directory;` and `Categories=Utility;FileTools;FileManager;`, so it can be the default folder handler. lgse/strata#182 -- The entry carries translated `GenericName`, `Comment`, and `Keywords` for fr, de, es, ja, pt_BR, ko, vi, it, ru, zh_CN, and zh_TW. lgse/strata#1519, lgse/strata#1583, lgse/strata#1745 (unverified) +- The entry carries translated `GenericName`, `Comment`, and `Keywords` for fr, hu, de, es, ja, pt_BR, ko, vi, it, ru, zh_CN, and zh_TW. lgse/strata#1519, lgse/strata#1583, lgse/strata#1745, lgse/strata#1918 (unverified) - The application icon is bundled in the GResource and set as GTK's default window icon name. lgse/strata#182 - The application icon draws the logo in blue and violet gradients on a rounded tile. The tile fades from `#414868` at the top to `#1b1c27` at the bottom. lgse/strata#1838 (unverified) - Release archives contain `io.github.lgse.Strata.desktop` and `io.github.lgse.Strata.svg` beside the `strata` binary. lgse/strata#182 diff --git a/features/app/packaging/installer.md b/features/app/packaging/installer.md index 0eaf5b8..0e5ec8a 100644 --- a/features/app/packaging/installer.md +++ b/features/app/packaging/installer.md @@ -3,8 +3,8 @@ title: Release installer status: shipped origin: {issue: lgse/strata#329, pr: lgse/strata#330} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [install.sh, data/locales/installer.json, scripts/installer_messages.py] tests: [scripts/test_installer.py, scripts/testdata] docs: [docs/internationalization.md, docs/signed-updates.md] @@ -118,6 +118,7 @@ related: [integration/file-manager-interface, integration/portal-file-chooser/se - With `LANGUAGE=zz:fr` and `LC_ALL=C.UTF-8`, the plan reads "Installer dans ". lgse/strata#1730 (unverified) - With `LANGUAGE=fr` and `LC_ALL=C`, the plan reads "Install to ". lgse/strata#1730 (unverified) - `zh_TW`, `zh_HK`, `zh_MO`, and `zh-Hant…` show Traditional Chinese messages; every other `zh` locale shows Simplified Chinese. lgse/strata#1745 +- A `hu` locale, such as `LANG=hu_HU.UTF-8`, shows Hungarian messages: the banner reads "Interaktív telepítő" and the plan "Telepítés ide: ". lgse/strata#1918 - Paths in messages show literally, even when they hold `&` or `%{version}`. lgse/strata#1730 (unverified) - The installer ignores the language saved in Strata's Settings. lgse/strata#1730 diff --git a/features/app/updates/index.md b/features/app/updates/index.md index f06ce9c..fdf4349 100644 --- a/features/app/updates/index.md +++ b/features/app/updates/index.md @@ -3,23 +3,29 @@ title: Updates status: shipped origin: {issue: null, pr: lgse/strata#22} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed -code: [src/services/update_check.rs] +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft +code: [src/services/update_check.rs, src/ui/settings/update_status.rs] tests: [src/services/update_check/tests.rs, src/ui/settings/tests/updates.rs] -docs: [docs/preferences.md] +docs: [docs/preferences.md, docs/packaging.md] related: [browser/sidebar] --- ## Summary -Checking GitHub for a newer Strata release, the Settings → Updates page, release notes, and the sidebar update notice. Children: `app/updates/release-channels` (Stable, Preview, Nightly, and Return to stable), `app/updates/install` (signed in-place install, rollback, and restart), `app/updates/release-picker` (installing a chosen release), and `app/updates/package-managed` (AUR, Omarchy, and pacman installs). +Checking GitHub for a newer Strata release, the Settings → Updates page, release notes, and the sidebar update notice. A build made with `STRATA_UPDATER=disabled` leaves the updater out. Children: `app/updates/release-channels` (Stable, Preview, Nightly, and Return to stable), `app/updates/install` (signed in-place install, rollback, and restart), `app/updates/release-picker` (installing a chosen release), and `app/updates/package-managed` (AUR, Omarchy, and pacman installs). ## Behavior +### Builds without the updater + +- A build made with `STRATA_UPDATER=disabled` has no Updates entry in the Settings navigation and no Updates page. lgse/strata#1934 +- Such a build never starts an automatic check, so the sidebar update notice never appears. lgse/strata#1934 +- A build with `STRATA_UPDATER` unset or `enabled` keeps the Updates page and update checks. lgse/strata#1934 + ### Checking -- With "Check for updates automatically" on, a window's first themed frame starts a check unless one completed in this process within 24 hours. lgse/strata#944, lgse/strata#326 +- In a build with the updater, with "Check for updates automatically" on, a window's first themed frame starts a check unless one completed in this process within 24 hours. lgse/strata#944, lgse/strata#326 - Automatic checks are on in a new profile. lgse/strata#1461 - The first visit to Settings → Updates in a window starts an automatic check when one is due. lgse/strata#944 - The first automatic check of a session ignores the on-disk cache. lgse/strata#326 @@ -40,6 +46,12 @@ Checking GitHub for a newer Strata release, the Settings → Updates page, relea - Before a check, the status row reads "Version X", adding the build kind, such as "Release candidate", for a prerelease build. lgse/strata#97 - After a check, the row title reads "Strata is up to date", "An update is available", or "Couldn’t check for updates". lgse/strata#51 (unverified) - A failed check shows its reason and a "View releases on GitHub" link. lgse/strata#22 (unverified) +- A check whose worker ends without a result fails with the reason "An unexpected system error occurred". lgse/strata#1909 (unverified) +- Settings → Updates opened after the startup check completed shows that check's result, without Check now or another request. lgse/strata#1909 +- When a startup or manual check completes, every open Settings → Updates row shows its result. lgse/strata#1909 +- Check now in one Settings window leaves other windows' rows, including an offer's Install button, unchanged until its result lands. lgse/strata#1909 +- On a pacman or Omarchy install with a Preview or Nightly preference, a startup offer shows on the row with its package-managed action, such as "Check again". lgse/strata#1909 +- Turning automatic checks off or changing the channel resets every open row to "Check for updates" and Check now, except a row mid-check or with an install underway. lgse/strata#1909 (unverified) - An available update shows its notes inline, titled "Available release · vX" with its change count and publication date. lgse/strata#51 - Turning automatic checks off clears the sidebar notice in every window; turning them on runs a check. lgse/strata#944, lgse/strata#1554 - The Release channel menu is insensitive while automatic checks are off. lgse/strata#97 (unverified) @@ -76,18 +88,23 @@ Update checks use GitHub's unauthenticated REST API, limited to 60 requests per - Strata caches instead of changing the source. A published `latest.json` was heavier, `releases.atom` carries HTML notes, and shipping an API token was rejected (lgse/strata#181). - GitHub answers unauthenticated conditional requests with `200`, so the 6-hour floor and the per-tag notes cache do the actual saving (lgse/strata#197). - The first automatic check of each session bypasses the cache so a fresh launch never shows stale release information. Disabling the cache for every check was rejected as wasteful (lgse/strata#325). -- Results are broadcast to every window, and the last offer is cached for windows opened later (lgse/strata#866). +- Results are broadcast to every window (lgse/strata#866). The last completed result, whether an offer, up to date, or a failure, is one shared snapshot. Every Settings → Updates row renders it, including rows opened later (lgse/strata#1909). +- Check now drops the shared snapshot and the sidebar notice, but other rows keep their rendering until the new result lands (lgse/strata#1909). - Each check carries a generation number. A result superseded by a newer check is dropped, so a Preview result cannot land after a switch to Stable (lgse/strata#97). - Checks and package-manager detection run off the GTK thread, after the first frame rather than on a fixed 8-second delay (lgse/strata#944). - A release-notes failure never blocks an eligible update; the GitHub release page stays available as a fallback (lgse/strata#48). - The release list hides unsigned releases, because they would fail install verification (lgse/strata#1779, lgse/strata#1781). - One 100-release page let older signed stable releases fall off, since nightlies are never pruned. Paging stops where signed history ends, and 5 requests stay inside the unauthenticated rate limit (lgse/strata#1781). +- Distributions whose packages deliver updates build with `STRATA_UPDATER=disabled`. Reusing the AUR `install-source.toml` marker was rejected, because its update check and wording are AUR-specific (lgse/strata#1933). +- The switch accepts only `enabled` and `disabled`, so a typo fails the build instead of shipping an updater (lgse/strata#1934). - HTML comments are stripped only in the client, and only from release notes. Published releases already carry the comment, and `--generate-notes` adds it to every body. Markdown file previews still show comments (lgse/strata#1464, lgse/strata#1570). ## History | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Shared one completed update-check result with every Settings → Updates row, so a page opened after the startup check shows it. | +| 2026-10-29 | lgse/strata#1934 | feat | Added the `STRATA_UPDATER=disabled` build switch, which leaves the updater out for distributions whose packages deliver updates. | | 2026-10-20 | lgse/strata#1781 | feat | Added "Install a specific release", listing the channel's signed releases so users can roll back or switch builds. | | 2026-10-15 | lgse/strata#1609 | fix | Opened Omarchy Update in Omarchy's floating presentation terminal, so its output stays open after the update ends or fails. | | 2026-09-16 | lgse/strata#1068 | fix | Removed the horizontal inset from the sidebar update notice. | @@ -99,4 +116,5 @@ Update checks use GitHub's unauthenticated REST API, limited to 60 requests per ## Known gaps +- A Settings → Updates row with an install underway ignores newer check results. A cancelled or failed install keeps its status until the next check result. lgse/strata#1909 - Releases older than the 500 newest on GitHub are not listed, because the release list is capped at 5 requests of 100. lgse/strata#1781 diff --git a/features/app/updates/install.md b/features/app/updates/install.md index 6bdaf96..122a6ca 100644 --- a/features/app/updates/install.md +++ b/features/app/updates/install.md @@ -3,8 +3,8 @@ title: In-place update install status: shipped origin: {issue: lgse/strata#24, pr: lgse/strata#26} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/services/update_install.rs, src/services/update_install/**, data/update-keys.json, scripts/sign_update_manifest.py] tests: [src/services/update_install/tests.rs, src/services/update_install/review_tests.rs, src/services/update_install/archive/tests.rs, src/services/update_install/command/tests.rs, src/services/update_install/download/tests.rs, src/services/update_install/manifest/tests.rs, src/ui/settings/tests/update_dialog.rs, scripts/test_sign_update_manifest.py, tests/fixtures/signed-update] docs: [site/src/reference/signed-updates.md] @@ -21,6 +21,7 @@ Downloading a release, authenticating it against a signed manifest, replacing th - Install update on the Updates row, or Download update or Install release in the update dialog, starts the install without a prompt. lgse/strata#26, lgse/strata#51, lgse/strata#1781 - A chosen release older than the installed build installs. lgse/strata#1781 +- In a build made with `STRATA_UPDATER=disabled`, an install request fails with "In-app updates are disabled in this build." lgse/strata#1934 (unverified) - Only one install runs per process; starting another shows "Another install is already running — try again shortly." and leaves its button usable. lgse/strata#97, lgse/strata#1499 - A download location other than `https://github.com/lgse/strata/releases/download//strata---unknown-linux-gnu.tar.gz` is refused. lgse/strata#506 diff --git a/features/app/window/index.md b/features/app/window/index.md index b2a1a4b..2534ad3 100644 --- a/features/app/window/index.md +++ b/features/app/window/index.md @@ -3,7 +3,7 @@ title: Window chrome and structure status: shipped origin: {issue: null, pr: lgse/strata#580} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/window/composition.rs, src/ui/window/composition/layout.rs, src/ui/decoration.rs] tests: [src/ui/decoration/tests.rs] diff --git a/features/app/window/key-dispatch.md b/features/app/window/key-dispatch.md index 9dc8a33..822a458 100644 --- a/features/app/window/key-dispatch.md +++ b/features/app/window/key-dispatch.md @@ -3,7 +3,7 @@ title: Window key and wheel dispatch status: shipped origin: {issue: null, pr: lgse/strata#544} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/window/keyboard.rs, src/ui/window/keyboard/commands.rs] tests: [src/ui/window/tests/keyboard_dispatch.rs, tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl] diff --git a/qa/sweeps/app.md b/qa/sweeps/app.md index d34ff4b..7383582 100644 --- a/qa/sweeps/app.md +++ b/qa/sweeps/app.md @@ -1,19 +1,19 @@ --- title: App sweep -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 triggers: [src/ui/window.rs, src/ui/window/keyboard/items.rs, src/ui/frame.rs, src/ui/motion.rs, src/style.css, src/ui/input_ownership.rs, src/ui/window/tests.rs, src/ui/frame/tests.rs, src/ui/input_ownership/tests.rs, src/ui/motion/tests.rs] tools: [scripts/test_installer.py, install.sh, docs/packaging.md, docs/signed-updates.md, docs/keyboard-navigation.md, docs/keyboard-shortcuts.md, docs/keymap.md, tests/qa/keyboard.rs, tests/fixtures/harness.json, scripts/qa-drive.sh] --- ## Scope -The application shell around the browser: accessible names, roles, and states over AT-SPI; the modal dialog shell with its blur, dismissal, focus, and forms; the F1 shortcut reference and the footer with its counts and clipboard badge; window chrome, identity, window buttons, the capture-phase key dispatcher, and the Ctrl+wheel text-size and Ctrl+Shift+wheel thumbnail controller; how key presses become shortcuts on any keyboard layout or input method, and how shortcuts are labelled; rebinding keys per map in `settings.toml` and Settings → Keyboard, with conflict checks, structural aliases, direct commands, and custom action slots; the desktop entry, `--version`, the release installer, and the AUR packages; update checks, release notes, release channels, installing a chosen release, signed in-place install, and package-managed installs. It also covers the shared location model and listing adapter: URI display rules, skipped-entry warnings, media metadata probing, directory-load log privacy, the UI-thread stall watchdog, and the `GDK_DEBUG` re-exec on service activation, plus the absence of the `qa` launch mode from plain builds. +The application shell around the browser: accessible names, roles, and states over AT-SPI; the modal dialog shell with its blur, dismissal, focus, and forms; the F1 shortcut reference and the footer with its counts and clipboard badge; window chrome, identity, window buttons, the capture-phase key dispatcher, and the Ctrl+wheel text-size and Ctrl+Shift+wheel thumbnail controller; how key presses become shortcuts on any keyboard layout or input method, and how shortcuts are labelled; rebinding keys per map in `settings.toml` and Settings → Keyboard, with conflict checks, structural aliases, direct commands, and custom action slots; the desktop entry, `--version`, the release installer, and the AUR packages; update checks, release notes, release channels, installing a chosen release, signed in-place install, package-managed installs, and builds without the updater. It also covers the shared location model and listing adapter: URI display rules, skipped-entry warnings, media metadata probing, directory-load log privacy, the UI-thread stall watchdog, and the `GDK_DEBUG` re-exec on service activation, plus the absence of the `qa` launch mode from plain builds. Left to other sweeps: per-mode movement and selection keys, the context menu and Open With, the search palette, the sidebar and the text and layout of its update notice, Settings pages other than Updates and Keyboard, the FileManager1 D-Bus service, Open in Terminal, the portal file chooser, and the content of every individual dialog. ## Setup -- Two builds of the same commit: one plain, one with `STRATA_RELEASE_TAG=v0.0.1-rc.1 STRATA_BUILD_KIND=rc` exported before `cargo build`. The second drives Return to stable and build-kind labels. +- Three builds of the same commit: one plain, one with `STRATA_RELEASE_TAG=v0.0.1-rc.1 STRATA_BUILD_KIND=rc` exported before `cargo build`, and one with `STRATA_UPDATER=disabled`. The second drives Return to stable and build-kind labels; the third has no updater. - Network control for update checks and downloads. Point `HTTPS_PROXY` at a closed port for a fast failure and at a `nc -l` socket for a stall; run under `unshare -rn` when the proxy is ignored. Live GitHub checks are capped at 60 per hour, so plan them. - A fake package-managed install: copy the binary to `/bin/strata` and write `/share/strata/install-source.toml` in the shape `docs/packaging.md` gives. Keep one marker per manager and channel, one with unknown keys, and one made unreadable with `chmod 000`. - The installer is never run on the host outside the stubs and throwaway `HOME` below. Evidence is `python3 scripts/test_installer.py`, `bash install.sh --help`, and the script read against its Behavior; a fake `omarchy` on `PATH` and `~/.local/share/omarchy/version` under the throwaway `HOME` feed the detection cases. @@ -47,6 +47,7 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Hover every header, footer, breadcrumb, and sidebar control for 3 s at each sidebar width and list which tooltips appear. - Dump the focused node in a `chmod 000` folder and in a folder still loading over a stalled remote mount. Repeat in an empty folder with the interface in ja. - Empty a folder from a shell while it is open, then add a file back; dump the pane after each step and read its name and description. +- Dump entries for a `chmod 000` folder, a `chmod 311` folder, a link to each, and a folder denied only by `setfacl -m u:$USER:---`; read each description, then `chmod 755` one and press F5. - Dump an Icons card with a truncated name while its name tooltip shows, and one whose name fits; compare their names and descriptions. - Collapse the sidebar to the rail and hover each row: places, pins, a mounted drive, a drive being ejected, and a network location. Expand and collapse it again during the eject. - With the interface in de and ja, read the names of the pane header buttons, the filter field, and the media buttons against their tooltips. @@ -67,6 +68,8 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Close a dialog by keyboard, switch to a second window before the 200 ms close animation ends, then return and read the ring. - In a byte-limited field, paste text whose limit falls inside a multi-byte character. Paste with the cursor at the start, middle, and end, then undo and redo. - Type into a limited field with an input method composing, and drop text onto it by drag and drop. +- Type the path of a `chmod 000` folder so the error dialog offers Open as Administrator. Dismiss it by backdrop click, Escape, and Close, then press Down and read where focus lands. +- Repeat with that dialog stacked over Properties, and with no GVfs `admin` backend installed. - Click an install command's copy button twice within 2 s, then close its dialog before 2 s pass; read the button's name every 500 ms. ### app/shortcut-reference @@ -128,7 +131,7 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Run `strata --version`, `strata --version ~/Documents`, `strata ~/Documents --version`, and `strata --version` with `DISPLAY` unset; compare the output with the prerelease build and check no window appears. - Build the prerelease build once with `cargo build` and once with `cargo build --release`; compare `strata --version` with the Settings → Updates version line in each. - Install with `mise run install-local` into a throwaway `HOME`, read `Exec=` in the installed entry, uninstall, and list what remains. -- Read the launcher's generic name and comment in a desktop shell under `LANG=zh_TW.UTF-8`, `zh_HK.UTF-8`, and `zh_MO.UTF-8`. +- Read the launcher's generic name and comment in a desktop shell under `LANG=zh_TW.UTF-8`, `zh_HK.UTF-8`, `zh_MO.UTF-8`, and `hu_HU.UTF-8`. - View the installed icon at 16, 24, 32, and 48 px on white, mid-grey, and near-black dock backgrounds. - Compare its size and corners with neighboring icons under Adwaita and under an icon theme with no Strata icon, such as MacTahoe. @@ -147,6 +150,7 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - In the custom menu, toggle Default file manager, Open file location, and Application launcher in every order, then read the plan's `+` lines. - In a numbered menu, enter `0`, `99`, `1 2`, `01`, and an empty line in both menus. - Run with `LANGUAGE=zz`, `LANGUAGE=zh-Hant-TW`, `LANG=zh_SG.UTF-8`, `LC_ALL=POSIX`, and `LC_MESSAGES=ko_KR.UTF-8` with `LANG=fr_FR.UTF-8`; read the banner, menus, and failure lines. +- Run with `LANG=hu_HU.UTF-8` and `LANGUAGE=HU` in an 80-column terminal; read the menus, plan, and summary for cut or wrapped lines. - Install Open file location with the stub `gdbus` exiting 1 and then absent; read the heading and whether the log is kept. - Repeat with the real `gdbus` and `DBUS_SESSION_BUS_ADDRESS` pointing at a socket that accepts and never answers, such as `socat UNIX-LISTEN: -`. - On that silent socket, select Default file manager with `XDG_CURRENT_DESKTOP` unset, `Hyprland`, and `GNOME`; read the failure lines, exit status, and leftover `dbus-send` processes. @@ -215,6 +219,11 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Compare the installed-release expander on the plain build, the prerelease build, and a build tagged with no GitHub release. - Serve release bodies through the proxy that hold a `` short form, a comment inside a fenced code block, and `-->` mid-paragraph; read the expander, the Available card, and the update dialog. - Serve 250 signed releases through the proxy with page 3 answering HTTP 500, then open the release menu. +- Open Settings → Updates while the startup check is stalled at the proxy, release the proxy, then open a second Settings window; compare both rows and count requests. +- With an offer shown in two Settings windows, press Check now in one with the proxy failing; read the other row before and after the failure lands. +- Start an install from one Settings window, run Check now in another, then cancel the install; read both rows until the next check. +- On fake pacman and Omarchy installs with the Nightly preference, let the startup check offer a release, then switch the channel in a second window. +- Launch the disabled build with an `update-check.toml` holding an offer, checks on, and the Preview channel saved; open two windows and count requests at the proxy. ### app/updates/release-picker @@ -267,6 +276,7 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Start Strata with `STRATA_UI_STALL_MS` set to `0`, `-5`, `abc`, and ` 250 `; check for the watchdog thread `strata-ui-stalls`. - With Strata stopped, call the portal's `org.freedesktop.portal.OpenURI.OpenDirectory` on a file and time the reply. Repeat with activation `GDK_DEBUG` set to `misc` and to `misc:no-portals`, and read `/proc//environ`. - Launch `strata` and `strata ` while the activated process runs, and read the new window's process id. +- Build with `STRATA_UPDATER` set to ` disabled `, `DISABLED`, `enabled` followed by a newline, and an empty value; read whether each build fails and whether Settings lists Updates. - Run `strata --qa `, `strata --qa`, and `strata --qa` on a plain `cargo build` and a release build; read which window opens and whether stdin is read. ## Hand-offs @@ -280,6 +290,8 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Sidebar automatic rail → `preview`. - Settings layer mechanics and pages other than Updates, including Window buttons and text size controls → `settings`. - Settings search terms that find "Install a specific release" → `settings`. +- Settings search, navigation, and the Diagnostics Installation row in a build without the updater → `settings`. +- Opening an unreadable folder as administrator, its breadcrumb root, and its notice → `browser`. - The "Not responding" notice and request lanes on a stalled mount → `browser`. - The FileManager1 D-Bus service and Open in Terminal → `integration`. - The portal file chooser, including its identity and refresh after an update → `integration`. From 4a02c6b07692ea34cbf3ef7c2161ffd26e508395 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:22:45 +0000 Subject: [PATCH 04/17] Sync integration and operations areas for lgse/strata#1909, #1837 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/integration/10xer-mode/file-verbs.md | 3 ++- features/integration/10xer-mode/places.md | 8 +++++--- features/integration/open-with/index.md | 7 +++++-- features/integration/portal-file-chooser/index.md | 3 ++- features/operations/archives/index.md | 2 +- features/operations/clipboard/conflicts.md | 10 +++++++--- features/operations/clipboard/index.md | 2 +- features/operations/delete/dissolve.md | 2 +- features/operations/trash/animation.md | 2 +- features/operations/trash/index.md | 8 +++++++- features/operations/undo.md | 7 +++++-- qa/sweeps/integration.md | 8 +++++++- qa/sweeps/operations.md | 7 ++++++- 13 files changed, 50 insertions(+), 19 deletions(-) diff --git a/features/integration/10xer-mode/file-verbs.md b/features/integration/10xer-mode/file-verbs.md index 7cec5ef..66438fa 100644 --- a/features/integration/10xer-mode/file-verbs.md +++ b/features/integration/10xer-mode/file-verbs.md @@ -3,7 +3,7 @@ title: 10xer file commands status: shipped origin: {issue: lgse/strata#1251, pr: lgse/strata#1306} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/window/keyboard/files.rs, src/ui/browser/file_commands.rs] tests: [src/ui/window/tests/keyboard_dispatch/file_commands.rs, src/ui/window/tests/keyboard_dispatch/file_verbs.rs, tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl, tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl, tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl] @@ -83,6 +83,7 @@ Single-key file commands in 10xer mode: yank, cut, paste, delete, create, rename - `O` looks up types and applications without blocking keys, then opens Open With for the targets. lgse/strata#1308 - Outside Flatpak, for a mixed selection, Recommended Applications lists only applications that handle every type. lgse/strata#1308, lgse/strata#1635 - A newer key, a selection or focus change, navigation, leaving the mode, or closing the window drops an unfinished Open With lookup. lgse/strata#1308 +- `O` with any target in a folder opened as administrator flashes "Other applications can't open files in a folder opened as administrator. Preview the file here, or copy it to another folder first." No chooser opens. lgse/strata#1837 (unverified) - `;` arms a chord whose panel lists the first ten matching custom actions in context-menu order, then `t`, `c`, `e`, and `E`. lgse/strata#1308, lgse/strata#1340 - `; 1` to `; 9` and `; 0` run that action; a vacant slot flashes `No action N` and runs nothing. lgse/strata#1308 - If the targets or the action list changed since `;`, the digit flashes `Selection changed` or `Actions changed` and runs nothing. lgse/strata#1308 diff --git a/features/integration/10xer-mode/places.md b/features/integration/10xer-mode/places.md index 71aba36..2275800 100644 --- a/features/integration/10xer-mode/places.md +++ b/features/integration/10xer-mode/places.md @@ -3,10 +3,10 @@ title: 10xer place chords and folder picker status: shipped origin: {issue: lgse/strata#1243, pr: lgse/strata#1296} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/window/keyboard/chords.rs, src/ui/folder_picker.rs, src/ui/shortcut_footer/candidates.rs] -tests: [src/ui/window/tests/keyboard_dispatch/place_chords.rs, src/ui/window/tests/keyboard_dispatch/go_prompt.rs, src/ui/window/tests/keyboard_dispatch/folder_jump.rs, src/ui/folder_picker/tests.rs] +tests: [src/ui/window/tests/keyboard_dispatch/place_chords.rs, src/ui/window/tests/keyboard_dispatch/go_prompt.rs, src/ui/window/tests/keyboard_dispatch/folder_jump.rs, src/ui/folder_picker/tests.rs, tests/qa/scenarios/sidebar_pinning/tenxer-pin-feedback-identifies-slot.jsonl] related: [browser/sidebar, browser/navigation, app/keyboard-shortcuts] --- @@ -35,6 +35,8 @@ Keyboard jumps to places and folders in 10xer mode: the `g` chord, pins, the `go ### Pins - `g +`, or `g` then keypad `+`, pins the folder under the cursor, or the current folder from a file. It flashes `Pinned “Name” as g N`. lgse/strata#1340 +- The `g +` flash appears once the bookmark is saved, so the 1st to 4th new pins read `Pinned “Name” as g 1` to `… as g 4`. lgse/strata#1909 +- When the bookmark save leaves the folder unpinned, `g +` flashes `Can’t pin “Name”` instead of `Pinned …`. lgse/strata#1909 (unverified) - A new pin outside the first nine visible pins flashes `Pinned “Name”` with no digit. lgse/strata#1340 (unverified) - `g -`, or `g` then keypad `-`, unpins it and flashes `Unpinned “Name”`; pinning twice flashes `“Name” is already pinned`. lgse/strata#1340 - `g -` on a folder that is not pinned flashes `“Name” isn’t pinned`. lgse/strata#1340 (unverified) @@ -92,6 +94,7 @@ Keyboard jumps to places and folders in 10xer mode: the `g` chord, pins, the `go | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Showed the `g +` flash after the bookmark is saved, so new pins in slots 1–4 show their digit. | | 2026-10-11 | lgse/strata#1570 | fix | Shared the folder picker's lexical `.` and `..` resolution with typed location input. | | 2026-09-28 | lgse/strata#1304 | feat | Added `z` and `Z` jumps over navigation history and the chord key panel. | | 2026-09-27 | lgse/strata#1302 | feat | Added the `go ›` prompt with folder completion and no retained credentials. | @@ -100,4 +103,3 @@ Keyboard jumps to places and folders in 10xer mode: the `g` chord, pins, the `go ## Known gaps - With the `g` trigger unbound, a new pin flashes `Pinned “Name” as` with no key after it. lgse/strata#1885 -- After `g +`, the `Pinned … as` flash can omit the pin digit. The pin reads the sidebar before the bookmark write finishes. lgse/strata#1862 diff --git a/features/integration/open-with/index.md b/features/integration/open-with/index.md index 87fd100..3b46a4b 100644 --- a/features/integration/open-with/index.md +++ b/features/integration/open-with/index.md @@ -3,8 +3,8 @@ title: Opening files and Open With status: shipped origin: {issue: lgse/strata#174, pr: lgse/strata#421} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/open_with.rs, src/ui/browser/desktop.rs] tests: [src/ui/open_with/tests.rs, src/ui/browser/desktop/tests.rs, tests/qa/scenarios/open_with/**, tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl, tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl] docs: [] @@ -26,6 +26,8 @@ Opening files in their default application, choosing another application from th - Closing the fallback chooser returns focus to the activated entry. lgse/strata#1012 - The fallback chooser opens only if the window is visible and shows no other dialog when the Recently Used history read finishes. Pressing Enter twice on such a file opens one chooser. lgse/strata#1729 - Activating an item in Trash shows "Unable to open item" with "Items in Trash cannot be opened" and launches nothing. lgse/strata#995 +- Activating a file in a folder opened as administrator shows "Unable to open item" and launches nothing. lgse/strata#1837 +- That dialog reads "Other applications can't open files in a folder opened as administrator. Preview the file here, or copy it to another folder first." lgse/strata#1837 - A file with no local path, such as a GVfs location without a FUSE path, opens only with a handler that accepts URIs (`%u`/`%U`). lgse/strata#578, lgse/strata#784 - A GVfs file with a FUSE path under `/run/user/$UID/gvfs/` also opens with a path-only (`%f`/`%F`) default. lgse/strata#784 - A failed launch shows "Unable to open file" with the error. lgse/strata#1012 @@ -105,6 +107,7 @@ Applications come from GIO metadata; Strata does not parse `.desktop` files (lgs - A `.sh` script receives its path as an argument to `/bin/sh -c`, not as shell text, to keep its shebang and avoid injection (lgse/strata#1028). - Inside Flatpak, GIO sees only the runtime's desktop entries, so files go to the OpenURI portal through `gtk::FileLauncher`. Open With sets `always_ask`, so the desktop's chooser picks the application (lgse/strata#1503, lgse/strata#1635). - Portal launches run one file at a time so desktop choosers do not stack (lgse/strata#1635). +- Files in a folder opened as administrator never go to another application. GVfs grants the `admin://` mount only to Strata, and such files have no local path (lgse/strata#1836, lgse/strata#1837). - Type lookups run asynchronously and are discarded when the menu closes or the selection changes (lgse/strata#578, lgse/strata#625). - The chooser waits for the Recently Used history read before it opens (lgse/strata#1729). - Run takes the file's type and mode from its asynchronous query. It spawns the program on the reaper thread, so a dead mount cannot freeze the window (lgse/strata#1729). diff --git a/features/integration/portal-file-chooser/index.md b/features/integration/portal-file-chooser/index.md index 23f7fe7..6898c2b 100644 --- a/features/integration/portal-file-chooser/index.md +++ b/features/integration/portal-file-chooser/index.md @@ -3,7 +3,7 @@ title: System file chooser status: shipped origin: {issue: lgse/strata#120, pr: lgse/strata#175} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/portal.rs, src/portal/dbus.rs, src/ui/chooser.rs, src/ui/browser/chooser_context.rs] tests: [src/portal/tests.rs, src/portal/dbus/tests.rs, src/ui/chooser/tests.rs, src/ui/chooser/tests/acceptance.rs, src/ui/chooser/tests/column_widths.rs, src/ui/chooser/tests/confined.rs, src/ui/chooser/tests/filtered_preview.rs, src/ui/chooser/tests/sizing.rs, tests/qa/scenarios/chooser_selection/**, scripts/portal-test.py, scripts/portal-test.html, scripts/portal_test_environment.py, scripts/test_portal_test_environment.py, scripts/chooser-dev.sh] @@ -38,6 +38,7 @@ Strata as the XDG Desktop Portal FileChooser backend: Open, Save, and Save Files - The chooser's header bar has the same height and button and icon sizes as a browser window's header. lgse/strata#1696 - Entering a remote URI in the address bar shows "The system file chooser supports local files and folders only." lgse/strata#175 +- Opening a folder the user can't read shows its permission error and never offers Open as Administrator. lgse/strata#1837 - Folder-only requests hide regular files in folder listings and in recursive filter results. lgse/strata#1155 - Changing the file-type filter refreshes the results and keeps an active filter query; only files the new filter accepts can be returned. lgse/strata#1155 - Local drives mounted before the chooser opened appear under Devices in its sidebar once the dialog has painted; network shares do not. lgse/strata#1070 diff --git a/features/operations/archives/index.md b/features/operations/archives/index.md index acfed87..c612a43 100644 --- a/features/operations/archives/index.md +++ b/features/operations/archives/index.md @@ -3,7 +3,7 @@ title: Archives status: shipped origin: {issue: null, pr: lgse/strata#81} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/browser/archive.rs, src/adapters/local_operations/archive.rs, src/adapters/local_operations/archive/compression.rs, src/adapters/local_operations/archive/decoders.rs, src/adapters/local_operations/archive/extraction.rs] tests: [src/ui/browser/archive/tests.rs, src/adapters/local_operations/archive/tests.rs, src/adapters/local_operations/archive/fixtures.rs, src/adapters/local_operations/archive/compression/**, src/adapters/local_operations/archive/decoders/tests.rs, src/adapters/local_operations/archive/decoders/fixtures/**, src/adapters/local_operations/archive/extraction/tests.rs, src/app/browser/tests/archive_activation.rs, tests/qa/scenarios/archive_activation, tests/qa/scenarios/archive_conflicts, tests/qa/scenarios/archive_errors, tests/qa/scenarios/archive_reveal, tests/qa/fixtures/content-encrypted.7z, tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl, tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl] diff --git a/features/operations/clipboard/conflicts.md b/features/operations/clipboard/conflicts.md index 9e8b62b..7f0df72 100644 --- a/features/operations/clipboard/conflicts.md +++ b/features/operations/clipboard/conflicts.md @@ -3,8 +3,8 @@ title: Paste name conflicts status: shipped origin: {issue: lgse/strata#7, pr: lgse/strata#25} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/adapters/local_operations/replacement.rs, src/adapters/local_operations/merge_aside.rs] tests: [tests/qa/scenarios/copy_conflicts, src/adapters/local_operations/tests/conflicts.rs, src/adapters/local_operations/tests/merge.rs, src/adapters/local_operations/tests/replacement.rs, tests/qa/mutations/keep-both.patch] related: [operations/drag-and-drop, operations/filesystem-compatibility, operations/filesystem-compatibility/leftovers, app/infrastructure] @@ -28,6 +28,7 @@ The "File already exists" dialog shown when a paste, Move to…, Copy to…, or - For example, `10:00` pasted onto FAT holding `10_00` explains "“10:00” will be saved as “10_00” in this location." lgse/strata#1615 - The folder prompt then adds "Items whose names change to suit this location overwrite items with the new name." lgse/strata#1615 - On a mount that already refused Trash, the conflict prompt adds "Replaced items can't be moved to Trash here and will be deleted." lgse/strata#1614 +- In a folder opened as administrator, the conflict prompt adds the same note and never offers Merge. lgse/strata#1837 ### Choices @@ -69,6 +70,8 @@ The "File already exists" dialog shown when a paste, Move to…, Copy to…, or - Cancelling such a merge after it placed an item ends as Cancelled, with the originals back and no `.strata-merge-*` folder left. lgse/strata#1729 - A merge whose aside folder only another program's open file keeps completes and reports the folder as still open. lgse/strata#1729 - A Trash move that reports success without moving the original falls back to setting it aside. lgse/strata#1615 +- Replace onto a file in a folder opened as administrator overwrites it in place, with no staged copy and no original kept. lgse/strata#1837 +- Replace onto a folder there fails with "Safe replacement is unavailable at this destination" and keeps the existing folder. lgse/strata#1837 (unverified) ## Design @@ -80,6 +83,7 @@ Each item carries its own decision: fail if it exists, Replace, Keep Both, or Me - Keep Both was copy-only, because move undo and reveal assumed a move never renames its destination (lgse/strata#599). Undo now starts from where each item landed, so Keep Both is offered for moves (lgse/strata#1615). - The prompt works out the name the paste will use, off the main thread, so fixed names conflict as the user will see them (lgse/strata#1615). - Undo of a Merge or Replace records what it placed, up to 100,000 entries, and deletes only unchanged items, so later edits survive (lgse/strata#1615). +- In an admin folder, Replace overwrites files in place and Merge is withheld, because both would stage originals in Trash, which `admin://` lacks (lgse/strata#1836, lgse/strata#1837). - Merge is copy-only, because undoing a merged move cannot tell which destination contents the source owned (lgse/strata#1092). - Incoming-wins merging with Trash staging was chosen over per-file prompts or Finder's newer-wins, to keep it predictable and undoable (lgse/strata#1091). - Same-folder paste never prompts, so pasting where an item already lives stays non-destructive. The engine also treats Replace of an item onto itself as a no-op (lgse/strata#395, lgse/strata#708). @@ -97,4 +101,4 @@ Each item carries its own decision: fail if it exists, Replace, Keep Both, or Me ## Known gaps -None known. +- Replacing a local file with one copied from an admin folder fails with "Safe replacement is unavailable for this source". Keep Both works. lgse/strata#1837 diff --git a/features/operations/clipboard/index.md b/features/operations/clipboard/index.md index 5ff1467..db8473d 100644 --- a/features/operations/clipboard/index.md +++ b/features/operations/clipboard/index.md @@ -3,7 +3,7 @@ title: Copy, cut, and paste status: shipped origin: {issue: lgse/strata#287, pr: lgse/strata#289} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/browser/clipboard.rs, src/ui/browser/transfer.rs, src/adapters/local_operations/transfer_targets.rs] tests: [src/ui/browser/clipboard/tests.rs, src/ui/browser/transfer/tests.rs, src/adapters/local_operations/tests/copy.rs, src/adapters/local_operations/tests/moves.rs, src/adapters/local_operations/tests/naming.rs, src/adapters/local_operations/tests/paste_results.rs, tests/qa/scenarios/clipboard, tests/qa/mutations/clipboard.patch, tests/qa/mutations/cut.patch, tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl, tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl] diff --git a/features/operations/delete/dissolve.md b/features/operations/delete/dissolve.md index f021997..8336036 100644 --- a/features/operations/delete/dissolve.md +++ b/features/operations/delete/dissolve.md @@ -3,7 +3,7 @@ title: Permanent-delete dissolve animation status: shipped origin: {issue: null, pr: lgse/strata#626} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/browser/dissolve_delete.rs] tests: [tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl] diff --git a/features/operations/trash/animation.md b/features/operations/trash/animation.md index 7c934d6..3c5fb13 100644 --- a/features/operations/trash/animation.md +++ b/features/operations/trash/animation.md @@ -3,7 +3,7 @@ title: Trash flight animation status: shipped origin: {issue: null, pr: lgse/strata#626} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/browser/fly_to_trash.rs] tests: [src/ui/browser/fly_to_trash/tests.rs] diff --git a/features/operations/trash/index.md b/features/operations/trash/index.md index d32dade..e404cb6 100644 --- a/features/operations/trash/index.md +++ b/features/operations/trash/index.md @@ -3,7 +3,7 @@ title: Trash status: shipped origin: {issue: lgse/strata#205, pr: lgse/strata#228} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/browser/trash.rs, src/adapters/local_operations/trash.rs] tests: [src/ui/browser/trash/tests.rs, src/adapters/local_files/tests/trash.rs, src/adapters/local_operations/tests/trash_capabilities.rs, tests/qa/mutations/trash.patch, tests/qa/scenarios/entry_management/delete-to-trash.jsonl, tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl, tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl] @@ -38,6 +38,10 @@ Moving files and folders to the freedesktop.org Trash, undoing that move, and br - The last paragraph is the local or remote deletion sentence of the permanent-delete confirmation, below. lgse/strata#1533, lgse/strata#1614 - That dialog focuses Cancel, still after the size summary loads, so Enter closes it and keeps the files. lgse/strata#1533 - When the folder's `access::can-trash` value is unknown, or the item's folder is not open, Delete attempts the trash move first. lgse/strata#1533 (unverified) +- A folder opened as administrator (`admin://`) counts as a no-Trash folder, whatever its `access::can-trash` reports. lgse/strata#1837 +- Delete, or 10xer `d`, on items in such a folder opens "Permanently delete N items?" at once, with Cancel focused. No trash move is attempted. lgse/strata#1837 +- That dialog's reason paragraph reads "Trash isn't available when browsing as administrator.", followed by the local deletion sentence. lgse/strata#1837 +- Dropping items from such a folder on the sidebar Trash row is refused, and no confirmation opens. lgse/strata#1837 (unverified) - In a read-only folder, where `access::can-trash` and `access::can-delete` are both false, Delete still attempts the trash move and opens no dialog first. lgse/strata#1533 - When a trash move fails because every failed item's location lacks Trash, the same explained dialog opens with Cancel focused, for only those items. lgse/strata#225, lgse/strata#1425, lgse/strata#1533 - When some items failed for other reasons, the error dialog's retry button opens the explained dialog for the trash-unsupported items only. lgse/strata#225, lgse/strata#1533 @@ -111,6 +115,8 @@ Trashing is reversible, so it runs immediately and Ctrl+Z replaces a confirmatio - The trash-unsupported fallback reused the Shift+Delete dialog. lgse/strata#66 forbids silently substituting permanent deletion for Trash. The dialog now explains the missing Trash and focuses Cancel, because the user asked for Trash (lgse/strata#1425). - The up-front check uses the menu's `access::can-trash` signal. By owner decision it runs on every route, including drag-to-Trash. It requires `access::can-delete` true, so read-only folders still report "Permission denied" (lgse/strata#179, lgse/strata#1533). - Every selected entry is checked, because a search-result selection can span locations (lgse/strata#1425). +- `gvfsd-admin` reports `access::can-trash` but has no trash operation, so admin folders are treated as lacking Trash up front (lgse/strata#1836, lgse/strata#1837). +- The sidebar Trash place stays enabled while browsing as administrator, because it is the user's own Trash. Refusing drops from admin folders covers the gap (lgse/strata#1836). - GLib 2.86.0 to 2.88.4 can report success without trashing anything on some FUSE mounts (GLib #4060), so a trashed local item is checked gone first (lgse/strata#1615). The check uses the mount's identity rule and holds the item across GLib's call, except on NFS, where a hold leaves a `.nfs…` file (lgse/strata#1729). - GVfs can move or delete whole trashed items but not their children, so actions on nested Trash children are hidden rather than left to fail (lgse/strata#433). - Undo finds the trashed items through home-trash `.trashinfo` metadata before `trash:///`, because GVfs can miss an item re-trashed under the same name (lgse/strata#228). diff --git a/features/operations/undo.md b/features/operations/undo.md index af2fc25..e37b599 100644 --- a/features/operations/undo.md +++ b/features/operations/undo.md @@ -3,8 +3,8 @@ title: Undo and redo status: shipped origin: {issue: lgse/strata#298, pr: lgse/strata#301} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [] tests: [src/app/browser/tests/undo.rs, src/app/browser/tests/undo_refresh.rs, src/adapters/local_operations/tests/undo.rs, tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl] docs: [] @@ -30,6 +30,8 @@ One undo history and one redo history for file operations, shared by every Strat - Redo is shared too: after Ctrl+Z in one window, Ctrl+Shift+Z in another window re-applies that operation. lgse/strata#1120 - Repeated Ctrl+Z undoes earlier operations newest first, up to 32 entries; recording a 33rd drops the oldest. lgse/strata#444 - A paste that created nothing records no entry, so Ctrl+Z still undoes the operation before it. lgse/strata#444 +- A copy, Merge, New Folder, or New File into a folder opened as administrator records no entry; Ctrl+Z then undoes the operation before it. lgse/strata#1837 +- A rename or move inside such a folder still records its entry. lgse/strata#1837 - An undo records no undo entry of its own, so a second Ctrl+Z undoes the previous operation instead of reverting the undo. lgse/strata#301, lgse/strata#444 - While an undo or redo runs, Ctrl+Z or Ctrl+Shift+Z in another window does not start it a second time. lgse/strata#228, lgse/strata#1120 (unverified) - A completed redo becomes the latest undo entry again, so Ctrl+Z after Ctrl+Shift+Z reverts it once more. lgse/strata#1120 @@ -86,6 +88,7 @@ Undo targets the latest reversible operation process-wide, matching common file - Each claimed entry keeps a bucket of the items that actually applied. Unapplied items stay on the stack for retry, applied items become the opposite entry, and a replay that applied nothing pushes nothing (lgse/strata#1120). - Undo and redo share one replay core parameterized by direction and reuse the provider's undo operations, with no new provider API. Copy redo therefore restores the trashed copies rather than copying again (lgse/strata#1117, lgse/strata#1120). - Merge and Replace undos mix deletions and restores, which no single replay can re-apply, so they offer no redo (lgse/strata#1120). +- Copies and new items in admin folders get no entry, because their undo moves items to Trash and `admin://` has none (lgse/strata#1836, lgse/strata#1837). - History is kept in memory only; persistence across restarts was ruled out of scope (lgse/strata#1059). ## History diff --git a/qa/sweeps/integration.md b/qa/sweeps/integration.md index 34eaffe..4b9fff4 100644 --- a/qa/sweeps/integration.md +++ b/qa/sweeps/integration.md @@ -1,6 +1,6 @@ --- title: Integration sweep -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 tools: [docs/portal-file-chooser.md, docs/10xer-mode.md, docs/custom-actions.md, scripts/chooser-dev.sh, scripts/portal-test.py, scripts/portal_test_environment.py, scripts/portal-test.html, docs/testing.md, scripts/qa.sh, .agents/skills/qa-scenarios/reference.md, tests/qa/peers.rs, tests/qa/peer_steps.rs, docs/keyboard-shortcuts.md, docs/keymap.md, tests/qa/keyboard.rs, tests/fixtures/harness.json] --- @@ -21,6 +21,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - A fake `.desktop` default handler under `$XDG_DATA_HOME/applications`, without `Path=`, that logs its argv and cwd. Add `%f` and `%u` variants, plus `NoDisplay=true` and `OnlyShowIn=KDE` twins; `mimeapps.list` in the throwaway `$XDG_CONFIG_HOME`. - `$XDG_CONFIG_HOME/strata/actions` with a Python action, a Bash action, and a command action: one with `confirm = true`, one per-item, one naming a missing interpreter, one broken manifest, and one that emits progress and output events. - A folder under `/dev/shm`, whose listing reports no Trash support, a read-only folder, and a regular Home folder. +- A `chmod 000` folder in Home. For administrator probes, GVfs's `admin` backend (`gvfsd-admin`), a polkit agent, and a root-owned `0700` folder holding a text file, an executable `.sh`, and a subfolder; skip those probes without them and say so. - A vfat loop mount, an ext4 folder with casefold on, an sshfs mount of localhost, and an exfat-fuse or ntfs-3g (`fuseblk`) mount. Typed-name and Trash-refusal probes use them. - An NTFS loop image attached with `udisksctl loop-setup` and mounted through `ntfs-3g` (`fuseblk`), so it lists under Send to. It holds a link to a folder off the device and a link to a folder on it. A script stops its `ntfs-3g` process with `kill -STOP` and resumes it with `kill -CONT`. - A silent session bus: a Unix socket that accepts connections and never replies, such as `socat UNIX-LISTEN:,fork EXEC:'sleep infinity'`, named by `DBUS_SESSION_BUS_ADDRESS`. @@ -73,6 +74,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - With a preview showing, press on its blank chrome and drag out into the file list. Repeat in a multiple-selection request. Read the selection and the marquee. - Rebind `parent_folder`, `home_folder`, `history_back`, and `history_forward` to Ctrl keys, then to Super keys, in each table. Press each in the file view, in Name under `save`, in the filter, and with 10xer mode on; read the location. - Hand-edit `parent_folder = ["h"]` into `settings.toml`, open a chooser, and press Ctrl+H with the file view focused. +- Under `directory` and `single`, open the `chmod 000` folder by click, Enter, and the address bar, and type `admin:///` into the address bar; read each error. ### integration/portal-file-chooser/setup @@ -144,6 +146,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - Arm `g`, then open and close Settings from the gear, Alt+Tab to another window, and press F5; read the footer after each. - With Downloads on the sshfs mount stopped by `kill -STOP`, press `g d`, then `g h` before 2 s pass. - On `fr` and `ch(de)`, press `g` then the keys that type `+` and `-`, on a pinned folder, an unpinned one, and the tenth pin. +- Press `g +` with the bookmarks file read-only, then on two folders in quick succession, then on the 4th and 5th new pins; read each flash and the bookmarks file. ### integration/10xer-mode/search @@ -177,6 +180,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - Rebind `"sort.size"` under `[keymap.tenxer]` to `5`, then to `s`, and press each with and without Shift. Repeat on `fr`, rebinding a step to a key whose Shift form types another symbol. - Press a slot key for a `confirm = true` action, cancel, then press it again with 10xer mode on. - In Columns, press a slot key and a direct Move to key on an unselected row in a second column. Repeat in Icons. +- In an `admin://` folder, press `O` on one file, on a fill mixing a file and a folder, and again after leaving the folder before the lookup ends. ### integration/10xer-mode/file-chooser @@ -199,6 +203,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - Start Strata from a folder on the sshfs mount. Activate a file and use Open With… with the fake handler and a `Path=/tmp` twin; read each cwd. - Press Enter twice fast on a file with no handler, once with a modal open, and once in a second window. Count the choosers. - Open a file, a folder, and three files at once through Open With…, then by activation; read `~/.local/share/recently-used.xbel` after each. +- In an `admin://` folder, activate the text file by Enter, double-click, and the menu's Open, then the executable `.sh`; check the handler log stays empty. ### integration/open-with/recent-apps @@ -263,4 +268,5 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - The browser window's sidebar steps and the rail's row sizing → `browser`. - The saved `sidebar_compact` state of browser windows → `app`. - Network-folder change checks, including the pause while a chooser is hidden → `browser`. +- Opening a folder as administrator, the lock icon, and Open as Administrator → `browser`. - The `GDK_DEBUG` re-exec on service activation and how long a cold activation takes → `app`. diff --git a/qa/sweeps/operations.md b/qa/sweeps/operations.md index 7ae8665..03844a8 100644 --- a/qa/sweeps/operations.md +++ b/qa/sweeps/operations.md @@ -1,6 +1,6 @@ --- title: Operations sweep -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 triggers: [src/services/operations.rs, src/services/operations/**, src/services/file_source.rs, src/services/file_source/tests.rs, src/adapters/local_operations.rs, src/adapters/local_operations/tests.rs, src/adapters/local_operations/tests/paths.rs] tools: [docs/trash-restore-testing.md, docs/archives.md, docs/filesystem-compatibility.md, scripts/fslab, scripts/generate-fixture.sh, scripts/qa-mutation.sh, tests/qa/fixtures/content-encrypted.7z, tests/qa/mutations] --- @@ -27,6 +27,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - A second local user (`useradd`) to own pre-created paths, and a Python Action that sleeps 30 s. - Two windows of the same build for cross-window paste, undo, and progress dock checks. - A desktop session running `gvfsd` for `trash:///` listings. The pinned test container sets `GIO_USE_VFS=local` and cannot browse Trash. +- For administrator probes, GVfs's `admin` backend (`gvfsd-admin`), a polkit agent, and a root-owned `0700` folder opened through `admin://`. It holds files, a subfolder, and names shared with a Home folder. The pinned container has neither; skip those probes and say so. - Verify every operation on disk with `ls -la`, `stat`, and `cmp`, never in the listing alone. Watch the log for GTK criticals during dialogs and animations. - `tests/qa/mutations/` holds deliberate defects the QA scenarios must catch; `./scripts/qa-mutation.sh drag-and-drop` or `rename-caret` is evidence when those areas changed. @@ -85,6 +86,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Merge without Trash on NFS while another program holds one replaced file open; then cancel a second such merge. - After a Merge, edit one placed file, only `touch` another, then undo. - On tmpfs and on `/dev/shm`, where Trash is unavailable, Replace a folder holding files, in List, Icons, and Columns, without pressing F5. +- In an `admin://` folder, paste a file over a file, a folder over a folder, and a file over a folder, by copy and by cut; then copy a file from it over a same-named Home file and answer Replace, then Keep Both. ### operations/clipboard/send-to @@ -166,6 +168,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Press 10xer `d` on 60 file links, then confirm while their rows still show "—". - Shift+Delete on NFS, SMB, sshfs, virtiofs or 9p, a `fuseblk` drive, and a mergerfs pool; read each title and subtitle. - Shift+Delete through a symlink alias into an NFS folder. +- In an `admin://` folder, press Delete, Shift+Delete, and 10xer `d` on a file, a folder, and a selection mixing it with Home items from a search; drag one item onto the sidebar Trash row. ### operations/trash/restore @@ -291,6 +294,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Press Ctrl+Z in a second window and in the file chooser. - Move the folder built for `operations/filesystem-compatibility` onto vfat, rename one fixed name on the stick, then undo and redo. - Move a dangling symlink and a link into a stopped sshfs mount, then undo. +- In an `admin://` folder, copy in, New Folder, Merge, rename, and move out, pressing Ctrl+Z after each. Then undo a Home rename, copy into the admin folder, and press Ctrl+Shift+Z. ## Hand-offs @@ -308,3 +312,4 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Escape cancelling a file drag → `browser`. - Item-menu Move to Trash, Permanently delete, Delete without Trash, and Restore entries and their visibility → `browser`. - The Trash pane's Empty Trash header button → `browser`. +- Opening a folder as administrator, the lock icon, the admin notice, and Open as Administrator → `browser`. From 15f6a78b4d6d05bb505066062acf49a04cec7b85 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:23:14 +0000 Subject: [PATCH 05/17] Sync settings and remote areas for lgse/strata#1918, #1934, #1909, #1837 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/remote/file-providers/kde-connect.md | 2 +- features/remote/file-providers/localsend.md | 2 +- .../remote/file-providers/network-locations.md | 13 +++++++++---- features/settings/diagnostics.md | 7 +++++-- features/settings/preferences/date-format.md | 5 +++-- features/settings/preferences/index.md | 12 ++++++++---- features/settings/preferences/language.md | 16 +++++++++++----- features/settings/themes/icons/catppuccin.md | 2 +- features/settings/themes/icons/index.md | 2 +- features/settings/themes/index.md | 5 +++-- features/settings/themes/omarchy.md | 6 ++++-- qa/sweeps/remote.md | 4 +++- qa/sweeps/settings.md | 15 ++++++++++----- 13 files changed, 60 insertions(+), 31 deletions(-) diff --git a/features/remote/file-providers/kde-connect.md b/features/remote/file-providers/kde-connect.md index 576870a..57d7a8f 100644 --- a/features/remote/file-providers/kde-connect.md +++ b/features/remote/file-providers/kde-connect.md @@ -3,7 +3,7 @@ title: KDE Connect integration status: shipped origin: {issue: lgse/strata#1703, pr: lgse/strata#1704} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [integrations/kdeconnect/provider.py, integrations/kdeconnect/messages.json, integrations/kdeconnect/catalog.toml, integrations/kdeconnect/LICENSE] tests: [integrations/kdeconnect/tests] diff --git a/features/remote/file-providers/localsend.md b/features/remote/file-providers/localsend.md index 260738d..d9d5a1e 100644 --- a/features/remote/file-providers/localsend.md +++ b/features/remote/file-providers/localsend.md @@ -3,7 +3,7 @@ title: LocalSend integration status: shipped origin: {issue: lgse/strata#1754, pr: lgse/strata#1756} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [integrations/localsend/provider.py, integrations/localsend/messages.json, integrations/localsend/catalog.toml, integrations/localsend/LICENSE] tests: [integrations/localsend/tests/test_provider.py] diff --git a/features/remote/file-providers/network-locations.md b/features/remote/file-providers/network-locations.md index 96ef527..a0c5b3e 100644 --- a/features/remote/file-providers/network-locations.md +++ b/features/remote/file-providers/network-locations.md @@ -3,8 +3,8 @@ title: Network locations (SMB, SFTP) status: shipped origin: {issue: lgse/strata#20, pr: lgse/strata#31} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/adapters/gio_location.rs, src/app/browser/remote.rs] tests: [src/adapters/gio_location/tests.rs, src/app/browser/remote/tests.rs, scripts/sftp-fixture.sh] docs: [site/src/reference/remote-sftp.md, docs/remote-sftp.md] @@ -42,7 +42,10 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native - An `smb://` location without its GVfs backend fails with a message naming common packages `gvfs-smb` or `gvfs-backends`. lgse/strata#31, lgse/strata#233 - An unresolvable host, refused connection, timeout, or unreachable host each shows its own message, such as "That host couldn’t be found. Check the address and DNS settings." lgse/strata#233 -- Backend error text shown in a dialog has URI user info, query, and fragment removed. lgse/strata#233 +- Opening, listing, or mounting a URI location that fails with an unclassified GIO error shows the translated "An unexpected system error occurred", never the backend's text. lgse/strata#1909 +- An SMB open or listing that fails with a generic error naming refused credentials, such as "logon failure" or "authentication failed" in any case, shows "Permission denied". lgse/strata#1909 +- A mount failure on a location with a native path, such as a FUSE volume, shows the backend text with URI user info, query, and fragment removed. lgse/strata#233, lgse/strata#1909 +- The unclassified backend text goes only to the DEBUG log, sanitized. lgse/strata#1909 - At the default log level, a mount logs only the backend name and outcome. The location appears only at DEBUG, without user info, query, or fragment. lgse/strata#233 ### Sidebar @@ -76,7 +79,8 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native - Strata stores no secrets. Credentials go into the mount operation, and Until logout or Forever hands saving to the backend and keyring (lgse/strata#20, lgse/strata#145). - Strata suppresses GtkMountOperation's password dialog and shows its own. The safe `gio` bindings cannot marshal `ask-question` choices, so trust questions first used GTK's native dialog (lgse/strata#353). - SFTP host-key questions moved to a Strata dialog at the owner's request. It keeps every backend choice and index; other schemes keep the native dialog (lgse/strata#233). -- Some GVfs SMB versions report rejected credentials as a generic failure, so failure messages are matched for authentication text. Host-key failures are excluded, so they never reopen sign-in (lgse/strata#31, lgse/strata#233). +- Some GVfs SMB versions report rejected credentials as a generic failure, so failure messages are matched for authentication text. Host-key failures are excluded, so they never reopen sign-in (lgse/strata#31, lgse/strata#233). Validation and listing share the mount retry's phrase list (lgse/strata#1909). +- Backend wording is diagnostic detail, not an application-owned message, and URI sanitizing is not localization. Typed reasons, transport and missing-backend guidance, and native-volume errors keep their own text (lgse/strata#1862, lgse/strata#1909). - `gvfsd-smb-browse` lists shares as shortcut entries whose destination is `standard::target-uri`. The first directory batch requests that attribute, and shortcut and mountable entries open as folders (lgse/strata#960, lgse/strata#990). - Remote loads publish their first batch at once. Later batches queue per column and flush every 50 ms or at 2,048 entries, at most 512 rows per drain; finish and failure wait for the queue (lgse/strata#274, lgse/strata#661). - A remote load publishes the fallback cursor after its last batch drains. It is marked as a background load, so a view takes focus only when nothing else in the window holds it (lgse/strata#1544). @@ -86,6 +90,7 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs. | | 2026-10-15 | lgse/strata#1634 | fix | Guarded optional GIO attributes in directory measurement, so measuring an SFTP folder for permanent delete logs no GLib-GIO critical. | | 2026-10-10 | lgse/strata#1544 | fix | Published the neighbour cursor after a remote reload removes the cursor file, without taking focus from outside the pane. | | 2026-10-09 | lgse/strata#1533 | fix | Kept GIO's percent-encoding in URI locations so names that are not valid UTF-8 are listed and `%2F` stays a name. | diff --git a/features/settings/diagnostics.md b/features/settings/diagnostics.md index 85dd8d4..5b532f6 100644 --- a/features/settings/diagnostics.md +++ b/features/settings/diagnostics.md @@ -3,8 +3,8 @@ title: Diagnostics status: shipped origin: {issue: lgse/strata#1734, pr: lgse/strata#1735} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/services/diagnostics.rs, src/ui/settings/diagnostics.rs, data/icons/scalable/actions/strata-stethoscope.svg] tests: [src/services/diagnostics/tests.rs, src/ui/settings/diagnostics/tests.rs] docs: [docs/diagnostics.md] @@ -61,6 +61,7 @@ Settings → Diagnostics, an on-demand page that checks the runtime pieces previ - With no D-Bus session bus, Desktop portal and Password storage, and Removable drives when UDisks2 is present, are warnings reading "The D-Bus session bus isn't available." lgse/strata#1735 (unverified) - When a folder monitor cannot start, Folder change monitoring is a problem; with `fs.inotify.max_user_watches` below 8192, it is a warning naming the limit. lgse/strata#1735 (unverified) - Update server passes as "Connected to GitHub." when `api.github.com/rate_limit` answers. Otherwise it is a problem saying update checks and release notes are unavailable, with the network error. lgse/strata#1735 +- In a `STRATA_UPDATER=disabled` build, Update server still contacts `api.github.com/rate_limit` and reports the same problem when it fails. lgse/strata#1735, lgse/strata#1934 (unverified) - With no terminal found, Terminal is a problem; otherwise it reads "Found: ". lgse/strata#1735 - An enabled custom action that cannot run, or an action directory that fails to load, makes Custom actions a warning. With none installed it passes. lgse/strata#1735 @@ -71,6 +72,8 @@ Settings → Diagnostics, an on-demand page that checks the runtime pieces previ - After Run in terminal opens a row's install command, the row reads "The command opened in your terminal. Run diagnostics again when it finishes." lgse/strata#1735, lgse/strata#1704 - Copy report copies "Strata diagnostics", the System fields, and every result by group as `[Status] Title: message`, then shows "Copied" for 1.5 s. lgse/strata#1735 (unverified) - The System box lists Version, Commit, Installation, Toolkit, GStreamer, Kernel, Desktop environment, Display server, Interface renderer, and Language. lgse/strata#1735 +- In a `STRATA_UPDATER=disabled` build, Installation reads "In-app updates are disabled in this build.", and Copy report carries the same line. lgse/strata#1735, lgse/strata#1934 +- That line shows only when no package manager owns the installation. A pacman-owned or AUR-marked disabled build shows its ownership summary; a default build reads "Self-managed". lgse/strata#1934 (unverified) ### Run in terminal diff --git a/features/settings/preferences/date-format.md b/features/settings/preferences/date-format.md index 2041eb8..8b06f2c 100644 --- a/features/settings/preferences/date-format.md +++ b/features/settings/preferences/date-format.md @@ -3,8 +3,8 @@ title: Modified date format status: shipped origin: {issue: null, pr: lgse/strata#180} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/util/mod.rs, data/locales/dates.json] tests: [src/util/tests.rs] related: [browser/properties] @@ -38,6 +38,7 @@ How file modification times read in lists and previews, and the Modified date fo - Relative labels refresh every 30 seconds while shown. lgse/strata#1102 (unverified) - Month and weekday names follow Strata's interface language, not the system locale. lgse/strata#1519 - Under 正體中文, Long renders `2026年9月7日 14:30` and a weekday label reads `星期一`. lgse/strata#1745 +- Under Magyar, Long renders `2026. szeptember 7. 14:30` and a weekday label reads `hétfő`. lgse/strata#1918 ## Design diff --git a/features/settings/preferences/index.md b/features/settings/preferences/index.md index 7fe98dc..9513089 100644 --- a/features/settings/preferences/index.md +++ b/features/settings/preferences/index.md @@ -3,7 +3,7 @@ title: Settings window and general preferences status: shipped origin: {issue: lgse/strata#845, pr: lgse/strata#849} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/settings/general.rs, src/ui/settings/about.rs, src/ui/settings/bindings.rs, src/ui/settings/wrap.rs, src/ui/settings/search.rs, src/ui/window/composition/settings.rs, data/brand/strata-logo-white.svg] tests: [src/ui/settings/tests.rs, src/ui/settings/tests/general.rs, src/ui/settings/search/tests.rs, src/ui/settings/tests/restart.rs, src/ui/window/composition/settings/tests.rs, src/app/browser/tests/preferences.rs, tests/qa/scenarios/hidden_files, tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl, tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl] @@ -26,7 +26,7 @@ The Settings panel: opening and closing it, page navigation, responsive layout, - A click on the Settings panel itself leaves Settings open. lgse/strata#1900 - Closing Settings returns focus to the file-list cursor row, also when the header Settings button opened it; the next Down moves the cursor. lgse/strata#1430, lgse/strata#1533 - When Ctrl+, opens Settings while a pane-filter field or filter result has focus, closing Settings returns focus to that field or result. lgse/strata#1430, lgse/strata#1533 -- The navigation lists General, Appearance, Actions, Keyboard, Integrations, Updates, Diagnostics, and About; choosing one shows that page and its name as the title. lgse/strata#849, lgse/strata#1735, lgse/strata#1748, lgse/strata#1885 +- In a default build, the navigation lists General, Appearance, Actions, Keyboard, Integrations, Updates, Diagnostics, and About; choosing one shows that page and its name as the title. lgse/strata#849, lgse/strata#1735, lgse/strata#1748, lgse/strata#1885, lgse/strata#1934 - With labels shown, each navigation entry pads 11 px left and right, so its icon centres on the Search settings field's icon. lgse/strata#1885 (unverified) - The panel is at most 1400×1024 px and 24 px inside the window, and each page scrolls vertically when it does not fit. lgse/strata#29, lgse/strata#849 - A sideways touchpad swipe or Shift+wheel over a Settings page does not move the page horizontally. lgse/strata#1719 @@ -75,7 +75,7 @@ The Settings panel: opening and closing it, page navigation, responsive layout, - Searching "license" opens About with the License row; searching "custom actions" opens Actions with the custom-actions list. lgse/strata#1554, lgse/strata#1453 - Searching "render documents" or "markdown" shows General's Render documents by default row; a query it does not match hides it. lgse/strata#1554, lgse/strata#1454 - A query that does not match Custom actions hides the installed-actions list and the broken-action problems, so "import" hides the list. lgse/strata#1554, lgse/strata#1453 -- On a package-managed install, the managed-install row shows only for queries matching Check for updates, so "channel" hides it. lgse/strata#1554, lgse/strata#1453 +- On a package-managed install of a default build, the managed-install row shows only for queries matching Check for updates, so "channel" hides it. lgse/strata#1554, lgse/strata#1453, lgse/strata#1934 - Searching "miller" finds Show sizes in Columns view. lgse/strata#1564 (unverified) - Searching "catppuccin", "brand palette", or "monochrome" finds Appearance's File icon colors row. lgse/strata#1588 (unverified) - Searching "3d", "mesh", or "printing" shows Appearance's STL model thumbnails row. lgse/strata#1789 (unverified) @@ -85,7 +85,9 @@ The Settings panel: opening and closing it, page navigation, responsive layout, - Searching "typeface" or "family" shows the Interface font row. lgse/strata#1696 (unverified) - Searching "troubleshoot" or "ffmpeg" opens Diagnostics with its Run diagnostics row. lgse/strata#1735 - Searching "add-ons" or "plugins" opens the Integrations page. lgse/strata#1748 -- On an in-place install, searching "rollback", "downgrade", or "previous version" opens Updates with the Install a specific release row. lgse/strata#1781 (unverified) +- Searching "Magyar" or "Hungarian" shows General's Language row. lgse/strata#1918 +- On an in-place install of a default build, searching "rollback", "downgrade", or "previous version" opens Updates with the Install a specific release row. lgse/strata#1781, lgse/strata#1934 (unverified) +- In a `STRATA_UPDATER=disabled` build, searching "release channel" or "check for updates" shows "No settings match your search."; no query finds an Updates row. lgse/strata#1934 - Typing "thumbnail workers" in Search settings reveals the Thumbnail workers control. lgse/strata#1081, lgse/strata#1778 - Searching Settings for "session", "reopen", or "startup" finds Restore open tabs. lgse/strata#1532 (unverified) - Searching "nfs", "smb", or "monitor" shows the Watch network folders row. lgse/strata#1729 (unverified) @@ -186,12 +188,14 @@ The Settings panel: opening and closing it, page navigation, responsive layout, - The dark band at scroll walls was GTK's default overshoot gradient; Settings clears it as context menus and popovers already did (lgse/strata#1719). - The default directory is checked on a worker after the window opens, instead of with `is_dir()` on the UI thread. Any failed check once cleared the choice; now only a folder proven missing or not a folder does (lgse/strata#1729). - Hidden entries stay in memory with an `is_hidden` flag and a filter model hides them, instead of re-enumerating every column and reinstalling monitors (lgse/strata#200, lgse/strata#201). +- Folder monitors keep hidden entries too, so revealing them needs no rescan. The watch had captured the hidden-files state at install, so dot-file changes made while hidden were lost until F5 (lgse/strata#1862, lgse/strata#1909). - Ctrl+. was added beside Ctrl+H rather than replacing it, to keep existing habits (lgse/strata#121). ## History | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Kept hidden entries in folder monitors, so dot-files other programs change while hidden files are off show at once when they are turned on. | | 2026-10-27 | lgse/strata#1900 | fix | Refused Ctrl+, under window-level dialogs such as Properties and hit-tested outside clicks against the panel, so Settings closes on one. | | 2026-10-17 | lgse/strata#1719 | fix | Made Settings pages scroll vertically only and cleared the overshoot bands, so pages no longer pan sideways or draw dark stripes at scroll walls. | | 2026-10-15 | lgse/strata#1673 | perf | Drew the About logo in theme colors, so it no longer sits on a near-black tile in light themes, and changed the tagline to "Navigate every layer." | diff --git a/features/settings/preferences/language.md b/features/settings/preferences/language.md index 6edcf3f..f8f9ae6 100644 --- a/features/settings/preferences/language.md +++ b/features/settings/preferences/language.md @@ -3,8 +3,8 @@ title: Interface language status: shipped origin: {issue: lgse/strata#1517, pr: lgse/strata#1519} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/i18n.rs, data/locales/counts.json] tests: [src/i18n/tests.rs, src/i18n/catalog_tests.rs] docs: [docs/internationalization.md] @@ -13,15 +13,16 @@ related: [] ## Summary -The Language setting and the compiled-in translations behind it. Strata's own interface is available in twelve languages, chosen automatically from the desktop locale or set manually, and applied on restart. +The Language setting and the compiled-in translations behind it. Strata's own interface is available in thirteen languages, chosen automatically from the desktop locale or set manually, and applied on restart. ## Behavior ### Language setting -- General → Language offers Auto-detect, the default, and English, Français, Deutsch, Español, 日本語, Português (Brasil), 한국어, Tiếng Việt, Italiano, Русский, 简体中文, and 正體中文. lgse/strata#1519, lgse/strata#1583, lgse/strata#1745 +- General → Language offers Auto-detect, the default, and English, Français, Magyar, Deutsch, Español, 日本語, Português (Brasil), 한국어, Tiếng Việt, Italiano, Русский, 简体中文, and 正體中文, in that order. lgse/strata#1519, lgse/strata#1583, lgse/strata#1745, lgse/strata#1918 - A manual choice is saved as `language = "fr"`, for example, and Auto-detect as `language = "auto"`. lgse/strata#1519 - Choosing 简体中文 saves `language = "zh-CN"`. lgse/strata#1583 +- Choosing Magyar saves `language = "hu"`, and after a restart the interface reads in Hungarian. lgse/strata#1918 - Choosing 正體中文 saves `language = "zh-TW"`, and after a restart the interface reads in Traditional Chinese. lgse/strata#1745 - A saved `language = "zh-tw"`, in lowercase, loads as Auto-detect. lgse/strata#1745 (unverified) - A missing or unknown saved language loads as Auto-detect. lgse/strata#1519 @@ -35,6 +36,7 @@ The Language setting and the compiled-in translations behind it. Strata's own in - A message locale of `C` or `POSIX` selects English and ignores `LANGUAGE`. lgse/strata#1519 - With `LC_ALL`, `LC_MESSAGES`, and `LANG` all empty, Auto-detect selects English and ignores `LANGUAGE`; `C.UTF-8` does not suppress `LANGUAGE`. lgse/strata#1519 (unverified) - Encoding and modifier suffixes are ignored, regional variants use their base language, and every Portuguese variant uses Brazilian Portuguese. lgse/strata#1519 +- Auto-detect selects Magyar for `LANG=hu_HU.UTF-8`, and for `LANGUAGE=xx:hu_HU:fr` with `LANG=de_DE`. lgse/strata#1918 - Auto-detect selects 正體中文 for `zh_TW.UTF-8`, `zh_HK.UTF-8`, `zh_MO`, and a `LANGUAGE` entry such as `zh-Hant`. lgse/strata#1745 - Auto-detect selects 简体中文 for `zh_CN`, `zh_SG`, `zh-Hans`, bare `zh`, and any other Chinese region, such as `zh_MY.UTF-8`. lgse/strata#1583, lgse/strata#1745 - Chinese routing reads only the second subtag, so `zh-Hans-TW` selects 简体中文 and `zh-Hant-HK` selects 正體中文. lgse/strata#1745 (unverified) @@ -49,6 +51,9 @@ The Language setting and the compiled-in translations behind it. Strata's own in - A 999,950-byte file's size reads "1 MB", not "1000 kB", in the views and the preview; 999,950,000 bytes reads "1 GB". lgse/strata#698 - Under 简体中文, numbers read `1,234,567.3`, durations read `45秒`, `2分5秒`, and `1小时2分`, and lists join with `、`. lgse/strata#1583 - Under 正體中文, counts use one form, such as `3,000 個檔案`; numbers read `1,234,567.3`, durations read `45秒`, `2分5秒`, and `1小時2分`, and lists join with `、`. lgse/strata#1745 +- Under Magyar, digits group with a no-break space and decimals use a comma: `3 000 fájl`, `1 234 567,3`, `1,5 kB`, and `128,5 MB/s`. lgse/strata#1918 +- Under Magyar, durations read `2 mp`, `2 p 5 mp`, and `1 ó 2 p`. lgse/strata#1918 +- Under Français, Español, Italiano, Português (Brasil), Magyar, Русский, and Tiếng Việt, a capitalized error reason after a colon continues in lower case. Magyar reads "…: hozzáférés megtagadva". lgse/strata#1519, lgse/strata#1918 (unverified) - Under 简体中文, 正體中文, or 日本語, a sentence ending in `。`, `!`, or `?` gets no space before the next. This applies to archive extraction errors, FAT32 copy failures, transfer flush errors, and package-managed update text. lgse/strata#1583, lgse/strata#1745 (unverified) - In those messages, a first sentence without a stop, such as a bare system error, gets the language's full stop. That stop is `。` in Chinese and Japanese and `. ` elsewhere. lgse/strata#1583 (unverified) - Programs launched from Strata keep the user's locale environment. lgse/strata#1519 @@ -60,7 +65,7 @@ The Language setting and the compiled-in translations behind it. Strata's own in - Changes apply on restart, approved by the owner instead of live relocalization (lgse/strata#1517, lgse/strata#1519). A language change never rebuilds an active browser or resets its navigation, selection, filters, or operations (docs/preferences.md). - Catalogs are compiled into the binary by `build.rs` with `rust-i18n`, so no system locale packages are needed. Japanese and Korean still need installed CJK fonts (lgse/strata#1519). Simplified Chinese needs a CJK font with Simplified glyphs, such as Noto Sans CJK SC (lgse/strata#1582, lgse/strata#1583). Traditional Chinese needs one with Traditional glyphs, such as Noto Sans CJK TC (docs/internationalization.md). - `build.rs` embeds the catalogs as static tables behind the `i18n::Catalogs` backend. The `i18n!` loader's per-message initializer overflowed 2 MiB thread stacks in unoptimized builds (lgse/strata#1519). -- Strata never rewrites the process locale. GTK-owned controls, GIO type descriptions, and system errors can therefore stay in the system language (lgse/strata#1519). +- Strata never rewrites the process locale. GTK-owned controls, GIO type descriptions, and system errors can therefore stay in the system language (lgse/strata#1519). Unclassified GIO errors at network-location boundaries show Strata's translated fallback instead, because backend wording is diagnostic detail (lgse/strata#1862, lgse/strata#1909). - `rust-i18n` moved from 3.1.5 to 4.2.4 because cargo-deny rejects `unsafe-libyaml` (RUSTSEC-2024-0449). `i18n::Catalogs` follows the 4.0 `Backend` trait; the compiled tables are unchanged (lgse/strata#1583). - Traditional Chinese locales route to their own catalog (Option A), over a manual-only choice (Option B). Option A changes auto-detection for existing `zh_TW` and `zh_HK` users (lgse/strata#1613, lgse/strata#1745). - Hong Kong and Macau use the Taiwan catalog until a zh-HK one is contributed (lgse/strata#1613). @@ -74,6 +79,7 @@ The Language setting and the compiled-in translations behind it. Strata's own in | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1918 | feat | Added Hungarian (Magyar) as the thirteenth language, with locale detection, no-break-space digit grouping, and lower-case error details after a colon. | | 2026-10-18 | lgse/strata#1745 | feat | Added Traditional Chinese (zh-TW) as the twelfth language and routed Traditional Chinese locales to it instead of Simplified Chinese. | | 2026-10-13 | lgse/strata#1625 | fix | Reworded zh-CN strings so Compact sidebar no longer reads as Hide, and the password choices use the label's verb 保存. | | 2026-10-12 | lgse/strata#1583 | feat | Added Simplified Chinese as the eleventh language, auto-detected for every Chinese locale, with a shared sentence joiner and Han/kana Settings search matching. | diff --git a/features/settings/themes/icons/catppuccin.md b/features/settings/themes/icons/catppuccin.md index d5d52a6..69fafc8 100644 --- a/features/settings/themes/icons/catppuccin.md +++ b/features/settings/themes/icons/catppuccin.md @@ -3,7 +3,7 @@ title: Catppuccin file-type icons status: shipped origin: {issue: lgse/strata#1587, pr: lgse/strata#1588} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/browser/entry.rs, src/ui/browser/entry/catppuccin.rs, data/icons/catppuccin, scripts/catppuccin_icons.py] tests: [src/ui/browser/entry/tests.rs] diff --git a/features/settings/themes/icons/index.md b/features/settings/themes/icons/index.md index f802130..d44f818 100644 --- a/features/settings/themes/icons/index.md +++ b/features/settings/themes/icons/index.md @@ -3,7 +3,7 @@ title: Themed icons status: shipped origin: {issue: lgse/strata#169, pr: lgse/strata#170} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/assets.rs, src/assets/vector.rs, data/icons/scalable/actions/strata-video.svg, data/icons/scalable/actions/strata-file-archive.svg, data/icons/scalable/actions/strata-chevron-down-symbolic.svg, data/icons/scalable/actions/strata-minus-symbolic.svg, data/icons/scalable/actions/strata-plus-symbolic.svg] tests: [src/assets/tests.rs, src/assets/vector/tests.rs] diff --git a/features/settings/themes/index.md b/features/settings/themes/index.md index ebca16e..bff7c9e 100644 --- a/features/settings/themes/index.md +++ b/features/settings/themes/index.md @@ -3,7 +3,7 @@ title: Themes and appearance status: shipped origin: {issue: lgse/strata#82, pr: lgse/strata#96} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/theme.rs, src/ui/settings/theme.rs, src/ui/settings/theme/editor.rs, data/themes/catalog.toml, data/theme-empty.css, src/util/gresource.rs] tests: [src/ui/theme/tests.rs, src/ui/theme/tests/syntax.rs, src/ui/theme/tests/density.rs, src/ui/settings/theme/tests.rs, src/ui/settings/theme/editor/tests.rs, src/ui/settings/tests/dismissal.rs, src/util/gresource/tests.rs] @@ -215,6 +215,7 @@ The Settings → Appearance page and the color system behind it. It covers 95 bu | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Watched the resolved Omarchy theme folder and rebound it after a symlink switch, so `colors.toml` edits stay live without a restart. | | 2026-10-28 | lgse/strata#1912 | fix | Dropped popover, menu, and tooltip shadows and corner radii on displays without a compositor, where their transparent pixels render black. | | 2026-10-25 | lgse/strata#1891 | fix | Dropped the background-colored second shadow from the path completion and folder peek popovers, a white halo on light themes. | | 2026-10-25 | lgse/strata#1892 | docs | Documented a matugen template, its config entry, and the Material color mapping so wallpaper-following themes need no hand mapping. | @@ -245,4 +246,4 @@ The Settings → Appearance page and the color system behind it. It covers 95 bu - Theme cards show the selected theme only with a check icon and expose no checked state to assistive technology. lgse/strata#1544 - Text is below 4.5:1 on highlight in 34 bundled themes and on the selected-row fill in 19. lgse/strata#1566 -- Only the final file in a link chain has its folder watched. Repointing an intermediate link, such as `~/.config/omarchy/current/theme`, does not reload the theme. lgse/strata#1887 +- For a custom theme file, only the final file in a link chain has its folder watched. Repointing an intermediate directory link it passes through, such as `~/.config/omarchy/current/theme`, does not reload the theme. Follow Omarchy is not affected. lgse/strata#1887, lgse/strata#1909 diff --git a/features/settings/themes/omarchy.md b/features/settings/themes/omarchy.md index 082dd0a..57933f6 100644 --- a/features/settings/themes/omarchy.md +++ b/features/settings/themes/omarchy.md @@ -3,8 +3,8 @@ title: Omarchy theme following status: shipped origin: {issue: lgse/strata#1198, pr: lgse/strata#1482} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/theme/omarchy.rs] tests: [src/ui/theme/omarchy/tests.rs] related: [] @@ -22,6 +22,7 @@ Follow Omarchy applies the active Omarchy Quattro desktop theme to Strata and tr - On first launch with no `settings.toml` and a valid Quattro state, Strata follows Omarchy. lgse/strata#542 - While following, the theme library is insensitive and the Current theme description reads "Managed by Omarchy. Turn off Follow Omarchy to pick a theme manually." lgse/strata#849 (unverified) - Switching the Omarchy theme or editing `colors.toml` re-applies the palette in every window without restart. lgse/strata#1482 +- After `current/theme` is repointed to another theme folder, editing that folder's `colors.toml` in place, or replacing it by rename, re-applies the palette without restart. Switching back keeps this. lgse/strata#1909 - A Quattro color in a GTK-only form, such as `accent = "#7a7a2af7f"`, loads as `#rrggbb`; icons stay visible and the accent styling applies. lgse/strata#1554, lgse/strata#1429 - While following, invalid Quattro state midway through a theme switch leaves the Settings preview and new document previews on the last applied palette. lgse/strata#1554, lgse/strata#1429 - Deleting `~/.local/state/omarchy` while Strata runs hides Follow Omarchy, restores the previously selected theme, and saves `mode = "theme"`. lgse/strata#958 @@ -74,6 +75,7 @@ Follow Omarchy applies the active Omarchy Quattro desktop theme to Strata and tr - Only Quattro's current-theme state is read. Legacy Omarchy layouts and alacritty color extraction are intentionally unsupported. - Surfaces come from Quattro's own keys: `background`, `dark_background`, `lighter_background`, `selection`, and `muted`. Missing ones derive from `background` and `foreground` (lgse/strata#1816). - ANSI `color8` was dropped. It is not part of Omarchy's `colors.toml` format and varies between themes; where it is bright gray, every surface turned gray (lgse/strata#1815). +- The watch follows the resolved theme folder, not the stable `current/theme` spelling, and rebinds when the link points elsewhere. Keeping the lexical path had left the watch on the old target (lgse/strata#1862, lgse/strata#1909). - Availability is sampled at startup and re-checked by the state monitor on each change. The re-check accepts `current` plus `theme.name` so Omarchy's staged switch does not flicker following off (lgse/strata#857, lgse/strata#958). - Variants exist because terminals and Btop draw near-black backgrounds while Strata's mapping drew lighter surfaces from the same palette (lgse/strata#1198). - When Quattro state is briefly invalid, as midway through an Omarchy theme switch, previews keep the last applied palette. They do not fall back to the built-in theme (lgse/strata#1429, lgse/strata#1554). diff --git a/qa/sweeps/remote.md b/qa/sweeps/remote.md index ad94abc..7334ebe 100644 --- a/qa/sweeps/remote.md +++ b/qa/sweeps/remote.md @@ -1,6 +1,6 @@ --- title: Remote sweep -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 tools: [docs/file-providers.md, docs/remote-sftp.md, scripts/sftp-fixture.sh, integrations/README.md, integrations/kdeconnect/tests/mock_service.py, tests/fixtures/harness.json] --- @@ -41,6 +41,8 @@ Left to other sweeps: sidebar rows, the Connect to server dialog, and location-f - Drop files onto a remote folder in the file pane and onto its DEVICES row. Then search with Ctrl+F inside the remote folder with Include subfolders on, and read what the UI says. - On the SFTP fixture, build a folder holding hidden files, a symlink to a folder, and nested folders. Press Delete on it, then open Properties on it alone and in a multi-selection, watching the log for GLib-GIO criticals. - Type `network:`, `network://`, and `network:///` in the location bar, then switch Strata's language while the Network column is open; read the heading, breadcrumbs, window title, and tab title. +- On the real SFTP and Samba backends, `chmod 000` a server folder, delete a folder while it lists, and kill `gvfsd-sftp` mid-mount. Read each message under English and Français, and grep the DEBUG log. +- On Samba, enter a wrong password, then disable the account, then exhaust its logon attempts; read the message and whether sign-in reopens. - Start Strata with `gvfsd` stopped and D-Bus activation masked, then with `gvfsd` running but `gvfsd-sftp` removed; compare startup time and the two failure texts. ### remote/file-providers/external diff --git a/qa/sweeps/settings.md b/qa/sweeps/settings.md index f53ca5b..8e83119 100644 --- a/qa/sweeps/settings.md +++ b/qa/sweeps/settings.md @@ -1,7 +1,7 @@ --- title: Settings sweep -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -triggers: [src/ui/preferences.rs, src/ui/browser/preferences.rs, data/locales/messages/**, data/locales/de.json, data/locales/en.json, data/locales/es.json, data/locales/fr.json, data/locales/it.json, data/locales/ja.json, data/locales/ko.json, data/locales/pt-BR.json, data/locales/ru.json, data/locales/vi.json, data/locales/zh-CN.json, data/locales/zh-TW.json] +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +triggers: [src/ui/preferences.rs, src/ui/browser/preferences.rs, data/locales/messages/**, data/locales/de.json, data/locales/en.json, data/locales/es.json, data/locales/fr.json, data/locales/hu.json, data/locales/it.json, data/locales/ja.json, data/locales/ko.json, data/locales/pt-BR.json, data/locales/ru.json, data/locales/vi.json, data/locales/zh-CN.json, data/locales/zh-TW.json] tools: [docs/preferences.md, docs/themes.md, docs/internationalization.md, docs/diagnostics.md, scripts/headless/environment.py, tests/fixtures/harness.json] --- @@ -18,7 +18,7 @@ For every control this sweep proves the binding: the file changes, the other win - Two windows of one process, Settings open in both on different pages, plus a second process on the same HOME for the cross-process cases. The portal chooser runs on that HOME through `scripts/chooser-dev.sh`. - Custom themes under `$XDG_CONFIG_HOME/strata/themes/`: `extreme.toml` with `background = "#ff0000"`, `text = "#ffffff"`, and the other 12 colors pure red or white; `bad-color.toml`, `missing-key.toml`, `tokyo-night.toml`, and a file of unparseable TOML. - A screenshot set per theme with `import` on the private display, repeated in Columns, Icons, and List. It holds a context menu, a modal dialog, a rename editor, a cut item, a focused selection, a hovered row, a code preview, and the Settings panel. -- Locale runs: `LANGUAGE=ar:ja`, `LANGUAGE=pt_PT:fr LANG=C`, `LC_ALL= LC_MESSAGES=ko_KR.UTF-8`, `LANG=de_DE.UTF-8@euro`, `LANG=ru_RU.UTF-8`, `LANG=zh_TW.UTF-8`, `LANGUAGE=zh-Hant:ja`, `LC_ALL=zh_MO.UTF-8`, `LANG=zh_MY.UTF-8`, `LANGUAGE=zh-Hans-TW`, `LANGUAGE=zh-Hant-HK`, and all four empty. Install CJK fonts with Simplified and Traditional Chinese glyphs, such as Noto Sans CJK SC and TC, for the ja, ko, and zh runs; none of the twelve languages is right-to-left. +- Locale runs: `LANGUAGE=ar:ja`, `LANGUAGE=pt_PT:fr LANG=C`, `LC_ALL= LC_MESSAGES=ko_KR.UTF-8`, `LANG=de_DE.UTF-8@euro`, `LANG=ru_RU.UTF-8`, `LANG=hu_HU.UTF-8`, `LANGUAGE=xx:hu_HU:fr LANG=de_DE`, `LANG=zh_TW.UTF-8`, `LANGUAGE=zh-Hant:ja`, `LC_ALL=zh_MO.UTF-8`, `LANG=zh_MY.UTF-8`, `LANGUAGE=zh-Hans-TW`, `LANGUAGE=zh-Hant-HK`, and all four empty. Install CJK fonts with Simplified and Traditional Chinese glyphs, such as Noto Sans CJK SC and TC, for the ja, ko, and zh runs; none of the thirteen languages is right-to-left. - A hostile desktop GTK setup under the throwaway HOME: `~/.config/gtk-4.0/gtk.css` with `* { outline: 3px solid red; font-family: serif; }`, `label { letter-spacing: 1px; color: red; }`, `button { min-width: 60px; padding: 12px; }`, `scrollbar { -gtk-icon-size: 40px; }`, and `@define-color strata_accent red;`; a `settings.ini` naming an installed desktop theme with `gtk-application-prefer-dark-theme=1`; and `~/.local/share/themes/StrataEmpty/gtk-4.0/gtk.css` holding the same rules. - A dotfiles folder at `$HOME/dotfiles` and a second on `/dev/shm`, for `settings.toml` and theme files symlinked across filesystems. A root-owned file and link made with `sudo` for the ownership cases. - A fake Quattro state at `$HOME/.local/state/omarchy/current/theme.name` and `current/theme/colors.toml` under the throwaway HOME. `current/theme` is a symlink, the way Omarchy lays it out. A script renames it away and back with 0, 1, and 5 s gaps. @@ -73,6 +73,8 @@ For every control this sweep proves the binding: the file changes, the other win - Rebind an action in `settings.toml` before launch, then search its old and new keys under English and `language = "ja"`. - Compare the navigation's icon column with the search field's icon at text size 8 and 48, labelled and icon-only. - Click the backdrop at each corner and edge strip around the Settings panel. Do it in a 640 px and a maximized window, at text size 8 and 48. Then click the panel padding, the navigation gap, and a scrollbar. +- In a `STRATA_UPDATER=disabled` build, search "update", "rollback", "release notes", and "channel" with labelled and icon-only navigation, then on a pacman-owned prefix; read the visible rows and navigation entries. +- With hidden files off, create, rename, and delete dot-files from a shell in an open local folder, a folder on the sshfs mount, and a 10k-entry folder. Then press Ctrl+. and compare each view with `ls -A`. ### settings/preferences/storage @@ -111,14 +113,15 @@ For every control this sweep proves the binding: the file changes, the other win - Under 正體中文 on an `en_US` system, with only Noto Sans CJK SC installed, then only TC, read Settings and a file list for mixed glyph forms. - Under 简体中文, read the sidebar toggle tooltip in full, compact, and hidden states, and the password remember choices in a mount dialog. - Under 简体中文, read the Tasks icon name in Customize… and the Danger color label in Add theme. -- Run Deutsch and Русский at the 1250 px panel width and in the destructive-delete dialog; look for clipped labels, broken Hangul in Korean, and missing-glyph boxes without CJK fonts. +- Under Magyar, select 1, 2, and 3,000 items and read the footer count, a 1.5 MB size, a 1 234 567 byte Properties size, and a transfer rate. Fail a copy into a read-only folder and read the case after the colon. +- Run Deutsch, Magyar, and Русский at the 1250 px panel width and in the destructive-delete dialog; look for clipped labels, broken Hangul in Korean, and missing-glyph boxes without CJK fonts. ### settings/preferences/date-format - Show the Setup date fixtures in Columns, Icons, List, and a preview under each format; compare the 61 s, 24 h 1 min, 7 day, and 31 day boundaries. - Run `TZ=America/New_York` on both DST days and `TZ=Pacific/Kiritimati`; compare the weekday and week buckets with `date -d`. - Change the format in window A while window B is idle for two minutes; watch the 30 s refresh relabel the 59 s and 59 min files. -- Cross each format with ja, zh-CN, de, and ru: month and weekday names, Long format word order, and the separator in `2026-09-17 14:30`. +- Cross each format with ja, zh-CN, de, hu, and ru: month and weekday names, Long format word order, and the separator in `2026-09-17 14:30`. - Seed `date_format = " ISO-8601 "`, `"LONG"`, and `"yesterday"`; read the menu and the file after one change. - Keep the format menu open across a minute boundary, then change the language and restart; read each option's AT-SPI description against its visible example. @@ -133,6 +136,7 @@ For every control this sweep proves the binding: the file changes, the other win - Repeat both on an Integrations install command, and with `$TERMINAL` set to a missing program. Press the button twice quickly and read the row and the process list. - On Integrations, press Run in terminal with `$TERMINAL` unset, no `xdg-terminal-exec`, and no listed terminal on `PATH`. Install one and press it again without Refresh. - Run with one custom action that cannot run and one broken action file, then with neither; compare with Settings → Actions. +- Run a `STRATA_UPDATER=disabled` build with and without network, then on a pacman-owned prefix and with the AUR install marker; read Installation, Update server, and the copied report. ### settings/themes @@ -245,6 +249,7 @@ For every control this sweep proves the binding: the file changes, the other win - While following, write a 12-digit hex `foreground`, `magenta = "#fff0000ff"`, an 8-digit `#rrggbbaa` `accent`, and an `rgba()` `selection` into `colors.toml`; open a new code preview and the Settings preview after each save. - Truncate `colors.toml` mid-switch while window B opens a Markdown preview and window A opens Appearance; then restart with the state still invalid and read both. - Turn Follow Omarchy off in window A while `colors.toml` is being rewritten, then `rm -rf` the state while the variant row has keyboard focus. +- Repoint `current/theme` with `ln -sfn`, by rename, and to a theme folder that is itself a symlink. After each, edit `colors.toml`, replace it by rename, and edit the old target; read both windows. ## Hand-offs From 7c246782c6218bad5dab9fffc1fd0c0ef3a187a6 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:25:27 +0000 Subject: [PATCH 06/17] Sync browser area for lgse/strata#1837, #1909; add administrator-access node; regenerate indexes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- README.md | 275 ++++---- features/browser/context-menu.md | 3 +- .../browser/directory-monitoring/index.md | 9 +- .../directory-monitoring/network-checks.md | 2 +- .../navigation/administrator-access.md | 71 ++ features/browser/navigation/index.md | 6 +- .../navigation/location-bar/completion.md | 2 +- .../browser/navigation/location-bar/index.md | 8 +- features/browser/properties/index.md | 2 +- features/browser/properties/media.md | 2 +- features/browser/search/filter/index.md | 2 +- features/browser/search/index.md | 2 +- .../browser/selection/keyboard-navigation.md | 5 +- features/browser/sidebar/index.md | 8 +- features/browser/sidebar/pins/drag-to-pin.md | 4 +- features/browser/tabs/index.md | 2 +- features/browser/tabs/session-restore.md | 5 +- features/browser/thumbnails/index.md | 8 +- features/browser/view-modes/columns.md | 6 +- features/browser/view-modes/density.md | 9 +- features/browser/view-modes/index.md | 5 +- .../browser/view-modes/position-restore.md | 2 +- features/browser/view-modes/sorting.md | 2 +- index/by-area.md | 636 +++++++++--------- index/by-path.md | 8 +- index/by-pr.md | 11 + index/qa.md | 175 ++--- qa/sweeps/browser.md | 30 +- site/unguided.yaml | 1 + 29 files changed, 723 insertions(+), 578 deletions(-) create mode 100644 features/browser/navigation/administrator-access.md diff --git a/README.md b/README.md index ec43fff..0a14665 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ One Markdown file per Strata feature, tying shipped behavior and design to the u Look features up [by area](index/by-area.md), [by path](index/by-path.md), [by PR](index/by-pr.md), or [by QA sweep](index/qa.md). *PRs since* counts upstream PRs touching a feature or its children since the oldest review in its subtree; `?` means the review commit is not in `data/prs.jsonl` yet. [qa/README.md](qa/README.md) says how to QA a PR or sweep an area. -Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `73b3258` · 143 features, 4 reviewed +Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `44bfeab` · 144 features, 88 reviewed ## app @@ -14,22 +14,22 @@ QA sweep: [`qa/sweeps/app.md`](qa/sweeps/app.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Accessibility](features/app/accessibility.md) | `app/accessibility` | shipped | draft | `73b3258` | 0 | -| [Modal dialogs](features/app/dialogs.md) | `app/dialogs` | shipped | draft | `73b3258` | 0 | -| [Shared location model and listing adapter](features/app/infrastructure.md) | `app/infrastructure` | shipped | draft | `73b3258` | 0 | -| [Shortcuts on any keyboard layout](features/app/keyboard-shortcuts/index.md) | `app/keyboard-shortcuts` | shipped | draft | `73b3258` | 0 | -| ↳ [Remappable shortcuts per map](features/app/keyboard-shortcuts/remapping.md) | `app/keyboard-shortcuts/remapping` | shipped | draft | `73b3258` | 0 | -| [Packaging and installation](features/app/packaging/index.md) | `app/packaging` | shipped | draft | `86df474` | 0 | +| [Accessibility](features/app/accessibility.md) | `app/accessibility` | shipped | draft | `44bfeab` | ? | +| [Modal dialogs](features/app/dialogs.md) | `app/dialogs` | shipped | draft | `44bfeab` | ? | +| [Shared location model and listing adapter](features/app/infrastructure.md) | `app/infrastructure` | shipped | draft | `44bfeab` | ? | +| [Shortcuts on any keyboard layout](features/app/keyboard-shortcuts/index.md) | `app/keyboard-shortcuts` | shipped | draft | `73b3258` | ? | +| ↳ [Remappable shortcuts per map](features/app/keyboard-shortcuts/remapping.md) | `app/keyboard-shortcuts/remapping` | shipped | draft | `44bfeab` | ? | +| [Packaging and installation](features/app/packaging/index.md) | `app/packaging` | shipped | draft | `44bfeab` | ? | | ↳ [AUR packages](features/app/packaging/aur.md) | `app/packaging/aur` | shipped | reviewed | `86df474` | 0 | -| ↳ [Release installer](features/app/packaging/installer.md) | `app/packaging/installer` | shipped | draft | `86df474` | 0 | -| [Keyboard shortcut reference and footer](features/app/shortcut-reference.md) | `app/shortcut-reference` | shipped | draft | `73b3258` | 0 | -| [Updates](features/app/updates/index.md) | `app/updates` | shipped | draft | `86df474` | 0 | -| ↳ [In-place update install](features/app/updates/install.md) | `app/updates/install` | shipped | draft | `86df474` | 0 | -| ↳ [Package-managed installs](features/app/updates/package-managed.md) | `app/updates/package-managed` | shipped | draft | `86df474` | 0 | -| ↳ [Release channels](features/app/updates/release-channels.md) | `app/updates/release-channels` | shipped | draft | `86df474` | 0 | -| ↳ [Install a specific release](features/app/updates/release-picker.md) | `app/updates/release-picker` | shipped | draft | `86df474` | 0 | -| [Window chrome and structure](features/app/window/index.md) | `app/window` | shipped | draft | `73b3258` | 0 | -| ↳ [Window key and wheel dispatch](features/app/window/key-dispatch.md) | `app/window/key-dispatch` | shipped | draft | `73b3258` | 0 | +| ↳ [Release installer](features/app/packaging/installer.md) | `app/packaging/installer` | shipped | draft | `44bfeab` | ? | +| [Keyboard shortcut reference and footer](features/app/shortcut-reference.md) | `app/shortcut-reference` | shipped | draft | `73b3258` | ? | +| [Updates](features/app/updates/index.md) | `app/updates` | shipped | draft | `44bfeab` | ? | +| ↳ [In-place update install](features/app/updates/install.md) | `app/updates/install` | shipped | draft | `44bfeab` | ? | +| ↳ [Package-managed installs](features/app/updates/package-managed.md) | `app/updates/package-managed` | shipped | reviewed | `86df474` | 0 | +| ↳ [Release channels](features/app/updates/release-channels.md) | `app/updates/release-channels` | shipped | reviewed | `86df474` | 0 | +| ↳ [Install a specific release](features/app/updates/release-picker.md) | `app/updates/release-picker` | shipped | reviewed | `86df474` | 0 | +| [Window chrome and structure](features/app/window/index.md) | `app/window` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Window key and wheel dispatch](features/app/window/key-dispatch.md) | `app/window/key-dispatch` | shipped | draft | `44bfeab` | ? | ## browser @@ -37,51 +37,52 @@ QA sweep: [`qa/sweeps/browser.md`](qa/sweeps/browser.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Context menus](features/browser/context-menu.md) | `browser/context-menu` | shipped | draft | `73b3258` | 0 | -| [Directory loading and monitoring](features/browser/directory-monitoring/index.md) | `browser/directory-monitoring` | shipped | draft | `86df474` | 0 | -| ↳ [Network folder change checks](features/browser/directory-monitoring/network-checks.md) | `browser/directory-monitoring/network-checks` | shipped | draft | `86df474` | 0 | -| [Folder and file customization](features/browser/folder-customization.md) | `browser/folder-customization` | shipped | draft | `86df474` | 0 | -| [Navigation](features/browser/navigation/index.md) | `browser/navigation` | shipped | draft | `73b3258` | 2 | -| ↳ [Folder jump](features/browser/navigation/folder-jump.md) | `browser/navigation/folder-jump` | shipped | draft | `86df474` | 0 | -| ↳ [Location bar and breadcrumbs](features/browser/navigation/location-bar/index.md) | `browser/navigation/location-bar` | shipped | draft | `73b3258` | 0 | -|  ↳ [Location path completion](features/browser/navigation/location-bar/completion.md) | `browser/navigation/location-bar/completion` | shipped | draft | `73b3258` | 0 | -| ↳ [Recent](features/browser/navigation/recent.md) | `browser/navigation/recent` | shipped | draft | `86df474` | 0 | -| ↳ [Startup location arguments](features/browser/navigation/startup-arguments.md) | `browser/navigation/startup-arguments` | shipped | draft | `86df474` | 0 | -| [Properties dialog](features/browser/properties/index.md) | `browser/properties` | shipped | draft | `86df474` | 0 | -| ↳ [Media details in Properties](features/browser/properties/media.md) | `browser/properties/media` | shipped | draft | `86df474` | 0 | -| ↳ [RAW photo details](features/browser/properties/raw-metadata.md) | `browser/properties/raw-metadata` | shipped | draft | `86df474` | 0 | -| ↳ [Folder and selection size](features/browser/properties/size.md) | `browser/properties/size` | shipped | draft | `86df474` | 0 | -| [Scrolling](features/browser/scrolling.md) | `browser/scrolling` | shipped | draft | `86df474` | 0 | -| [Search](features/browser/search/index.md) | `browser/search` | shipped | draft | `73b3258` | 1 | +| [Context menus](features/browser/context-menu.md) | `browser/context-menu` | shipped | draft | `44bfeab` | ? | +| [Directory loading and monitoring](features/browser/directory-monitoring/index.md) | `browser/directory-monitoring` | shipped | draft | `44bfeab` | ? | +| ↳ [Network folder change checks](features/browser/directory-monitoring/network-checks.md) | `browser/directory-monitoring/network-checks` | shipped | reviewed | `44bfeab` | ? | +| [Folder and file customization](features/browser/folder-customization.md) | `browser/folder-customization` | shipped | reviewed | `86df474` | 0 | +| [Navigation](features/browser/navigation/index.md) | `browser/navigation` | shipped | draft | `44bfeab` | ? | +| ↳ [Administrator access](features/browser/navigation/administrator-access.md) | `browser/navigation/administrator-access` | shipped | draft | `44bfeab` | ? | +| ↳ [Folder jump](features/browser/navigation/folder-jump.md) | `browser/navigation/folder-jump` | shipped | reviewed | `86df474` | 0 | +| ↳ [Location bar and breadcrumbs](features/browser/navigation/location-bar/index.md) | `browser/navigation/location-bar` | shipped | draft | `44bfeab` | ? | +|  ↳ [Location path completion](features/browser/navigation/location-bar/completion.md) | `browser/navigation/location-bar/completion` | shipped | draft | `44bfeab` | ? | +| ↳ [Recent](features/browser/navigation/recent.md) | `browser/navigation/recent` | shipped | reviewed | `86df474` | 0 | +| ↳ [Startup location arguments](features/browser/navigation/startup-arguments.md) | `browser/navigation/startup-arguments` | shipped | reviewed | `86df474` | 0 | +| [Properties dialog](features/browser/properties/index.md) | `browser/properties` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Media details in Properties](features/browser/properties/media.md) | `browser/properties/media` | shipped | reviewed | `44bfeab` | ? | +| ↳ [RAW photo details](features/browser/properties/raw-metadata.md) | `browser/properties/raw-metadata` | shipped | reviewed | `86df474` | 0 | +| ↳ [Folder and selection size](features/browser/properties/size.md) | `browser/properties/size` | shipped | reviewed | `86df474` | 0 | +| [Scrolling](features/browser/scrolling.md) | `browser/scrolling` | shipped | reviewed | `86df474` | 0 | +| [Search](features/browser/search/index.md) | `browser/search` | shipped | reviewed | `44bfeab` | ? | | ↳ [Global search exclusions](features/browser/search/exclusions.md) | `browser/search/exclusions` | shipped | reviewed | `86df474` | 0 | -| ↳ [Pane filter](features/browser/search/filter/index.md) | `browser/search/filter` | shipped | draft | `73b3258` | 1 | -|  ↳ [Filter Enter target](features/browser/search/filter/enter-target.md) | `browser/search/filter/enter-target` | shipped | draft | `86df474` | 0 | -| [Selection](features/browser/selection/index.md) | `browser/selection` | shipped | draft | `86df474` | 1 | -| ↳ [Click modes](features/browser/selection/click-modes.md) | `browser/selection/click-modes` | shipped | draft | `86df474` | 0 | -| ↳ [Keyboard navigation in views](features/browser/selection/keyboard-navigation.md) | `browser/selection/keyboard-navigation` | shipped | draft | `73b3258` | 0 | -| ↳ [Marquee selection](features/browser/selection/marquee.md) | `browser/selection/marquee` | shipped | draft | `86df474` | 0 | -| ↳ [Pointer intent](features/browser/selection/pointer-intent.md) | `browser/selection/pointer-intent` | shipped | draft | `86df474` | 0 | -| [Sidebar](features/browser/sidebar/index.md) | `browser/sidebar` | shipped | draft | `73b3258` | 1 | -| ↳ [Connect to server dialog](features/browser/sidebar/connect-to-server.md) | `browser/sidebar/connect-to-server` | shipped | draft | `86df474` | 0 | -| ↳ [Pinned folders](features/browser/sidebar/pins/index.md) | `browser/sidebar/pins` | shipped | draft | `73b3258` | 0 | -|  ↳ [Drag folders to pin](features/browser/sidebar/pins/drag-to-pin.md) | `browser/sidebar/pins/drag-to-pin` | shipped | draft | `86df474` | 0 | -| ↳ [Sidebar collapse and icon rail](features/browser/sidebar/rail.md) | `browser/sidebar/rail` | shipped | draft | `73b3258` | 0 | -| [Browser tabs](features/browser/tabs/index.md) | `browser/tabs` | shipped | draft | `73b3258` | 1 | -| ↳ [Tab session restore](features/browser/tabs/session-restore.md) | `browser/tabs/session-restore` | shipped | draft | `86df474` | 0 | -| [Thumbnails](features/browser/thumbnails/index.md) | `browser/thumbnails` | shipped | draft | `86df474` | 0 | -| ↳ [Thumbnail disk cache](features/browser/thumbnails/cache.md) | `browser/thumbnails/cache` | shipped | draft | `86df474` | 0 | -| ↳ [Thumbnail workers](features/browser/thumbnails/workers.md) | `browser/thumbnails/workers` | shipped | draft | `86df474` | 0 | -| [View modes](features/browser/view-modes/index.md) | `browser/view-modes` | shipped | draft | `73b3258` | 1 | -| ↳ [Columns view](features/browser/view-modes/columns.md) | `browser/view-modes/columns` | shipped | draft | `73b3258` | 0 | -| ↳ [Frame and content density](features/browser/view-modes/density.md) | `browser/view-modes/density` | shipped | draft | `86df474` | 0 | -| ↳ [Per-folder sort and thumbnail size](features/browser/view-modes/folder-views.md) | `browser/view-modes/folder-views` | shipped | draft | `86df474` | 0 | -| ↳ [Icons view](features/browser/view-modes/icons.md) | `browser/view-modes/icons` | shipped | draft | `86df474` | 0 | -| ↳ [List view](features/browser/view-modes/list/index.md) | `browser/view-modes/list` | shipped | draft | `86df474` | 0 | +| ↳ [Pane filter](features/browser/search/filter/index.md) | `browser/search/filter` | shipped | draft | `44bfeab` | ? | +|  ↳ [Filter Enter target](features/browser/search/filter/enter-target.md) | `browser/search/filter/enter-target` | shipped | reviewed | `86df474` | 0 | +| [Selection](features/browser/selection/index.md) | `browser/selection` | shipped | reviewed | `86df474` | ? | +| ↳ [Click modes](features/browser/selection/click-modes.md) | `browser/selection/click-modes` | shipped | reviewed | `86df474` | 0 | +| ↳ [Keyboard navigation in views](features/browser/selection/keyboard-navigation.md) | `browser/selection/keyboard-navigation` | shipped | draft | `44bfeab` | ? | +| ↳ [Marquee selection](features/browser/selection/marquee.md) | `browser/selection/marquee` | shipped | reviewed | `86df474` | 0 | +| ↳ [Pointer intent](features/browser/selection/pointer-intent.md) | `browser/selection/pointer-intent` | shipped | reviewed | `86df474` | 0 | +| [Sidebar](features/browser/sidebar/index.md) | `browser/sidebar` | shipped | draft | `44bfeab` | ? | +| ↳ [Connect to server dialog](features/browser/sidebar/connect-to-server.md) | `browser/sidebar/connect-to-server` | shipped | reviewed | `86df474` | 0 | +| ↳ [Pinned folders](features/browser/sidebar/pins/index.md) | `browser/sidebar/pins` | shipped | draft | `73b3258` | ? | +|  ↳ [Drag folders to pin](features/browser/sidebar/pins/drag-to-pin.md) | `browser/sidebar/pins/drag-to-pin` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Sidebar collapse and icon rail](features/browser/sidebar/rail.md) | `browser/sidebar/rail` | shipped | reviewed | `73b3258` | ? | +| [Browser tabs](features/browser/tabs/index.md) | `browser/tabs` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Tab session restore](features/browser/tabs/session-restore.md) | `browser/tabs/session-restore` | shipped | draft | `44bfeab` | ? | +| [Thumbnails](features/browser/thumbnails/index.md) | `browser/thumbnails` | shipped | draft | `44bfeab` | ? | +| ↳ [Thumbnail disk cache](features/browser/thumbnails/cache.md) | `browser/thumbnails/cache` | shipped | reviewed | `86df474` | 0 | +| ↳ [Thumbnail workers](features/browser/thumbnails/workers.md) | `browser/thumbnails/workers` | shipped | reviewed | `86df474` | 0 | +| [View modes](features/browser/view-modes/index.md) | `browser/view-modes` | shipped | draft | `44bfeab` | ? | +| ↳ [Columns view](features/browser/view-modes/columns.md) | `browser/view-modes/columns` | shipped | draft | `44bfeab` | ? | +| ↳ [Frame and content density](features/browser/view-modes/density.md) | `browser/view-modes/density` | shipped | draft | `44bfeab` | ? | +| ↳ [Per-folder sort and thumbnail size](features/browser/view-modes/folder-views.md) | `browser/view-modes/folder-views` | shipped | reviewed | `86df474` | 0 | +| ↳ [Icons view](features/browser/view-modes/icons.md) | `browser/view-modes/icons` | shipped | reviewed | `86df474` | 0 | +| ↳ [List view](features/browser/view-modes/list/index.md) | `browser/view-modes/list` | shipped | reviewed | `86df474` | 0 | |  ↳ [List column order and visibility](features/browser/view-modes/list/column-layout.md) | `browser/view-modes/list/column-layout` | shipped | draft | `86df474` | 0 | -| ↳ [Position restore on return and refresh](features/browser/view-modes/position-restore.md) | `browser/view-modes/position-restore` | shipped | draft | `73b3258` | 0 | -| ↳ [Sorting](features/browser/view-modes/sorting.md) | `browser/view-modes/sorting` | shipped | draft | `73b3258` | 0 | -| ↳ [Text size](features/browser/view-modes/text-size.md) | `browser/view-modes/text-size` | shipped | draft | `73b3258` | 0 | -| ↳ [Thumbnail size shortcuts](features/browser/view-modes/thumbnail-size.md) | `browser/view-modes/thumbnail-size` | shipped | draft | `73b3258` | 0 | +| ↳ [Position restore on return and refresh](features/browser/view-modes/position-restore.md) | `browser/view-modes/position-restore` | shipped | draft | `44bfeab` | ? | +| ↳ [Sorting](features/browser/view-modes/sorting.md) | `browser/view-modes/sorting` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Text size](features/browser/view-modes/text-size.md) | `browser/view-modes/text-size` | shipped | reviewed | `73b3258` | ? | +| ↳ [Thumbnail size shortcuts](features/browser/view-modes/thumbnail-size.md) | `browser/view-modes/thumbnail-size` | shipped | draft | `73b3258` | ? | ## devices @@ -89,12 +90,12 @@ QA sweep: [`qa/sweeps/devices.md`](qa/sweeps/devices.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Devices and volumes](features/devices/volumes/index.md) | `devices/volumes` | shipped | draft | `86df474` | 0 | -| ↳ [Camera photos](features/devices/volumes/camera.md) | `devices/volumes/camera` | shipped | draft | `86df474` | 0 | -| ↳ [Drive format, label, and properties](features/devices/volumes/drive-dialogs.md) | `devices/volumes/drive-dialogs` | shipped | draft | `86df474` | 0 | -| ↳ [Encrypted volumes](features/devices/volumes/encrypted.md) | `devices/volumes/encrypted` | shipped | draft | `86df474` | 0 | -| ↳ [Unmount and eject](features/devices/volumes/release.md) | `devices/volumes/release` | shipped | draft | `86df474` | 0 | -| ↳ [udiskie unlock handler](features/devices/volumes/udiskie-unlock.md) | `devices/volumes/udiskie-unlock` | shipped | draft | `86df474` | 0 | +| [Devices and volumes](features/devices/volumes/index.md) | `devices/volumes` | shipped | reviewed | `86df474` | ? | +| ↳ [Camera photos](features/devices/volumes/camera.md) | `devices/volumes/camera` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Drive format, label, and properties](features/devices/volumes/drive-dialogs.md) | `devices/volumes/drive-dialogs` | shipped | reviewed | `86df474` | 0 | +| ↳ [Encrypted volumes](features/devices/volumes/encrypted.md) | `devices/volumes/encrypted` | shipped | reviewed | `86df474` | 0 | +| ↳ [Unmount and eject](features/devices/volumes/release.md) | `devices/volumes/release` | shipped | reviewed | `86df474` | 0 | +| ↳ [udiskie unlock handler](features/devices/volumes/udiskie-unlock.md) | `devices/volumes/udiskie-unlock` | shipped | reviewed | `86df474` | 0 | ## integration @@ -102,22 +103,22 @@ QA sweep: [`qa/sweeps/integration.md`](qa/sweeps/integration.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [10xer mode](features/integration/10xer-mode/index.md) | `integration/10xer-mode` | shipped | draft | `73b3258` | 1 | -| ↳ [10xer mode in the file chooser](features/integration/10xer-mode/file-chooser.md) | `integration/10xer-mode/file-chooser` | shipped | draft | `73b3258` | 0 | -| ↳ [10xer file commands](features/integration/10xer-mode/file-verbs.md) | `integration/10xer-mode/file-verbs` | shipped | draft | `73b3258` | 0 | -| ↳ [10xer place chords and folder picker](features/integration/10xer-mode/places.md) | `integration/10xer-mode/places` | shipped | draft | `73b3258` | 0 | -| ↳ [10xer preview key ownership](features/integration/10xer-mode/preview-keys.md) | `integration/10xer-mode/preview-keys` | shipped | draft | `73b3258` | 0 | -| ↳ [10xer find, filter, and search](features/integration/10xer-mode/search.md) | `integration/10xer-mode/search` | shipped | draft | `86df474` | 0 | -| [Custom actions](features/integration/custom-actions.md) | `integration/custom-actions` | shipped | draft | `73b3258` | 0 | -| [FileManager1 D-Bus interface](features/integration/file-manager-interface/index.md) | `integration/file-manager-interface` | shipped | draft | `86df474` | 0 | -| ↳ [Launched-program GDK_DEBUG restore](features/integration/file-manager-interface/service-activation.md) | `integration/file-manager-interface/service-activation` | shipped | draft | `86df474` | 0 | -| [Opening files and Open With](features/integration/open-with/index.md) | `integration/open-with` | shipped | draft | `73b3258` | 1 | -| ↳ [Recently used applications](features/integration/open-with/recent-apps.md) | `integration/open-with/recent-apps` | shipped | draft | `86df474` | 0 | -| ↳ [Open in Terminal](features/integration/open-with/terminal.md) | `integration/open-with/terminal` | shipped | draft | `86df474` | 0 | -| [System file chooser](features/integration/portal-file-chooser/index.md) | `integration/portal-file-chooser` | shipped | draft | `73b3258` | 1 | -| ↳ [Chooser PNG conversion](features/integration/portal-file-chooser/image-conversion.md) | `integration/portal-file-chooser/image-conversion` | shipped | draft | `86df474` | 0 | -| ↳ [File chooser and file manager setup](features/integration/portal-file-chooser/setup.md) | `integration/portal-file-chooser/setup` | shipped | draft | `86df474` | 0 | -| ↳ [Name field filenames and URL downloads](features/integration/portal-file-chooser/url-download.md) | `integration/portal-file-chooser/url-download` | shipped | draft | `86df474` | 0 | +| [10xer mode](features/integration/10xer-mode/index.md) | `integration/10xer-mode` | shipped | reviewed | `73b3258` | ? | +| ↳ [10xer mode in the file chooser](features/integration/10xer-mode/file-chooser.md) | `integration/10xer-mode/file-chooser` | shipped | reviewed | `73b3258` | ? | +| ↳ [10xer file commands](features/integration/10xer-mode/file-verbs.md) | `integration/10xer-mode/file-verbs` | shipped | draft | `44bfeab` | ? | +| ↳ [10xer place chords and folder picker](features/integration/10xer-mode/places.md) | `integration/10xer-mode/places` | shipped | draft | `44bfeab` | ? | +| ↳ [10xer preview key ownership](features/integration/10xer-mode/preview-keys.md) | `integration/10xer-mode/preview-keys` | shipped | draft | `73b3258` | ? | +| ↳ [10xer find, filter, and search](features/integration/10xer-mode/search.md) | `integration/10xer-mode/search` | shipped | reviewed | `86df474` | 0 | +| [Custom actions](features/integration/custom-actions.md) | `integration/custom-actions` | shipped | draft | `73b3258` | ? | +| [FileManager1 D-Bus interface](features/integration/file-manager-interface/index.md) | `integration/file-manager-interface` | shipped | reviewed | `86df474` | 0 | +| ↳ [Launched-program GDK_DEBUG restore](features/integration/file-manager-interface/service-activation.md) | `integration/file-manager-interface/service-activation` | shipped | reviewed | `86df474` | 0 | +| [Opening files and Open With](features/integration/open-with/index.md) | `integration/open-with` | shipped | draft | `44bfeab` | ? | +| ↳ [Recently used applications](features/integration/open-with/recent-apps.md) | `integration/open-with/recent-apps` | shipped | reviewed | `86df474` | 0 | +| ↳ [Open in Terminal](features/integration/open-with/terminal.md) | `integration/open-with/terminal` | shipped | reviewed | `86df474` | 0 | +| [System file chooser](features/integration/portal-file-chooser/index.md) | `integration/portal-file-chooser` | shipped | draft | `44bfeab` | ? | +| ↳ [Chooser PNG conversion](features/integration/portal-file-chooser/image-conversion.md) | `integration/portal-file-chooser/image-conversion` | shipped | reviewed | `86df474` | 0 | +| ↳ [File chooser and file manager setup](features/integration/portal-file-chooser/setup.md) | `integration/portal-file-chooser/setup` | shipped | reviewed | `86df474` | 0 | +| ↳ [Name field filenames and URL downloads](features/integration/portal-file-chooser/url-download.md) | `integration/portal-file-chooser/url-download` | shipped | reviewed | `86df474` | 0 | | ↳ [Chooser window size and placement](features/integration/portal-file-chooser/window-placement.md) | `integration/portal-file-chooser/window-placement` | shipped | reviewed | `86df474` | 0 | ## operations @@ -126,32 +127,32 @@ QA sweep: [`qa/sweeps/operations.md`](qa/sweeps/operations.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Archives](features/operations/archives/index.md) | `operations/archives` | shipped | draft | `86df474` | 0 | -| ↳ [Extraction safety](features/operations/archives/extraction-safety.md) | `operations/archives/extraction-safety` | shipped | draft | `86df474` | 0 | -| ↳ [Archive preview](features/operations/archives/preview.md) | `operations/archives/preview` | shipped | draft | `86df474` | 0 | -| ↳ [RAR extraction](features/operations/archives/rar.md) | `operations/archives/rar` | shipped | draft | `86df474` | 0 | -| [Copy, cut, and paste](features/operations/clipboard/index.md) | `operations/clipboard` | shipped | draft | `73b3258` | 0 | -| ↳ [Paste name conflicts](features/operations/clipboard/conflicts.md) | `operations/clipboard/conflicts` | shipped | draft | `86df474` | 0 | +| [Archives](features/operations/archives/index.md) | `operations/archives` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Extraction safety](features/operations/archives/extraction-safety.md) | `operations/archives/extraction-safety` | shipped | reviewed | `86df474` | 0 | +| ↳ [Archive preview](features/operations/archives/preview.md) | `operations/archives/preview` | shipped | reviewed | `86df474` | 0 | +| ↳ [RAR extraction](features/operations/archives/rar.md) | `operations/archives/rar` | shipped | reviewed | `86df474` | 0 | +| [Copy, cut, and paste](features/operations/clipboard/index.md) | `operations/clipboard` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Paste name conflicts](features/operations/clipboard/conflicts.md) | `operations/clipboard/conflicts` | shipped | draft | `44bfeab` | ? | | ↳ [Send to removable devices](features/operations/clipboard/send-to.md) | `operations/clipboard/send-to` | shipped | draft | `86df474` | 0 | -| [New Folder and New File](features/operations/create.md) | `operations/create` | shipped | draft | `86df474` | 0 | -| [Permanent deletion](features/operations/delete/index.md) | `operations/delete` | shipped | draft | `86df474` | 0 | -| ↳ [Permanent-delete dissolve animation](features/operations/delete/dissolve.md) | `operations/delete/dissolve` | shipped | draft | `86df474` | 0 | -| [Drag and drop](features/operations/drag-and-drop/index.md) | `operations/drag-and-drop` | shipped | draft | `86df474` | 0 | +| [New Folder and New File](features/operations/create.md) | `operations/create` | shipped | reviewed | `86df474` | 0 | +| [Permanent deletion](features/operations/delete/index.md) | `operations/delete` | shipped | draft | `86df474` | ? | +| ↳ [Permanent-delete dissolve animation](features/operations/delete/dissolve.md) | `operations/delete/dissolve` | shipped | draft | `44bfeab` | ? | +| [Drag and drop](features/operations/drag-and-drop/index.md) | `operations/drag-and-drop` | shipped | reviewed | `86df474` | 0 | | ↳ [Columns drag autoscroll](features/operations/drag-and-drop/column-autoscroll.md) | `operations/drag-and-drop/column-autoscroll` | shipped | reviewed | `86df474` | 0 | -| ↳ [Drop copy-or-move policy](features/operations/drag-and-drop/copy-or-move.md) | `operations/drag-and-drop/copy-or-move` | shipped | draft | `86df474` | 0 | -| [Filesystem-safe placement and copying](features/operations/filesystem-compatibility/index.md) | `operations/filesystem-compatibility` | shipped | draft | `86df474` | 0 | -| ↳ [Leftovers after a crash or unplug](features/operations/filesystem-compatibility/leftovers.md) | `operations/filesystem-compatibility/leftovers` | shipped | draft | `86df474` | 0 | -| ↳ [Releasing open files before a change](features/operations/filesystem-compatibility/open-files.md) | `operations/filesystem-compatibility/open-files` | shipped | draft | `86df474` | 0 | -| [Operation progress and cancellation](features/operations/progress/index.md) | `operations/progress` | shipped | draft | `86df474` | 0 | -| ↳ [Progress dock](features/operations/progress/dock.md) | `operations/progress/dock` | shipped | draft | `86df474` | 0 | -| ↳ [Job queue and Jobs dashboard](features/operations/progress/jobs.md) | `operations/progress/jobs` | shipped | draft | `86df474` | 0 | -| [Inline rename](features/operations/rename.md) | `operations/rename` | shipped | draft | `86df474` | 0 | -| [Trash](features/operations/trash/index.md) | `operations/trash` | shipped | draft | `73b3258` | 1 | -| ↳ [Trash flight animation](features/operations/trash/animation.md) | `operations/trash/animation` | shipped | draft | `86df474` | 0 | -| ↳ [Empty Trash](features/operations/trash/empty.md) | `operations/trash/empty` | shipped | draft | `86df474` | 0 | -| ↳ [FUSE mounts that refuse Trash](features/operations/trash/fuse-refusals.md) | `operations/trash/fuse-refusals` | shipped | draft | `86df474` | 0 | -| ↳ [Restore from Trash](features/operations/trash/restore.md) | `operations/trash/restore` | shipped | draft | `86df474` | 0 | -| [Undo and redo](features/operations/undo.md) | `operations/undo` | shipped | draft | `86df474` | 0 | +| ↳ [Drop copy-or-move policy](features/operations/drag-and-drop/copy-or-move.md) | `operations/drag-and-drop/copy-or-move` | shipped | reviewed | `86df474` | 0 | +| [Filesystem-safe placement and copying](features/operations/filesystem-compatibility/index.md) | `operations/filesystem-compatibility` | shipped | reviewed | `86df474` | 0 | +| ↳ [Leftovers after a crash or unplug](features/operations/filesystem-compatibility/leftovers.md) | `operations/filesystem-compatibility/leftovers` | shipped | reviewed | `86df474` | 0 | +| ↳ [Releasing open files before a change](features/operations/filesystem-compatibility/open-files.md) | `operations/filesystem-compatibility/open-files` | shipped | reviewed | `86df474` | 0 | +| [Operation progress and cancellation](features/operations/progress/index.md) | `operations/progress` | shipped | reviewed | `86df474` | 0 | +| ↳ [Progress dock](features/operations/progress/dock.md) | `operations/progress/dock` | shipped | reviewed | `86df474` | 0 | +| ↳ [Job queue and Jobs dashboard](features/operations/progress/jobs.md) | `operations/progress/jobs` | shipped | reviewed | `86df474` | 0 | +| [Inline rename](features/operations/rename.md) | `operations/rename` | shipped | reviewed | `86df474` | 0 | +| [Trash](features/operations/trash/index.md) | `operations/trash` | shipped | draft | `44bfeab` | ? | +| ↳ [Trash flight animation](features/operations/trash/animation.md) | `operations/trash/animation` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Empty Trash](features/operations/trash/empty.md) | `operations/trash/empty` | shipped | reviewed | `86df474` | 0 | +| ↳ [FUSE mounts that refuse Trash](features/operations/trash/fuse-refusals.md) | `operations/trash/fuse-refusals` | shipped | reviewed | `86df474` | 0 | +| ↳ [Restore from Trash](features/operations/trash/restore.md) | `operations/trash/restore` | shipped | reviewed | `86df474` | 0 | +| [Undo and redo](features/operations/undo.md) | `operations/undo` | shipped | draft | `44bfeab` | ? | ## preview @@ -159,22 +160,22 @@ QA sweep: [`qa/sweeps/preview.md`](qa/sweeps/preview.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Preview panel](features/preview/preview-panel/index.md) | `preview/preview-panel` | shipped | draft | `73b3258` | 1 | -| ↳ [Rendered document previews](features/preview/preview-panel/documents/index.md) | `preview/preview-panel/documents` | shipped | draft | `73b3258` | 1 | -|  ↳ [ODT and OTT document previews](features/preview/preview-panel/documents/odt.md) | `preview/preview-panel/documents/odt` | shipped | draft | `86df474` | 0 | -|  ↳ [Document preview scrollbar](features/preview/preview-panel/documents/scrollbar.md) | `preview/preview-panel/documents/scrollbar` | shipped | draft | `86df474` | 0 | -| ↳ [Find in preview](features/preview/preview-panel/find.md) | `preview/preview-panel/find` | shipped | draft | `73b3258` | 0 | -| ↳ [G-code thumbnail previews](features/preview/preview-panel/gcode.md) | `preview/preview-panel/gcode` | shipped | draft | `86df474` | 0 | -| ↳ [Preview panel layout](features/preview/preview-panel/layout.md) | `preview/preview-panel/layout` | shipped | draft | `86df474` | 0 | -| ↳ [Media playback](features/preview/preview-panel/media/index.md) | `preview/preview-panel/media` | shipped | draft | `73b3258` | 0 | -|  ↳ [Audio previews](features/preview/preview-panel/media/audio.md) | `preview/preview-panel/media/audio` | shipped | draft | `73b3258` | 0 | -|  ↳ [Video previews](features/preview/preview-panel/media/video.md) | `preview/preview-panel/media/video` | shipped | draft | `73b3258` | 0 | -| ↳ [3D model previews](features/preview/preview-panel/model-views.md) | `preview/preview-panel/model-views` | shipped | draft | `86df474` | 0 | +| [Preview panel](features/preview/preview-panel/index.md) | `preview/preview-panel` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Rendered document previews](features/preview/preview-panel/documents/index.md) | `preview/preview-panel/documents` | shipped | draft | `73b3258` | ? | +|  ↳ [ODT and OTT document previews](features/preview/preview-panel/documents/odt.md) | `preview/preview-panel/documents/odt` | shipped | reviewed | `86df474` | 0 | +|  ↳ [Document preview scrollbar](features/preview/preview-panel/documents/scrollbar.md) | `preview/preview-panel/documents/scrollbar` | shipped | reviewed | `86df474` | 0 | +| ↳ [Find in preview](features/preview/preview-panel/find.md) | `preview/preview-panel/find` | shipped | draft | `73b3258` | ? | +| ↳ [G-code thumbnail previews](features/preview/preview-panel/gcode.md) | `preview/preview-panel/gcode` | shipped | reviewed | `86df474` | 0 | +| ↳ [Preview panel layout](features/preview/preview-panel/layout.md) | `preview/preview-panel/layout` | shipped | draft | `44bfeab` | ? | +| ↳ [Media playback](features/preview/preview-panel/media/index.md) | `preview/preview-panel/media` | shipped | draft | `73b3258` | ? | +|  ↳ [Audio previews](features/preview/preview-panel/media/audio.md) | `preview/preview-panel/media/audio` | shipped | reviewed | `73b3258` | ? | +|  ↳ [Video previews](features/preview/preview-panel/media/video.md) | `preview/preview-panel/media/video` | shipped | reviewed | `73b3258` | ? | +| ↳ [3D model previews](features/preview/preview-panel/model-views.md) | `preview/preview-panel/model-views` | shipped | reviewed | `44bfeab` | ? | | ↳ [PDF text selection](features/preview/preview-panel/pdf.md) | `preview/preview-panel/pdf` | shipped | draft | `86df474` | 0 | -| ↳ [Offline route previews](features/preview/preview-panel/routes.md) | `preview/preview-panel/routes` | shipped | draft | `73b3258` | 0 | -| ↳ [Preview sandbox](features/preview/preview-panel/sandbox.md) | `preview/preview-panel/sandbox` | shipped | draft | `86df474` | 0 | -| [Quick preview](features/preview/quick-preview/index.md) | `preview/quick-preview` | shipped | draft | `73b3258` | 1 | -| ↳ [Folder peek](features/preview/quick-preview/folder-peek.md) | `preview/quick-preview/folder-peek` | shipped | draft | `86df474` | 0 | +| ↳ [Offline route previews](features/preview/preview-panel/routes.md) | `preview/preview-panel/routes` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Preview sandbox](features/preview/preview-panel/sandbox.md) | `preview/preview-panel/sandbox` | shipped | reviewed | `86df474` | 0 | +| [Quick preview](features/preview/quick-preview/index.md) | `preview/quick-preview` | shipped | draft | `73b3258` | ? | +| ↳ [Folder peek](features/preview/quick-preview/folder-peek.md) | `preview/quick-preview/folder-peek` | shipped | reviewed | `44bfeab` | ? | ## remote @@ -182,12 +183,12 @@ QA sweep: [`qa/sweeps/remote.md`](qa/sweeps/remote.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Remote locations and file providers](features/remote/file-providers/index.md) | `remote/file-providers` | shipped | draft | `86df474` | 0 | -| ↳ [External file providers](features/remote/file-providers/external.md) | `remote/file-providers/external` | shipped | draft | `86df474` | 0 | -| ↳ [Integrations catalog](features/remote/file-providers/integrations.md) | `remote/file-providers/integrations` | shipped | draft | `86df474` | 0 | -| ↳ [KDE Connect integration](features/remote/file-providers/kde-connect.md) | `remote/file-providers/kde-connect` | shipped | draft | `86df474` | 0 | -| ↳ [LocalSend integration](features/remote/file-providers/localsend.md) | `remote/file-providers/localsend` | shipped | draft | `86df474` | 0 | -| ↳ [Network locations (SMB, SFTP)](features/remote/file-providers/network-locations.md) | `remote/file-providers/network-locations` | shipped | draft | `86df474` | 0 | +| [Remote locations and file providers](features/remote/file-providers/index.md) | `remote/file-providers` | shipped | reviewed | `86df474` | ? | +| ↳ [External file providers](features/remote/file-providers/external.md) | `remote/file-providers/external` | shipped | reviewed | `86df474` | 0 | +| ↳ [Integrations catalog](features/remote/file-providers/integrations.md) | `remote/file-providers/integrations` | shipped | reviewed | `86df474` | 0 | +| ↳ [KDE Connect integration](features/remote/file-providers/kde-connect.md) | `remote/file-providers/kde-connect` | shipped | reviewed | `44bfeab` | ? | +| ↳ [LocalSend integration](features/remote/file-providers/localsend.md) | `remote/file-providers/localsend` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Network locations (SMB, SFTP)](features/remote/file-providers/network-locations.md) | `remote/file-providers/network-locations` | shipped | draft | `44bfeab` | ? | ## settings @@ -195,14 +196,14 @@ QA sweep: [`qa/sweeps/settings.md`](qa/sweeps/settings.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Diagnostics](features/settings/diagnostics.md) | `settings/diagnostics` | shipped | draft | `86df474` | 0 | -| [Settings window and general preferences](features/settings/preferences/index.md) | `settings/preferences` | shipped | draft | `73b3258` | 1 | -| ↳ [Modified date format](features/settings/preferences/date-format.md) | `settings/preferences/date-format` | shipped | draft | `86df474` | 0 | -| ↳ [Interface language](features/settings/preferences/language.md) | `settings/preferences/language` | shipped | draft | `86df474` | 0 | -| ↳ [Preference storage and synchronization](features/settings/preferences/storage.md) | `settings/preferences/storage` | shipped | draft | `73b3258` | 0 | -| [Themes and appearance](features/settings/themes/index.md) | `settings/themes` | shipped | draft | `73b3258` | 2 | -| ↳ [Corner roundness](features/settings/themes/corner-roundness.md) | `settings/themes/corner-roundness` | shipped | draft | `73b3258` | 0 | -| ↳ [Themed icons](features/settings/themes/icons/index.md) | `settings/themes/icons` | shipped | draft | `73b3258` | 1 | -|  ↳ [Catppuccin file-type icons](features/settings/themes/icons/catppuccin.md) | `settings/themes/icons/catppuccin` | shipped | draft | `86df474` | 0 | -| ↳ [Interface font](features/settings/themes/interface-font.md) | `settings/themes/interface-font` | shipped | draft | `86df474` | 0 | -| ↳ [Omarchy theme following](features/settings/themes/omarchy.md) | `settings/themes/omarchy` | shipped | draft | `86df474` | 0 | +| [Diagnostics](features/settings/diagnostics.md) | `settings/diagnostics` | shipped | draft | `44bfeab` | ? | +| [Settings window and general preferences](features/settings/preferences/index.md) | `settings/preferences` | shipped | draft | `44bfeab` | ? | +| ↳ [Modified date format](features/settings/preferences/date-format.md) | `settings/preferences/date-format` | shipped | draft | `44bfeab` | ? | +| ↳ [Interface language](features/settings/preferences/language.md) | `settings/preferences/language` | shipped | draft | `44bfeab` | ? | +| ↳ [Preference storage and synchronization](features/settings/preferences/storage.md) | `settings/preferences/storage` | shipped | reviewed | `73b3258` | ? | +| [Themes and appearance](features/settings/themes/index.md) | `settings/themes` | shipped | draft | `44bfeab` | ? | +| ↳ [Corner roundness](features/settings/themes/corner-roundness.md) | `settings/themes/corner-roundness` | shipped | draft | `73b3258` | ? | +| ↳ [Themed icons](features/settings/themes/icons/index.md) | `settings/themes/icons` | shipped | reviewed | `44bfeab` | ? | +|  ↳ [Catppuccin file-type icons](features/settings/themes/icons/catppuccin.md) | `settings/themes/icons/catppuccin` | shipped | draft | `44bfeab` | ? | +| ↳ [Interface font](features/settings/themes/interface-font.md) | `settings/themes/interface-font` | shipped | reviewed | `86df474` | 0 | +| ↳ [Omarchy theme following](features/settings/themes/omarchy.md) | `settings/themes/omarchy` | shipped | draft | `44bfeab` | ? | diff --git a/features/browser/context-menu.md b/features/browser/context-menu.md index 7536a61..d082eec 100644 --- a/features/browser/context-menu.md +++ b/features/browser/context-menu.md @@ -3,7 +3,7 @@ title: Context menus status: shipped origin: {issue: lgse/strata#303, pr: lgse/strata#306} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/browser/context_menu.rs, src/ui/browser/context_menu/actions.rs, src/ui/browser/context_menu/commands.rs, src/ui/browser/context_menu/keyboard.rs, src/ui/browser/context_menu/presentation.rs] tests: [src/ui/browser/context_menu/tests/menus.rs, src/ui/window/tests/keyboard_dispatch/context_menus.rs, src/ui/browser/context_menu/tests.rs, src/ui/browser/context_menu/tests/open_with.rs, tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl, tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl, tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl] @@ -73,6 +73,7 @@ The item and background context menus in Columns, Icons, and List. This node cov - Open in… → New Tab or New Window on a multi-selection opens one tab or window per selected folder and skips files. lgse/strata#1543 (unverified) - The background menu groups New Folder, New File, Paste; Open With…, Open in Terminal; Select All, Refresh, the hidden-files toggle; then Customize…, Properties. lgse/strata#1210 - The background menu offers Open With… and Open in Terminal for the current folder, except in Trash and Recent. lgse/strata#821, lgse/strata#161, lgse/strata#1083 +- In a folder opened through `admin://`, the item, multi-selection, and background menus omit Open With…. lgse/strata#1837 (unverified) - In the background menu, Open in Terminal is insensitive when the folder has no local path. lgse/strata#161 (unverified) - The item menu shows Open in Terminal for a single folder with a local path, outside Trash. lgse/strata#161 - In Recent, the background menu also hides Properties. lgse/strata#1083 (unverified) diff --git a/features/browser/directory-monitoring/index.md b/features/browser/directory-monitoring/index.md index 4983380..e4dd922 100644 --- a/features/browser/directory-monitoring/index.md +++ b/features/browser/directory-monitoring/index.md @@ -3,8 +3,8 @@ title: Directory loading and monitoring status: shipped origin: {issue: lgse/strata#137, pr: lgse/strata#154} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/app/browser/loading.rs, src/app/browser/loading/metadata.rs, src/app/browser/directory_changes.rs, src/app/browser/publication.rs, src/app/browser/deferred.rs, src/app/browser/operation_updates.rs, src/app/browser/operation_events.rs, src/adapters/local_files/monitors.rs] tests: [src/app/browser/loading/tests.rs, src/app/browser/loading/metadata/tests.rs, src/app/browser/directory_changes/tests.rs, src/app/browser/publication/tests.rs, src/app/browser/deferred/tests.rs, src/app/browser/operation_updates/tests.rs, src/app/browser/tests/monitor.rs, src/app/browser/tests/staging.rs, src/app/browser/tests/relocation.rs, src/app/browser/tests/operations.rs, src/app/browser/tests/metadata.rs, tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl, tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl] docs: [docs/architecture.md, docs/performance-baseline.md, docs/filesystem-compatibility.md] @@ -39,7 +39,8 @@ How an open folder's listing is loaded, published to the view, and kept in step - A file modified in place whose sort position is unchanged keeps its row; the row is updated without the appear animation. lgse/strata#803 - Another program keeps changing files in the open folder, such as `/tmp`. A wheel-scrolled listing stays where it was, and keyboard focus does not move. lgse/strata#803 - A temporary file created and then renamed to its target within one 100 ms batch appears once, under the target name. lgse/strata#803 -- With hidden files off, changes to dot-files are ignored, and a dot-file renamed to a visible name appears as a new entry. lgse/strata#1266 (unverified) +- With hidden files off, dot-files that another program creates, renames, or removes stay hidden but are tracked. Showing hidden files then lists their current names without F5. lgse/strata#1909 +- With hidden files off, a dot-file renamed to a visible name appears in the listing. lgse/strata#1266 (unverified) - More than 4,096 pending changes in one batch, an unmount, or an unrecognized monitor event reload the whole folder instead. lgse/strata#75, lgse/strata#1266 (unverified) - Files created, renamed, or removed externally while a large folder is still loading are not overridden by late enumeration rows. lgse/strata#1037 - Renaming an open folder externally in Columns re-points its column and every open descendant to the new path. lgse/strata#1036, lgse/strata#1037 @@ -122,6 +123,7 @@ Loading and file monitoring predate the PR history; the original monitor already - A monitored move to a hidden name, in a listing that hides hidden files, is handled like a removal. A monitor started with hidden files shown keeps reporting moves after Ctrl+H, so leaving it to the monitor's removal was dropped (lgse/strata#1852, lgse/strata#1874). - In Columns, deeper columns close in place, not through a reload of the parent, which put the cursor on the first row and lost the neighbor (lgse/strata#1874). - In-app renames and monitor-reported moves share one code path, whatever hidden-files setting the monitor started with (lgse/strata#1874). +- Browser folder monitors always include hidden entries, which stay in the model. Showing hidden files is then an in-memory filter change, with no rescan or monitor restart (lgse/strata#1909). ## History @@ -147,5 +149,4 @@ Loading and file monitoring predate the PR history; the original monitor already - A metadata-only change replaces the whole row, rebinding its icon or thumbnail, instead of updating the changed labels. lgse/strata#902 - While one monitor creation is stuck on a mount that stopped answering, monitors on every folder deliver nothing until that server answers. lgse/strata#1729 - Before Linux 6.13, a change can share a clock tick with the load's stamp and land before the monitor goes live. It then stays hidden until the next change. lgse/strata#1729 -- With hidden files off, a dot-file another program creates does not appear after Ctrl+H shows hidden files, until F5. Ctrl+H does not restart the folder's monitor. lgse/strata#1862, lgse/strata#1874 - When another program removes an open folder, the cursor lands on the first row instead of a neighbor. lgse/strata#1874 diff --git a/features/browser/directory-monitoring/network-checks.md b/features/browser/directory-monitoring/network-checks.md index b726c69..b755ae8 100644 --- a/features/browser/directory-monitoring/network-checks.md +++ b/features/browser/directory-monitoring/network-checks.md @@ -3,7 +3,7 @@ title: Network folder change checks status: shipped origin: {issue: lgse/strata#1590, pr: lgse/strata#1729} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/app/browser/freshness.rs, src/ui/presence.rs] tests: [src/app/browser/freshness/tests.rs, src/ui/presence/tests.rs] diff --git a/features/browser/navigation/administrator-access.md b/features/browser/navigation/administrator-access.md new file mode 100644 index 0000000..b4da9b3 --- /dev/null +++ b/features/browser/navigation/administrator-access.md @@ -0,0 +1,71 @@ +--- +title: Administrator access +status: shipped +origin: {issue: lgse/strata#1836, pr: lgse/strata#1837} +branch: null +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft +code: [] +tests: [src/app/browser/tests/administrator.rs] +docs: [docs/administrator-access.md] +related: [browser/navigation/location-bar, browser/view-modes, browser/view-modes/columns, browser/thumbnails, browser/context-menu, browser/selection/keyboard-navigation, browser/tabs/session-restore, operations/trash, operations/undo, operations/clipboard/conflicts, integration/open-with, app/accessibility] +--- + +## Summary + +Opening local folders the user can't read or enter through GVfs's `admin://` backend, after a polkit prompt, as GNOME Files does. It covers marking such folders, redirecting opens to `admin://`, offering Open as Administrator on permission errors, and silent refusals. Strata itself never runs as root. + +## Behavior + +### Marking + +- A local folder the user can't read or enter, such as a root-owned `0700` folder, shows a lock icon once its metadata loads. lgse/strata#1837 +- A folder link to such a folder shows the lock icon too. lgse/strata#1837 (unverified) +- The check uses `access(2)`, so a folder readable only through an ACL is not marked. lgse/strata#1837 +- The lock icon shows even where GIO has no `admin` scheme. lgse/strata#1837 (unverified) + +### Opening + +- Where GIO supports `admin`, opening a locked folder switches the tab to its `admin://` form, such as `admin:///run/media/user/drive/backups`. lgse/strata#1837 +- Opening means the view's opening click (one click in Columns by default), Enter, →, or the context menu's Open. lgse/strata#1837 +- The polkit prompt appears while the current folder stays open; the tab switches only after the first read succeeds. lgse/strata#1837 +- A path with spaces, `%`, or non-UTF-8 bytes is percent-escaped in its `admin://` form. lgse/strata#1836, lgse/strata#1837 +- Moving the selection onto a locked folder with the arrow keys raises no polkit prompt. lgse/strata#1837 +- A typed path, sidebar place, bookmark, pin, or command-line argument to an unreadable folder shows the permission error dialog with an Open as Administrator button. lgse/strata#1837 +- Open as Administrator in that dialog opens the folder's `admin://` form. lgse/strata#1837 +- Where GIO has no `admin` scheme, no dialog, column, or pane offers Open as Administrator. lgse/strata#1837 +- The portal file chooser never offers Open as Administrator. lgse/strata#1837 +- A folder peek of an unreadable folder offers no Open as Administrator. lgse/strata#1837 (unverified) +- Typing `admin:///path` in the location bar opens that folder as administrator. lgse/strata#1837 + +### Refusals + +- Cancelling or refusing the polkit prompt leaves the previous folder open and shows nothing. lgse/strata#1837 +- A mount of an `admin://` location that fails with permission denied is treated like a cancel. Strata never shows its own username and password form for `admin://`. lgse/strata#1837 + +### Browsing as administrator + +- In an `admin://` folder, the breadcrumbs start at an "Administrator" crumb with a lock icon instead of `admin:`. lgse/strata#1837 + +## Design + +[docs/administrator-access.md](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/administrator-access.md) describes entering, what GVfs does, browsing as root, and what is disabled on purpose. + +- Only an explicit open prompts. Columns previews the selected folder, so prompting on selection would let arrow keys raise password prompts. GNOME Files behaves the same (lgse/strata#1836). +- Validation runs the first `admin://` operation, so polkit prompts before the current folder is replaced (lgse/strata#1837). +- GVfs reports a dismissed or refused prompt as `PERMISSION_DENIED`, not as cancelled. The prompt comes from the session's polkit agent, not from `GMountOperation`, so Strata needs no password form (lgse/strata#1836). +- Polkit authorizes each operation for about five minutes, so a first visit may prompt twice: once for the `gvfsd-admin` helper and once for the first read (lgse/strata#1836). +- Access is read-write from the start, because writes already use the GIO paths Strata uses for SFTP and SMB (lgse/strata#1836). +- Lock marking uses `access(2)` rather than mode bits, so ACLs count (lgse/strata#1837). +- Running Strata as root, or through `pkexec strata`, was rejected as unsafe for a GUI and unlike other file managers (lgse/strata#1836). + +## History + +| Date | PR | Type | Change | +| --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1837 | feat | Opened unreadable local folders through `admin://` after a polkit prompt, so root-owned folders on external drives can be browsed. | + +## Known gaps + +- Strata can't unmount its `admin://` mount: it is private to the process and invisible to GIO's volume monitor. GVfs drops it when Strata exits. lgse/strata#1837 +- Metadata fills on visible `admin://` rows still go through GIO, so after the polkit grant expires they can raise a prompt the user did not ask for. lgse/strata#1837 diff --git a/features/browser/navigation/index.md b/features/browser/navigation/index.md index 597286d..b4e52df 100644 --- a/features/browser/navigation/index.md +++ b/features/browser/navigation/index.md @@ -3,7 +3,7 @@ title: Navigation status: shipped origin: {issue: lgse/strata#70, pr: lgse/strata#118} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/window/composition/input.rs] tests: [src/app/browser/tests/navigation.rs, tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl] @@ -13,7 +13,7 @@ related: [browser/tabs, browser/view-modes, browser/view-modes/position-restore, ## Summary -Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), `browser/navigation/startup-arguments` (locations passed on the command line), and `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. +Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), `browser/navigation/startup-arguments` (locations passed on the command line), `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders), and `browser/navigation/administrator-access` (opening unreadable local folders through `admin://`). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. ## Behavior @@ -31,7 +31,7 @@ Moving between locations in a browser pane: Back, Forward, and Parent history fr ### Unreadable folders -- Selecting or opening a folder Strata may not read, such as after `chmod 000`, shows an "Unable to open directory" dialog saying you do not have permission. lgse/strata#1807 (unverified) +- Where GIO has no `admin` scheme, clicking or opening a folder Strata may not read, such as after `chmod 000`, shows an "Unable to open directory" dialog saying you do not have permission. lgse/strata#1807, lgse/strata#1837 ### Mouse buttons diff --git a/features/browser/navigation/location-bar/completion.md b/features/browser/navigation/location-bar/completion.md index f5cea20..18ead30 100644 --- a/features/browser/navigation/location-bar/completion.md +++ b/features/browser/navigation/location-bar/completion.md @@ -3,7 +3,7 @@ title: Location path completion status: shipped origin: {issue: null, pr: lgse/strata#388} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/browser/location/completion.rs] tests: [src/ui/browser/location/completion/tests.rs] diff --git a/features/browser/navigation/location-bar/index.md b/features/browser/navigation/location-bar/index.md index 224d68f..23560a8 100644 --- a/features/browser/navigation/location-bar/index.md +++ b/features/browser/navigation/location-bar/index.md @@ -3,7 +3,7 @@ title: Location bar and breadcrumbs status: shipped origin: {issue: lgse/strata#149, pr: lgse/strata#242} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [] tests: [src/app/browser/tests/location_input.rs, tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl, tests/qa/scenarios/locations/named-location-controls.jsonl, tests/qa/scenarios/locations/typed-path-navigates.jsonl, tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl, tests/qa/mutations/location-entry.patch] @@ -36,7 +36,7 @@ The header control that shows the active location as breadcrumbs and switches to - `~other-user/Documents` is rejected with "Only ~ and ~/ paths are supported for the current user's home directory." lgse/strata#242 - A relative path such as `Documents` is rejected with "Enter an absolute path." lgse/strata#242 (unverified) - UNC paths (`\\host\share`, `//host/share`) and SCP addresses (`user@host:path`) are rejected with a message suggesting `smb://`, `sftp://`, `ftp://`, or `dav://` URIs. lgse/strata#20 -- A URI scheme other than smb, sftp, ftp, ftps, dav, davs, trash, network, or recent is rejected with "The :// scheme isn't supported." and a list that omits trash and network. lgse/strata#20 (unverified) +- A URI scheme other than smb, sftp, ftp, ftps, dav, davs, admin, trash, network, or recent is rejected with "The :// scheme isn't supported." and a list that omits trash and network. lgse/strata#20, lgse/strata#1837 (unverified) - Submitting `smb://alice:secret@host/share` or `smb://alice;password=secret@host/share` shows `smb://alice@host/share` in the entry while mounting and uses the password for that one attempt. lgse/strata#145 - A typed password is never saved; failed credentials open the normal sign-in dialog. lgse/strata#145 - The sign-in dialog's fields are named after their visible labels: "Username", "Domain", and "Password" or "Passphrase". lgse/strata#1896 (unverified) @@ -68,6 +68,8 @@ The header control that shows the active location as breadcrumbs and switches to - When crumbs overflow, the wheel scrolls them horizontally and edge fades mark the hidden part. lgse/strata#820 - The overflow scrollbar sits in its own row below the crumbs, hidden at rest and shown on hover or scroll, never covering labels. lgse/strata#820 - Crumb labels longer than 32 characters are shortened in the middle. lgse/strata#1143 +- Deep paths keep each crumb label at its text width, up to 32 characters, and the crumb row scrolls instead of shrinking labels to "l…". lgse/strata#1909 +- After navigation, or after submitting or cancelling the entry, the crumbs scroll to show the current crumb. lgse/strata#1909 - The current crumb's Copy path button copies the path and shows a check and "Path copied" for 2 seconds. lgse/strata#316 (unverified) - The Copy path button is named "Copy path"; after a click it is named "Path copied", then "Copy path" again 2 s later. lgse/strata#1895 @@ -91,6 +93,7 @@ The breadcrumbs and the entry are two pages of one stack; the entry is transient | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Gave crumb labels a minimum width so deep paths scroll, and revealed the current crumb after layout and after editing. | | 2026-10-28 | lgse/strata#1912 | fix | Opened Quick Preview on a file revealed from a typed path, and dropped that request when navigation moves on first. | | 2026-10-11 | lgse/strata#1570 | fix | Resolved `.` and `..` as text in typed paths, so crumbs and Parent follow the resolved path. | | 2026-10-10 | lgse/strata#1544 | fix | Made crumbs and the hierarchy menu select the folder you came from when they open an ancestor. | @@ -107,4 +110,3 @@ The breadcrumbs and the entry are two pages of one stack; the entry is transient ## Known gaps - A typed path to a file with no previewer still opens the preview drawer, as Space on it does. lgse/strata#1912 -- Deep breadcrumbs shrink to labels such as "l…" instead of overflowing to scroll. lgse/strata#1862 diff --git a/features/browser/properties/index.md b/features/browser/properties/index.md index d8f99df..c4a9124 100644 --- a/features/browser/properties/index.md +++ b/features/browser/properties/index.md @@ -3,7 +3,7 @@ title: Properties dialog status: shipped origin: {issue: lgse/strata#71, pr: lgse/strata#243} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/browser/properties.rs] tests: [tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl, tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl] diff --git a/features/browser/properties/media.md b/features/browser/properties/media.md index 922cfee..906ff29 100644 --- a/features/browser/properties/media.md +++ b/features/browser/properties/media.md @@ -3,7 +3,7 @@ title: Media details in Properties status: shipped origin: {issue: lgse/strata#979, pr: lgse/strata#984} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/browser/properties/media.rs, src/sandbox/metadata.rs] tests: [src/ui/browser/properties/media/tests.rs, src/sandbox/metadata/tests.rs, tests/qa/scenarios/properties_media/media-details-properties-only.jsonl] diff --git a/features/browser/search/filter/index.md b/features/browser/search/filter/index.md index 9efd290..4276578 100644 --- a/features/browser/search/filter/index.md +++ b/features/browser/search/filter/index.md @@ -3,7 +3,7 @@ title: Pane filter status: shipped origin: {issue: lgse/strata#277, pr: lgse/strata#275} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/inline_search.rs, src/ui/inline_search/**, src/ui/browser/collection.rs, src/ui/search_session.rs, src/ui/browser/columns/search.rs, src/services/search/directory.rs, src/services/search/pattern.rs] tests: [src/ui/search_session/tests.rs, src/ui/browser/collection/tests.rs, src/services/search/directory/tests.rs, src/services/search/pattern/tests.rs, src/services/search/tests/scope.rs, src/ui/window/tests/keyboard_dispatch/filter_focus.rs, tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl, tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl, tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl, tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl, tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl, tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl, tests/qa/scenarios/filter_results/space-completes-composition.jsonl, tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl, tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl, tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl, tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl, tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl, tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl, tests/qa/mutations/filter-results.patch] diff --git a/features/browser/search/index.md b/features/browser/search/index.md index 0d4523e..34f5afc 100644 --- a/features/browser/search/index.md +++ b/features/browser/search/index.md @@ -3,7 +3,7 @@ title: Search status: shipped origin: {issue: null, pr: lgse/strata#222} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/services/search.rs, src/ui/search.rs, src/ui/window/composition/search.rs] tests: [src/services/search/tests.rs, src/services/search/tests/multi_root.rs, src/services/search/tests/performance.rs, src/services/search/tests/refresh.rs, src/ui/search/tests.rs, tests/qa/scenarios/search_filter_sort/global-search-*] diff --git a/features/browser/selection/keyboard-navigation.md b/features/browser/selection/keyboard-navigation.md index 93f8742..4d7c576 100644 --- a/features/browser/selection/keyboard-navigation.md +++ b/features/browser/selection/keyboard-navigation.md @@ -3,7 +3,7 @@ title: Keyboard navigation in views status: shipped origin: {issue: lgse/strata#291, pr: lgse/strata#358} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/focus_navigation.rs, src/ui/top_bar_navigation.rs, src/ui/window/keyboard/focus.rs, src/ui/browser/tab_stops.rs] tests: [src/ui/focus_navigation/tests.rs, src/ui/top_bar_navigation/tests.rs, src/ui/window/tests/keyboard_policy.rs, src/ui/window/tests/keyboard_dispatch/pane_focus.rs, tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl, tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl, tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl, tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl, tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl, tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl, tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl, tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl, tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl, tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl, tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl, tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl, tests/qa/mutations/keyboard-navigation.patch] @@ -52,7 +52,8 @@ Moving keyboard focus with plain arrows and `h`/`j`/`k`/`l` through the file lis - Shift+Tab from a row goes to the control before the rows. In List that is the sort headings; then come an open filter, the header actions, and the sidebar. lgse/strata#1431, lgse/strata#1533 - In Columns, Tab into the strip lands on the active column's cursor without changing the active column. Tab from any column leaves the strip. lgse/strata#1431, lgse/strata#1533 - In Columns, Shift+Tab from a column goes to its open filter, then its header actions, then the control before the strip. lgse/strata#1431, lgse/strata#1533 -- In Columns, an unreadable folder's Retry button is the next Tab stop inside its column. lgse/strata#1466, lgse/strata#1533 +- In Columns, an unreadable folder's Retry button is the next Tab stop inside its column, unless Open as Administrator shows. lgse/strata#1466, lgse/strata#1533, lgse/strata#1837 +- When that column also offers Open as Administrator, Tab from the column reaches Open as Administrator, then Retry. Shift+Tab walks back to the column. lgse/strata#1837 (unverified) - Tab from an inline rename field commits the rename and leaves the listing; in Columns it leaves the strip. lgse/strata#1431, lgse/strata#1533 - In an empty, unreadable, or loading folder, Tab and Shift+Tab leave the focused pane as they leave a listing. Shift+Tab from the footer returns to it. lgse/strata#1466, lgse/strata#1533 - 10xer mode keeps its own Tab handling. lgse/strata#1431, lgse/strata#1533 (unverified) diff --git a/features/browser/sidebar/index.md b/features/browser/sidebar/index.md index 56c5642..c9cdc58 100644 --- a/features/browser/sidebar/index.md +++ b/features/browser/sidebar/index.md @@ -3,8 +3,8 @@ title: Sidebar status: shipped origin: {issue: lgse/strata#104, pr: lgse/strata#106} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/window/sidebar.rs, src/ui/window/sidebar_drop_feedback.rs, src/ui/window/keyboard/sidebar.rs] tests: [src/ui/window/tests/bookmarks.rs, src/ui/window/tests/sidebar.rs, src/ui/window/sidebar_drop_feedback/tests.rs, tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl, tests/qa/scenarios/locations/sidebar-place-navigates.jsonl] docs: [docs/preferences.md, site/src/reference/keyboard-navigation.md] @@ -22,6 +22,8 @@ The left panel of every browser window and the file chooser: built-in places, th - By default the sidebar lists Home, Trash, Network, Recent, Desktop, Documents, Downloads, Music, Pictures, and Videos in one block, followed by PINNED and DEVICES. lgse/strata#1161, lgse/strata#1342 - Desktop, Documents, Downloads, Music, Pictures, and Videos open the folders set in `user-dirs.dirs`; Music follows `XDG_MUSIC_DIR`. lgse/strata#1342 - The row for the current location shows an 18% accent tint and an accent-coloured icon. lgse/strata#106 +- Hovering a place or device row that is not the current location shows a neutral 6% text-colour fill, not an accent tint. lgse/strata#1909 +- After Alt+Up, Back, or location-bar navigation with the pointer left on the old row, only the new current row keeps the accent tint. lgse/strata#1909 - Clicking a place that fails to open, such as Network with `GIO_USE_VFS=local`, and dismissing the error leaves the pane and the highlight on the open place. lgse/strata#1605 - While a place mounts before opening, the highlight stays on the open place; a failed or cancelled mount leaves it there. lgse/strata#1605 - Home, standard folders, and local pins show the folder's saved colour and custom icon, and update in every open window when it changes. lgse/strata#1370 @@ -110,6 +112,7 @@ The left panel of every browser window and the file chooser: built-in places, th | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Made sidebar hover a neutral tint, so a hovered old place no longer looks like a second selected row. | | 2026-10-17 | lgse/strata#1726 | feat | Added Connect to server… to the Network row's menu, with an address field and an optional pin, so network locations can be added without typing in the location bar. | | 2026-10-15 | lgse/strata#1605 | fix | Returned the highlight to the open place after a rejected place click. | | 2026-10-13 | lgse/strata#1606 | fix | Made the header toggle step full, rail, hidden, saved the rail as `sidebar_compact`, and made the automatic rail edge-triggered under one fit rule. | @@ -128,4 +131,3 @@ The left panel of every browser window and the file chooser: built-in places, th - NAS shares mounted by the system at native paths do not appear unless GIO reports them. lgse/strata#1209 - PINNED and DEVICES cannot be collapsed; the implementation is unmerged. lgse/strata#1389, lgse/strata#1390 -- After Alt+Up, Back, or location-bar navigation, the sidebar location tint can stay on the previous row, and two rows can be tinted at once. lgse/strata#1862 diff --git a/features/browser/sidebar/pins/drag-to-pin.md b/features/browser/sidebar/pins/drag-to-pin.md index 078d4ae..247ee24 100644 --- a/features/browser/sidebar/pins/drag-to-pin.md +++ b/features/browser/sidebar/pins/drag-to-pin.md @@ -3,10 +3,10 @@ title: Drag folders to pin status: shipped origin: {issue: lgse/strata#1690, pr: lgse/strata#1692} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/window/pinned_drop.rs, src/adapters/directory_validation.rs] -tests: [src/ui/window/pinned_drop/tests.rs, src/adapters/directory_validation/tests.rs, tests/qa/scenarios/sidebar_pinning, tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl] +tests: [src/ui/window/pinned_drop/tests.rs, src/adapters/directory_validation/tests.rs, tests/qa/scenarios/sidebar_pinning/folder-pins-order-and-bookmarks.jsonl, tests/qa/scenarios/sidebar_pinning/foreign-folder-drags-validate.jsonl, tests/qa/scenarios/sidebar_pinning/pinned-rows-transfer-and-remote-gaps.jsonl, tests/qa/scenarios/sidebar_pinning/spring-loaded-rows-keep-pin-intent.jsonl, tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl] related: [operations/drag-and-drop, integration/portal-file-chooser, browser/sidebar] --- diff --git a/features/browser/tabs/index.md b/features/browser/tabs/index.md index 1b0071b..771a23c 100644 --- a/features/browser/tabs/index.md +++ b/features/browser/tabs/index.md @@ -3,7 +3,7 @@ title: Browser tabs status: shipped origin: {issue: lgse/strata#108, pr: lgse/strata#1484} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/ui/window/composition/tabs.rs, src/ui/window/composition/tabs/**, src/ui/browser/tab_location.rs, src/app/browser/navigation_lifecycle.rs] tests: [src/ui/window/composition/tabs/tests.rs, src/ui/window/composition/tabs/tests/reopen.rs, src/ui/browser/tab_location/tests.rs, src/ui/window/tests/keyboard_dispatch/open_in_new.rs, tests/qa/scenarios/tabs, tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl] diff --git a/features/browser/tabs/session-restore.md b/features/browser/tabs/session-restore.md index e8841b4..35d37cc 100644 --- a/features/browser/tabs/session-restore.md +++ b/features/browser/tabs/session-restore.md @@ -3,8 +3,8 @@ title: Tab session restore status: shipped origin: {issue: lgse/strata#1531, pr: lgse/strata#1532} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/tabs_session.rs] tests: [src/ui/tabs_session/tests.rs] docs: [docs/preferences.md] @@ -37,6 +37,7 @@ A plain launch reopens the previous session's tab locations in strip order, with - A saved folder whose check times out, as on a server that does not answer, keeps its tab and shows its error. It loads by itself once the mount answers. lgse/strata#1729 - Trashed-item children (`trash:///x`) and non-root Recent entries (`recent:///x`) are skipped, while `trash:///` and `recent:///` restore. lgse/strata#1532 - Camera roots such as `gphoto2://` are skipped. So is every scheme other than `smb`, `sftp`, `ftp`, `ftps`, `dav`, `davs`, `trash`, `network`, and `recent`. lgse/strata#1532 (unverified) +- A saved `admin://` tab is skipped, so startup never raises a polkit prompt. lgse/strata#1837 - When a skipped entry precedes the active tab, the restored selection still lands on the saved active location. lgse/strata#1532 - When the saved active entry is skipped, the nearest kept tab to its left is selected. With none to its left, the first restored tab is. lgse/strata#1532 (unverified) - An active index beyond the last restorable tab selects the last restored tab. lgse/strata#1532 (unverified) diff --git a/features/browser/thumbnails/index.md b/features/browser/thumbnails/index.md index edbc89d..ce2432c 100644 --- a/features/browser/thumbnails/index.md +++ b/features/browser/thumbnails/index.md @@ -3,8 +3,8 @@ title: Thumbnails status: shipped origin: {issue: lgse/strata#41, pr: lgse/strata#43} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/thumbnail.rs, src/ui/thumbnail/viewport.rs, src/ui/thumbnail/slot.rs, src/sandbox_helper/appimage.rs] tests: [src/ui/thumbnail/tests.rs, tests/qa/mutations/stl-thumbnails-live-preference.patch, src/ui/thumbnail/viewport/tests.rs, src/ui/thumbnail/slot/tests.rs, src/sandbox_helper/appimage/tests.rs] docs: [site/src/reference/preview-sandbox.md, docs/preview-sandbox.md] @@ -22,6 +22,9 @@ Image previews in place of file icons in Columns, List, Icons, folder peeks, and - A file shows its type icon while its thumbnail loads, and keeps it when rendering fails or the type is unsupported. lgse/strata#43 - Folders never get thumbnails and keep their folder icon. lgse/strata#43 - A file or folder with a custom icon shows that icon instead of a thumbnail. lgse/strata#294 (unverified) +- Files in a folder opened through `admin://` get no thumbnail and show their type icon. lgse/strata#1837 +- A folder row already shown in Columns, List, or Icons swaps to the lock icon in place when its metadata fill finds it locked. lgse/strata#1837 +- A locked folder with a custom icon keeps that icon. lgse/strata#1837 (unverified) - Ctrl+F filter results and recursive search results show thumbnails in Columns, List, and Icons, with none left over when the query changes. lgse/strata#548 - Inline-renaming a file without changing its extension, size, or modification time keeps its thumbnail without decoding again. lgse/strata#1148 - A fresh image decode fills the item's Icons caption with its source dimensions, such as `320×180`. lgse/strata#1081 @@ -100,6 +103,7 @@ Codecs read attacker-controlled bytes merely by a file becoming visible, so no d - STL renders have a transparent background because the shared freedesktop cache must not depend on the theme ([review](https://github.com/lgse/strata/pull/1789#issuecomment-6306979921)). - Disabling the switch keeps cached PNGs, like **Show thumbnails**. A private cache was offered only if renders had to be hidden from other clients, and not adopted ([review](https://github.com/lgse/strata/pull/1789#issuecomment-6306979921)). - **Show thumbnails** is an explicit switch. Zero workers as a hidden off switch and deleting cached files were rejected as workarounds (lgse/strata#1664). +- Files in `admin://` folders get no thumbnails. A root-only image would persist in `~/.cache/thumbnails`, readable by any user process, and background reads could raise an unasked polkit prompt (lgse/strata#1836, lgse/strata#1837). - A fallback icon's height scale is cached per texture, weakly keyed and pruned at 512 entries, instead of scanning the texture on each icon change (lgse/strata#1675). - A GVfs FUSE path is a render input only; navigation and identity keep the URI (lgse/strata#1080). diff --git a/features/browser/view-modes/columns.md b/features/browser/view-modes/columns.md index dcec644..f63640d 100644 --- a/features/browser/view-modes/columns.md +++ b/features/browser/view-modes/columns.md @@ -3,8 +3,8 @@ title: Columns view status: shipped origin: {issue: lgse/strata#140, pr: lgse/strata#171} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/browser/columns.rs, src/ui/browser/columns/rows.rs, src/ui/browser/columns/reveal.rs] tests: [src/ui/browser/columns/tests.rs, tests/qa/scenarios/column_background, tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl, tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl, tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl, tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl] docs: [docs/preview-panel-layout.md, docs/preferences.md] @@ -46,6 +46,8 @@ Miller columns, the default view: each opened folder appends a column to a horiz - Shift+Home, Shift+End, and other Shift-extended ranges do not mirror. lgse/strata#1447, lgse/strata#1533 - Mirroring waits 75 ms after the last key, so holding Down loads only the folder where the cursor stops. lgse/strata#1179 - With Mirror columns selection on, Return on a folder still validating when the 75 ms mirror fires opens it in the next column. Focus lands on its first entry. lgse/strata#1771 (unverified) +- A column whose folder Strata may not read shows "Unable to read this directory" and the reason, with Open as Administrator and Retry buttons. Without GIO `admin` support only Retry shows. lgse/strata#1837 +- In an `admin://` folder, the "Browsing as administrator" lock notice shows on the root column only. lgse/strata#1837 (unverified) ### Returning to an ancestor diff --git a/features/browser/view-modes/density.md b/features/browser/view-modes/density.md index a0d0119..e68500e 100644 --- a/features/browser/view-modes/density.md +++ b/features/browser/view-modes/density.md @@ -3,8 +3,8 @@ title: Frame and content density status: shipped origin: {issue: lgse/strata#1774, pr: lgse/strata#1776} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/window/density_slider.rs] tests: [src/ui/window/tests/appearance_density.rs] docs: [docs/preferences.md] @@ -24,6 +24,8 @@ Two spacing settings in the Appearance menu's DENSITY section. Frame is the vert - Content runs from 0 to 16 px, with Compact 4, the default, and Airy 8. lgse/strata#1776 - Each slider's value label reads "Compact · N px" or "Airy · N px" at a preset, otherwise "Custom · N px". lgse/strata#1776 - Each slider has tick marks at its Compact and Airy values, with "Compact" and "Airy" buttons under them. lgse/strata#1776 +- The "Compact" and "Airy" buttons never overlap, in any locale: at least 8 px separates them, and the menu reserves their combined width. lgse/strata#1909 +- In Traditional Chinese, the Airy button reads 寬鬆. lgse/strata#1909 - Clicking "Compact" or "Airy" snaps that slider to the preset; the label of the current preset shows in the accent color. lgse/strata#1776 (unverified) - Dragging a slider or clicking a snap button leaves the Appearance menu open. lgse/strata#1776 - Changing one slider leaves the other area's spacing unchanged. lgse/strata#1774, lgse/strata#1776 @@ -58,8 +60,9 @@ Two spacing settings in the Appearance menu's DENSITY section. Frame is the vert | Date | PR | Type | Change | | --- | --- | --- | --- | +| 2026-10-29 | lgse/strata#1909 | fix | Reserved width and an 8 px gap for the snap buttons so they stop overlapping, and translated zh-TW "Airy". | | 2026-10-21 | lgse/strata#1776 | feat | Replaced the Appearance menu's Compact and Airy radios with Frame (0–12 px) and Content (0–16 px) sliders, so chrome and file-view spacing are set separately. | ## Known gaps -- The Compact and Airy snap buttons under a density slider overlap. lgse/strata#1862 +None known. diff --git a/features/browser/view-modes/index.md b/features/browser/view-modes/index.md index 1913dfc..1391b49 100644 --- a/features/browser/view-modes/index.md +++ b/features/browser/view-modes/index.md @@ -3,7 +3,7 @@ title: View modes status: shipped origin: {issue: null, pr: lgse/strata#383} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/browser_modes.rs, src/ui/browser_modes/events.rs, src/ui/browser/presentation.rs, src/ui/loading_skeleton.rs, src/ui/loading_skeleton/**] tests: [tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl, tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl, tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl, tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl, tests/qa/mutations/view-switching.patch, src/ui/loading_skeleton/delay/tests.rs, src/ui/browser_modes/tests.rs, src/ui/browser/presentation/tests.rs] @@ -95,6 +95,9 @@ The three presentations of a folder, Columns, Icons, and List, and the Appearanc - The last listing stays in view under the notice. The notice also shows over a stuck first load, never over an error page. lgse/strata#1729 - The notice clears as soon as a request on that mount answers. lgse/strata#1729 - The notice has the accessible role status. lgse/strata#1729 (unverified) +- In List and Icons, a folder load refused for lack of permission shows "Unable to read this directory" and the reason. Where GIO supports `admin`, an Open as Administrator button sits under it. lgse/strata#1837 +- Clicking that button opens the folder's `admin://` form. lgse/strata#1837 +- In an `admin://` folder, a lock notice reading "Browsing as administrator. New items belong to root, and deleted items skip Trash." shows above the List and Icons listings. lgse/strata#1837 - Long filenames are middle-ellipsized in Columns rows and headings, Icons captions, and the List Name column, so the extension stays visible. lgse/strata#1143 ## Design diff --git a/features/browser/view-modes/position-restore.md b/features/browser/view-modes/position-restore.md index 6fed999..6f51df5 100644 --- a/features/browser/view-modes/position-restore.md +++ b/features/browser/view-modes/position-restore.md @@ -3,7 +3,7 @@ title: Position restore on return and refresh status: shipped origin: {issue: lgse/strata#868, pr: lgse/strata#893} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: draft code: [src/ui/browser_modes/navigation.rs] tests: [src/ui/window/tests/keyboard_dispatch/reload_cursor.rs] diff --git a/features/browser/view-modes/sorting.md b/features/browser/view-modes/sorting.md index 8d49c18..5b7f9f2 100644 --- a/features/browser/view-modes/sorting.md +++ b/features/browser/view-modes/sorting.md @@ -3,7 +3,7 @@ title: Sorting status: shipped origin: {issue: lgse/strata#40, pr: lgse/strata#44} branch: null -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 review: reviewed code: [src/app/browser/sorting.rs, src/services/mime_type.rs, src/ui/browser/pane_header.rs] tests: [src/app/browser/sorting/tests.rs, src/services/mime_type/tests.rs, tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl, tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl] diff --git a/index/by-area.md b/index/by-area.md index 2c072d3..380bcd1 100644 --- a/index/by-area.md +++ b/index/by-area.md @@ -6,40 +6,40 @@ ### [Accessibility](../features/app/accessibility.md) `app/accessibility` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#341](https://github.com/lgse/strata/issues/341), pr [lgse/strata#415](https://github.com/lgse/strata/issues/415) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#341](https://github.com/lgse/strata/issues/341), pr [lgse/strata#415](https://github.com/lgse/strata/issues/415) App-wide accessible semantics for screen readers and AT-SPI automation. It covers the names, descriptions, roles, and states of panes, entry lists, entries, menus, and dialogs. It also owns the rule that limits tooltips to icon-only buttons. Accessible labels specific to one feature stay with that feature. -- Code: [`src/ui/accessibility.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/accessibility.rs) -- Tests: [`src/ui/accessibility/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/accessibility/tests.rs), [`tests/qa/scenarios/accessibility`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/accessibility), [`tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl) -- Docs: [`docs/testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/testing.md) +- Code: [`src/ui/accessibility.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/accessibility.rs) +- Tests: [`src/ui/accessibility/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/accessibility/tests.rs), [`tests/qa/scenarios/accessibility`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/accessibility), [`tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl) +- Docs: [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md) - Related: [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [Sidebar](../features/browser/sidebar/index.md), [Interface language](../features/settings/preferences/language.md), [Context menus](../features/browser/context-menu.md), [Modal dialogs](../features/app/dialogs.md) ### [Modal dialogs](../features/app/dialogs.md) `app/dialogs` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#88](https://github.com/lgse/strata/issues/88), pr [lgse/strata#91](https://github.com/lgse/strata/issues/91) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#88](https://github.com/lgse/strata/issues/88), pr [lgse/strata#91](https://github.com/lgse/strata/issues/91) The shared shell behind Strata's action dialogs: the blurred backdrop, open and close animation, backdrop dismissal, initial focus, Enter and Escape handling, form submission, and sizing within the window. Individual dialogs supply their content and actions; this node owns what they have in common. -- Code: [`src/ui/modal.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/modal.rs), [`src/ui/modal/layout.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/modal/layout.rs), [`src/ui/controls.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/controls.rs), [`src/ui/blur.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/blur.rs) -- Tests: [`src/ui/modal/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/modal/tests.rs), [`src/ui/controls/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/controls/tests.rs), [`src/ui/window/tests/keyboard_dispatch/overlay_focus.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/overlay_focus.rs), [`tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) +- Code: [`src/ui/modal.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/modal.rs), [`src/ui/modal/layout.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/modal/layout.rs), [`src/ui/controls.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/controls.rs), [`src/ui/blur.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/blur.rs) +- Tests: [`src/ui/modal/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/modal/tests.rs), [`src/ui/controls/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/controls/tests.rs), [`src/ui/window/tests/keyboard_dispatch/overlay_focus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/overlay_focus.rs), [`tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) - Related: [Operation progress and cancellation](../features/operations/progress/index.md), [Trash](../features/operations/trash/index.md), [Copy, cut, and paste](../features/operations/clipboard/index.md), [Window key and wheel dispatch](../features/app/window/key-dispatch.md), [Settings window and general preferences](../features/settings/preferences/index.md) ### [Shared location model and listing adapter](../features/app/infrastructure.md) `app/infrastructure` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#14](https://github.com/lgse/strata/issues/14), pr [lgse/strata#27](https://github.com/lgse/strata/issues/27) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#14](https://github.com/lgse/strata/issues/14), pr [lgse/strata#27](https://github.com/lgse/strata/issues/27) The location model, URI display and diagnostic rules, and the directory-listing adapter that every feature shares, plus the crate and module roots. It also owns shared helpers, test support, catalogs, the README, third-party notices, and crate manifests. It owns the build script, CI workflows and tooling, the bug report template, and lint, dependency-audit, and agent configuration and skills. It owns the `qa` build's in-process QA harness, the QA runner, and the pinned test image. It owns the trusted helper lookup, the syscall layer that local operations share, and the Run in terminal control that Diagnostics and Integrations share. It owns the mount-table watcher, per-mount request lanes, off-thread probes and closes, and the UI-thread checks. It is the `fallback` node in `scopes.yaml`. -- Code: [`src/model/mod.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/model/mod.rs), [`src/ui/settings.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings.rs), [`src/adapters/local_files.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_files.rs), [`src/ui/mod.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/mod.rs), [`src/main.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/main.rs), [`src/app/mod.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/mod.rs), [`src/adapters/mod.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/mod.rs), [`src/services/mod.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/mod.rs), [`src/ui/resize_feedback.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/resize_feedback.rs), [`src/ui/preferences/trashed.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preferences/trashed.rs), [`src/adapters/volume/mounts.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mounts.rs), [`src/adapters/volume/mount_snapshot.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mount_snapshot.rs), [`README.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/README.md), [`THIRD_PARTY_LICENSES.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/THIRD_PARTY_LICENSES.md), [`data/licenses`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/licenses), [`data/strata.gresource.xml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/strata.gresource.xml), [`AGENTS.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/AGENTS.md), [`typos.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/typos.toml), [`clippy.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/clippy.toml), [`Cargo.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/Cargo.toml), [`Cargo.lock`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/Cargo.lock), [`mise.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/mise.toml), [`mise.lock`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/mise.lock), [`scripts/benchmark-scroll.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/benchmark-scroll.py), [`src/build_info.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/build_info.rs), [`src/services/native_fs.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/native_fs.rs), [`src/ui/keys/bindings.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/bindings.rs), [`src/ui/keys/bindings/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/bindings), [`build.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/build.rs), [`deny.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/deny.toml), [`scripts/quality.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/quality.sh), [`scripts/quality_ci.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/quality_ci.py), [`scripts/test-headless.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test-headless.py), [`scripts/integration_tests.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/integration_tests.py), [`src/ui/settings/install_command.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/install_command.rs), [`src/adapters/local_operations/fs_ops.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/fs_ops.rs), [`src/adapters/local_operations/native_fs.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/native_fs.rs), [`src/adapters/local_operations/work_queue.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/work_queue.rs), [`src/trusted_command.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/trusted_command.rs), [`src/adapters/gio_close.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/gio_close.rs), [`src/adapters/volume/mount_watch.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mount_watch.rs), [`src/adapters/volume/mount_lanes.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mount_lanes.rs), [`src/adapters/local_operations/probes.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/probes.rs), [`src/util/ui_thread.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/util/ui_thread.rs), [`src/util/ui_thread/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/util/ui_thread), [`scripts/trace-main-io.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/trace-main-io.py), [`tests/qa/main-io-allowlist.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/main-io-allowlist.toml), [`.agents/skills`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.agents/skills), [`.claude/skills`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.claude/skills), [`.gitignore`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.gitignore), [`.cursor/CLOUD.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.cursor/CLOUD.md), [`.dockerignore`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.dockerignore), [`CONTRIBUTING.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/CONTRIBUTING.md), [`scripts/check.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/check.sh), [`src/qa.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/qa.rs), [`src/qa/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/qa), [`src/ui/accessibility/qa.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/accessibility/qa.rs), [`scripts/qa*.sh`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts), [`scripts/qa_*.py`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts), [`scripts/lib/qa-container.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/lib/qa-container.sh), [`scripts/headless/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/headless), [`scripts/image_*.py`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts), [`tests/container/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/container), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/harness.json), [`src/logging.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/logging.rs), [`src/metrics.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/metrics.rs), [`src/services/listeners.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/listeners.rs), [`src/services/network_error.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/network_error.rs), [`src/ui/close_guard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/close_guard.rs), [`src/ui/browser/paths.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/paths.rs), [`src/ui/browser/entry_animation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/entry_animation.rs), [`data/icons/scalable/actions/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/icons/scalable/actions), [`.github`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.github), [`.gitattributes`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.gitattributes), [`CLAUDE.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/CLAUDE.md), [`LICENSE`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/LICENSE), [`rustfmt.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/rustfmt.toml), [`skills-lock.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/skills-lock.json), [`docs/assets`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/assets), [`docs/evidence`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/evidence), [`scripts/discord_triage.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/discord_triage.py), [`scripts/profile-fixture.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/profile-fixture.sh), [`scripts/generate-fixture.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/generate-fixture.sh), [`scripts/quality-durations.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/quality-durations.json), [`scripts/release_version.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/release_version.py), [`scripts/start-dev.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/start-dev.sh), [`src/services/package_manager.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/package_manager.rs), [`src/ui/browser/location.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/location.rs) -- Tests: [`src/model/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/model/tests.rs), [`src/adapters/local_files/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_files/tests.rs), [`src/adapters/local_files/tests/browse.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_files/tests/browse.rs), [`src/adapters/volume/mounts/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mounts/tests.rs), [`src/test_support.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/test_support.rs), [`src/test_support/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/test_support), [`scripts/test_benchmark_scroll.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_benchmark_scroll.py), [`src/build_info/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/build_info/tests.rs), [`scripts/test_quality_ci.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_quality_ci.py), [`scripts/test_quality_runner.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_quality_runner.py), [`scripts/test_headless_runner.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_headless_runner.py), [`scripts/test_integration_tests.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_integration_tests.py), [`src/ui/settings/install_command/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/install_command/tests.rs), [`src/trusted_command/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/trusted_command/tests.rs), [`src/adapters/gio_close/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/gio_close/tests.rs), [`src/adapters/local_operations/tests/closes.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests/closes.rs), [`src/adapters/volume/mount_watch/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mount_watch/tests.rs), [`src/adapters/volume/mount_lanes/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mount_lanes/tests.rs), [`src/adapters/local_operations/probes/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/probes/tests.rs), [`src/adapters/local_operations/fs_ops/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/fs_ops/tests.rs), [`src/adapters/volume/mounts/tests/byte_paths.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/volume/mounts/tests/byte_paths.rs), [`scripts/test_trace_main_io.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_trace_main_io.py), [`tests/qa.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa.rs), [`tests/qa/*.rs`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa), [`tests/qa/foreign_drag_source.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/foreign_drag_source.py), [`tests/qa/baselines/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/baselines), [`src/qa/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/qa/tests.rs), [`src/qa/tests/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/qa/tests), [`scripts/test_qa_*.py`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts), [`scripts/test_image_*.py`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts), [`tests/qa/scenarios/visual_baselines`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/visual_baselines), [`src/logging/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/logging/tests.rs), [`src/metrics/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/metrics/tests.rs), [`src/services/listeners/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/listeners/tests.rs), [`src/services/network_error/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/network_error/tests.rs), [`scripts/test_discord_triage.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_discord_triage.py), [`scripts/test_makefile.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_makefile.py), [`scripts/test_release_version.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_release_version.py), [`src/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/tests.rs), [`src/ui/preferences/tests/preferences.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preferences/tests/preferences.rs), [`src/ui/window/tests/preferences.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/preferences.rs), [`tests/qa/fixtures/file_drag_source.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/fixtures/file_drag_source.py), [`src/services/package_manager/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/package_manager/tests.rs), [`src/ui/browser/location/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/location/tests.rs) -- Docs: [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/performance-baseline.md), [`docs/hardened-configuration.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/hardened-configuration.md), [`docs/unsafe-code.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/unsafe-code.md), [`docs/testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/testing.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/packaging.md) +- Code: [`src/model/mod.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/model/mod.rs), [`src/ui/settings.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings.rs), [`src/adapters/local_files.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_files.rs), [`src/ui/mod.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/mod.rs), [`src/main.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/main.rs), [`src/app/mod.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/mod.rs), [`src/adapters/mod.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/mod.rs), [`src/services/mod.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/mod.rs), [`src/ui/resize_feedback.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/resize_feedback.rs), [`src/ui/preferences/trashed.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preferences/trashed.rs), [`src/adapters/volume/mounts.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mounts.rs), [`src/adapters/volume/mount_snapshot.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mount_snapshot.rs), [`README.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/README.md), [`THIRD_PARTY_LICENSES.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/THIRD_PARTY_LICENSES.md), [`data/licenses`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/licenses), [`data/strata.gresource.xml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/strata.gresource.xml), [`AGENTS.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/AGENTS.md), [`typos.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/typos.toml), [`clippy.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/clippy.toml), [`Cargo.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/Cargo.toml), [`Cargo.lock`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/Cargo.lock), [`mise.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/mise.toml), [`mise.lock`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/mise.lock), [`scripts/benchmark-scroll.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/benchmark-scroll.py), [`src/build_info.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/build_info.rs), [`src/services/native_fs.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/native_fs.rs), [`src/ui/keys/bindings.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/bindings.rs), [`src/ui/keys/bindings/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/bindings), [`build.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/build.rs), [`deny.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/deny.toml), [`scripts/quality.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/quality.sh), [`scripts/quality_ci.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/quality_ci.py), [`scripts/test-headless.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test-headless.py), [`scripts/integration_tests.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/integration_tests.py), [`src/ui/settings/install_command.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/install_command.rs), [`src/adapters/local_operations/fs_ops.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/fs_ops.rs), [`src/adapters/local_operations/native_fs.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/native_fs.rs), [`src/adapters/local_operations/work_queue.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/work_queue.rs), [`src/trusted_command.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/trusted_command.rs), [`src/adapters/gio_close.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/gio_close.rs), [`src/adapters/volume/mount_watch.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mount_watch.rs), [`src/adapters/volume/mount_lanes.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mount_lanes.rs), [`src/adapters/local_operations/probes.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/probes.rs), [`src/util/ui_thread.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/util/ui_thread.rs), [`src/util/ui_thread/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/util/ui_thread), [`scripts/trace-main-io.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/trace-main-io.py), [`tests/qa/main-io-allowlist.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/main-io-allowlist.toml), [`.agents/skills`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.agents/skills), [`.claude/skills`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.claude/skills), [`.gitignore`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.gitignore), [`.cursor/CLOUD.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.cursor/CLOUD.md), [`.dockerignore`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.dockerignore), [`CONTRIBUTING.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/CONTRIBUTING.md), [`scripts/check.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/check.sh), [`src/qa.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/qa.rs), [`src/qa/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/qa), [`src/ui/accessibility/qa.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/accessibility/qa.rs), [`scripts/qa*.sh`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts), [`scripts/qa_*.py`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts), [`scripts/lib/qa-container.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/lib/qa-container.sh), [`scripts/headless/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/headless), [`scripts/image_*.py`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts), [`tests/container/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/container), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json), [`src/logging.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/logging.rs), [`src/metrics.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/metrics.rs), [`src/services/listeners.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/listeners.rs), [`src/services/network_error.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/network_error.rs), [`src/ui/close_guard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/close_guard.rs), [`src/ui/browser/paths.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/paths.rs), [`src/ui/browser/entry_animation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/entry_animation.rs), [`data/icons/scalable/actions/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/actions), [`.github`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.github), [`.gitattributes`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.gitattributes), [`CLAUDE.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/CLAUDE.md), [`LICENSE`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/LICENSE), [`rustfmt.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/rustfmt.toml), [`skills-lock.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/skills-lock.json), [`docs/assets`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/assets), [`docs/evidence`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/evidence), [`scripts/discord_triage.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/discord_triage.py), [`scripts/profile-fixture.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/profile-fixture.sh), [`scripts/generate-fixture.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/generate-fixture.sh), [`scripts/quality-durations.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/quality-durations.json), [`scripts/release_version.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/release_version.py), [`scripts/start-dev.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/start-dev.sh), [`src/services/package_manager.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/package_manager.rs), [`src/ui/browser/location.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/location.rs) +- Tests: [`src/model/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/model/tests.rs), [`src/adapters/local_files/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_files/tests.rs), [`src/adapters/local_files/tests/browse.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_files/tests/browse.rs), [`src/adapters/volume/mounts/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mounts/tests.rs), [`src/test_support.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/test_support.rs), [`src/test_support/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/test_support), [`scripts/test_benchmark_scroll.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_benchmark_scroll.py), [`src/build_info/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/build_info/tests.rs), [`scripts/test_quality_ci.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_quality_ci.py), [`scripts/test_quality_runner.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_quality_runner.py), [`scripts/test_headless_runner.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_headless_runner.py), [`scripts/test_integration_tests.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_integration_tests.py), [`src/ui/settings/install_command/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/install_command/tests.rs), [`src/trusted_command/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/trusted_command/tests.rs), [`src/adapters/gio_close/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/gio_close/tests.rs), [`src/adapters/local_operations/tests/closes.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/closes.rs), [`src/adapters/volume/mount_watch/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mount_watch/tests.rs), [`src/adapters/volume/mount_lanes/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mount_lanes/tests.rs), [`src/adapters/local_operations/probes/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/probes/tests.rs), [`src/adapters/local_operations/fs_ops/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/fs_ops/tests.rs), [`src/adapters/volume/mounts/tests/byte_paths.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/volume/mounts/tests/byte_paths.rs), [`scripts/test_trace_main_io.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_trace_main_io.py), [`tests/qa.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa.rs), [`tests/qa/*.rs`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa), [`tests/qa/foreign_drag_source.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/foreign_drag_source.py), [`tests/qa/baselines/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/baselines), [`src/qa/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/qa/tests.rs), [`src/qa/tests/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/qa/tests), [`scripts/test_qa_*.py`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts), [`scripts/test_image_*.py`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts), [`tests/qa/scenarios/visual_baselines`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/visual_baselines), [`src/logging/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/logging/tests.rs), [`src/metrics/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/metrics/tests.rs), [`src/services/listeners/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/listeners/tests.rs), [`src/services/network_error/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/network_error/tests.rs), [`scripts/test_discord_triage.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_discord_triage.py), [`scripts/test_makefile.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_makefile.py), [`scripts/test_release_version.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_release_version.py), [`src/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/tests.rs), [`src/ui/preferences/tests/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preferences/tests/preferences.rs), [`src/ui/window/tests/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/preferences.rs), [`tests/qa/fixtures/file_drag_source.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/fixtures/file_drag_source.py), [`src/services/package_manager/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/package_manager/tests.rs), [`src/ui/browser/location/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/location/tests.rs) +- Docs: [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md), [`docs/hardened-configuration.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/hardened-configuration.md), [`docs/unsafe-code.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/unsafe-code.md), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) - Related: [Integrations catalog](../features/remote/file-providers/integrations.md), [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md), [Trash](../features/operations/trash/index.md), [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Preview panel](../features/preview/preview-panel/index.md), [Preview sandbox](../features/preview/preview-panel/sandbox.md), [In-place update install](../features/app/updates/install.md), [Diagnostics](../features/settings/diagnostics.md), [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md), [Permanent deletion](../features/operations/delete/index.md), [Launched-program GDK_DEBUG restore](../features/integration/file-manager-interface/service-activation.md) ### [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md) `app/keyboard-shortcuts` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1538](https://github.com/lgse/strata/issues/1538), pr [lgse/strata#1576](https://github.com/lgse/strata/issues/1576) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1538](https://github.com/lgse/strata/issues/1538), pr [lgse/strata#1576](https://github.com/lgse/strata/issues/1576) Turns each key event into a shortcut the same way on every keyboard layout. Letters follow the key's label, non-Latin keys fall back to a Latin key, and digits count by position. It also owns the label formatter and yielding to an input-method composition; the F1 panel (`app/shortcut-reference`) and dispatcher (`app/window`) consume it. Its child `app/keyboard-shortcuts/remapping` lets users rebind keys per map. @@ -51,23 +51,23 @@ Turns each key event into a shortcut the same way on every keyboard layout. Lett ### [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) `app/keyboard-shortcuts/remapping` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1884](https://github.com/lgse/strata/issues/1884), pr [lgse/strata#1885](https://github.com/lgse/strata/issues/1885) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1884](https://github.com/lgse/strata/issues/1884), pr [lgse/strata#1885](https://github.com/lgse/strata/issues/1885) Lets users change, add, or remove the keys of any listed command, separately for the default map and 10xer mode. Changes are made in Settings → Keyboard or under `[keymap.*]` in `settings.toml`. A conflict checker refuses keys that would never fire or would break another key. It is for users whose desktop takes a Strata key, or who want a key for a command their map lacks. -- Code: [`src/ui/keys/command.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/command.rs), [`src/ui/keys/alias.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/alias.rs), [`src/ui/keys/capture.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/capture.rs), [`src/ui/keys/conflicts.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/conflicts.rs), [`src/ui/preferences/keymap.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preferences/keymap.rs), [`src/ui/window/keyboard/direct.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard/direct.rs), [`src/ui/settings/keyboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/keyboard.rs) -- Tests: [`src/ui/keys/command/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/command/tests.rs), [`src/ui/keys/alias/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/alias/tests.rs), [`src/ui/keys/conflicts/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/keys/conflicts/tests.rs), [`src/ui/preferences/tests/keymap.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preferences/tests/keymap.rs), [`src/ui/settings/keyboard/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/keyboard/tests.rs), [`src/ui/window/tests/keyboard_dispatch/keymap_overrides.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/keymap_overrides.rs), [`src/ui/window/tests/keyboard_dispatch/keymap_conflicts.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/keymap_conflicts.rs), [`src/ui/window/tests/keyboard_dispatch/structural_aliases.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/structural_aliases.rs), [`src/ui/window/tests/keyboard_dispatch/direct_commands.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/direct_commands.rs), [`tests/qa/scenarios/keymap`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keymap) -- Docs: [`docs/keymap.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keymap.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md) (inherited) +- Code: [`src/ui/keys/command.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/command.rs), [`src/ui/keys/alias.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/alias.rs), [`src/ui/keys/capture.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/capture.rs), [`src/ui/keys/conflicts.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/conflicts.rs), [`src/ui/preferences/keymap.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preferences/keymap.rs), [`src/ui/window/keyboard/direct.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/direct.rs), [`src/ui/settings/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/keyboard.rs) +- Tests: [`src/ui/keys/command/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/command/tests.rs), [`src/ui/keys/alias/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/alias/tests.rs), [`src/ui/keys/conflicts/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/keys/conflicts/tests.rs), [`src/ui/preferences/tests/keymap.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preferences/tests/keymap.rs), [`src/ui/settings/keyboard/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/keyboard/tests.rs), [`src/ui/window/tests/keyboard_dispatch/keymap_overrides.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/keymap_overrides.rs), [`src/ui/window/tests/keyboard_dispatch/keymap_conflicts.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/keymap_conflicts.rs), [`src/ui/window/tests/keyboard_dispatch/structural_aliases.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/structural_aliases.rs), [`src/ui/window/tests/keyboard_dispatch/direct_commands.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/direct_commands.rs), [`tests/qa/scenarios/keymap`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keymap) +- Docs: [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md) (inherited) - Related: [Settings window and general preferences](../features/settings/preferences/index.md), [Custom actions](../features/integration/custom-actions.md), [10xer mode](../features/integration/10xer-mode/index.md), [10xer file commands](../features/integration/10xer-mode/file-verbs.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md), [Window key and wheel dispatch](../features/app/window/key-dispatch.md) ### [Packaging and installation](../features/app/packaging/index.md) `app/packaging` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#49](https://github.com/lgse/strata/issues/49), pr [lgse/strata#182](https://github.com/lgse/strata/issues/182) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#49](https://github.com/lgse/strata/issues/49), pr [lgse/strata#182](https://github.com/lgse/strata/issues/182) How Strata reaches a desktop: the desktop entry and application icon that let shells recognize it, and `strata --version` for checking an install. Children: `app/packaging/installer` (the `install.sh` release installer) and `app/packaging/aur` (the `strata-bin` and `strata-rc-bin` AUR packages). -- Code: [`data/io.github.lgse.Strata.desktop`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/io.github.lgse.Strata.desktop), [`data/icons/scalable/apps/io.github.lgse.Strata.svg`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/icons/scalable/apps/io.github.lgse.Strata.svg) -- Docs: [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/install.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) +- Code: [`data/io.github.lgse.Strata.desktop`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/io.github.lgse.Strata.desktop), [`data/icons/scalable/apps/io.github.lgse.Strata.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/apps/io.github.lgse.Strata.svg) +- Docs: [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/install.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) - Related: [In-place update install](../features/app/updates/install.md), [Package-managed installs](../features/app/updates/package-managed.md), [Window chrome and structure](../features/app/window/index.md) - Children: [AUR packages](../features/app/packaging/aur.md), [Release installer](../features/app/packaging/installer.md) @@ -84,18 +84,18 @@ The `strata-bin` and `strata-rc-bin` Arch packages, rendered from one `PKGBUILD. ### [Release installer](../features/app/packaging/installer.md) `app/packaging/installer` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#329](https://github.com/lgse/strata/issues/329), pr [lgse/strata#330](https://github.com/lgse/strata/issues/330) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#329](https://github.com/lgse/strata/issues/329), pr [lgse/strata#330](https://github.com/lgse/strata/issues/330) `install.sh`, a localized Bash installer for the latest stable release, installed to `~/.local/bin/strata`. It authenticates the release through its signed update manifest. It checks the system and installs every integration the system supports, or a custom selection from a menu. It runs interactively or unattended with `--with-*` and `--without-*` flags. What the "Open file location", file chooser, and udiskie unlock steps install belongs to `integration/file-manager-interface`, `integration/portal-file-chooser/setup`, and `devices/volumes/udiskie-unlock`. -- Code: [`install.sh`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/install.sh), [`data/locales/installer.json`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/locales/installer.json), [`scripts/installer_messages.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/installer_messages.py) -- Tests: [`scripts/test_installer.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/test_installer.py), [`scripts/testdata`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/testdata) -- Docs: [`docs/internationalization.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/internationalization.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/signed-updates.md), [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/install.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) +- Code: [`install.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/install.sh), [`data/locales/installer.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/installer.json), [`scripts/installer_messages.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/installer_messages.py) +- Tests: [`scripts/test_installer.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_installer.py), [`scripts/testdata`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/testdata) +- Docs: [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/signed-updates.md), [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/install.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) (inherited) - Related: [FileManager1 D-Bus interface](../features/integration/file-manager-interface/index.md), [File chooser and file manager setup](../features/integration/portal-file-chooser/setup.md), [udiskie unlock handler](../features/devices/volumes/udiskie-unlock.md), [Interface language](../features/settings/preferences/language.md) ### [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md) `app/shortcut-reference` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#291](https://github.com/lgse/strata/issues/291), pr [lgse/strata#358](https://github.com/lgse/strata/issues/358) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#291](https://github.com/lgse/strata/issues/291), pr [lgse/strata#358](https://github.com/lgse/strata/issues/358) The F1 "Keyboard shortcuts" reference, Strata's only in-app keybinding list, and the window footer that hosts it. The reference shows the active key map for the current view, with search and categories. The footer carries the F1 Shortcuts button, the item and selection count, and the Files on clipboard badge. 10xer prompts, chords, and tags in the same footer belong to `integration/10xer-mode`. @@ -106,121 +106,121 @@ The F1 "Keyboard shortcuts" reference, Strata's only in-app keybinding list, and ### [Updates](../features/app/updates/index.md) `app/updates` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#22](https://github.com/lgse/strata/issues/22) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#22](https://github.com/lgse/strata/issues/22) -Checking GitHub for a newer Strata release, the Settings → Updates page, release notes, and the sidebar update notice. Children: `app/updates/release-channels` (Stable, Preview, Nightly, and Return to stable), `app/updates/install` (signed in-place install, rollback, and restart), `app/updates/release-picker` (installing a chosen release), and `app/updates/package-managed` (AUR, Omarchy, and pacman installs). +Checking GitHub for a newer Strata release, the Settings → Updates page, release notes, and the sidebar update notice. A build made with `STRATA_UPDATER=disabled` leaves the updater out. Children: `app/updates/release-channels` (Stable, Preview, Nightly, and Return to stable), `app/updates/install` (signed in-place install, rollback, and restart), `app/updates/release-picker` (installing a chosen release), and `app/updates/package-managed` (AUR, Omarchy, and pacman installs). -- Code: [`src/services/update_check.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_check.rs) -- Tests: [`src/services/update_check/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_check/tests.rs), [`src/ui/settings/tests/updates.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/settings/tests/updates.rs) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) +- Code: [`src/services/update_check.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_check.rs), [`src/ui/settings/update_status.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/update_status.rs) +- Tests: [`src/services/update_check/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_check/tests.rs), [`src/ui/settings/tests/updates.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/tests/updates.rs) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) - Related: [Sidebar](../features/browser/sidebar/index.md) - Children: [In-place update install](../features/app/updates/install.md), [Package-managed installs](../features/app/updates/package-managed.md), [Release channels](../features/app/updates/release-channels.md), [Install a specific release](../features/app/updates/release-picker.md) ### [In-place update install](../features/app/updates/install.md) `app/updates/install` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#24](https://github.com/lgse/strata/issues/24), pr [lgse/strata#26](https://github.com/lgse/strata/issues/26) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#24](https://github.com/lgse/strata/issues/24), pr [lgse/strata#26](https://github.com/lgse/strata/issues/26) Downloading a release, authenticating it against a signed manifest, replacing the running executable, and restarting into it. Applies only to self-managed installs such as `~/.local/bin/strata`; package-managed installs defer to their package manager. -- Code: [`src/services/update_install.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install.rs), [`src/services/update_install/**`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install), [`data/update-keys.json`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/update-keys.json), [`scripts/sign_update_manifest.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/sign_update_manifest.py) -- Tests: [`src/services/update_install/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install/tests.rs), [`src/services/update_install/review_tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install/review_tests.rs), [`src/services/update_install/archive/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install/archive/tests.rs), [`src/services/update_install/command/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install/command/tests.rs), [`src/services/update_install/download/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install/download/tests.rs), [`src/services/update_install/manifest/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/update_install/manifest/tests.rs), [`src/ui/settings/tests/update_dialog.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/settings/tests/update_dialog.rs), [`scripts/test_sign_update_manifest.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/test_sign_update_manifest.py), [`tests/fixtures/signed-update`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/fixtures/signed-update) -- Docs: [`site/src/reference/signed-updates.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/signed-updates.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) +- Code: [`src/services/update_install.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install.rs), [`src/services/update_install/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install), [`data/update-keys.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/update-keys.json), [`scripts/sign_update_manifest.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/sign_update_manifest.py) +- Tests: [`src/services/update_install/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install/tests.rs), [`src/services/update_install/review_tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install/review_tests.rs), [`src/services/update_install/archive/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install/archive/tests.rs), [`src/services/update_install/command/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install/command/tests.rs), [`src/services/update_install/download/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install/download/tests.rs), [`src/services/update_install/manifest/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/update_install/manifest/tests.rs), [`src/ui/settings/tests/update_dialog.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/tests/update_dialog.rs), [`scripts/test_sign_update_manifest.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_sign_update_manifest.py), [`tests/fixtures/signed-update`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/signed-update) +- Docs: [`site/src/reference/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/signed-updates.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) (inherited) - Related: [System file chooser](../features/integration/portal-file-chooser/index.md) ### [Package-managed installs](../features/app/updates/package-managed.md) `app/updates/package-managed` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#195](https://github.com/lgse/strata/issues/195), pr [lgse/strata#196](https://github.com/lgse/strata/issues/196) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#195](https://github.com/lgse/strata/issues/195), pr [lgse/strata#196](https://github.com/lgse/strata/issues/196) Update checks and actions for Strata installed by a package manager: the official AUR packages, the Omarchy Package Repository, and other pacman repositories. These installs keep notices and release notes but never replace their own binary. - Code: [`src/services/install_source.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/install_source.rs) - Tests: [`src/services/install_source/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/install_source/tests.rs) -- Docs: [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) +- Docs: [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) - Related: [AUR packages](../features/app/packaging/aur.md), [Open in Terminal](../features/integration/open-with/terminal.md) ### [Release channels](../features/app/updates/release-channels.md) `app/updates/release-channels` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#61](https://github.com/lgse/strata/issues/61), pr [lgse/strata#97](https://github.com/lgse/strata/issues/97) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#61](https://github.com/lgse/strata/issues/61), pr [lgse/strata#97](https://github.com/lgse/strata/issues/97) The Stable, Preview, and Nightly update channels, release ordering, and the Return to stable path off a prerelease build. Stable users never see a prerelease offer. - Code: [`src/services/release_channel.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/release_channel.rs) - Tests: [`src/services/release_channel/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/release_channel/tests.rs) -- Docs: [`docs/releasing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/releasing.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) +- Docs: [`docs/releasing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/releasing.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) ### [Install a specific release](../features/app/updates/release-picker.md) `app/updates/release-picker` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1779](https://github.com/lgse/strata/issues/1779), pr [lgse/strata#1781](https://github.com/lgse/strata/issues/1781) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1779](https://github.com/lgse/strata/issues/1779), pr [lgse/strata#1781](https://github.com/lgse/strata/issues/1781) The "Install a specific release" menu in Settings → Updates. It lists the releases the selected channel offers, older or newer than the installed one. Users roll back after a regression or switch builds. Only in-place installs show it. - Code: [`src/ui/settings/release_picker.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/settings/release_picker.rs) - Tests: [`src/ui/settings/tests/release_picker.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/settings/tests/release_picker.rs) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) - Related: [In-place update install](../features/app/updates/install.md), [Release channels](../features/app/updates/release-channels.md) ### [Window chrome and structure](../features/app/window/index.md) `app/window` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin pr [lgse/strata#580](https://github.com/lgse/strata/issues/580) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#580](https://github.com/lgse/strata/issues/580) The browser window's frame and skeleton: the header with its window buttons, the X11 window identity, and the composition of header, sidebar, panes, preview, and footer. Child: `app/window/key-dispatch` (the capture-phase key and Ctrl+wheel dispatch). Features plugged into the window, such as tabs, the sidebar, and 10xer mode, own their own behavior. -- Code: [`src/ui/window/composition.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition.rs), [`src/ui/window/composition/layout.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/layout.rs), [`src/ui/decoration.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/decoration.rs) -- Tests: [`src/ui/decoration/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/decoration/tests.rs) -- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) +- Code: [`src/ui/window/composition.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition.rs), [`src/ui/window/composition/layout.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/layout.rs), [`src/ui/decoration.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/decoration.rs) +- Tests: [`src/ui/decoration/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/decoration/tests.rs) +- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) - Related: [Browser tabs](../features/browser/tabs/index.md), [Sidebar](../features/browser/sidebar/index.md), [Settings window and general preferences](../features/settings/preferences/index.md), [10xer mode](../features/integration/10xer-mode/index.md), [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md), [Packaging and installation](../features/app/packaging/index.md), [Modal dialogs](../features/app/dialogs.md), [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md), [Preview panel](../features/preview/preview-panel/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Sidebar collapse and icon rail](../features/browser/sidebar/rail.md) - Children: [Window key and wheel dispatch](../features/app/window/key-dispatch.md) ### [Window key and wheel dispatch](../features/app/window/key-dispatch.md) `app/window/key-dispatch` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin pr [lgse/strata#544](https://github.com/lgse/strata/issues/544) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#544](https://github.com/lgse/strata/issues/544) The capture-phase key controller and Ctrl+wheel controller each browser window installs. The key dispatcher runs ordered stages that decide whether a dialog, menu, text field, prompt, or browser command gets a key. The wheel controller turns Ctrl+wheel into text-size steps and Ctrl+Shift+wheel into Icons thumbnail steps. The commands each stage runs belong to their own features. -- Code: [`src/ui/window/keyboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard.rs), [`src/ui/window/keyboard/commands.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard/commands.rs) -- Tests: [`src/ui/window/tests/keyboard_dispatch.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch.rs), [`tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl) -- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/ui/window/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard.rs), [`src/ui/window/keyboard/commands.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/commands.rs) +- Tests: [`src/ui/window/tests/keyboard_dispatch.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch.rs), [`tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl) +- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md), [Modal dialogs](../features/app/dialogs.md), [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md), [Text size](../features/browser/view-modes/text-size.md), [Thumbnail size shortcuts](../features/browser/view-modes/thumbnail-size.md), [10xer mode](../features/integration/10xer-mode/index.md), [Preview panel](../features/preview/preview-panel/index.md), [Sidebar](../features/browser/sidebar/index.md) ## browser ### [Context menus](../features/browser/context-menu.md) `browser/context-menu` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#303](https://github.com/lgse/strata/issues/303), pr [lgse/strata#306](https://github.com/lgse/strata/issues/306) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#303](https://github.com/lgse/strata/issues/303), pr [lgse/strata#306](https://github.com/lgse/strata/issues/306) The item and background context menus in Columns, Icons, and List. This node covers opening them by pointer and keyboard, navigation, grouping, placement, and styling. The actions inside them belong to their own features. -- Code: [`src/ui/browser/context_menu.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu.rs), [`src/ui/browser/context_menu/actions.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu/actions.rs), [`src/ui/browser/context_menu/commands.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu/commands.rs), [`src/ui/browser/context_menu/keyboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu/keyboard.rs), [`src/ui/browser/context_menu/presentation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu/presentation.rs) -- Tests: [`src/ui/browser/context_menu/tests/menus.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu/tests/menus.rs), [`src/ui/window/tests/keyboard_dispatch/context_menus.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/context_menus.rs), [`src/ui/browser/context_menu/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu/tests.rs), [`src/ui/browser/context_menu/tests/open_with.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/context_menu/tests/open_with.rs), [`tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl), [`tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl), [`tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) +- Code: [`src/ui/browser/context_menu.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu.rs), [`src/ui/browser/context_menu/actions.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu/actions.rs), [`src/ui/browser/context_menu/commands.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu/commands.rs), [`src/ui/browser/context_menu/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu/keyboard.rs), [`src/ui/browser/context_menu/presentation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu/presentation.rs) +- Tests: [`src/ui/browser/context_menu/tests/menus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu/tests/menus.rs), [`src/ui/window/tests/keyboard_dispatch/context_menus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/context_menus.rs), [`src/ui/browser/context_menu/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu/tests.rs), [`src/ui/browser/context_menu/tests/open_with.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/context_menu/tests/open_with.rs), [`tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl), [`tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl), [`tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) - Related: [Selection](../features/browser/selection/index.md), [Pane filter](../features/browser/search/filter/index.md), [Browser tabs](../features/browser/tabs/index.md), [Custom actions](../features/integration/custom-actions.md), [Send to removable devices](../features/operations/clipboard/send-to.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Accessibility](../features/app/accessibility.md), [Recent](../features/browser/navigation/recent.md), [Opening files and Open With](../features/integration/open-with/index.md), [Open in Terminal](../features/integration/open-with/terminal.md), [Trash](../features/operations/trash/index.md), [Restore from Trash](../features/operations/trash/restore.md), [Permanent deletion](../features/operations/delete/index.md) ### [Directory loading and monitoring](../features/browser/directory-monitoring/index.md) `browser/directory-monitoring` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#137](https://github.com/lgse/strata/issues/137), pr [lgse/strata#154](https://github.com/lgse/strata/issues/154) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#137](https://github.com/lgse/strata/issues/137), pr [lgse/strata#154](https://github.com/lgse/strata/issues/154) How an open folder's listing is loaded, published to the view, and kept in step with the filesystem. Covers bounded loads, live updates from file monitors, F5, and the pane Refresh button. It also covers mounts that stop answering and how Strata's own file operations reach the listing. Child: `browser/directory-monitoring/network-checks` (checks of folders that other computers change). -- Code: [`src/app/browser/loading.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/loading.rs), [`src/app/browser/loading/metadata.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/loading/metadata.rs), [`src/app/browser/directory_changes.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/directory_changes.rs), [`src/app/browser/publication.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/publication.rs), [`src/app/browser/deferred.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/deferred.rs), [`src/app/browser/operation_updates.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/operation_updates.rs), [`src/app/browser/operation_events.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/operation_events.rs), [`src/adapters/local_files/monitors.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_files/monitors.rs) -- Tests: [`src/app/browser/loading/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/loading/tests.rs), [`src/app/browser/loading/metadata/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/loading/metadata/tests.rs), [`src/app/browser/directory_changes/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/directory_changes/tests.rs), [`src/app/browser/publication/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/publication/tests.rs), [`src/app/browser/deferred/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/deferred/tests.rs), [`src/app/browser/operation_updates/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/operation_updates/tests.rs), [`src/app/browser/tests/monitor.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/monitor.rs), [`src/app/browser/tests/staging.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/staging.rs), [`src/app/browser/tests/relocation.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/relocation.rs), [`src/app/browser/tests/operations.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/operations.rs), [`src/app/browser/tests/metadata.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/metadata.rs), [`tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl), [`tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl) -- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/performance-baseline.md), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/filesystem-compatibility.md) +- Code: [`src/app/browser/loading.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/loading.rs), [`src/app/browser/loading/metadata.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/loading/metadata.rs), [`src/app/browser/directory_changes.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/directory_changes.rs), [`src/app/browser/publication.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/publication.rs), [`src/app/browser/deferred.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/deferred.rs), [`src/app/browser/operation_updates.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/operation_updates.rs), [`src/app/browser/operation_events.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/operation_events.rs), [`src/adapters/local_files/monitors.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_files/monitors.rs) +- Tests: [`src/app/browser/loading/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/loading/tests.rs), [`src/app/browser/loading/metadata/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/loading/metadata/tests.rs), [`src/app/browser/directory_changes/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/directory_changes/tests.rs), [`src/app/browser/publication/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/publication/tests.rs), [`src/app/browser/deferred/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/deferred/tests.rs), [`src/app/browser/operation_updates/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/operation_updates/tests.rs), [`src/app/browser/tests/monitor.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/monitor.rs), [`src/app/browser/tests/staging.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/staging.rs), [`src/app/browser/tests/relocation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/relocation.rs), [`src/app/browser/tests/operations.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/operations.rs), [`src/app/browser/tests/metadata.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/metadata.rs), [`tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl), [`tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl) +- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/filesystem-compatibility.md) - Related: [Selection](../features/browser/selection/index.md), [View modes](../features/browser/view-modes/index.md), [Position restore on return and refresh](../features/browser/view-modes/position-restore.md), [Operation progress and cancellation](../features/operations/progress/index.md), [Trash](../features/operations/trash/index.md), [Recent](../features/browser/navigation/recent.md), [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md), [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md) - Children: [Network folder change checks](../features/browser/directory-monitoring/network-checks.md) ### [Network folder change checks](../features/browser/directory-monitoring/network-checks.md) `browser/directory-monitoring/network-checks` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1729](https://github.com/lgse/strata/issues/1729) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1729](https://github.com/lgse/strata/issues/1729) Periodic checks of shown folders on mounts that other computers or programs change, where file monitors report nothing. A check re-reads the folder's change stamp and re-lists the folder when it moved. The **Watch network folders** setting turns the checks of network folders on or off. -- Code: [`src/app/browser/freshness.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/freshness.rs), [`src/ui/presence.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/presence.rs) -- Tests: [`src/app/browser/freshness/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/freshness/tests.rs), [`src/ui/presence/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/presence/tests.rs) -- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/performance-baseline.md) (inherited), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/filesystem-compatibility.md) (inherited) +- Code: [`src/app/browser/freshness.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/freshness.rs), [`src/ui/presence.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/presence.rs) +- Tests: [`src/app/browser/freshness/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/freshness/tests.rs), [`src/ui/presence/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/presence/tests.rs) +- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md) (inherited), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/filesystem-compatibility.md) (inherited) - Related: [Settings window and general preferences](../features/settings/preferences/index.md), [View modes](../features/browser/view-modes/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) ### [Folder and file customization](../features/browser/folder-customization.md) `browser/folder-customization` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#211](https://github.com/lgse/strata/issues/211), pr [lgse/strata#294](https://github.com/lgse/strata/issues/294) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#211](https://github.com/lgse/strata/issues/211), pr [lgse/strata#294](https://github.com/lgse/strata/issues/294) Per-item colors and icons for local folders and files, chosen in the Customize dialog and saved in `settings.toml`. Customized icons replace the default icon wherever Strata draws that path. Sidebar rows and their Customize… action belong to `browser/sidebar`. @@ -231,19 +231,29 @@ Per-item colors and icons for local folders and files, chosen in the Customize d ### [Navigation](../features/browser/navigation/index.md) `browser/navigation` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 2 PRs since · origin issue [lgse/strata#70](https://github.com/lgse/strata/issues/70), pr [lgse/strata#118](https://github.com/lgse/strata/issues/118) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#70](https://github.com/lgse/strata/issues/70), pr [lgse/strata#118](https://github.com/lgse/strata/issues/118) -Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), `browser/navigation/startup-arguments` (locations passed on the command line), and `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. +Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), `browser/navigation/startup-arguments` (locations passed on the command line), `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders), and `browser/navigation/administrator-access` (opening unreadable local folders through `admin://`). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. -- Code: [`src/ui/window/composition/input.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/input.rs) -- Tests: [`src/app/browser/tests/navigation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/tests/navigation.rs), [`tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) +- Code: [`src/ui/window/composition/input.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/input.rs) +- Tests: [`src/app/browser/tests/navigation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/navigation.rs), [`tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) - Related: [Browser tabs](../features/browser/tabs/index.md), [View modes](../features/browser/view-modes/index.md), [Position restore on return and refresh](../features/browser/view-modes/position-restore.md), [10xer mode](../features/integration/10xer-mode/index.md) -- Children: [Folder jump](../features/browser/navigation/folder-jump.md), [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [Recent](../features/browser/navigation/recent.md), [Startup location arguments](../features/browser/navigation/startup-arguments.md) +- Children: [Administrator access](../features/browser/navigation/administrator-access.md), [Folder jump](../features/browser/navigation/folder-jump.md), [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [Recent](../features/browser/navigation/recent.md), [Startup location arguments](../features/browser/navigation/startup-arguments.md) + +### [Administrator access](../features/browser/navigation/administrator-access.md) `browser/navigation/administrator-access` + +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1836](https://github.com/lgse/strata/issues/1836), pr [lgse/strata#1837](https://github.com/lgse/strata/issues/1837) + +Opening local folders the user can't read or enter through GVfs's `admin://` backend, after a polkit prompt, as GNOME Files does. It covers marking such folders, redirecting opens to `admin://`, offering Open as Administrator on permission errors, and silent refusals. Strata itself never runs as root. + +- Tests: [`src/app/browser/tests/administrator.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/administrator.rs) +- Docs: [`docs/administrator-access.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/administrator-access.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) +- Related: [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [Thumbnails](../features/browser/thumbnails/index.md), [Context menus](../features/browser/context-menu.md), [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md), [Tab session restore](../features/browser/tabs/session-restore.md), [Trash](../features/operations/trash/index.md), [Undo and redo](../features/operations/undo.md), [Paste name conflicts](../features/operations/clipboard/conflicts.md), [Opening files and Open With](../features/integration/open-with/index.md), [Accessibility](../features/app/accessibility.md) ### [Folder jump](../features/browser/navigation/folder-jump.md) `browser/navigation/folder-jump` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#276](https://github.com/lgse/strata/issues/276), pr [lgse/strata#959](https://github.com/lgse/strata/issues/959) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#276](https://github.com/lgse/strata/issues/276), pr [lgse/strata#959](https://github.com/lgse/strata/issues/959) A keyboard palette, Ctrl+Shift+K, that reopens folders previously visited in Strata, ranked by how often and how recently each was opened. Strata learns the list from browsing, separately from pinned folders. The palette dialog, its keys and empty states, and visit recording are in `browser/search`, whose code carries them. @@ -254,29 +264,29 @@ A keyboard palette, Ctrl+Shift+K, that reopens folders previously visited in Str ### [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md) `browser/navigation/location-bar` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#149](https://github.com/lgse/strata/issues/149), pr [lgse/strata#242](https://github.com/lgse/strata/issues/242) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#149](https://github.com/lgse/strata/issues/149), pr [lgse/strata#242](https://github.com/lgse/strata/issues/242) The header control that shows the active location as breadcrumbs and switches to a text entry for typing a path or URI. It covers path parsing, revealing a typed file, and the breadcrumb hierarchy menu. Child: `browser/navigation/location-bar/completion` (the folder suggestions under the entry). -- Tests: [`src/app/browser/tests/location_input.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/tests/location_input.rs), [`tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl), [`tests/qa/scenarios/locations/named-location-controls.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/named-location-controls.jsonl), [`tests/qa/scenarios/locations/typed-path-navigates.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/typed-path-navigates.jsonl), [`tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl), [`tests/qa/mutations/location-entry.patch`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations/location-entry.patch) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) +- Tests: [`src/app/browser/tests/location_input.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/location_input.rs), [`tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl), [`tests/qa/scenarios/locations/named-location-controls.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/named-location-controls.jsonl), [`tests/qa/scenarios/locations/typed-path-navigates.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/typed-path-navigates.jsonl), [`tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl), [`tests/qa/mutations/location-entry.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/location-entry.patch) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Remote locations and file providers](../features/remote/file-providers/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [10xer mode](../features/integration/10xer-mode/index.md), [Drag and drop](../features/operations/drag-and-drop/index.md), [Accessibility](../features/app/accessibility.md), [Quick preview](../features/preview/quick-preview/index.md) - Children: [Location path completion](../features/browser/navigation/location-bar/completion.md) ### [Location path completion](../features/browser/navigation/location-bar/completion.md) `browser/navigation/location-bar/completion` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin pr [lgse/strata#388](https://github.com/lgse/strata/issues/388) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#388](https://github.com/lgse/strata/issues/388) The folder suggestions shown under the location entry while a path is typed. They are picked with the keyboard and completed with Tab, and a worker lists them so a slow mount does not block typing. -- Code: [`src/ui/browser/location/completion.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/location/completion.rs) -- Tests: [`src/ui/browser/location/completion/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/location/completion/tests.rs) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/ui/browser/location/completion.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/location/completion.rs) +- Tests: [`src/ui/browser/location/completion/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/location/completion/tests.rs) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) ### [Recent](../features/browser/navigation/recent.md) `browser/navigation/recent` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1082](https://github.com/lgse/strata/issues/1082), pr [lgse/strata#1083](https://github.com/lgse/strata/issues/1083) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1082](https://github.com/lgse/strata/issues/1082), pr [lgse/strata#1083](https://github.com/lgse/strata/issues/1083) The `recent:///` collection of recently used files, read from the desktop's GTK and GIO recent-file history. It is a browsable location whose rows act on the real files, opened from the sidebar Recent place or the location bar. Which menu items Recent shows belongs to `browser/context-menu`, and its sort menu to `browser/view-modes/sorting`. @@ -286,7 +296,7 @@ The `recent:///` collection of recently used files, read from the desktop's GTK ### [Startup location arguments](../features/browser/navigation/startup-arguments.md) `browser/navigation/startup-arguments` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#649](https://github.com/lgse/strata/issues/649), pr [lgse/strata#673](https://github.com/lgse/strata/issues/673) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#649](https://github.com/lgse/strata/issues/649), pr [lgse/strata#673](https://github.com/lgse/strata/issues/673) Opening the paths and URIs given to `strata` on the command line, for example from a terminal, `xdg-open`, or a launcher's `Exec=strata %U`. Folders open directly and files open in their parent with the file selected. @@ -297,29 +307,29 @@ Opening the paths and URIs given to `strata` on the command line, for example fr ### [Properties dialog](../features/browser/properties/index.md) `browser/properties` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#71](https://github.com/lgse/strata/issues/71), pr [lgse/strata#243](https://github.com/lgse/strata/issues/243) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#71](https://github.com/lgse/strata/issues/71), pr [lgse/strata#243](https://github.com/lgse/strata/issues/243) The modal Properties dialog for one file, one folder, or the current folder: location, size, modification date, default application, hidden and pinned state, editable permissions, and Open, Rename, Pin, and Copy path actions. Children: `browser/properties/size` (folder and selection sizes and counts), `browser/properties/media` (audio, video, and image details), and `browser/properties/raw-metadata` (camera RAW details). -- Code: [`src/ui/browser/properties.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/properties.rs) -- Tests: [`tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl), [`tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl) +- Code: [`src/ui/browser/properties.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/properties.rs) +- Tests: [`tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl), [`tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl) - Related: [Sidebar](../features/browser/sidebar/index.md), [Inline rename](../features/operations/rename.md), [Opening files and Open With](../features/integration/open-with/index.md), [Modified date format](../features/settings/preferences/date-format.md) - Children: [Media details in Properties](../features/browser/properties/media.md), [RAW photo details](../features/browser/properties/raw-metadata.md), [Folder and selection size](../features/browser/properties/size.md) ### [Media details in Properties](../features/browser/properties/media.md) `browser/properties/media` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#979](https://github.com/lgse/strata/issues/979), pr [lgse/strata#984](https://github.com/lgse/strata/issues/984) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#979](https://github.com/lgse/strata/issues/979), pr [lgse/strata#984](https://github.com/lgse/strata/issues/984) Source-media details for a single local image, audio, or video file in Properties: resolution, duration, bitrate, codecs, frame rate, sample rate, channels, HDR format, subtitles, and chapters. Camera RAW files get `browser/properties/raw-metadata` instead. -- Code: [`src/ui/browser/properties/media.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/properties/media.rs), [`src/sandbox/metadata.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox/metadata.rs) -- Tests: [`src/ui/browser/properties/media/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/properties/media/tests.rs), [`src/sandbox/metadata/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox/metadata/tests.rs), [`tests/qa/scenarios/properties_media/media-details-properties-only.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/properties_media/media-details-properties-only.jsonl) -- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) +- Code: [`src/ui/browser/properties/media.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/properties/media.rs), [`src/sandbox/metadata.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox/metadata.rs) +- Tests: [`src/ui/browser/properties/media/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/properties/media/tests.rs), [`src/sandbox/metadata/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox/metadata/tests.rs), [`tests/qa/scenarios/properties_media/media-details-properties-only.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/properties_media/media-details-properties-only.jsonl) +- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) - Related: [Preview panel](../features/preview/preview-panel/index.md) ### [RAW photo details](../features/browser/properties/raw-metadata.md) `browser/properties/raw-metadata` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1168](https://github.com/lgse/strata/issues/1168), pr [lgse/strata#1171](https://github.com/lgse/strata/issues/1171) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1168](https://github.com/lgse/strata/issues/1168), pr [lgse/strata#1171](https://github.com/lgse/strata/issues/1171) Capture details for camera RAW files, shown in Properties and in the preview panel: dimensions, camera, lens, focal length, shutter speed, ISO, and GPS coordinates. @@ -330,7 +340,7 @@ Capture details for camera RAW files, shown in Properties and in the preview pan ### [Folder and selection size](../features/browser/properties/size.md) `browser/properties/size` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#556](https://github.com/lgse/strata/issues/556), pr [lgse/strata#558](https://github.com/lgse/strata/issues/558) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#556](https://github.com/lgse/strata/issues/556), pr [lgse/strata#558](https://github.com/lgse/strata/issues/558) The SIZE and CONTAINS rows of Properties: a recursive, bounded, cancellable measurement of a folder, of Trash, or of a multi-item selection. The same walker measures Trash for Empty Trash. @@ -340,7 +350,7 @@ The SIZE and CONTAINS rows of Properties: a recursive, bounded, cancellable meas ### [Scrolling](../features/browser/scrolling.md) `browser/scrolling` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#293](https://github.com/lgse/strata/issues/293), pr [lgse/strata#311](https://github.com/lgse/strata/issues/311) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#293](https://github.com/lgse/strata/issues/293), pr [lgse/strata#311](https://github.com/lgse/strata/issues/311) Fast ways through long listings in Columns, Icons, and List: middle-click autoscroll, Page Up/Down paging, and Ctrl+Up/Down or Home/End jumps to either end. Also covers the app's overlay scrollbars and how wheel and touchpad events reach the right scroller. @@ -350,13 +360,13 @@ Fast ways through long listings in Columns, Icons, and List: middle-click autosc ### [Search](../features/browser/search/index.md) `browser/search` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin pr [lgse/strata#222](https://github.com/lgse/strata/issues/222) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#222](https://github.com/lgse/strata/issues/222) Ctrl+K global search finds files and folders across Home and mounted local drives, from any folder. It matches by fuzzy name or path, or by every term of a multi-word query. It runs on a bounded in-memory index built by the same service as the pane filter. Children: `browser/search/filter` (the Ctrl+F pane filter) and `browser/search/exclusions` (user-defined global search exclusions). -- Code: [`src/services/search.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search.rs), [`src/ui/search.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/search.rs), [`src/ui/window/composition/search.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/search.rs) -- Tests: [`src/services/search/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/tests.rs), [`src/services/search/tests/multi_root.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/tests/multi_root.rs), [`src/services/search/tests/performance.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/tests/performance.rs), [`src/services/search/tests/refresh.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/tests/refresh.rs), [`src/ui/search/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/search/tests.rs), [`tests/qa/scenarios/search_filter_sort/global-search-*`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) +- Code: [`src/services/search.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search.rs), [`src/ui/search.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/search.rs), [`src/ui/window/composition/search.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/search.rs) +- Tests: [`src/services/search/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/tests.rs), [`src/services/search/tests/multi_root.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/tests/multi_root.rs), [`src/services/search/tests/performance.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/tests/performance.rs), [`src/services/search/tests/refresh.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/tests/refresh.rs), [`src/ui/search/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/search/tests.rs), [`tests/qa/scenarios/search_filter_sort/global-search-*`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) - Related: [Folder jump](../features/browser/navigation/folder-jump.md), [Devices and volumes](../features/devices/volumes/index.md), [10xer mode](../features/integration/10xer-mode/index.md), [Settings window and general preferences](../features/settings/preferences/index.md) - Children: [Global search exclusions](../features/browser/search/exclusions.md), [Pane filter](../features/browser/search/filter/index.md) @@ -373,19 +383,19 @@ User-defined folder names and directory paths that Ctrl+K global search skips wh ### [Pane filter](../features/browser/search/filter/index.md) `browser/search/filter` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#277](https://github.com/lgse/strata/issues/277), pr [lgse/strata#275](https://github.com/lgse/strata/issues/275) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#277](https://github.com/lgse/strata/issues/277), pr [lgse/strata#275](https://github.com/lgse/strata/issues/275) The Ctrl+F filter narrows the focused pane by filename, in the current folder and, by default, its subfolders. It works in Columns, Icons, and List, and its results support the normal item actions. Child: `browser/search/filter/enter-target` (the outlined result Enter opens). -- Code: [`src/ui/inline_search.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/inline_search.rs), [`src/ui/inline_search/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/inline_search), [`src/ui/browser/collection.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/collection.rs), [`src/ui/search_session.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/search_session.rs), [`src/ui/browser/columns/search.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/columns/search.rs), [`src/services/search/directory.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/directory.rs), [`src/services/search/pattern.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/pattern.rs) -- Tests: [`src/ui/search_session/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/search_session/tests.rs), [`src/ui/browser/collection/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/collection/tests.rs), [`src/services/search/directory/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/directory/tests.rs), [`src/services/search/pattern/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/pattern/tests.rs), [`src/services/search/tests/scope.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/search/tests/scope.rs), [`src/ui/window/tests/keyboard_dispatch/filter_focus.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/filter_focus.rs), [`tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl), [`tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl), [`tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl), [`tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl), [`tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl), [`tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl), [`tests/qa/scenarios/filter_results/space-completes-composition.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/space-completes-composition.jsonl), [`tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl), [`tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl), [`tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl), [`tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl), [`tests/qa/mutations/filter-results.patch`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations/filter-results.patch) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited) +- Code: [`src/ui/inline_search.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/inline_search.rs), [`src/ui/inline_search/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/inline_search), [`src/ui/browser/collection.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/collection.rs), [`src/ui/search_session.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/search_session.rs), [`src/ui/browser/columns/search.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/columns/search.rs), [`src/services/search/directory.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/directory.rs), [`src/services/search/pattern.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/pattern.rs) +- Tests: [`src/ui/search_session/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/search_session/tests.rs), [`src/ui/browser/collection/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/collection/tests.rs), [`src/services/search/directory/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/directory/tests.rs), [`src/services/search/pattern/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/pattern/tests.rs), [`src/services/search/tests/scope.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/search/tests/scope.rs), [`src/ui/window/tests/keyboard_dispatch/filter_focus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/filter_focus.rs), [`tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl), [`tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl), [`tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl), [`tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl), [`tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl), [`tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl), [`tests/qa/scenarios/filter_results/space-completes-composition.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/space-completes-composition.jsonl), [`tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl), [`tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl), [`tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl), [`tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl), [`tests/qa/mutations/filter-results.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/filter-results.patch) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) - Related: [10xer mode](../features/integration/10xer-mode/index.md), [Context menus](../features/browser/context-menu.md), [View modes](../features/browser/view-modes/index.md), [Quick preview](../features/preview/quick-preview/index.md), [Thumbnails](../features/browser/thumbnails/index.md), [Columns view](../features/browser/view-modes/columns.md), [10xer find, filter, and search](../features/integration/10xer-mode/search.md) - Children: [Filter Enter target](../features/browser/search/filter/enter-target.md) ### [Filter Enter target](../features/browser/search/filter/enter-target.md) `browser/search/filter/enter-target` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1643](https://github.com/lgse/strata/issues/1643), pr [lgse/strata#1822](https://github.com/lgse/strata/issues/1822) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1643](https://github.com/lgse/strata/issues/1643), pr [lgse/strata#1822](https://github.com/lgse/strata/issues/1822) While the Ctrl+F filter field has focus, the result Enter would open is outlined and kept in view. Picking another result moves Enter to the pick until the query changes. It serves Columns, Icons, and List, search results and the in-place filter. @@ -396,7 +406,7 @@ While the Ctrl+F filter field has focus, the result Enter would open is outlined ### [Selection](../features/browser/selection/index.md) `browser/selection` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 1 PRs since · origin issue [lgse/strata#521](https://github.com/lgse/strata/issues/521), pr [lgse/strata#526](https://github.com/lgse/strata/issues/526) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · ? PRs since · origin issue [lgse/strata#521](https://github.com/lgse/strata/issues/521), pr [lgse/strata#526](https://github.com/lgse/strata/issues/526) Which entries are selected in Columns, Icons, and List, and how clicks, modifier clicks, Shift keys, Escape, and empty-space clicks change that. Also covers what a middle click on a row opens. Children: `browser/selection/marquee` (rubber-band selection), `browser/selection/pointer-intent` (press-and-drag routing), `browser/selection/click-modes` (single- or double-click opening), and `browser/selection/keyboard-navigation` (arrow focus movement). Columns-specific empty-space clicks belong to `browser/view-modes/columns`. @@ -408,7 +418,7 @@ Which entries are selected in Columns, Icons, and List, and how clicks, modifier ### [Click modes](../features/browser/selection/click-modes.md) `browser/selection/click-modes` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#213](https://github.com/lgse/strata/issues/213), pr [lgse/strata#220](https://github.com/lgse/strata/issues/220) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#213](https://github.com/lgse/strata/issues/213), pr [lgse/strata#220](https://github.com/lgse/strata/issues/220) Whether one or two clicks open a file or a folder, set separately for files and folders in each of Columns, Icons, and List. Also covers which entry is selected after a folder opens by pointer or keyboard. @@ -418,18 +428,18 @@ Whether one or two clicks open a file or a folder, set separately for files and ### [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md) `browser/selection/keyboard-navigation` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#291](https://github.com/lgse/strata/issues/291), pr [lgse/strata#358](https://github.com/lgse/strata/issues/358) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#291](https://github.com/lgse/strata/issues/291), pr [lgse/strata#358](https://github.com/lgse/strata/issues/358) Moving keyboard focus with plain arrows and `h`/`j`/`k`/`l` through the file list, pane header, sidebar, and top bar in the default key map, and between controls in modal dialogs. Arrows move between interface regions rather than changing directories. Also covers the keyboard cursor outline and when a listing may take focus. -- Code: [`src/ui/focus_navigation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/focus_navigation.rs), [`src/ui/top_bar_navigation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/top_bar_navigation.rs), [`src/ui/window/keyboard/focus.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard/focus.rs), [`src/ui/browser/tab_stops.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/tab_stops.rs) -- Tests: [`src/ui/focus_navigation/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/focus_navigation/tests.rs), [`src/ui/top_bar_navigation/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/top_bar_navigation/tests.rs), [`src/ui/window/tests/keyboard_policy.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_policy.rs), [`src/ui/window/tests/keyboard_dispatch/pane_focus.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/pane_focus.rs), [`tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl), [`tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl), [`tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl), [`tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl), [`tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl), [`tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl), [`tests/qa/mutations/keyboard-navigation.patch`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations/keyboard-navigation.patch) -- Docs: [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-navigation.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/ui/focus_navigation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/focus_navigation.rs), [`src/ui/top_bar_navigation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/top_bar_navigation.rs), [`src/ui/window/keyboard/focus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/focus.rs), [`src/ui/browser/tab_stops.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/tab_stops.rs) +- Tests: [`src/ui/focus_navigation/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/focus_navigation/tests.rs), [`src/ui/top_bar_navigation/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/top_bar_navigation/tests.rs), [`src/ui/window/tests/keyboard_policy.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_policy.rs), [`src/ui/window/tests/keyboard_dispatch/pane_focus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/pane_focus.rs), [`tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl), [`tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl), [`tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl), [`tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl), [`tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl), [`tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl), [`tests/qa/mutations/keyboard-navigation.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/keyboard-navigation.patch) +- Docs: [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Sidebar](../features/browser/sidebar/index.md), [Navigation](../features/browser/navigation/index.md), [10xer mode](../features/integration/10xer-mode/index.md), [Modal dialogs](../features/app/dialogs.md), [Custom actions](../features/integration/custom-actions.md), [Browser tabs](../features/browser/tabs/index.md), [Progress dock](../features/operations/progress/dock.md), [System file chooser](../features/integration/portal-file-chooser/index.md) ### [Marquee selection](../features/browser/selection/marquee.md) `browser/selection/marquee` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#189](https://github.com/lgse/strata/issues/189), pr [lgse/strata#203](https://github.com/lgse/strata/issues/203) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#189](https://github.com/lgse/strata/issues/189), pr [lgse/strata#203](https://github.com/lgse/strata/issues/203) Rubber-band selection: dragging from blank space draws a band and selects every entry it crosses, in Columns, Icons, and List. The drag may start in the pane or on inert chrome beside it, and auto-scrolls long listings. @@ -440,7 +450,7 @@ Rubber-band selection: dragging from blank space draws a band and selects every ### [Pointer intent](../features/browser/selection/pointer-intent.md) `browser/selection/pointer-intent` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#517](https://github.com/lgse/strata/issues/517), pr [lgse/strata#522](https://github.com/lgse/strata/issues/522) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#517](https://github.com/lgse/strata/issues/517), pr [lgse/strata#522](https://github.com/lgse/strata/issues/522) How a press on an entry is read in Columns, Icons, and List: as a click, a file drag, or the start of a marquee. Item content and blank row space have separate hit regions, and previews wait for a completed click. @@ -451,19 +461,19 @@ How a press on an entry is read in Columns, Icons, and List: as a click, a file ### [Sidebar](../features/browser/sidebar/index.md) `browser/sidebar` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#104](https://github.com/lgse/strata/issues/104), pr [lgse/strata#106](https://github.com/lgse/strata/issues/106) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#104](https://github.com/lgse/strata/issues/104), pr [lgse/strata#106](https://github.com/lgse/strata/issues/106) The left panel of every browser window and the file chooser: built-in places, the PINNED section, and the DEVICES section. Users reorder and hide places and open them in new tabs. They reach it from the keyboard. Children: `browser/sidebar/pins` (pinned folders in the GTK bookmarks file, with drag-to-pin as its child) and `browser/sidebar/rail` (full, icon rail, or hidden). A third child, `browser/sidebar/connect-to-server`, is the Network row's Connect to server dialog. Which devices DEVICES lists, and when, belongs to `devices/volumes`. -- Code: [`src/ui/window/sidebar.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/sidebar.rs), [`src/ui/window/sidebar_drop_feedback.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/sidebar_drop_feedback.rs), [`src/ui/window/keyboard/sidebar.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard/sidebar.rs) -- Tests: [`src/ui/window/tests/bookmarks.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/bookmarks.rs), [`src/ui/window/tests/sidebar.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/sidebar.rs), [`src/ui/window/sidebar_drop_feedback/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/sidebar_drop_feedback/tests.rs), [`tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl), [`tests/qa/scenarios/locations/sidebar-place-navigates.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/sidebar-place-navigates.jsonl) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) +- Code: [`src/ui/window/sidebar.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/sidebar.rs), [`src/ui/window/sidebar_drop_feedback.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/sidebar_drop_feedback.rs), [`src/ui/window/keyboard/sidebar.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/sidebar.rs) +- Tests: [`src/ui/window/tests/bookmarks.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/bookmarks.rs), [`src/ui/window/tests/sidebar.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/sidebar.rs), [`src/ui/window/sidebar_drop_feedback/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/sidebar_drop_feedback/tests.rs), [`tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl), [`tests/qa/scenarios/locations/sidebar-place-navigates.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/sidebar-place-navigates.jsonl) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) - Related: [Trash](../features/operations/trash/index.md), [Devices and volumes](../features/devices/volumes/index.md), [Drag and drop](../features/operations/drag-and-drop/index.md), [Preview panel](../features/preview/preview-panel/index.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [10xer mode](../features/integration/10xer-mode/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Settings window and general preferences](../features/settings/preferences/index.md), [Updates](../features/app/updates/index.md), [Window chrome and structure](../features/app/window/index.md), [Browser tabs](../features/browser/tabs/index.md) - Children: [Connect to server dialog](../features/browser/sidebar/connect-to-server.md), [Pinned folders](../features/browser/sidebar/pins/index.md), [Sidebar collapse and icon rail](../features/browser/sidebar/rail.md) ### [Connect to server dialog](../features/browser/sidebar/connect-to-server.md) `browser/sidebar/connect-to-server` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1725](https://github.com/lgse/strata/issues/1725), pr [lgse/strata#1726](https://github.com/lgse/strata/issues/1726) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1725](https://github.com/lgse/strata/issues/1725), pr [lgse/strata#1726](https://github.com/lgse/strata/issues/1726) A dialog opened from the sidebar Network row's menu that connects to a share or remote server by address, and optionally pins it to the sidebar. It gives a discoverable route to what typing an `smb://` or `sftp://` URI in the location bar already did. @@ -474,7 +484,7 @@ A dialog opened from the sidebar Network row's menu that connects to a share or ### [Pinned folders](../features/browser/sidebar/pins/index.md) `browser/sidebar/pins` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin pr [lgse/strata#67](https://github.com/lgse/strata/issues/67) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin pr [lgse/strata#67](https://github.com/lgse/strata/issues/67) The PINNED section of the sidebar: folders the user pins. They are stored in GTK's shared bookmarks file, `$XDG_CONFIG_HOME/gtk-3.0/bookmarks`, which Nautilus and GTK file choosers also read. Folders are pinned from the item menu, Properties, or the `p` key. Child: `browser/sidebar/pins/drag-to-pin` (dragging folders into gaps in PINNED). @@ -486,18 +496,18 @@ The PINNED section of the sidebar: folders the user pins. They are stored in GTK ### [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) `browser/sidebar/pins/drag-to-pin` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1690](https://github.com/lgse/strata/issues/1690), pr [lgse/strata#1692](https://github.com/lgse/strata/issues/1692) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1690](https://github.com/lgse/strata/issues/1690), pr [lgse/strata#1692](https://github.com/lgse/strata/issues/1692) Insertion gaps in the sidebar's PINNED section. Dragging folders from Strata or another file manager into a gap pins them there, and dragging a pinned row into a gap moves it. Row bodies stay file-transfer targets. -- Code: [`src/ui/window/pinned_drop.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/window/pinned_drop.rs), [`src/adapters/directory_validation.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/directory_validation.rs) -- Tests: [`src/ui/window/pinned_drop/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/window/pinned_drop/tests.rs), [`src/adapters/directory_validation/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/directory_validation/tests.rs), [`tests/qa/scenarios/sidebar_pinning`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/sidebar_pinning), [`tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/ui/window/pinned_drop.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/pinned_drop.rs), [`src/adapters/directory_validation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/directory_validation.rs) +- Tests: [`src/ui/window/pinned_drop/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/pinned_drop/tests.rs), [`src/adapters/directory_validation/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/directory_validation/tests.rs), [`tests/qa/scenarios/sidebar_pinning/folder-pins-order-and-bookmarks.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/folder-pins-order-and-bookmarks.jsonl), [`tests/qa/scenarios/sidebar_pinning/foreign-folder-drags-validate.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/foreign-folder-drags-validate.jsonl), [`tests/qa/scenarios/sidebar_pinning/pinned-rows-transfer-and-remote-gaps.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/pinned-rows-transfer-and-remote-gaps.jsonl), [`tests/qa/scenarios/sidebar_pinning/spring-loaded-rows-keep-pin-intent.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/spring-loaded-rows-keep-pin-intent.jsonl), [`tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Drag and drop](../features/operations/drag-and-drop/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Sidebar](../features/browser/sidebar/index.md) ### [Sidebar collapse and icon rail](../features/browser/sidebar/rail.md) `browser/sidebar/rail` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1602](https://github.com/lgse/strata/issues/1602), pr [lgse/strata#1606](https://github.com/lgse/strata/issues/1606) +shipped · reviewed · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1602](https://github.com/lgse/strata/issues/1602), pr [lgse/strata#1606](https://github.com/lgse/strata/issues/1606) The header toggle and Ctrl+B that step a browser window's sidebar between full, icon rail, and hidden, and how the rail draws its rows. `app/window` saves the step as `sidebar_expanded` and `sidebar_compact`. When space alone rails the sidebar, `preview/preview-panel/layout` decides. @@ -508,42 +518,42 @@ The header toggle and Ctrl+B that step a browser window's sidebar between full, ### [Browser tabs](../features/browser/tabs/index.md) `browser/tabs` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#108](https://github.com/lgse/strata/issues/108), pr [lgse/strata#1484](https://github.com/lgse/strata/issues/1484) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#108](https://github.com/lgse/strata/issues/108), pr [lgse/strata#1484](https://github.com/lgse/strata/issues/1484) Tabs within one Strata window, each holding its own browsing context. A tab strip, keyboard shortcuts in both key maps, and drag reordering create, switch, close, reopen, and move tabs. The window title follows the active tab. Folders open in a new tab or window from their menu, a middle-click, or Ctrl+Enter and Shift+Enter. Sidebar locations and folder-only drags open new tabs when dropped on the strip or the New tab button. Files dropped on a tab transfer into that tab's directory. Child: `browser/tabs/session-restore` (reopening the previous tabs on a plain launch). -- Code: [`src/ui/window/composition/tabs.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/tabs.rs), [`src/ui/window/composition/tabs/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/tabs), [`src/ui/browser/tab_location.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/tab_location.rs), [`src/app/browser/navigation_lifecycle.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/navigation_lifecycle.rs) -- Tests: [`src/ui/window/composition/tabs/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/tabs/tests.rs), [`src/ui/window/composition/tabs/tests/reopen.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/tabs/tests/reopen.rs), [`src/ui/browser/tab_location/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/tab_location/tests.rs), [`src/ui/window/tests/keyboard_dispatch/open_in_new.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/open_in_new.rs), [`tests/qa/scenarios/tabs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/tabs), [`tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-navigation.md) +- Code: [`src/ui/window/composition/tabs.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/tabs.rs), [`src/ui/window/composition/tabs/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/tabs), [`src/ui/browser/tab_location.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/tab_location.rs), [`src/app/browser/navigation_lifecycle.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/navigation_lifecycle.rs) +- Tests: [`src/ui/window/composition/tabs/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/tabs/tests.rs), [`src/ui/window/composition/tabs/tests/reopen.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/tabs/tests/reopen.rs), [`src/ui/browser/tab_location/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/tab_location/tests.rs), [`src/ui/window/tests/keyboard_dispatch/open_in_new.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/open_in_new.rs), [`tests/qa/scenarios/tabs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/tabs), [`tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md) - Related: [10xer mode](../features/integration/10xer-mode/index.md), [Drag and drop](../features/operations/drag-and-drop/index.md), [Progress dock](../features/operations/progress/dock.md), [Context menus](../features/browser/context-menu.md), [Scrolling](../features/browser/scrolling.md), [Sidebar](../features/browser/sidebar/index.md), [Selection](../features/browser/selection/index.md), [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md), [Startup location arguments](../features/browser/navigation/startup-arguments.md) - Children: [Tab session restore](../features/browser/tabs/session-restore.md) ### [Tab session restore](../features/browser/tabs/session-restore.md) `browser/tabs/session-restore` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1531](https://github.com/lgse/strata/issues/1531), pr [lgse/strata#1532](https://github.com/lgse/strata/issues/1532) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1531](https://github.com/lgse/strata/issues/1531), pr [lgse/strata#1532](https://github.com/lgse/strata/issues/1532) A plain launch reopens the previous session's tab locations in strip order, with the previously active tab selected. It is for users who keep a working set of folders open across restarts. Settings → General → Startup → Restore open tabs turns it off. -- Code: [`src/ui/tabs_session.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/tabs_session.rs) -- Tests: [`src/ui/tabs_session/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/tabs_session/tests.rs) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/10xer-mode.md) (inherited), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/keyboard-navigation.md) (inherited) +- Code: [`src/ui/tabs_session.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/tabs_session.rs) +- Tests: [`src/ui/tabs_session/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/tabs_session/tests.rs) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md) (inherited), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md) (inherited) - Related: [Settings window and general preferences](../features/settings/preferences/index.md), [Preference storage and synchronization](../features/settings/preferences/storage.md), [Startup location arguments](../features/browser/navigation/startup-arguments.md), [FileManager1 D-Bus interface](../features/integration/file-manager-interface/index.md), [udiskie unlock handler](../features/devices/volumes/udiskie-unlock.md) ### [Thumbnails](../features/browser/thumbnails/index.md) `browser/thumbnails` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#41](https://github.com/lgse/strata/issues/41), pr [lgse/strata#43](https://github.com/lgse/strata/issues/43) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#41](https://github.com/lgse/strata/issues/41), pr [lgse/strata#43](https://github.com/lgse/strata/issues/43) Image previews in place of file icons in Columns, List, Icons, folder peeks, and search results. Every decode runs in the sandbox, visible rows first. Children: `browser/thumbnails/cache` (the freedesktop disk cache) and `browser/thumbnails/workers` (the sandbox worker pool and its Thumbnail workers setting). Camera photo thumbnails belong to `devices/volumes/camera`. -- Code: [`src/ui/thumbnail.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail.rs), [`src/ui/thumbnail/viewport.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail/viewport.rs), [`src/ui/thumbnail/slot.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail/slot.rs), [`src/sandbox_helper/appimage.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox_helper/appimage.rs) -- Tests: [`src/ui/thumbnail/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail/tests.rs), [`tests/qa/mutations/stl-thumbnails-live-preference.patch`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/mutations/stl-thumbnails-live-preference.patch), [`src/ui/thumbnail/viewport/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail/viewport/tests.rs), [`src/ui/thumbnail/slot/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail/slot/tests.rs), [`src/sandbox_helper/appimage/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox_helper/appimage/tests.rs) -- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md), [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-sandbox.md) +- Code: [`src/ui/thumbnail.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail.rs), [`src/ui/thumbnail/viewport.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail/viewport.rs), [`src/ui/thumbnail/slot.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail/slot.rs), [`src/sandbox_helper/appimage.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/appimage.rs) +- Tests: [`src/ui/thumbnail/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail/tests.rs), [`tests/qa/mutations/stl-thumbnails-live-preference.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/stl-thumbnails-live-preference.patch), [`src/ui/thumbnail/viewport/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail/viewport/tests.rs), [`src/ui/thumbnail/slot/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail/slot/tests.rs), [`src/sandbox_helper/appimage/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/appimage/tests.rs) +- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md), [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-sandbox.md) - Related: [Trash](../features/operations/trash/index.md), [View modes](../features/browser/view-modes/index.md), [Search](../features/browser/search/index.md), [Camera photos](../features/devices/volumes/camera.md), [RAW photo details](../features/browser/properties/raw-metadata.md), [Preview sandbox](../features/preview/preview-panel/sandbox.md), [G-code thumbnail previews](../features/preview/preview-panel/gcode.md) - Children: [Thumbnail disk cache](../features/browser/thumbnails/cache.md), [Thumbnail workers](../features/browser/thumbnails/workers.md) ### [Thumbnail disk cache](../features/browser/thumbnails/cache.md) `browser/thumbnails/cache` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#273](https://github.com/lgse/strata/issues/273), pr [lgse/strata#274](https://github.com/lgse/strata/issues/274) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#273](https://github.com/lgse/strata/issues/273), pr [lgse/strata#274](https://github.com/lgse/strata/issues/274) Persisting rendered thumbnails in the freedesktop shared cache, `$XDG_CACHE_HOME/thumbnails/large`, and reading them back on later visits. Strata reads entries written by other spec-following applications and treats every cached byte as untrusted. @@ -554,7 +564,7 @@ Persisting rendered thumbnails in the freedesktop shared cache, `$XDG_CACHE_HOME ### [Thumbnail workers](../features/browser/thumbnails/workers.md) `browser/thumbnails/workers` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#516](https://github.com/lgse/strata/issues/516), pr [lgse/strata#1081](https://github.com/lgse/strata/issues/1081) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#516](https://github.com/lgse/strata/issues/516), pr [lgse/strata#1081](https://github.com/lgse/strata/issues/1081) The process-wide pool of reusable sandboxed decoders that renders browser thumbnails and media details, and the Thumbnail workers setting that sizes it. Columns, List, and Icons in every window share the pool. @@ -565,41 +575,41 @@ The process-wide pool of reusable sandboxed decoders that renders browser thumbn ### [View modes](../features/browser/view-modes/index.md) `browser/view-modes` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin pr [lgse/strata#383](https://github.com/lgse/strata/issues/383) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#383](https://github.com/lgse/strata/issues/383) The three presentations of a folder, Columns, Icons, and List, and the Appearance menu and shortcuts that switch between them. Children: `browser/view-modes/columns` (Miller columns), `browser/view-modes/icons` (the thumbnail grid), `browser/view-modes/list` (the table, with its column layout), `browser/view-modes/sorting` (sort fields, order, and persistence), and `browser/view-modes/folder-views` (per-folder sort and thumbnail size). `browser/view-modes/density` covers the Frame and Content density sliders. `browser/view-modes/text-size` covers interface text size, `browser/view-modes/thumbnail-size` the Icons thumbnail size shortcuts, and `browser/view-modes/position-restore` the Icons and List position on return and refresh. -- Code: [`src/ui/browser_modes.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser_modes.rs), [`src/ui/browser_modes/events.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser_modes/events.rs), [`src/ui/browser/presentation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/presentation.rs), [`src/ui/loading_skeleton.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/loading_skeleton.rs), [`src/ui/loading_skeleton/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/loading_skeleton) -- Tests: [`tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl), [`tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl), [`tests/qa/mutations/view-switching.patch`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations/view-switching.patch), [`src/ui/loading_skeleton/delay/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/loading_skeleton/delay/tests.rs), [`src/ui/browser_modes/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser_modes/tests.rs), [`src/ui/browser/presentation/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/presentation/tests.rs) -- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) +- Code: [`src/ui/browser_modes.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser_modes.rs), [`src/ui/browser_modes/events.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser_modes/events.rs), [`src/ui/browser/presentation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/presentation.rs), [`src/ui/loading_skeleton.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/loading_skeleton.rs), [`src/ui/loading_skeleton/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/loading_skeleton) +- Tests: [`tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl), [`tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl), [`tests/qa/mutations/view-switching.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/view-switching.patch), [`src/ui/loading_skeleton/delay/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/loading_skeleton/delay/tests.rs), [`src/ui/browser_modes/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser_modes/tests.rs), [`src/ui/browser/presentation/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/presentation/tests.rs) +- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) - Related: [Search](../features/browser/search/index.md), [Preview panel](../features/preview/preview-panel/index.md), [Frame and content density](../features/browser/view-modes/density.md), [Accessibility](../features/app/accessibility.md), [Inline rename](../features/operations/rename.md), [Pane filter](../features/browser/search/filter/index.md), [Selection](../features/browser/selection/index.md), [Navigation](../features/browser/navigation/index.md), [Empty Trash](../features/operations/trash/empty.md) - Children: [Columns view](../features/browser/view-modes/columns.md), [Frame and content density](../features/browser/view-modes/density.md), [Per-folder sort and thumbnail size](../features/browser/view-modes/folder-views.md), [Icons view](../features/browser/view-modes/icons.md), [List view](../features/browser/view-modes/list/index.md), [Position restore on return and refresh](../features/browser/view-modes/position-restore.md), [Sorting](../features/browser/view-modes/sorting.md), [Text size](../features/browser/view-modes/text-size.md), [Thumbnail size shortcuts](../features/browser/view-modes/thumbnail-size.md) ### [Columns view](../features/browser/view-modes/columns.md) `browser/view-modes/columns` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#140](https://github.com/lgse/strata/issues/140), pr [lgse/strata#171](https://github.com/lgse/strata/issues/171) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#140](https://github.com/lgse/strata/issues/140), pr [lgse/strata#171](https://github.com/lgse/strata/issues/171) Miller columns, the default view: each opened folder appends a column to a horizontally scrolling strip, so the path from the first folder to the current one stays visible. -- Code: [`src/ui/browser/columns.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/columns.rs), [`src/ui/browser/columns/rows.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/columns/rows.rs), [`src/ui/browser/columns/reveal.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/columns/reveal.rs) -- Tests: [`src/ui/browser/columns/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/columns/tests.rs), [`tests/qa/scenarios/column_background`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/column_background), [`tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl), [`tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl) -- Docs: [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preview-panel-layout.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/ui/browser/columns.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/columns.rs), [`src/ui/browser/columns/rows.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/columns/rows.rs), [`src/ui/browser/columns/reveal.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/columns/reveal.rs) +- Tests: [`src/ui/browser/columns/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/columns/tests.rs), [`tests/qa/scenarios/column_background`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/column_background), [`tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl), [`tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl) +- Docs: [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-panel-layout.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Preview panel](../features/preview/preview-panel/index.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [Selection](../features/browser/selection/index.md), [Click modes](../features/browser/selection/click-modes.md), [Inline rename](../features/operations/rename.md), [Settings window and general preferences](../features/settings/preferences/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Pane filter](../features/browser/search/filter/index.md) ### [Frame and content density](../features/browser/view-modes/density.md) `browser/view-modes/density` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1774](https://github.com/lgse/strata/issues/1774), pr [lgse/strata#1776](https://github.com/lgse/strata/issues/1776) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1774](https://github.com/lgse/strata/issues/1774), pr [lgse/strata#1776](https://github.com/lgse/strata/issues/1776) Two spacing settings in the Appearance menu's DENSITY section. Frame is the vertical inset of the window's bars, and Content the spacing of rows and Icons cards. Each is a px slider with Compact and Airy snap points. -- Code: [`src/ui/window/density_slider.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/window/density_slider.rs) -- Tests: [`src/ui/window/tests/appearance_density.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/window/tests/appearance_density.rs) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/ui/window/density_slider.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/density_slider.rs) +- Tests: [`src/ui/window/tests/appearance_density.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/appearance_density.rs) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Themes and appearance](../features/settings/themes/index.md), [Columns view](../features/browser/view-modes/columns.md), [Icons view](../features/browser/view-modes/icons.md), [List view](../features/browser/view-modes/list/index.md), [Sidebar](../features/browser/sidebar/index.md), [Browser tabs](../features/browser/tabs/index.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [Preference storage and synchronization](../features/settings/preferences/storage.md) ### [Per-folder sort and thumbnail size](../features/browser/view-modes/folder-views.md) `browser/view-modes/folder-views` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1563](https://github.com/lgse/strata/issues/1563), pr [lgse/strata#1565](https://github.com/lgse/strata/issues/1565) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1563](https://github.com/lgse/strata/issues/1563), pr [lgse/strata#1565](https://github.com/lgse/strata/issues/1565) Each local folder remembers the sort chosen in it and its Icons thumbnail size, in a state file outside `settings.toml`. Folders without their own values use a default sort and the default size, both set in Settings. With the switch off, `browser/view-modes/sorting` and `browser/view-modes/icons` describe how sorts and sizes set the defaults. @@ -610,7 +620,7 @@ Each local folder remembers the sort chosen in it and its Icons thumbnail size, ### [Icons view](../features/browser/view-modes/icons.md) `browser/view-modes/icons` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#322](https://github.com/lgse/strata/issues/322), pr [lgse/strata#328](https://github.com/lgse/strata/issues/328) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#322](https://github.com/lgse/strata/issues/322), pr [lgse/strata#328](https://github.com/lgse/strata/issues/328) A single-pane grid of thumbnail tiles for the current folder, with a per-tile details line and an adjustable thumbnail size. Per-folder sizes belong to `browser/view-modes/folder-views`. Formerly called Grid. @@ -621,7 +631,7 @@ A single-pane grid of thumbnail tiles for the current folder, with a per-tile de ### [List view](../features/browser/view-modes/list/index.md) `browser/view-modes/list` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#188](https://github.com/lgse/strata/issues/188), pr [lgse/strata#191](https://github.com/lgse/strata/issues/191) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#188](https://github.com/lgse/strata/issues/188), pr [lgse/strata#191](https://github.com/lgse/strata/issues/191) A single-pane table of the current folder with Name, Mode, Size, Type, and Modified columns, sortable headings, and optional file-type groups. Formerly called Explorer. Child: `browser/view-modes/list/column-layout` (column order and visibility). Restoring a folder's position on return or refresh is shared with Icons and belongs to `browser/view-modes/position-restore`. @@ -644,29 +654,29 @@ Choosing which List columns show and in what order, for narrow windows where Mod ### [Position restore on return and refresh](../features/browser/view-modes/position-restore.md) `browser/view-modes/position-restore` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#868](https://github.com/lgse/strata/issues/868), pr [lgse/strata#893](https://github.com/lgse/strata/issues/893) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#868](https://github.com/lgse/strata/issues/868), pr [lgse/strata#893](https://github.com/lgse/strata/issues/893) Icons and List remember each folder's selection, cursor, and scroll position, and restore them on return and through a refresh. It is for users moving through long folders who expect to continue from where they left off. Columns' came-from selection belongs to `browser/view-modes/columns`. -- Code: [`src/ui/browser_modes/navigation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser_modes/navigation.rs) -- Tests: [`src/ui/window/tests/keyboard_dispatch/reload_cursor.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/reload_cursor.rs) -- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/ui/browser_modes/navigation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser_modes/navigation.rs) +- Tests: [`src/ui/window/tests/keyboard_dispatch/reload_cursor.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/reload_cursor.rs) +- Docs: [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Copy, cut, and paste](../features/operations/clipboard/index.md) ### [Sorting](../features/browser/view-modes/sorting.md) `browser/view-modes/sorting` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#40](https://github.com/lgse/strata/issues/40), pr [lgse/strata#44](https://github.com/lgse/strata/issues/44) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#40](https://github.com/lgse/strata/issues/40), pr [lgse/strata#44](https://github.com/lgse/strata/issues/44) Ordering a folder's entries by Name, Size, Modified, or Type, ascending or descending, with folders optionally first, in all three view modes. The default sort is shared and saved; per-folder sorts belong to `browser/view-modes/folder-views`. -- Code: [`src/app/browser/sorting.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/sorting.rs), [`src/services/mime_type.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/mime_type.rs), [`src/ui/browser/pane_header.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/pane_header.rs) -- Tests: [`src/app/browser/sorting/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/sorting/tests.rs), [`src/services/mime_type/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/mime_type/tests.rs), [`tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl), [`tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/app/browser/sorting.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/sorting.rs), [`src/services/mime_type.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/mime_type.rs), [`src/ui/browser/pane_header.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/pane_header.rs) +- Tests: [`src/app/browser/sorting/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/sorting/tests.rs), [`src/services/mime_type/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/mime_type/tests.rs), [`tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl), [`tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Per-folder sort and thumbnail size](../features/browser/view-modes/folder-views.md), [List view](../features/browser/view-modes/list/index.md), [Recent](../features/browser/navigation/recent.md), [Camera photos](../features/devices/volumes/camera.md) ### [Text size](../features/browser/view-modes/text-size.md) `browser/view-modes/text-size` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#155](https://github.com/lgse/strata/issues/155), pr [lgse/strata#252](https://github.com/lgse/strata/issues/252) +shipped · reviewed · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#155](https://github.com/lgse/strata/issues/155), pr [lgse/strata#252](https://github.com/lgse/strata/issues/252) An app-wide interface text size in logical pixels, set in Settings, in the Appearance menu, or with zoom shortcuts. Every window, view, menu, and dialog scales with it. @@ -677,7 +687,7 @@ An app-wide interface text size in logical pixels, set in Settings, in the Appea ### [Thumbnail size shortcuts](../features/browser/view-modes/thumbnail-size.md) `browser/view-modes/thumbnail-size` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1720](https://github.com/lgse/strata/issues/1720), pr [lgse/strata#1721](https://github.com/lgse/strata/issues/1721) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1720](https://github.com/lgse/strata/issues/1720), pr [lgse/strata#1721](https://github.com/lgse/strata/issues/1721) Keyboard and wheel shortcuts that step the Icons thumbnail size along a fixed ladder of sizes, and reset it. They are for users who resize thumbnails more often than the interface text. The slider they move belongs to `browser/view-modes/icons`, and per-folder sizes to `browser/view-modes/folder-views`. @@ -690,7 +700,7 @@ Keyboard and wheel shortcuts that step the Icons thumbnail size along a fixed la ### [Devices and volumes](../features/devices/volumes/index.md) `devices/volumes` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#441](https://github.com/lgse/strata/issues/441), pr [lgse/strata#493](https://github.com/lgse/strata/issues/493) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · ? PRs since · origin issue [lgse/strata#441](https://github.com/lgse/strata/issues/441), pr [lgse/strata#493](https://github.com/lgse/strata/issues/493) Listing the drives, volumes, and mounts that the desktop volume monitor reports under Devices, and mounting them on demand. It also supplies the removable destinations Send to… offers and the drive roots Ctrl+K searches. Children: `devices/volumes/release` (Unmount and Eject), `devices/volumes/encrypted` (Unlock and Lock), `devices/volumes/udiskie-unlock` (udiskie handoff), `devices/volumes/drive-dialogs` (Format, Set label, Properties), and `devices/volumes/camera` (camera Photos view). @@ -701,18 +711,18 @@ Listing the drives, volumes, and mounts that the desktop volume monitor reports ### [Camera photos](../features/devices/volumes/camera.md) `devices/volumes/camera` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#833](https://github.com/lgse/strata/issues/833), pr [lgse/strata#834](https://github.com/lgse/strata/issues/834) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#833](https://github.com/lgse/strata/issues/833), pr [lgse/strata#834](https://github.com/lgse/strata/issues/834) Opening a phone or camera's gphoto2 entry in Devices as one flat, progressive Photos view instead of backend date folders. For iPhone users copying or previewing camera-roll photos over USB. -- Code: [`src/adapters/local_files/camera_photos.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_files/camera_photos.rs), [`src/services/camera_preview.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/camera_preview.rs), [`src/ui/browser/camera_scroll.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/camera_scroll.rs), [`src/ui/thumbnail/camera.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail/camera.rs) -- Tests: [`src/adapters/local_files/camera_photos/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_files/camera_photos/tests.rs), [`src/services/camera_preview/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/camera_preview/tests.rs), [`src/app/browser/tests/camera_photos.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/camera_photos.rs), [`src/ui/thumbnail/camera/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/thumbnail/camera/tests.rs) -- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) +- Code: [`src/adapters/local_files/camera_photos.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_files/camera_photos.rs), [`src/services/camera_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/camera_preview.rs), [`src/ui/browser/camera_scroll.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/camera_scroll.rs), [`src/ui/thumbnail/camera.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail/camera.rs) +- Tests: [`src/adapters/local_files/camera_photos/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_files/camera_photos/tests.rs), [`src/services/camera_preview/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/camera_preview/tests.rs), [`src/app/browser/tests/camera_photos.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/camera_photos.rs), [`src/ui/thumbnail/camera/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/thumbnail/camera/tests.rs) +- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) - Related: [Preview panel](../features/preview/preview-panel/index.md), [Thumbnails](../features/browser/thumbnails/index.md), [View modes](../features/browser/view-modes/index.md) ### [Drive format, label, and properties](../features/devices/volumes/drive-dialogs.md) `devices/volumes/drive-dialogs` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1293](https://github.com/lgse/strata/issues/1293), pr [lgse/strata#1331](https://github.com/lgse/strata/issues/1331) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1293](https://github.com/lgse/strata/issues/1293), pr [lgse/strata#1331](https://github.com/lgse/strata/issues/1331) Dialogs opened from a device row's menu: Properties for any listed storage, Set label… for a Strata-only display name, and Format… for removable drives. It also decides when the row menu offers Mount. Formatting asks twice and names the exact target before erasing anything. @@ -722,7 +732,7 @@ Dialogs opened from a device row's menu: Properties for any listed storage, Set ### [Encrypted volumes](../features/devices/volumes/encrypted.md) `devices/volumes/encrypted` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#935](https://github.com/lgse/strata/issues/935) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#935](https://github.com/lgse/strata/issues/935) Unlocking and locking LUKS volumes from their Devices rows with Strata's themed passphrase prompt, and forgetting a saved passphrase when locking. For users who keep encrypted USB drives or partitions. @@ -732,7 +742,7 @@ Unlocking and locking LUKS volumes from their Devices rows with Strata's themed ### [Unmount and eject](../features/devices/volumes/release.md) `devices/volumes/release` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#295](https://github.com/lgse/strata/issues/295), pr [lgse/strata#296](https://github.com/lgse/strata/issues/296) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#295](https://github.com/lgse/strata/issues/295), pr [lgse/strata#296](https://github.com/lgse/strata/issues/296) Safely removing a device from its Devices row: Eject or Unmount flushes pending writes, releases the device through GIO, and says when it is safe to unplug. Lock on an encrypted volume reuses the same release path. @@ -743,7 +753,7 @@ Safely removing a device from its Devices row: Eject or Unmount flushes pending ### [udiskie unlock handler](../features/devices/volumes/udiskie-unlock.md) `devices/volumes/udiskie-unlock` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#537](https://github.com/lgse/strata/issues/537), pr [lgse/strata#1047](https://github.com/lgse/strata/issues/1047) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#537](https://github.com/lgse/strata/issues/537), pr [lgse/strata#1047](https://github.com/lgse/strata/issues/1047) An integration that makes udiskie open Strata's passphrase prompt when an encrypted drive is plugged in, instead of udiskie's own dialog. Aimed at Omarchy, where udiskie is the automounter. It adds `--udiskie-hook`, `--unlock-volume`, install and uninstall flags, and a Settings row. The installer step is on `app/packaging/installer`; since lgse/strata#1825 it is on by default on an Arch-based system with `udiskie` on `PATH`. @@ -756,7 +766,7 @@ An integration that makes udiskie open Strata's passphrase prompt when an encryp ### [10xer mode](../features/integration/10xer-mode/index.md) `integration/10xer-mode` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#1152](https://github.com/lgse/strata/issues/1152), pr [lgse/strata#1267](https://github.com/lgse/strata/issues/1267) +shipped · reviewed · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1152](https://github.com/lgse/strata/issues/1152), pr [lgse/strata#1267](https://github.com/lgse/strata/issues/1267) An opt-in, saved Yazi-style keymap for keyboard-first users. It replaces the default map, hides pane chrome, and uses the footer for typed commands and the shared chord key panel. Children: `integration/10xer-mode/preview-keys` (keys inside an open preview), `integration/10xer-mode/places` (`g` chords, `go ›`, `z` / `Z`, the folder picker), `integration/10xer-mode/search` (`/`, `f`, `s`), `integration/10xer-mode/file-verbs` (file commands and their chords), and `integration/10xer-mode/file-chooser` (the mode in the portal file chooser). @@ -768,7 +778,7 @@ An opt-in, saved Yazi-style keymap for keyboard-first users. It replaces the def ### [10xer mode in the file chooser](../features/integration/10xer-mode/file-chooser.md) `integration/10xer-mode/file-chooser` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1261](https://github.com/lgse/strata/issues/1261), pr [lgse/strata#1311](https://github.com/lgse/strata/issues/1311) +shipped · reviewed · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1261](https://github.com/lgse/strata/issues/1261), pr [lgse/strata#1311](https://github.com/lgse/strata/issues/1311) The portal file chooser follows the saved 10xer preference. Its keys run through the 10xer dispatcher, limited by a per-request policy that refuses commands the request does not allow. @@ -779,29 +789,29 @@ The portal file chooser follows the saved 10xer preference. Its keys run through ### [10xer file commands](../features/integration/10xer-mode/file-verbs.md) `integration/10xer-mode/file-verbs` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1251](https://github.com/lgse/strata/issues/1251), pr [lgse/strata#1306](https://github.com/lgse/strata/issues/1306) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1251](https://github.com/lgse/strata/issues/1251), pr [lgse/strata#1306](https://github.com/lgse/strata/issues/1306) Single-key file commands in 10xer mode: yank, cut, paste, delete, create, rename, move, copy, restore, sort, hidden files, Open With, custom actions, and archive commands. They act on the focused pane's filled selection, or its cursor item when nothing is filled. This node also runs the default map's Custom action slot keys, which `app/keyboard-shortcuts/remapping` dispatches. -- Code: [`src/ui/window/keyboard/files.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard/files.rs), [`src/ui/browser/file_commands.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/file_commands.rs) -- Tests: [`src/ui/window/tests/keyboard_dispatch/file_commands.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/file_commands.rs), [`src/ui/window/tests/keyboard_dispatch/file_verbs.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/file_verbs.rs), [`tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl), [`tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl), [`tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl) -- Docs: [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md) (inherited) +- Code: [`src/ui/window/keyboard/files.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/files.rs), [`src/ui/browser/file_commands.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/file_commands.rs) +- Tests: [`src/ui/window/tests/keyboard_dispatch/file_commands.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/file_commands.rs), [`src/ui/window/tests/keyboard_dispatch/file_verbs.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/file_verbs.rs), [`tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl), [`tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl), [`tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl) +- Docs: [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/10xer-mode.md) (inherited) - Related: [Copy, cut, and paste](../features/operations/clipboard/index.md), [Trash](../features/operations/trash/index.md), [Permanent deletion](../features/operations/delete/index.md), [Inline rename](../features/operations/rename.md), [New Folder and New File](../features/operations/create.md), [Archives](../features/operations/archives/index.md), [Opening files and Open With](../features/integration/open-with/index.md), [Custom actions](../features/integration/custom-actions.md), [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md), [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) ### [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) `integration/10xer-mode/places` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1243](https://github.com/lgse/strata/issues/1243), pr [lgse/strata#1296](https://github.com/lgse/strata/issues/1296) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1243](https://github.com/lgse/strata/issues/1243), pr [lgse/strata#1296](https://github.com/lgse/strata/issues/1296) Keyboard jumps to places and folders in 10xer mode: the `g` chord, pins, the `go ›` path prompt, `z` / `Z` history jumps, and the shared fuzzy folder picker that `go ›`, `move to ›`, `copy to ›`, and `extract to ›` use. -- Code: [`src/ui/window/keyboard/chords.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard/chords.rs), [`src/ui/folder_picker.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/folder_picker.rs), [`src/ui/shortcut_footer/candidates.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/shortcut_footer/candidates.rs) -- Tests: [`src/ui/window/tests/keyboard_dispatch/place_chords.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/place_chords.rs), [`src/ui/window/tests/keyboard_dispatch/go_prompt.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/go_prompt.rs), [`src/ui/window/tests/keyboard_dispatch/folder_jump.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests/keyboard_dispatch/folder_jump.rs), [`src/ui/folder_picker/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/folder_picker/tests.rs) -- Docs: [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md) (inherited) +- Code: [`src/ui/window/keyboard/chords.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/chords.rs), [`src/ui/folder_picker.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/folder_picker.rs), [`src/ui/shortcut_footer/candidates.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/shortcut_footer/candidates.rs) +- Tests: [`src/ui/window/tests/keyboard_dispatch/place_chords.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/place_chords.rs), [`src/ui/window/tests/keyboard_dispatch/go_prompt.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/go_prompt.rs), [`src/ui/window/tests/keyboard_dispatch/folder_jump.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests/keyboard_dispatch/folder_jump.rs), [`src/ui/folder_picker/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/folder_picker/tests.rs), [`tests/qa/scenarios/sidebar_pinning/tenxer-pin-feedback-identifies-slot.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/tenxer-pin-feedback-identifies-slot.jsonl) +- Docs: [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/10xer-mode.md) (inherited) - Related: [Sidebar](../features/browser/sidebar/index.md), [Navigation](../features/browser/navigation/index.md), [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md) ### [10xer preview key ownership](../features/integration/10xer-mode/preview-keys.md) `integration/10xer-mode/preview-keys` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1242](https://github.com/lgse/strata/issues/1242), pr [lgse/strata#1295](https://github.com/lgse/strata/issues/1295) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1242](https://github.com/lgse/strata/issues/1242), pr [lgse/strata#1295](https://github.com/lgse/strata/issues/1295) In 10xer mode an open file preview can take the keys, so motion scrolls or operates the preview instead of the listing behind it. It covers opening, entering, leaving, and closing the preview drawer, and each preview surface's keys. @@ -812,7 +822,7 @@ In 10xer mode an open file preview can take the keys, so motion scrolls or opera ### [10xer find, filter, and search](../features/integration/10xer-mode/search.md) `integration/10xer-mode/search` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1246](https://github.com/lgse/strata/issues/1246), pr [lgse/strata#1297](https://github.com/lgse/strata/issues/1297) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1246](https://github.com/lgse/strata/issues/1246), pr [lgse/strata#1297](https://github.com/lgse/strata/issues/1297) The three footer name prompts of 10xer mode: `/` and `?` find in the listing without hiding rows, `f` filters the current folder, and `s` searches paths below it the way fzf does. Its result-selection module also returns focus to the results' cursor in every mode, including the default Ctrl+F filter. @@ -823,7 +833,7 @@ The three footer name prompts of 10xer mode: `/` and `?` find in the listing wit ### [Custom actions](../features/integration/custom-actions.md) `integration/custom-actions` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#36](https://github.com/lgse/strata/issues/36), pr [lgse/strata#1085](https://github.com/lgse/strata/issues/1085) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#36](https://github.com/lgse/strata/issues/36), pr [lgse/strata#1085](https://github.com/lgse/strata/issues/1085) User-defined Python, Bash, or command actions in the file and folder context menus. Each action is a folder holding an `action.toml` manifest and an optional script. Users create and manage actions in Settings → Actions, which includes a library of bundled recipes. Runs are queued as background jobs; `operations/progress/jobs` owns how an invocation is launched and what it receives. `browser/context-menu` places the actions section in the menus. In 10xer mode, `;` then a digit runs the first ten matching actions (`integration/10xer-mode`). In the default map, a key bound to a Custom action slot in Settings → Keyboard runs an action by its place in the list (`app/keyboard-shortcuts/remapping`). @@ -834,7 +844,7 @@ User-defined Python, Bash, or command actions in the file and folder context men ### [FileManager1 D-Bus interface](../features/integration/file-manager-interface/index.md) `integration/file-manager-interface` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#290](https://github.com/lgse/strata/issues/290), pr [lgse/strata#317](https://github.com/lgse/strata/issues/317) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#290](https://github.com/lgse/strata/issues/290), pr [lgse/strata#317](https://github.com/lgse/strata/issues/317) Strata's implementation of `org.freedesktop.FileManager1`, which browsers and GTK/GNOME apps call for "Open file location" and "Show in Folder". It answers `ShowFolders`, `ShowItems`, and `ShowItemProperties`, and ships a per-user D-Bus activation service. The Settings row that installs that service is `integration/portal-file-chooser/setup`. Its child `service-activation` restores `GDK_DEBUG` for programs a D-Bus-activated Strata launches. @@ -846,7 +856,7 @@ Strata's implementation of `org.freedesktop.FileManager1`, which browsers and GT ### [Launched-program GDK_DEBUG restore](../features/integration/file-manager-interface/service-activation.md) `integration/file-manager-interface/service-activation` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1810](https://github.com/lgse/strata/issues/1810), pr [lgse/strata#1811](https://github.com/lgse/strata/issues/1811) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1810](https://github.com/lgse/strata/issues/1810), pr [lgse/strata#1811](https://github.com/lgse/strata/issues/1811) A Strata that D-Bus activated for FileManager1 runs with `no-portals` added to `GDK_DEBUG` (see `app/infrastructure`). This node gives programs launched from that process the original `GDK_DEBUG` back, so their own portals keep working. @@ -857,18 +867,18 @@ A Strata that D-Bus activated for FileManager1 runs with `no-portals` added to ` ### [Opening files and Open With](../features/integration/open-with/index.md) `integration/open-with` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#174](https://github.com/lgse/strata/issues/174), pr [lgse/strata#421](https://github.com/lgse/strata/issues/421) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#174](https://github.com/lgse/strata/issues/174), pr [lgse/strata#421](https://github.com/lgse/strata/issues/421) Opening files in their default application, choosing another application from the Open With chooser, setting a new default, and running executable files. Children: `integration/open-with/recent-apps` (the chooser's Recently Used section) and `integration/open-with/terminal` (Open in Terminal). The menus that offer these commands belong to `browser/context-menu`. -- Code: [`src/ui/open_with.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/open_with.rs), [`src/ui/browser/desktop.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/desktop.rs) -- Tests: [`src/ui/open_with/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/open_with/tests.rs), [`src/ui/browser/desktop/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/desktop/tests.rs), [`tests/qa/scenarios/open_with/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/open_with), [`tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl), [`tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl) +- Code: [`src/ui/open_with.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/open_with.rs), [`src/ui/browser/desktop.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/desktop.rs) +- Tests: [`src/ui/open_with/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/open_with/tests.rs), [`src/ui/browser/desktop/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/desktop/tests.rs), [`tests/qa/scenarios/open_with/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/open_with), [`tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl), [`tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl) - Related: [10xer mode](../features/integration/10xer-mode/index.md), [Preview panel](../features/preview/preview-panel/index.md), [Context menus](../features/browser/context-menu.md), [Recent](../features/browser/navigation/recent.md) - Children: [Recently used applications](../features/integration/open-with/recent-apps.md), [Open in Terminal](../features/integration/open-with/terminal.md) ### [Recently used applications](../features/integration/open-with/recent-apps.md) `integration/open-with/recent-apps` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#1354](https://github.com/lgse/strata/issues/1354) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#1354](https://github.com/lgse/strata/issues/1354) A Recently Used section at the top of the Open With chooser, listing the applications last used for the selected files' MIME types. @@ -878,7 +888,7 @@ A Recently Used section at the top of the Open With chooser, listing the applica ### [Open in Terminal](../features/integration/open-with/terminal.md) `integration/open-with/terminal` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#160](https://github.com/lgse/strata/issues/160), pr [lgse/strata#161](https://github.com/lgse/strata/issues/161) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#160](https://github.com/lgse/strata/issues/160), pr [lgse/strata#161](https://github.com/lgse/strata/issues/161) Opening the user's terminal emulator in a local folder from the context menus or Ctrl+Alt+T. The same terminal resolution runs `.sh` files, the package-manager update rows in Settings, and Settings' Run in terminal install commands. The menu items belong to `browser/context-menu`. @@ -889,19 +899,19 @@ Opening the user's terminal emulator in a local folder from the context menus or ### [System file chooser](../features/integration/portal-file-chooser/index.md) `integration/portal-file-chooser` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#120](https://github.com/lgse/strata/issues/120), pr [lgse/strata#175](https://github.com/lgse/strata/issues/175) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#120](https://github.com/lgse/strata/issues/120), pr [lgse/strata#175](https://github.com/lgse/strata/issues/175) Strata as the XDG Desktop Portal FileChooser backend: Open, Save, and Save Files dialogs for portal-aware applications, drawn with Strata's sidebar, views, filters, and previews. The same chooser window also serves Strata's own Move to, Copy to, Extract to, and Send to destinations. Children: `integration/portal-file-chooser/setup` (enabling and restoring the integration), `integration/portal-file-chooser/url-download` (Name field filenames and URLs), `integration/portal-file-chooser/image-conversion` (PNG conversion of downloads), and `integration/portal-file-chooser/window-placement` (initial size and centering). -- Code: [`src/portal.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/portal.rs), [`src/portal/dbus.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/portal/dbus.rs), [`src/ui/chooser.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/chooser.rs), [`src/ui/browser/chooser_context.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/chooser_context.rs) -- Tests: [`src/portal/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/portal/tests.rs), [`src/portal/dbus/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/portal/dbus/tests.rs), [`src/ui/chooser/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/chooser/tests.rs), [`src/ui/chooser/tests/acceptance.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/chooser/tests/acceptance.rs), [`src/ui/chooser/tests/column_widths.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/chooser/tests/column_widths.rs), [`src/ui/chooser/tests/confined.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/chooser/tests/confined.rs), [`src/ui/chooser/tests/filtered_preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/chooser/tests/filtered_preview.rs), [`src/ui/chooser/tests/sizing.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/chooser/tests/sizing.rs), [`tests/qa/scenarios/chooser_selection/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/chooser_selection), [`scripts/portal-test.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/portal-test.py), [`scripts/portal-test.html`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/portal-test.html), [`scripts/portal_test_environment.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/portal_test_environment.py), [`scripts/test_portal_test_environment.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_portal_test_environment.py), [`scripts/chooser-dev.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/chooser-dev.sh) -- Docs: [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/portal-file-chooser.md), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/portal-file-chooser.md) +- Code: [`src/portal.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal.rs), [`src/portal/dbus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal/dbus.rs), [`src/ui/chooser.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser.rs), [`src/ui/browser/chooser_context.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/chooser_context.rs) +- Tests: [`src/portal/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal/tests.rs), [`src/portal/dbus/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal/dbus/tests.rs), [`src/ui/chooser/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests.rs), [`src/ui/chooser/tests/acceptance.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/acceptance.rs), [`src/ui/chooser/tests/column_widths.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/column_widths.rs), [`src/ui/chooser/tests/confined.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/confined.rs), [`src/ui/chooser/tests/filtered_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/filtered_preview.rs), [`src/ui/chooser/tests/sizing.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/sizing.rs), [`tests/qa/scenarios/chooser_selection/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/chooser_selection), [`scripts/portal-test.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal-test.py), [`scripts/portal-test.html`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal-test.html), [`scripts/portal_test_environment.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal_test_environment.py), [`scripts/test_portal_test_environment.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_portal_test_environment.py), [`scripts/chooser-dev.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/chooser-dev.sh) +- Docs: [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/portal-file-chooser.md), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/portal-file-chooser.md) - Related: [10xer mode](../features/integration/10xer-mode/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Copy, cut, and paste](../features/operations/clipboard/index.md), [Archives](../features/operations/archives/index.md), [Trash](../features/operations/trash/index.md), [Sidebar](../features/browser/sidebar/index.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [Pane filter](../features/browser/search/filter/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [List view](../features/browser/view-modes/list/index.md) - Children: [Chooser PNG conversion](../features/integration/portal-file-chooser/image-conversion.md), [File chooser and file manager setup](../features/integration/portal-file-chooser/setup.md), [Name field filenames and URL downloads](../features/integration/portal-file-chooser/url-download.md), [Chooser window size and placement](../features/integration/portal-file-chooser/window-placement.md) ### [Chooser PNG conversion](../features/integration/portal-file-chooser/image-conversion.md) `integration/portal-file-chooser/image-conversion` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1386](https://github.com/lgse/strata/issues/1386), pr [lgse/strata#1387](https://github.com/lgse/strata/issues/1387) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1386](https://github.com/lgse/strata/issues/1386), pr [lgse/strata#1387](https://github.com/lgse/strata/issues/1387) An opt-in conversion to PNG for images downloaded through the chooser's Name field when the selected filter accepts PNG but not the downloaded format. It covers JPEG, BMP, static WebP, and single-frame GIF, decoded in the preview sandbox. @@ -912,7 +922,7 @@ An opt-in conversion to PNG for images downloaded through the chooser's Name fie ### [File chooser and file manager setup](../features/integration/portal-file-chooser/setup.md) `integration/portal-file-chooser/setup` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#120](https://github.com/lgse/strata/issues/120), pr [lgse/strata#175](https://github.com/lgse/strata/issues/175) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#120](https://github.com/lgse/strata/issues/120), pr [lgse/strata#175](https://github.com/lgse/strata/issues/175) Making Strata the per-user FileChooser portal backend and default file manager, and restoring the previous setup. It runs from the `--install-portal` and `--uninstall-portal` commands, the installer, and the Settings → General "System file manager" row, which also sets Omarchy shortcuts. @@ -923,7 +933,7 @@ Making Strata the per-user FileChooser portal backend and default file manager, ### [Name field filenames and URL downloads](../features/integration/portal-file-chooser/url-download.md) `integration/portal-file-chooser/url-download` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1279](https://github.com/lgse/strata/issues/1279), pr [lgse/strata#1285](https://github.com/lgse/strata/issues/1285) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1279](https://github.com/lgse/strata/issues/1279), pr [lgse/strata#1285](https://github.com/lgse/strata/issues/1285) The Name field in file-open choosers. Typing an existing filename opens it, and pasting a direct `http://` or `https://` file URL downloads the file to a temporary local path returned to the caller. @@ -946,19 +956,19 @@ The chooser window's initial size and position. Size follows the monitor and a p ### [Archives](../features/operations/archives/index.md) `operations/archives` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#81](https://github.com/lgse/strata/issues/81) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#81](https://github.com/lgse/strata/issues/81) Creating ZIP, 7Z, TAR, and TAR.GZ archives from local items, and extracting local archives with Extract here, Extract to…, or by activating them. Covers passwords, name conflicts, output publication, and error reporting. Children: `operations/archives/rar` (RAR extraction), `operations/archives/preview` (browsing an archive's members in the preview), and `operations/archives/extraction-safety` (member paths, confinement, links, and metadata during extraction). -- Code: [`src/ui/browser/archive.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/archive.rs), [`src/adapters/local_operations/archive.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive.rs), [`src/adapters/local_operations/archive/compression.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/compression.rs), [`src/adapters/local_operations/archive/decoders.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/decoders.rs), [`src/adapters/local_operations/archive/extraction.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/extraction.rs) -- Tests: [`src/ui/browser/archive/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/archive/tests.rs), [`src/adapters/local_operations/archive/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/tests.rs), [`src/adapters/local_operations/archive/fixtures.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/fixtures.rs), [`src/adapters/local_operations/archive/compression/**`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/compression), [`src/adapters/local_operations/archive/decoders/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/decoders/tests.rs), [`src/adapters/local_operations/archive/decoders/fixtures/**`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/decoders/fixtures), [`src/adapters/local_operations/archive/extraction/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/archive/extraction/tests.rs), [`src/app/browser/tests/archive_activation.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/archive_activation.rs), [`tests/qa/scenarios/archive_activation`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_activation), [`tests/qa/scenarios/archive_conflicts`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_conflicts), [`tests/qa/scenarios/archive_errors`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_errors), [`tests/qa/scenarios/archive_reveal`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_reveal), [`tests/qa/fixtures/content-encrypted.7z`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/fixtures/content-encrypted.7z), [`tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl), [`tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl) -- Docs: [`site/src/reference/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/archives.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md), [`docs/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/archives.md) +- Code: [`src/ui/browser/archive.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/archive.rs), [`src/adapters/local_operations/archive.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive.rs), [`src/adapters/local_operations/archive/compression.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/compression.rs), [`src/adapters/local_operations/archive/decoders.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/decoders.rs), [`src/adapters/local_operations/archive/extraction.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/extraction.rs) +- Tests: [`src/ui/browser/archive/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/archive/tests.rs), [`src/adapters/local_operations/archive/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/tests.rs), [`src/adapters/local_operations/archive/fixtures.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/fixtures.rs), [`src/adapters/local_operations/archive/compression/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/compression), [`src/adapters/local_operations/archive/decoders/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/decoders/tests.rs), [`src/adapters/local_operations/archive/decoders/fixtures/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/decoders/fixtures), [`src/adapters/local_operations/archive/extraction/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/archive/extraction/tests.rs), [`src/app/browser/tests/archive_activation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/archive_activation.rs), [`tests/qa/scenarios/archive_activation`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_activation), [`tests/qa/scenarios/archive_conflicts`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_conflicts), [`tests/qa/scenarios/archive_errors`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_errors), [`tests/qa/scenarios/archive_reveal`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_reveal), [`tests/qa/fixtures/content-encrypted.7z`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/fixtures/content-encrypted.7z), [`tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl), [`tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl) +- Docs: [`site/src/reference/archives.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/archives.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md), [`docs/archives.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/archives.md) - Related: [10xer mode](../features/integration/10xer-mode/index.md), [Operation progress and cancellation](../features/operations/progress/index.md), [Trash](../features/operations/trash/index.md), [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md) - Children: [Extraction safety](../features/operations/archives/extraction-safety.md), [Archive preview](../features/operations/archives/preview.md), [RAR extraction](../features/operations/archives/rar.md) ### [Extraction safety](../features/operations/archives/extraction-safety.md) `operations/archives/extraction-safety` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#109](https://github.com/lgse/strata/issues/109), pr [lgse/strata#116](https://github.com/lgse/strata/issues/116) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#109](https://github.com/lgse/strata/issues/109), pr [lgse/strata#116](https://github.com/lgse/strata/issues/116) How extraction writes untrusted archive members into the destination folder: member path sanitizing, confinement to the destination, link members, metadata, and names the destination cannot store. Member path rules apply to every decoder, RAR included. RAR link members extract as regular files (`operations/archives/rar`). @@ -969,7 +979,7 @@ How extraction writes untrusted archive members into the destination folder: mem ### [Archive preview](../features/operations/archives/preview.md) `operations/archives/preview` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1151](https://github.com/lgse/strata/issues/1151), pr [lgse/strata#1090](https://github.com/lgse/strata/issues/1090) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1151](https://github.com/lgse/strata/issues/1151), pr [lgse/strata#1090](https://github.com/lgse/strata/issues/1090) Browsing a local ZIP, 7z, TAR, or TAR.GZ archive's member tree in the preview, like a read-only folder, without extracting anything. Listing runs in the preview sandbox and reads metadata only. @@ -980,7 +990,7 @@ Browsing a local ZIP, 7z, TAR, or TAR.GZ archive's member tree in the preview, l ### [RAR extraction](../features/operations/archives/rar.md) `operations/archives/rar` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#816](https://github.com/lgse/strata/issues/816), pr [lgse/strata#832](https://github.com/lgse/strata/issues/832) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#816](https://github.com/lgse/strata/issues/816), pr [lgse/strata#832](https://github.com/lgse/strata/issues/832) Extraction-only support for `.rar` archives through UnRAR, run in a sandboxed helper process. It is an optional `rar` build feature, enabled by default, so packagers can ship Strata without the non-free UnRAR code. @@ -991,25 +1001,25 @@ Extraction-only support for `.rar` archives through UnRAR, run in a sandboxed he ### [Copy, cut, and paste](../features/operations/clipboard/index.md) `operations/clipboard` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#287](https://github.com/lgse/strata/issues/287), pr [lgse/strata#289](https://github.com/lgse/strata/issues/289) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#287](https://github.com/lgse/strata/issues/287), pr [lgse/strata#289](https://github.com/lgse/strata/issues/289) Copying and cutting files to the system clipboard, pasting them as copies or moves, Duplicate, Move to… and Copy to…. The copy engine, placement, and name rules behind them belong to `operations/filesystem-compatibility`. It also covers copying paths, names, and pasted images, and the cross-device "Copy or move?" drop prompt. The footer's Files on clipboard badge belongs to `app/shortcut-reference`. Children: `operations/clipboard/conflicts` (the "File already exists" dialog and its choices) and `operations/clipboard/send-to` (Send to removable devices). -- Code: [`src/ui/browser/clipboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/clipboard.rs), [`src/ui/browser/transfer.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/transfer.rs), [`src/adapters/local_operations/transfer_targets.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/transfer_targets.rs) -- Tests: [`src/ui/browser/clipboard/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/clipboard/tests.rs), [`src/ui/browser/transfer/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/transfer/tests.rs), [`src/adapters/local_operations/tests/copy.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests/copy.rs), [`src/adapters/local_operations/tests/moves.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests/moves.rs), [`src/adapters/local_operations/tests/naming.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests/naming.rs), [`src/adapters/local_operations/tests/paste_results.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests/paste_results.rs), [`tests/qa/scenarios/clipboard`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/clipboard), [`tests/qa/mutations/clipboard.patch`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations/clipboard.patch), [`tests/qa/mutations/cut.patch`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations/cut.patch), [`tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl), [`tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) +- Code: [`src/ui/browser/clipboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/clipboard.rs), [`src/ui/browser/transfer.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/transfer.rs), [`src/adapters/local_operations/transfer_targets.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/transfer_targets.rs) +- Tests: [`src/ui/browser/clipboard/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/clipboard/tests.rs), [`src/ui/browser/transfer/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/transfer/tests.rs), [`src/adapters/local_operations/tests/copy.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/copy.rs), [`src/adapters/local_operations/tests/moves.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/moves.rs), [`src/adapters/local_operations/tests/naming.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/naming.rs), [`src/adapters/local_operations/tests/paste_results.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/paste_results.rs), [`tests/qa/scenarios/clipboard`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/clipboard), [`tests/qa/mutations/clipboard.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/clipboard.patch), [`tests/qa/mutations/cut.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/cut.patch), [`tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl), [`tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) - Related: [Drag and drop](../features/operations/drag-and-drop/index.md), [Operation progress and cancellation](../features/operations/progress/index.md), [Trash](../features/operations/trash/index.md), [10xer mode](../features/integration/10xer-mode/index.md), [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md) - Children: [Paste name conflicts](../features/operations/clipboard/conflicts.md), [Send to removable devices](../features/operations/clipboard/send-to.md) ### [Paste name conflicts](../features/operations/clipboard/conflicts.md) `operations/clipboard/conflicts` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#7](https://github.com/lgse/strata/issues/7), pr [lgse/strata#25](https://github.com/lgse/strata/issues/25) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#7](https://github.com/lgse/strata/issues/7), pr [lgse/strata#25](https://github.com/lgse/strata/issues/25) The "File already exists" dialog shown when a paste, Move to…, Copy to…, or move undo meets a taken name. It covers the Replace, Keep Both, Merge, and Skip transfers behind the dialog and their undo. -- Code: [`src/adapters/local_operations/replacement.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/replacement.rs), [`src/adapters/local_operations/merge_aside.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/merge_aside.rs) -- Tests: [`tests/qa/scenarios/copy_conflicts`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/copy_conflicts), [`src/adapters/local_operations/tests/conflicts.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/tests/conflicts.rs), [`src/adapters/local_operations/tests/merge.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/tests/merge.rs), [`src/adapters/local_operations/tests/replacement.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/tests/replacement.rs), [`tests/qa/mutations/keep-both.patch`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/mutations/keep-both.patch) -- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/adapters/local_operations/replacement.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/replacement.rs), [`src/adapters/local_operations/merge_aside.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/merge_aside.rs) +- Tests: [`tests/qa/scenarios/copy_conflicts`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/copy_conflicts), [`src/adapters/local_operations/tests/conflicts.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/conflicts.rs), [`src/adapters/local_operations/tests/merge.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/merge.rs), [`src/adapters/local_operations/tests/replacement.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/replacement.rs), [`tests/qa/mutations/keep-both.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/keep-both.patch) +- Docs: [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Drag and drop](../features/operations/drag-and-drop/index.md), [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md), [Leftovers after a crash or unplug](../features/operations/filesystem-compatibility/leftovers.md), [Shared location model and listing adapter](../features/app/infrastructure.md) ### [Send to removable devices](../features/operations/clipboard/send-to.md) `operations/clipboard/send-to` @@ -1025,7 +1035,7 @@ A Send to… submenu in the item menu that copies the selection to a mounted rem ### [New Folder and New File](../features/operations/create.md) `operations/create` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#4](https://github.com/lgse/strata/issues/4) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#4](https://github.com/lgse/strata/issues/4) Creating an empty file or folder in the current directory from the background menu or Ctrl+Shift+N, then naming it in place. It also covers New Folder with Selection, which groups selected items into a new folder. The file chooser's header button reuses this flow, and the 10xer footer create prompt reuses the creation operation; both are described in their own nodes. @@ -1036,7 +1046,7 @@ Creating an empty file or folder in the current directory from the background me ### [Permanent deletion](../features/operations/delete/index.md) `operations/delete` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#163](https://github.com/lgse/strata/issues/163), pr [lgse/strata#164](https://github.com/lgse/strata/issues/164) +shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · ? PRs since · origin issue [lgse/strata#163](https://github.com/lgse/strata/issues/163), pr [lgse/strata#164](https://github.com/lgse/strata/issues/164) Deleting files and folders without Trash, from Shift+Delete or the item menu's "Permanently delete", after a confirmation. Local trees are deleted descriptor-relative and in parallel. The confirmation dialog, its wording by location, and the no-Trash fallback are built in Trash's module (`operations/trash`); the menu items are `browser/context-menu`'s. Child: `operations/delete/dissolve` (the rows' dissolve after a successful delete). @@ -1047,17 +1057,17 @@ Deleting files and folders without Trash, from Shift+Delete or the item menu's " ### [Permanent-delete dissolve animation](../features/operations/delete/dissolve.md) `operations/delete/dissolve` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#626](https://github.com/lgse/strata/issues/626) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#626](https://github.com/lgse/strata/issues/626) After a successful permanent delete, the deleted rows break into fragments that scatter and fade over the file view. It plays only for a delete that finishes before its progress card appears, so a slow delete never locks the window. -- Code: [`src/ui/browser/dissolve_delete.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/dissolve_delete.rs) -- Tests: [`tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl) +- Code: [`src/ui/browser/dissolve_delete.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/dissolve_delete.rs) +- Tests: [`tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl) - Related: [Trash flight animation](../features/operations/trash/animation.md), [Progress dock](../features/operations/progress/dock.md) ### [Drag and drop](../features/operations/drag-and-drop/index.md) `operations/drag-and-drop` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#285](https://github.com/lgse/strata/issues/285), pr [lgse/strata#350](https://github.com/lgse/strata/issues/350) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#285](https://github.com/lgse/strata/issues/285), pr [lgse/strata#350](https://github.com/lgse/strata/issues/350) Moving and copying files by dragging them onto folders, pane backgrounds, sidebar places, and breadcrumbs, within and between windows and to or from other applications. Children: `operations/drag-and-drop/copy-or-move` (choosing copy or move, including across devices) and `operations/drag-and-drop/column-autoscroll` (edge scrolling during Columns drags). @@ -1078,7 +1088,7 @@ Edge autoscrolling while a file drag is held over Columns view, so off-screen co ### [Drop copy-or-move policy](../features/operations/drag-and-drop/copy-or-move.md) `operations/drag-and-drop/copy-or-move` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#248](https://github.com/lgse/strata/issues/248), pr [lgse/strata#502](https://github.com/lgse/strata/issues/502) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#248](https://github.com/lgse/strata/issues/248), pr [lgse/strata#502](https://github.com/lgse/strata/issues/502) How a drop chooses between copying and moving. Plain drops on the same filesystem move, plain drops onto another device follow the Copy, Move, or Ask strategy, and Ctrl or Shift overrides both. @@ -1089,7 +1099,7 @@ How a drop chooses between copying and moving. Plain drops on the same filesyste ### [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md) `operations/filesystem-compatibility` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1615](https://github.com/lgse/strata/issues/1615) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1615](https://github.com/lgse/strata/issues/1615) The no-clobber placement routine, the native copy engine, the identity rule, and the name rules behind every local file operation. They cover move, copy, Replace, Merge, restore, rename, undo, and archive publish. They keep these working on NFS, SMB, FUSE, FAT, exFAT, NTFS, and case-insensitive mounts. Every changed name and left-out item is reported. Children: `operations/filesystem-compatibility/open-files` (releasing open files before a change) and `operations/filesystem-compatibility/leftovers` (what a crash or unplug leaves). @@ -1101,7 +1111,7 @@ The no-clobber placement routine, the native copy engine, the identity rule, and ### [Leftovers after a crash or unplug](../features/operations/filesystem-compatibility/leftovers.md) `operations/filesystem-compatibility/leftovers` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1729](https://github.com/lgse/strata/issues/1729) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1729](https://github.com/lgse/strata/issues/1729) Recognising the hidden `.strata-*` names a crash, kill, or unplug leaves in a folder, and offering to restore what may be the user's data. A pane-header button and a dock card open a review with Restore, Show, and Delete…. Strata removes nothing on its own except its own stale empty probes. @@ -1112,7 +1122,7 @@ Recognising the hidden `.strata-*` names a crash, kill, or unplug leaves in a fo ### [Releasing open files before a change](../features/operations/filesystem-compatibility/open-files.md) `operations/filesystem-compatibility/open-files` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1729](https://github.com/lgse/strata/issues/1729) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1590](https://github.com/lgse/strata/issues/1590), pr [lgse/strata#1729](https://github.com/lgse/strata/issues/1729) Before a file operation changes an item, Strata stops its own reads of it. It then waits briefly for files other programs are about to close, and otherwise names the program that holds one. This keeps NFS, SMB, and FUSE from leaving `.nfs…`, `.__smbfile_silly…`, or `.fuse_hidden…` files because of Strata. @@ -1123,7 +1133,7 @@ Before a file operation changes an item, Strata stops its own reads of it. It th ### [Operation progress and cancellation](../features/operations/progress/index.md) `operations/progress` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#11](https://github.com/lgse/strata/issues/11), pr [lgse/strata#75](https://github.com/lgse/strata/issues/75) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#11](https://github.com/lgse/strata/issues/11), pr [lgse/strata#75](https://github.com/lgse/strata/issues/75) The progress and cancellation UI shared by file operations: the blocking progress dialog, transfer byte and speed reporting, and the result shown after Cancel. Children: `operations/progress/dock` (non-blocking cards for copy, compression, and deletion) and `operations/progress/jobs` (the custom-action job queue and Jobs dashboard). @@ -1135,7 +1145,7 @@ The progress and cancellation UI shared by file operations: the blocking progres ### [Progress dock](../features/operations/progress/dock.md) `operations/progress/dock` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1360](https://github.com/lgse/strata/issues/1360), pr [lgse/strata#1393](https://github.com/lgse/strata/issues/1393) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1360](https://github.com/lgse/strata/issues/1360), pr [lgse/strata#1393](https://github.com/lgse/strata/issues/1393) Non-blocking progress cards in the bottom-right corner of the window for copy, compression, and deletion, so browsing continues while they run. Each card cancels only its own operation and becomes a completion notification that closes itself. The dock also shows brief notices, such as a fast Send to success or a file provider's result. @@ -1146,7 +1156,7 @@ Non-blocking progress cards in the bottom-right corner of the window for copy, c ### [Job queue and Jobs dashboard](../features/operations/progress/jobs.md) `operations/progress/jobs` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#36](https://github.com/lgse/strata/issues/36), pr [lgse/strata#1085](https://github.com/lgse/strata/issues/1085) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#36](https://github.com/lgse/strata/issues/36), pr [lgse/strata#1085](https://github.com/lgse/strata/issues/1085) The background queue that runs custom actions, and the Jobs dashboard in the footer that shows it. Jobs are shared by every window, survive navigation, and stay in a session history after they finish. @@ -1157,7 +1167,7 @@ The background queue that runs custom actions, and the Jobs dashboard in the foo ### [Inline rename](../features/operations/rename.md) `operations/rename` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#115](https://github.com/lgse/strata/issues/115) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#115](https://github.com/lgse/strata/issues/115) Renaming one file or folder in place, in Columns, List, and Icons, from the keyboard, a menu, or a slow second click. Covers the editor's validation, how it commits or cancels, Undo, and keeping the edited and renamed row inside the viewport. @@ -1168,30 +1178,30 @@ Renaming one file or folder in place, in Columns, List, and Icons, from the keyb ### [Trash](../features/operations/trash/index.md) `operations/trash` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#205](https://github.com/lgse/strata/issues/205), pr [lgse/strata#228](https://github.com/lgse/strata/issues/228) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#205](https://github.com/lgse/strata/issues/205), pr [lgse/strata#228](https://github.com/lgse/strata/issues/228) Moving files and folders to the freedesktop.org Trash, undoing that move, and browsing `trash:///` in every view mode. Trash's UI module also builds the deletion confirmations and the no-Trash fallback. Children: `operations/trash/restore` (Restore from Trash), `operations/trash/empty` (Empty Trash), `operations/trash/animation` (flights between rows and the sidebar Trash button), and `operations/trash/fuse-refusals` (FUSE mounts that refuse Trash). -- Code: [`src/ui/browser/trash.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/trash.rs), [`src/adapters/local_operations/trash.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/trash.rs) -- Tests: [`src/ui/browser/trash/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/trash/tests.rs), [`src/adapters/local_files/tests/trash.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_files/tests/trash.rs), [`src/adapters/local_operations/tests/trash_capabilities.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests/trash_capabilities.rs), [`tests/qa/mutations/trash.patch`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations/trash.patch), [`tests/qa/scenarios/entry_management/delete-to-trash.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/delete-to-trash.jsonl), [`tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl), [`tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl) -- Docs: [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/trash-restore-testing.md) +- Code: [`src/ui/browser/trash.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/trash.rs), [`src/adapters/local_operations/trash.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/trash.rs) +- Tests: [`src/ui/browser/trash/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/trash/tests.rs), [`src/adapters/local_files/tests/trash.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_files/tests/trash.rs), [`src/adapters/local_operations/tests/trash_capabilities.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/trash_capabilities.rs), [`tests/qa/mutations/trash.patch`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations/trash.patch), [`tests/qa/scenarios/entry_management/delete-to-trash.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/delete-to-trash.jsonl), [`tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl), [`tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl) +- Docs: [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/trash-restore-testing.md) - Related: [Permanent deletion](../features/operations/delete/index.md), [10xer file commands](../features/integration/10xer-mode/file-verbs.md), [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md), [Context menus](../features/browser/context-menu.md) - Children: [Trash flight animation](../features/operations/trash/animation.md), [Empty Trash](../features/operations/trash/empty.md), [FUSE mounts that refuse Trash](../features/operations/trash/fuse-refusals.md), [Restore from Trash](../features/operations/trash/restore.md) ### [Trash flight animation](../features/operations/trash/animation.md) `operations/trash/animation` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#626](https://github.com/lgse/strata/issues/626) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#626](https://github.com/lgse/strata/issues/626) File icons that fly between their rows and the sidebar Trash button, on Move to Trash and on restore from Trash. A Move to Trash flies only when it finishes before its progress card appears. -- Code: [`src/ui/browser/fly_to_trash.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/fly_to_trash.rs) -- Tests: [`src/ui/browser/fly_to_trash/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/fly_to_trash/tests.rs) -- Docs: [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/trash-restore-testing.md) (inherited) +- Code: [`src/ui/browser/fly_to_trash.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/fly_to_trash.rs) +- Tests: [`src/ui/browser/fly_to_trash/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/fly_to_trash/tests.rs) +- Docs: [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/trash-restore-testing.md) (inherited) - Related: [Permanent-delete dissolve animation](../features/operations/delete/dissolve.md) ### [Empty Trash](../features/operations/trash/empty.md) `operations/trash/empty` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#53](https://github.com/lgse/strata/issues/53) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#53](https://github.com/lgse/strata/issues/53) Permanently deleting everything in Trash from the Trash pane header or the sidebar Trash menu, after a measured confirmation. The pane-header button belongs to `browser/view-modes`. @@ -1202,7 +1212,7 @@ Permanently deleting everything in Trash from the Trash pane header or the sideb ### [FUSE mounts that refuse Trash](../features/operations/trash/fuse-refusals.md) `operations/trash/fuse-refusals` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#1614](https://github.com/lgse/strata/issues/1614) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#1614](https://github.com/lgse/strata/issues/1614) Recognising a FUSE mount, such as sshfs, rclone, s3fs, or mergerfs, that reports Trash support but refuses the trash move partway. A confirmed refusal counts as "Trash unsupported", is remembered for that mount until Reload, and the empty Trash folders the attempt left are removed. The dialogs it leads to are the parent's (`operations/trash`). @@ -1213,7 +1223,7 @@ Recognising a FUSE mount, such as sshfs, rclone, s3fs, or mergerfs, that reports ### [Restore from Trash](../features/operations/trash/restore.md) `operations/trash/restore` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#478](https://github.com/lgse/strata/issues/478), pr [lgse/strata#502](https://github.com/lgse/strata/issues/502) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#478](https://github.com/lgse/strata/issues/478), pr [lgse/strata#502](https://github.com/lgse/strata/issues/502) Returning trashed items to their original locations, from the Restore menu item or by undoing Move to Trash. Strata treats `.trashinfo` metadata as untrusted, confirms each full destination, and never overwrites an existing file. @@ -1224,30 +1234,30 @@ Returning trashed items to their original locations, from the Restore menu item ### [Undo and redo](../features/operations/undo.md) `operations/undo` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#298](https://github.com/lgse/strata/issues/298), pr [lgse/strata#301](https://github.com/lgse/strata/issues/301) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#298](https://github.com/lgse/strata/issues/298), pr [lgse/strata#301](https://github.com/lgse/strata/issues/301) One undo history and one redo history for file operations, shared by every Strata window. Ctrl+Z reverts the latest recorded operation and Ctrl+Shift+Z re-applies the latest reverted one. Recorded operations are Move to Trash, moves, copies, renames, New Folder and New File, Restore, compression, extraction, Replace, Merge, and New Folder with Selection. Each operation's own undo rules live in its node. -- Tests: [`src/app/browser/tests/undo.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/undo.rs), [`src/app/browser/tests/undo_refresh.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/tests/undo_refresh.rs), [`src/adapters/local_operations/tests/undo.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_operations/tests/undo.rs), [`tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl) +- Tests: [`src/app/browser/tests/undo.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/undo.rs), [`src/app/browser/tests/undo_refresh.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/undo_refresh.rs), [`src/adapters/local_operations/tests/undo.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/undo.rs), [`tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl) - Related: [Trash](../features/operations/trash/index.md), [Restore from Trash](../features/operations/trash/restore.md), [Copy, cut, and paste](../features/operations/clipboard/index.md), [Paste name conflicts](../features/operations/clipboard/conflicts.md), [Inline rename](../features/operations/rename.md), [New Folder and New File](../features/operations/create.md), [Archives](../features/operations/archives/index.md), [Progress dock](../features/operations/progress/dock.md), [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md), [Filesystem-safe placement and copying](../features/operations/filesystem-compatibility/index.md) ## preview ### [Preview panel](../features/preview/preview-panel/index.md) `preview/preview-panel` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin pr [lgse/strata#17](https://github.com/lgse/strata/issues/17) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#17](https://github.com/lgse/strata/issues/17) The drawer beside the file views that shows the selected file's contents. It shows text, images, PDFs, 3D models, G-code thumbnails, GPS routes, and comic or EPUB covers, with a header for print and close. The browser and the file chooser share it. Children: `preview/preview-panel/layout` (sizing and placement), `preview/preview-panel/documents` (rendered documents), `preview/preview-panel/find` (find in the open preview), `preview/preview-panel/media` (audio and video), `preview/preview-panel/pdf` (PDF text selection), `preview/preview-panel/model-views` (STL, 3MF, and FreeCAD models with camera views), `preview/preview-panel/gcode` (embedded G-code thumbnails), `preview/preview-panel/routes` (GPX, FIT, and KML routes), and `preview/preview-panel/sandbox` (isolation of untrusted parsing). -- Code: [`src/ui/preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview.rs), [`src/services/preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/preview.rs), [`src/adapters/local_preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_preview.rs), [`src/adapters/local_preview/remote.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_preview/remote.rs), [`src/ui/preview/components.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/components.rs), [`src/sandbox_helper/archive_cover.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/archive_cover.rs) -- Tests: [`src/services/preview/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/preview/tests.rs), [`src/adapters/local_preview/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_preview/tests.rs), [`src/adapters/local_preview/tests/cover_preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_preview/tests/cover_preview.rs), [`src/adapters/local_preview/tests/remote_preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_preview/tests/remote_preview.rs), [`src/adapters/local_preview/remote/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_preview/remote/tests.rs), [`src/ui/preview/tests/pdf.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/tests/pdf.rs), [`src/ui/preview/tests/operations.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/tests/operations.rs), [`src/sandbox_helper/archive_cover/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/archive_cover/tests.rs), [`tests/fixtures/documents/password-protected.pdf`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/documents/password-protected.pdf), [`tests/fixtures/documents/owner-restricted.pdf`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/documents/owner-restricted.pdf), [`tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl), [`tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl), [`tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl), [`tests/qa/scenarios/preview_media_layout`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/preview_media_layout) -- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) +- Code: [`src/ui/preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview.rs), [`src/services/preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/preview.rs), [`src/adapters/local_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview.rs), [`src/adapters/local_preview/remote.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview/remote.rs), [`src/ui/preview/components.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/components.rs), [`src/sandbox_helper/archive_cover.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/archive_cover.rs) +- Tests: [`src/services/preview/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/preview/tests.rs), [`src/adapters/local_preview/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview/tests.rs), [`src/adapters/local_preview/tests/cover_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview/tests/cover_preview.rs), [`src/adapters/local_preview/tests/remote_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview/tests/remote_preview.rs), [`src/adapters/local_preview/remote/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview/remote/tests.rs), [`src/ui/preview/tests/pdf.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/tests/pdf.rs), [`src/ui/preview/tests/operations.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/tests/operations.rs), [`src/sandbox_helper/archive_cover/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/archive_cover/tests.rs), [`tests/fixtures/documents/password-protected.pdf`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/documents/password-protected.pdf), [`tests/fixtures/documents/owner-restricted.pdf`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/documents/owner-restricted.pdf), [`tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl), [`tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl), [`tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl), [`tests/qa/scenarios/preview_media_layout`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/preview_media_layout) +- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) - Related: [Quick preview](../features/preview/quick-preview/index.md), [Thumbnails](../features/browser/thumbnails/index.md), [RAW photo details](../features/browser/properties/raw-metadata.md), [Archive preview](../features/operations/archives/preview.md), [Drag and drop](../features/operations/drag-and-drop/index.md) - Children: [Rendered document previews](../features/preview/preview-panel/documents/index.md), [Find in preview](../features/preview/preview-panel/find.md), [G-code thumbnail previews](../features/preview/preview-panel/gcode.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [Media playback](../features/preview/preview-panel/media/index.md), [3D model previews](../features/preview/preview-panel/model-views.md), [PDF text selection](../features/preview/preview-panel/pdf.md), [Offline route previews](../features/preview/preview-panel/routes.md), [Preview sandbox](../features/preview/preview-panel/sandbox.md) ### [Rendered document previews](../features/preview/preview-panel/documents/index.md) `preview/preview-panel/documents` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#89](https://github.com/lgse/strata/issues/89), pr [lgse/strata#187](https://github.com/lgse/strata/issues/187) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#89](https://github.com/lgse/strata/issues/89), pr [lgse/strata#187](https://github.com/lgse/strata/issues/187) Native GTK rendering of local Markdown, an HTML subset, RTF, CSV, TSV, XLS, XLSX, ODS, DOCX, ODT, and OTT files in the preview panel. Text formats switch between Rendered and Source; nothing uses a web engine or runs document scripts. Children: `preview/preview-panel/documents/odt` (OpenDocument text and templates) and `preview/preview-panel/documents/scrollbar` (the document-position scrollbar). @@ -1259,7 +1269,7 @@ Native GTK rendering of local Markdown, an HTML subset, RTF, CSV, TSV, XLS, XLSX ### [ODT and OTT document previews](../features/preview/preview-panel/documents/odt.md) `preview/preview-panel/documents/odt` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1813](https://github.com/lgse/strata/issues/1813), pr [lgse/strata#1834](https://github.com/lgse/strata/issues/1834) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1813](https://github.com/lgse/strata/issues/1813), pr [lgse/strata#1834](https://github.com/lgse/strata/issues/1834) Rendered previews of local OpenDocument text files (`.odt`) and templates (`.ott`), for checking a Writer document without an office suite. A sandboxed reader converts them to the DOCX HTML subset that the parent renders. @@ -1270,7 +1280,7 @@ Rendered previews of local OpenDocument text files (`.odt`) and templates (`.ott ### [Document preview scrollbar](../features/preview/preview-panel/documents/scrollbar.md) `preview/preview-panel/documents/scrollbar` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1749](https://github.com/lgse/strata/issues/1749), pr [lgse/strata#1752](https://github.com/lgse/strata/issues/1752) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1749](https://github.com/lgse/strata/issues/1749), pr [lgse/strata#1752](https://github.com/lgse/strata/issues/1752) The vertical scrollbar of rendered documents and large plain-text Source previews, in the browser and the file chooser. Its thumb follows a document position rather than GTK's estimated pixel heights, so held, dragged, and touchpad-scrolled thumbs stop jumping. @@ -1281,7 +1291,7 @@ The vertical scrollbar of rendered documents and large plain-text Source preview ### [Find in preview](../features/preview/preview-panel/find.md) `preview/preview-panel/find` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1558](https://github.com/lgse/strata/issues/1558), pr [lgse/strata#1559](https://github.com/lgse/strata/issues/1559) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1558](https://github.com/lgse/strata/issues/1558), pr [lgse/strata#1559](https://github.com/lgse/strata/issues/1559) A find bar below the preview header that searches the text loaded in the open preview. It serves source, plain-text, and rendered document previews, and never filters the file listing. @@ -1292,7 +1302,7 @@ A find bar below the preview header that searches the text loaded in the open pr ### [G-code thumbnail previews](../features/preview/preview-panel/gcode.md) `preview/preview-panel/gcode` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1863](https://github.com/lgse/strata/issues/1863), pr [lgse/strata#1864](https://github.com/lgse/strata/issues/1864) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1863](https://github.com/lgse/strata/issues/1863), pr [lgse/strata#1864](https://github.com/lgse/strata/issues/1864) Previews of sliced 3D-printer files from the image the slicer embedded in them, for recognizing a print job without a slicer. A sandboxed reader takes the largest decodable thumbnail from text `.gcode` and `.gco` comments or binary `.bgcode` blocks; the toolpath is never drawn. @@ -1303,18 +1313,18 @@ Previews of sliced 3D-printer files from the image the slicer embedded in them, ### [Preview panel layout](../features/preview/preview-panel/layout.md) `preview/preview-panel/layout` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#885](https://github.com/lgse/strata/issues/885), pr [lgse/strata#888](https://github.com/lgse/strata/issues/888) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#885](https://github.com/lgse/strata/issues/885), pr [lgse/strata#888](https://github.com/lgse/strata/issues/888) How the preview panel shares the window with the file views: its width, the reserved slot in Columns, the right pane shared with child columns, and narrow-window behavior. Applies to Columns, Icons, List, and the file chooser. -- Code: [`src/ui/preview/layout.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/layout.rs), [`src/ui/preview/session.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/session.rs), [`src/ui/preview/media_layout.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/media_layout.rs), [`src/ui/preview/player_layout.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/player_layout.rs), [`src/ui/browser/preview.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/preview.rs) -- Tests: [`src/ui/preview/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/tests.rs), [`tests/qa/scenarios/preview_session`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/preview_session), [`tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl), [`tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl), [`tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl), [`tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl) -- Docs: [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-panel-layout.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited) +- Code: [`src/ui/preview/layout.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/layout.rs), [`src/ui/preview/session.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/session.rs), [`src/ui/preview/media_layout.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/media_layout.rs), [`src/ui/preview/player_layout.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/player_layout.rs), [`src/ui/browser/preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/preview.rs) +- Tests: [`src/ui/preview/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/tests.rs), [`tests/qa/scenarios/preview_session`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/preview_session), [`tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl), [`tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl), [`tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl), [`tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl) +- Docs: [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-panel-layout.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) (inherited) - Related: [Quick preview](../features/preview/quick-preview/index.md), [View modes](../features/browser/view-modes/index.md), [Sidebar](../features/browser/sidebar/index.md) ### [Media playback](../features/preview/preview-panel/media/index.md) `preview/preview-panel/media` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#824](https://github.com/lgse/strata/issues/824), pr [lgse/strata#839](https://github.com/lgse/strata/issues/839) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#824](https://github.com/lgse/strata/issues/824), pr [lgse/strata#839](https://github.com/lgse/strata/issues/839) The player behind audio, video, and animated GIF previews. FFmpeg decodes the original inside bubblewrap and streams validated RGBA frames and PCM to Strata, which presents them with GTK and GStreamer. Children: `preview/preview-panel/media/audio` (now-playing audio view) and `preview/preview-panel/media/video` (now-playing video view). @@ -1326,7 +1336,7 @@ The player behind audio, video, and animated GIF previews. FFmpeg decodes the or ### [Audio previews](../features/preview/preview-panel/media/audio.md) `preview/preview-panel/media/audio` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1288](https://github.com/lgse/strata/issues/1288), pr [lgse/strata#1289](https://github.com/lgse/strata/issues/1289) +shipped · reviewed · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1288](https://github.com/lgse/strata/issues/1288), pr [lgse/strata#1289](https://github.com/lgse/strata/issues/1289) The now-playing view for audio files: artwork, tags, a live spectrum, a waveform scrubber, and previous/next track controls. It replaces the blank video surface audio files used to show. @@ -1337,7 +1347,7 @@ The now-playing view for audio files: artwork, tags, a live spectrum, a waveform ### [Video previews](../features/preview/preview-panel/media/video.md) `preview/preview-panel/media/video` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1417](https://github.com/lgse/strata/issues/1417), pr [lgse/strata#1474](https://github.com/lgse/strata/issues/1474) +shipped · reviewed · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1417](https://github.com/lgse/strata/issues/1417), pr [lgse/strata#1474](https://github.com/lgse/strata/issues/1474) The now-playing view for video files: the frame, a header with technical badges, a waveform timeline with chapter ticks and storyboard scrubbing, and previous/next controls. It also hands playback to the default player at the current position. @@ -1348,13 +1358,13 @@ The now-playing view for video files: the frame, a header with technical badges, ### [3D model previews](../features/preview/preview-panel/model-views.md) `preview/preview-panel/model-views` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1225](https://github.com/lgse/strata/issues/1225), pr [lgse/strata#1276](https://github.com/lgse/strata/issues/1276) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1225](https://github.com/lgse/strata/issues/1225), pr [lgse/strata#1276](https://github.com/lgse/strata/issues/1276) Sandboxed previews of local STL, 3MF, and FreeCAD models in the drawer and Quick Preview, for checking a 3D part without a CAD tool. Geometry renders in software; 3MF and FreeCAD files with a saved thumbnail show that image instead. Rendered models step through four preset camera views, guided by a top-down orbit indicator, with format and triangle-count badges. The node also owns the details header that G-code image previews share, and how a cancelled background STL thumbnail render is reaped. -- Code: [`src/ui/preview/model.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/model.rs), [`src/sandbox/model.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox/model.rs), [`src/services/model_preview.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/model_preview.rs), [`src/sandbox_helper/model.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox_helper/model.rs), [`src/sandbox_helper/model/embedded.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox_helper/model/embedded.rs) -- Tests: [`src/ui/preview/model/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/model/tests.rs), [`src/ui/preview/tests/model.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/preview/tests/model.rs), [`src/sandbox/model/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox/model/tests.rs), [`src/adapters/local_preview/tests/model_preview.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/local_preview/tests/model_preview.rs), [`src/sandbox_helper/model/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox_helper/model/tests.rs), [`src/sandbox_helper/model/embedded/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/sandbox_helper/model/embedded/tests.rs), [`tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl) -- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited) +- Code: [`src/ui/preview/model.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/model.rs), [`src/sandbox/model.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox/model.rs), [`src/services/model_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/model_preview.rs), [`src/sandbox_helper/model.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/model.rs), [`src/sandbox_helper/model/embedded.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/model/embedded.rs) +- Tests: [`src/ui/preview/model/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/model/tests.rs), [`src/ui/preview/tests/model.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/tests/model.rs), [`src/sandbox/model/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox/model/tests.rs), [`src/adapters/local_preview/tests/model_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview/tests/model_preview.rs), [`src/sandbox_helper/model/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/model/tests.rs), [`src/sandbox_helper/model/embedded/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/model/embedded/tests.rs), [`tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl) +- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) (inherited) - Related: [Video previews](../features/preview/preview-panel/media/video.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [Quick preview](../features/preview/quick-preview/index.md), [Themes and appearance](../features/settings/themes/index.md) ### [PDF text selection](../features/preview/preview-panel/pdf.md) `preview/preview-panel/pdf` @@ -1370,18 +1380,18 @@ A text layer over rendered PDF pages, so text can be selected and copied from a ### [Offline route previews](../features/preview/preview-panel/routes.md) `preview/preview-panel/routes` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1841](https://github.com/lgse/strata/issues/1841), pr [lgse/strata#1842](https://github.com/lgse/strata/issues/1842) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1841](https://github.com/lgse/strata/issues/1841), pr [lgse/strata#1842](https://github.com/lgse/strata/issues/1842) Offline previews of GPS activity and route files (GPX, FIT, and KML) in the drawer and the file chooser, for checking a recorded track without a mapping app. A sandboxed helper draws the route line and an elevation profile, and a media-style player animates a marker along both. -- Code: [`src/services/route_preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/route_preview.rs), [`src/sandbox_helper/route.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/route.rs), [`src/sandbox_helper/route/fit.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/route/fit.rs), [`src/sandbox_helper/route/geometry.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/route/geometry.rs), [`src/sandbox_helper/route/render.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/route/render.rs), [`src/sandbox_helper/route/xml.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/route/xml.rs), [`src/ui/preview/route.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/route.rs), [`src/ui/preview/route/player.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/route/player.rs), [`src/ui/preview/route/plot.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/route/plot.rs), [`src/ui/preview/route/position.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/route/position.rs) -- Tests: [`src/sandbox_helper/route/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/sandbox_helper/route/tests.rs), [`src/ui/preview/route/position/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/route/position/tests.rs), [`src/ui/preview/tests/route.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preview/tests/route.rs), [`src/adapters/local_preview/tests/route_preview.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_preview/tests/route_preview.rs), [`tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl) -- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited) +- Code: [`src/services/route_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/route_preview.rs), [`src/sandbox_helper/route.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/route.rs), [`src/sandbox_helper/route/fit.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/route/fit.rs), [`src/sandbox_helper/route/geometry.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/route/geometry.rs), [`src/sandbox_helper/route/render.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/route/render.rs), [`src/sandbox_helper/route/xml.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/route/xml.rs), [`src/ui/preview/route.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/route.rs), [`src/ui/preview/route/player.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/route/player.rs), [`src/ui/preview/route/plot.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/route/plot.rs), [`src/ui/preview/route/position.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/route/position.rs) +- Tests: [`src/sandbox_helper/route/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/sandbox_helper/route/tests.rs), [`src/ui/preview/route/position/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/route/position/tests.rs), [`src/ui/preview/tests/route.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preview/tests/route.rs), [`src/adapters/local_preview/tests/route_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_preview/tests/route_preview.rs), [`tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl) +- Docs: [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) (inherited) - Related: [Media playback](../features/preview/preview-panel/media/index.md), [Preview sandbox](../features/preview/preview-panel/sandbox.md), [Settings window and general preferences](../features/settings/preferences/index.md) ### [Preview sandbox](../features/preview/preview-panel/sandbox.md) `preview/preview-panel/sandbox` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#6](https://github.com/lgse/strata/issues/6), pr [lgse/strata#17](https://github.com/lgse/strata/issues/17) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#6](https://github.com/lgse/strata/issues/6), pr [lgse/strata#17](https://github.com/lgse/strata/issues/17) The bubblewrap boundary that keeps native parsing of browsed files out of the Strata process. Image, RAW, PDF, SVG, and document-media renders run in resource-limited helpers that return only validated, bounded PNG or metadata. @@ -1392,7 +1402,7 @@ The bubblewrap boundary that keeps native parsing of browsed files out of the St ### [Quick preview](../features/preview/quick-preview/index.md) `preview/quick-preview` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin pr [lgse/strata#135](https://github.com/lgse/strata/issues/135) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin pr [lgse/strata#135](https://github.com/lgse/strata/issues/135) Opening, closing, and retargeting the file preview from the listing: Space, the Quick preview menu item, single-click previews, and selection following. It also covers default-keymap key ownership while a preview is open, and the key map shared by focused audio and video timelines. 10xer preview keys belong to `integration/10xer-mode/preview-keys`. The drawer's layout and renderers belong to `preview/preview-panel`. Child: `preview/quick-preview/folder-peek` (the hover popover listing a folder's contents). @@ -1404,20 +1414,20 @@ Opening, closing, and retargeting the file preview from the listing: Space, the ### [Folder peek](../features/preview/quick-preview/folder-peek.md) `preview/quick-preview/folder-peek` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#132](https://github.com/lgse/strata/issues/132) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#132](https://github.com/lgse/strata/issues/132) A transient popover that lists up to 8 entries of a folder when the pointer rests on it in Icons or List. It is controlled by Settings → General → Browsing → Folder peeking, which is off by default. -- Code: [`src/app/peek.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/peek.rs), [`src/ui/browser/peek.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/peek.rs) -- Tests: [`src/app/peek/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/peek/tests.rs), [`src/ui/browser/peek/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/peek/tests.rs) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) +- Code: [`src/app/peek.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/peek.rs), [`src/ui/browser/peek.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/peek.rs) +- Tests: [`src/app/peek/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/peek/tests.rs), [`src/ui/browser/peek/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/peek/tests.rs) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) - Related: [Settings window and general preferences](../features/settings/preferences/index.md), [View modes](../features/browser/view-modes/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Drag and drop](../features/operations/drag-and-drop/index.md), [10xer mode](../features/integration/10xer-mode/index.md) ## remote ### [Remote locations and file providers](../features/remote/file-providers/index.md) `remote/file-providers` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#20](https://github.com/lgse/strata/issues/20) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · ? PRs since · origin issue [lgse/strata#20](https://github.com/lgse/strata/issues/20) How files that do not live on a local disk reach Strata. This node groups two separate mechanisms and has no code of its own. `remote/file-providers/network-locations` covers SMB, SFTP, and other GIO/GVfs locations, with mounting and sign-in; it is not a file provider in the protocol sense. `remote/file-providers/external` covers opt-in provider programs that add live badges, context actions, and Send to… destinations through Strata's provider protocol. `remote/file-providers/integrations` is the Settings → Integrations catalog that installs bundled providers. `remote/file-providers/kde-connect` and `remote/file-providers/localsend` are the two bundled providers. @@ -1425,7 +1435,7 @@ How files that do not live on a local disk reach Strata. This node groups two se ### [External file providers](../features/remote/file-providers/external.md) `remote/file-providers/external` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1356](https://github.com/lgse/strata/issues/1356), pr [lgse/strata#1385](https://github.com/lgse/strata/issues/1385) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1356](https://github.com/lgse/strata/issues/1356), pr [lgse/strata#1385](https://github.com/lgse/strata/issues/1385) Opt-in, trusted programs that add live status badges, state-dependent context actions, and Send to… destinations to native files, such as cloud offline availability or a phone. Strata talks to each provider over a newline-delimited JSON protocol; Cirrove is the first adapter. Bundled providers install from `remote/file-providers/integrations`. @@ -1436,7 +1446,7 @@ Opt-in, trusted programs that add live status badges, state-dependent context ac ### [Integrations catalog](../features/remote/file-providers/integrations.md) `remote/file-providers/integrations` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1741](https://github.com/lgse/strata/issues/1741), pr [lgse/strata#1748](https://github.com/lgse/strata/issues/1748) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1741](https://github.com/lgse/strata/issues/1741), pr [lgse/strata#1748](https://github.com/lgse/strata/issues/1748) Settings → Integrations, a catalog of opt-in provider programs bundled with Strata under `integrations/`. It installs an entry as an external file provider, updates it when the bundled copy changes, turns it off, and removes it. It also lists hand-made registrations beside catalog installs. For users who want KDE Connect or LocalSend in the context menu without copying files by hand. @@ -1447,86 +1457,86 @@ Settings → Integrations, a catalog of opt-in provider programs bundled with St ### [KDE Connect integration](../features/remote/file-providers/kde-connect.md) `remote/file-providers/kde-connect` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1703](https://github.com/lgse/strata/issues/1703), pr [lgse/strata#1704](https://github.com/lgse/strata/issues/1704) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1703](https://github.com/lgse/strata/issues/1703), pr [lgse/strata#1704](https://github.com/lgse/strata/issues/1704) An opt-in bundled file provider that lists paired KDE Connect devices under Send to… ▸ KDE Connect. It sends the whole selection to the chosen device over D-Bus, with no device-picker window. For users moving from Nautilus who relied on KDE Connect's device-aware context menu. It installs from `remote/file-providers/integrations`. -- Code: [`integrations/kdeconnect/provider.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/provider.py), [`integrations/kdeconnect/messages.json`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/messages.json), [`integrations/kdeconnect/catalog.toml`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/catalog.toml), [`integrations/kdeconnect/LICENSE`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/LICENSE) -- Tests: [`integrations/kdeconnect/tests`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/tests) -- Docs: [`integrations/kdeconnect/README.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/README.md) +- Code: [`integrations/kdeconnect/provider.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/provider.py), [`integrations/kdeconnect/messages.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/messages.json), [`integrations/kdeconnect/catalog.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/catalog.toml), [`integrations/kdeconnect/LICENSE`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/LICENSE) +- Tests: [`integrations/kdeconnect/tests`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/tests) +- Docs: [`integrations/kdeconnect/README.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/README.md) - Related: [External file providers](../features/remote/file-providers/external.md), [Integrations catalog](../features/remote/file-providers/integrations.md), [Send to removable devices](../features/operations/clipboard/send-to.md) ### [LocalSend integration](../features/remote/file-providers/localsend.md) `remote/file-providers/localsend` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1754](https://github.com/lgse/strata/issues/1754), pr [lgse/strata#1756](https://github.com/lgse/strata/issues/1756) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1754](https://github.com/lgse/strata/issues/1754), pr [lgse/strata#1756](https://github.com/lgse/strata/issues/1756) An opt-in bundled file provider whose single Send to… ▸ LocalSend entry hands the selected files and folders to the installed LocalSend app. LocalSend then picks the device and sends. For users who would otherwise re-pick the same files in LocalSend's own dialog. It installs from `remote/file-providers/integrations`. -- Code: [`integrations/localsend/provider.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/localsend/provider.py), [`integrations/localsend/messages.json`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/localsend/messages.json), [`integrations/localsend/catalog.toml`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/localsend/catalog.toml), [`integrations/localsend/LICENSE`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/localsend/LICENSE) -- Tests: [`integrations/localsend/tests/test_provider.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/localsend/tests/test_provider.py) -- Docs: [`integrations/localsend/README.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/localsend/README.md) +- Code: [`integrations/localsend/provider.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/localsend/provider.py), [`integrations/localsend/messages.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/localsend/messages.json), [`integrations/localsend/catalog.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/localsend/catalog.toml), [`integrations/localsend/LICENSE`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/localsend/LICENSE) +- Tests: [`integrations/localsend/tests/test_provider.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/localsend/tests/test_provider.py) +- Docs: [`integrations/localsend/README.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/localsend/README.md) - Related: [External file providers](../features/remote/file-providers/external.md), [Integrations catalog](../features/remote/file-providers/integrations.md), [Send to removable devices](../features/operations/clipboard/send-to.md) ### [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) `remote/file-providers/network-locations` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#20](https://github.com/lgse/strata/issues/20), pr [lgse/strata#31](https://github.com/lgse/strata/issues/31) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#20](https://github.com/lgse/strata/issues/20), pr [lgse/strata#31](https://github.com/lgse/strata/issues/31) Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native folders. Covers mounting on demand, the sign-in and SSH host-key dialogs, and connection failure messages. It also covers the sidebar's Network place and SMB share rows, SMB share lists, and progressive remote loading. Typed-address parsing belongs to `browser/navigation/location-bar`. -- Code: [`src/adapters/gio_location.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/gio_location.rs), [`src/app/browser/remote.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/remote.rs) -- Tests: [`src/adapters/gio_location/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/adapters/gio_location/tests.rs), [`src/app/browser/remote/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/app/browser/remote/tests.rs), [`scripts/sftp-fixture.sh`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/sftp-fixture.sh) -- Docs: [`site/src/reference/remote-sftp.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/remote-sftp.md), [`docs/remote-sftp.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/remote-sftp.md) +- Code: [`src/adapters/gio_location.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/gio_location.rs), [`src/app/browser/remote.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/remote.rs) +- Tests: [`src/adapters/gio_location/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/gio_location/tests.rs), [`src/app/browser/remote/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/remote/tests.rs), [`scripts/sftp-fixture.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/sftp-fixture.sh) +- Docs: [`site/src/reference/remote-sftp.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/remote-sftp.md), [`docs/remote-sftp.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/remote-sftp.md) - Related: [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [Devices and volumes](../features/devices/volumes/index.md), [Unmount and eject](../features/devices/volumes/release.md), [Pinned folders](../features/browser/sidebar/pins/index.md), [Connect to server dialog](../features/browser/sidebar/connect-to-server.md), [Browser tabs](../features/browser/tabs/index.md) ## settings ### [Diagnostics](../features/settings/diagnostics.md) `settings/diagnostics` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1734](https://github.com/lgse/strata/issues/1734), pr [lgse/strata#1735](https://github.com/lgse/strata/issues/1735) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1734](https://github.com/lgse/strata/issues/1734), pr [lgse/strata#1735](https://github.com/lgse/strata/issues/1735) Settings → Diagnostics, an on-demand page that checks the runtime pieces previews, locations, devices, and desktop integration rely on. Each check reports passed, warning, or problem with an install command for the detected distribution, and the results copy as a report for bug reports. -- Code: [`src/services/diagnostics.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/diagnostics.rs), [`src/ui/settings/diagnostics.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/settings/diagnostics.rs), [`data/icons/scalable/actions/strata-stethoscope.svg`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/icons/scalable/actions/strata-stethoscope.svg) -- Tests: [`src/services/diagnostics/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/diagnostics/tests.rs), [`src/ui/settings/diagnostics/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/settings/diagnostics/tests.rs) -- Docs: [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/diagnostics.md) +- Code: [`src/services/diagnostics.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/diagnostics.rs), [`src/ui/settings/diagnostics.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/diagnostics.rs), [`data/icons/scalable/actions/strata-stethoscope.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/actions/strata-stethoscope.svg) +- Tests: [`src/services/diagnostics/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/diagnostics/tests.rs), [`src/ui/settings/diagnostics/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/diagnostics/tests.rs) +- Docs: [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/diagnostics.md) - Related: [Settings window and general preferences](../features/settings/preferences/index.md), [Shared location model and listing adapter](../features/app/infrastructure.md), [Preview sandbox](../features/preview/preview-panel/sandbox.md), [Thumbnail workers](../features/browser/thumbnails/workers.md), [Media playback](../features/preview/preview-panel/media/index.md), [RAR extraction](../features/operations/archives/rar.md), [Updates](../features/app/updates/index.md), [Drive format, label, and properties](../features/devices/volumes/drive-dialogs.md), [Open in Terminal](../features/integration/open-with/terminal.md), [Custom actions](../features/integration/custom-actions.md) ### [Settings window and general preferences](../features/settings/preferences/index.md) `settings/preferences` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#845](https://github.com/lgse/strata/issues/845), pr [lgse/strata#849](https://github.com/lgse/strata/issues/849) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#845](https://github.com/lgse/strata/issues/845), pr [lgse/strata#849](https://github.com/lgse/strata/issues/849) The Settings panel: opening and closing it, page navigation, responsive layout, Settings-wide search, and the About page. It also owns the General settings no other feature claims: Units, Show F1 Shortcuts button, Watch network folders, default directory, and the hidden-files toggle. Window buttons belong to `app/window`. Feature pages and rows belong to their features. They are Appearance, Actions, Keyboard, Integrations, Updates, Diagnostics, search exclusions, thumbnails, desktop integration, Restore open tabs, and Remember sort and icon size per folder. Children: `settings/preferences/storage` (saving and synchronizing preferences), `settings/preferences/language` (interface language), and `settings/preferences/date-format` (modified-date display). -- Code: [`src/ui/settings/general.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/general.rs), [`src/ui/settings/about.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/about.rs), [`src/ui/settings/bindings.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/bindings.rs), [`src/ui/settings/wrap.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/wrap.rs), [`src/ui/settings/search.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/search.rs), [`src/ui/window/composition/settings.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/settings.rs), [`data/brand/strata-logo-white.svg`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/brand/strata-logo-white.svg) -- Tests: [`src/ui/settings/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/tests.rs), [`src/ui/settings/tests/general.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/tests/general.rs), [`src/ui/settings/search/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/search/tests.rs), [`src/ui/settings/tests/restart.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/tests/restart.rs), [`src/ui/window/composition/settings/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/composition/settings/tests.rs), [`src/app/browser/tests/preferences.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/tests/preferences.rs), [`tests/qa/scenarios/hidden_files`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/hidden_files), [`tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl), [`tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) +- Code: [`src/ui/settings/general.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/general.rs), [`src/ui/settings/about.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/about.rs), [`src/ui/settings/bindings.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/bindings.rs), [`src/ui/settings/wrap.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/wrap.rs), [`src/ui/settings/search.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/search.rs), [`src/ui/window/composition/settings.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/settings.rs), [`data/brand/strata-logo-white.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/brand/strata-logo-white.svg) +- Tests: [`src/ui/settings/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/tests.rs), [`src/ui/settings/tests/general.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/tests/general.rs), [`src/ui/settings/search/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/search/tests.rs), [`src/ui/settings/tests/restart.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/tests/restart.rs), [`src/ui/window/composition/settings/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/settings/tests.rs), [`src/app/browser/tests/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/preferences.rs), [`tests/qa/scenarios/hidden_files`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/hidden_files), [`tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl), [`tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) - Related: [Themes and appearance](../features/settings/themes/index.md), [Diagnostics](../features/settings/diagnostics.md), [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md), [Integrations catalog](../features/remote/file-providers/integrations.md), [Search](../features/browser/search/index.md), [Updates](../features/app/updates/index.md), [Custom actions](../features/integration/custom-actions.md), [Browser tabs](../features/browser/tabs/index.md), [Tab session restore](../features/browser/tabs/session-restore.md), [10xer mode](../features/integration/10xer-mode/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Offline route previews](../features/preview/preview-panel/routes.md) - Children: [Modified date format](../features/settings/preferences/date-format.md), [Interface language](../features/settings/preferences/language.md), [Preference storage and synchronization](../features/settings/preferences/storage.md) ### [Modified date format](../features/settings/preferences/date-format.md) `settings/preferences/date-format` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin pr [lgse/strata#180](https://github.com/lgse/strata/issues/180) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#180](https://github.com/lgse/strata/issues/180) How file modification times read in lists and previews, and the Modified date format preference that chooses between relative labels and two absolute formats. -- Code: [`src/util/mod.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/util/mod.rs), [`data/locales/dates.json`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/locales/dates.json) -- Tests: [`src/util/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/util/tests.rs) -- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) +- Code: [`src/util/mod.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/util/mod.rs), [`data/locales/dates.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/dates.json) +- Tests: [`src/util/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/util/tests.rs) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) - Related: [Properties dialog](../features/browser/properties/index.md) ### [Interface language](../features/settings/preferences/language.md) `settings/preferences/language` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1517](https://github.com/lgse/strata/issues/1517), pr [lgse/strata#1519](https://github.com/lgse/strata/issues/1519) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1517](https://github.com/lgse/strata/issues/1517), pr [lgse/strata#1519](https://github.com/lgse/strata/issues/1519) -The Language setting and the compiled-in translations behind it. Strata's own interface is available in twelve languages, chosen automatically from the desktop locale or set manually, and applied on restart. +The Language setting and the compiled-in translations behind it. Strata's own interface is available in thirteen languages, chosen automatically from the desktop locale or set manually, and applied on restart. -- Code: [`src/i18n.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/i18n.rs), [`data/locales/counts.json`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/locales/counts.json) -- Tests: [`src/i18n/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/i18n/tests.rs), [`src/i18n/catalog_tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/i18n/catalog_tests.rs) -- Docs: [`docs/internationalization.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/internationalization.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) +- Code: [`src/i18n.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/i18n.rs), [`data/locales/counts.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/counts.json) +- Tests: [`src/i18n/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/i18n/tests.rs), [`src/i18n/catalog_tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/i18n/catalog_tests.rs) +- Docs: [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) ### [Preference storage and synchronization](../features/settings/preferences/storage.md) `settings/preferences/storage` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#212](https://github.com/lgse/strata/issues/212), pr [lgse/strata#518](https://github.com/lgse/strata/issues/518) +shipped · reviewed · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#212](https://github.com/lgse/strata/issues/212), pr [lgse/strata#518](https://github.com/lgse/strata/issues/518) How application-wide preferences are loaded, saved to `settings.toml`, recovered from damaged files, and kept in step across every window of one Strata process. Saves go through one background writer. Every Settings row and every preference consumer goes through this store. @@ -1536,19 +1546,19 @@ How application-wide preferences are loaded, saved to `settings.toml`, recovered ### [Themes and appearance](../features/settings/themes/index.md) `settings/themes` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 2 PRs since · origin issue [lgse/strata#82](https://github.com/lgse/strata/issues/82), pr [lgse/strata#96](https://github.com/lgse/strata/issues/96) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#82](https://github.com/lgse/strata/issues/82), pr [lgse/strata#96](https://github.com/lgse/strata/issues/96) The Settings → Appearance page and the color system behind it. It covers 95 bundled themes, custom theme files and their editor, syntax palettes, file icon colors, element glow, the interface renderer, font rendering, an optional user stylesheet, the uncomposited popup fallback, and Frame density bar spacing. Children: `settings/themes/omarchy` (following the Omarchy Quattro theme), `settings/themes/icons` (bundled Lucide and Catppuccin icons), `settings/themes/corner-roundness` (the corner radius scale), and `settings/themes/interface-font` (the interface typeface). Text size, also on this page, is `browser/view-modes/text-size`. The density sliders are `browser/view-modes/density`. -- Code: [`src/ui/theme.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/theme.rs), [`src/ui/settings/theme.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/theme.rs), [`src/ui/settings/theme/editor.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/theme/editor.rs), [`data/themes/catalog.toml`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/themes/catalog.toml), [`data/theme-empty.css`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/theme-empty.css), [`src/util/gresource.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/util/gresource.rs) -- Tests: [`src/ui/theme/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/theme/tests.rs), [`src/ui/theme/tests/syntax.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/theme/tests/syntax.rs), [`src/ui/theme/tests/density.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/theme/tests/density.rs), [`src/ui/settings/theme/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/theme/tests.rs), [`src/ui/settings/theme/editor/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/theme/editor/tests.rs), [`src/ui/settings/tests/dismissal.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/settings/tests/dismissal.rs), [`src/util/gresource/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/util/gresource/tests.rs) -- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/themes.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/themes.md) +- Code: [`src/ui/theme.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/theme.rs), [`src/ui/settings/theme.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/theme.rs), [`src/ui/settings/theme/editor.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/theme/editor.rs), [`data/themes/catalog.toml`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/themes/catalog.toml), [`data/theme-empty.css`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/theme-empty.css), [`src/util/gresource.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/util/gresource.rs) +- Tests: [`src/ui/theme/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/theme/tests.rs), [`src/ui/theme/tests/syntax.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/theme/tests/syntax.rs), [`src/ui/theme/tests/density.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/theme/tests/density.rs), [`src/ui/settings/theme/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/theme/tests.rs), [`src/ui/settings/theme/editor/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/theme/editor/tests.rs), [`src/ui/settings/tests/dismissal.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/settings/tests/dismissal.rs), [`src/util/gresource/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/util/gresource/tests.rs) +- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) - Related: [Text size](../features/browser/view-modes/text-size.md), [Preview panel](../features/preview/preview-panel/index.md), [Frame and content density](../features/browser/view-modes/density.md), [Corner roundness](../features/settings/themes/corner-roundness.md), [Interface font](../features/settings/themes/interface-font.md), [Omarchy theme following](../features/settings/themes/omarchy.md) - Children: [Corner roundness](../features/settings/themes/corner-roundness.md), [Themed icons](../features/settings/themes/icons/index.md), [Interface font](../features/settings/themes/interface-font.md), [Omarchy theme following](../features/settings/themes/omarchy.md) ### [Corner roundness](../features/settings/themes/corner-roundness.md) `settings/themes/corner-roundness` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 0 PRs since · origin issue [lgse/strata#1678](https://github.com/lgse/strata/issues/1678), pr [lgse/strata#1680](https://github.com/lgse/strata/issues/1680) +shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · ? PRs since · origin issue [lgse/strata#1678](https://github.com/lgse/strata/issues/1678), pr [lgse/strata#1680](https://github.com/lgse/strata/issues/1680) An app-wide scale for corner radii, set as a percent under Settings → Appearance → Shape. It lets users square the interface at 0 or soften it up to 200, applied to every pixel radius in Strata's stylesheet. @@ -1559,30 +1569,30 @@ An app-wide scale for corner radii, set as a percent under Settings → Appearan ### [Themed icons](../features/settings/themes/icons/index.md) `settings/themes/icons` -shipped · draft · reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 1 PRs since · origin issue [lgse/strata#169](https://github.com/lgse/strata/issues/169), pr [lgse/strata#170](https://github.com/lgse/strata/issues/170) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#169](https://github.com/lgse/strata/issues/169), pr [lgse/strata#170](https://github.com/lgse/strata/issues/170) Strata's bundled interface and file-type icons, rasterized at the size and density they are drawn. Interface icons and generic file types are Lucide outlines in the theme's accent; code and config files use Catppuccin icons in their own palette by default, or the accent under Theme colors. Covers icon coloring, GTK control icons, chrome icon sizing, stroke weight, and the icon texture cache. Its child `settings/themes/icons/catppuccin` owns the bundled Catppuccin set and which icon each file name gets. -- Code: [`src/assets.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/assets.rs), [`src/assets/vector.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/assets/vector.rs), [`data/icons/scalable/actions/strata-video.svg`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/icons/scalable/actions/strata-video.svg), [`data/icons/scalable/actions/strata-file-archive.svg`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/icons/scalable/actions/strata-file-archive.svg), [`data/icons/scalable/actions/strata-chevron-down-symbolic.svg`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/icons/scalable/actions/strata-chevron-down-symbolic.svg), [`data/icons/scalable/actions/strata-minus-symbolic.svg`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/icons/scalable/actions/strata-minus-symbolic.svg), [`data/icons/scalable/actions/strata-plus-symbolic.svg`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/icons/scalable/actions/strata-plus-symbolic.svg) -- Tests: [`src/assets/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/assets/tests.rs), [`src/assets/vector/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/assets/vector/tests.rs) -- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/themes.md) (inherited) +- Code: [`src/assets.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/assets.rs), [`src/assets/vector.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/assets/vector.rs), [`data/icons/scalable/actions/strata-video.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/actions/strata-video.svg), [`data/icons/scalable/actions/strata-file-archive.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/actions/strata-file-archive.svg), [`data/icons/scalable/actions/strata-chevron-down-symbolic.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/actions/strata-chevron-down-symbolic.svg), [`data/icons/scalable/actions/strata-minus-symbolic.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/actions/strata-minus-symbolic.svg), [`data/icons/scalable/actions/strata-plus-symbolic.svg`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/scalable/actions/strata-plus-symbolic.svg) +- Tests: [`src/assets/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/assets/tests.rs), [`src/assets/vector/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/assets/vector/tests.rs) +- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) (inherited) - Related: [Icons view](../features/browser/view-modes/icons.md), [Folder and file customization](../features/browser/folder-customization.md), [Catppuccin file-type icons](../features/settings/themes/icons/catppuccin.md) - Children: [Catppuccin file-type icons](../features/settings/themes/icons/catppuccin.md) ### [Catppuccin file-type icons](../features/settings/themes/icons/catppuccin.md) `settings/themes/icons/catppuccin` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1587](https://github.com/lgse/strata/issues/1587), pr [lgse/strata#1588](https://github.com/lgse/strata/issues/1588) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1587](https://github.com/lgse/strata/issues/1587), pr [lgse/strata#1588](https://github.com/lgse/strata/issues/1588) The bundled Catppuccin icon set and the mapping from a file's name to its file-type icon. Code and config files get Catppuccin icons; pictures, media, archives, documents, and keys keep Lucide icons. The parent `settings/themes/icons` owns the Lucide set and colors and rasterizes both sets. -- Code: [`src/ui/browser/entry.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/entry.rs), [`src/ui/browser/entry/catppuccin.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/entry/catppuccin.rs), [`data/icons/catppuccin`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/icons/catppuccin), [`scripts/catppuccin_icons.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/catppuccin_icons.py) -- Tests: [`src/ui/browser/entry/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/browser/entry/tests.rs) -- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/themes.md) (inherited) +- Code: [`src/ui/browser/entry.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/entry.rs), [`src/ui/browser/entry/catppuccin.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/entry/catppuccin.rs), [`data/icons/catppuccin`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/icons/catppuccin), [`scripts/catppuccin_icons.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/catppuccin_icons.py) +- Tests: [`src/ui/browser/entry/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/entry/tests.rs) +- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) (inherited) - Related: [Themed icons](../features/settings/themes/icons/index.md), [Icons view](../features/browser/view-modes/icons.md) ### [Interface font](../features/settings/themes/interface-font.md) `settings/themes/interface-font` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1217](https://github.com/lgse/strata/issues/1217), pr [lgse/strata#1696](https://github.com/lgse/strata/issues/1696) +shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1217](https://github.com/lgse/strata/issues/1217), pr [lgse/strata#1696](https://github.com/lgse/strata/issues/1696) An Interface font preference under Settings → Appearance → Text that picks the typeface for menus, file lists, and dialogs. It is for users who want a different interface font than the bundled JetBrains Mono, independent of text size. @@ -1592,10 +1602,10 @@ An Interface font preference under Settings → Appearance → Text that picks t ### [Omarchy theme following](../features/settings/themes/omarchy.md) `settings/themes/omarchy` -shipped · draft · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 0 PRs since · origin issue [lgse/strata#1198](https://github.com/lgse/strata/issues/1198), pr [lgse/strata#1482](https://github.com/lgse/strata/issues/1482) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1198](https://github.com/lgse/strata/issues/1198), pr [lgse/strata#1482](https://github.com/lgse/strata/issues/1482) Follow Omarchy applies the active Omarchy Quattro desktop theme to Strata and tracks it as it changes. Strata maps Quattro's own surface keys, and the Omarchy variant, remembered per Omarchy theme, picks the layout: Lighter, Darker, or Contrast. -- Code: [`src/ui/theme/omarchy.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/theme/omarchy.rs) -- Tests: [`src/ui/theme/omarchy/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/theme/omarchy/tests.rs) -- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/themes.md) (inherited) +- Code: [`src/ui/theme/omarchy.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/theme/omarchy.rs) +- Tests: [`src/ui/theme/omarchy/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/theme/omarchy/tests.rs) +- Docs: [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) (inherited) diff --git a/index/by-path.md b/index/by-path.md index 4eb835f..3f93ebe 100644 --- a/index/by-path.md +++ b/index/by-path.md @@ -268,6 +268,7 @@ Each upstream path or glob with the node that owns it and that node's ancestors, | `src/app/browser/remote/tests.rs` | tests | [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) | [Remote locations and file providers](../features/remote/file-providers/index.md) | | `src/app/browser/sorting.rs` | code | [Sorting](../features/browser/view-modes/sorting.md) | [View modes](../features/browser/view-modes/index.md) | | `src/app/browser/sorting/tests.rs` | tests | [Sorting](../features/browser/view-modes/sorting.md) | [View modes](../features/browser/view-modes/index.md) | +| `src/app/browser/tests/administrator.rs` | tests | [Administrator access](../features/browser/navigation/administrator-access.md) | [Navigation](../features/browser/navigation/index.md) | | `src/app/browser/tests/archive_activation.rs` | tests | [Archives](../features/operations/archives/index.md) | — | | `src/app/browser/tests/background_operations.rs` | tests | [Progress dock](../features/operations/progress/dock.md) | [Operation progress and cancellation](../features/operations/progress/index.md) | | `src/app/browser/tests/camera_photos.rs` | tests | [Camera photos](../features/devices/volumes/camera.md) | [Devices and volumes](../features/devices/volumes/index.md) | @@ -751,6 +752,7 @@ Each upstream path or glob with the node that owns it and that node's ancestors, | `src/ui/settings/theme/editor.rs` | code | [Themes and appearance](../features/settings/themes/index.md) | — | | `src/ui/settings/theme/editor/tests.rs` | tests | [Themes and appearance](../features/settings/themes/index.md) | — | | `src/ui/settings/theme/tests.rs` | tests | [Themes and appearance](../features/settings/themes/index.md) | — | +| `src/ui/settings/update_status.rs` | code | [Updates](../features/app/updates/index.md) | — | | `src/ui/settings/wrap.rs` | code | [Settings window and general preferences](../features/settings/preferences/index.md) | — | | `src/ui/shortcut_footer.rs` | code | [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md) | — | | `src/ui/shortcut_footer/candidates.rs` | code | [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) | [10xer mode](../features/integration/10xer-mode/index.md) | @@ -1084,7 +1086,11 @@ Each upstream path or glob with the node that owns it and that node's ancestors, | `tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl` | tests | [Pane filter](../features/browser/search/filter/index.md) | [Search](../features/browser/search/index.md) | | `tests/qa/scenarios/selection` | tests | [Selection](../features/browser/selection/index.md) | — | | `tests/qa/scenarios/sidebar_file_drops` | tests | [Drag and drop](../features/operations/drag-and-drop/index.md) | — | -| `tests/qa/scenarios/sidebar_pinning` | tests | [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) | [Pinned folders](../features/browser/sidebar/pins/index.md), [Sidebar](../features/browser/sidebar/index.md) | +| `tests/qa/scenarios/sidebar_pinning/folder-pins-order-and-bookmarks.jsonl` | tests | [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) | [Pinned folders](../features/browser/sidebar/pins/index.md), [Sidebar](../features/browser/sidebar/index.md) | +| `tests/qa/scenarios/sidebar_pinning/foreign-folder-drags-validate.jsonl` | tests | [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) | [Pinned folders](../features/browser/sidebar/pins/index.md), [Sidebar](../features/browser/sidebar/index.md) | +| `tests/qa/scenarios/sidebar_pinning/pinned-rows-transfer-and-remote-gaps.jsonl` | tests | [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) | [Pinned folders](../features/browser/sidebar/pins/index.md), [Sidebar](../features/browser/sidebar/index.md) | +| `tests/qa/scenarios/sidebar_pinning/spring-loaded-rows-keep-pin-intent.jsonl` | tests | [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) | [Pinned folders](../features/browser/sidebar/pins/index.md), [Sidebar](../features/browser/sidebar/index.md) | +| `tests/qa/scenarios/sidebar_pinning/tenxer-pin-feedback-identifies-slot.jsonl` | tests | [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) | [10xer mode](../features/integration/10xer-mode/index.md) | | `tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl` | tests | [Sidebar](../features/browser/sidebar/index.md) | — | | `tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl` | tests | [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) | [Pinned folders](../features/browser/sidebar/pins/index.md), [Sidebar](../features/browser/sidebar/index.md) | | `tests/qa/scenarios/startup_arguments` | tests | [Startup location arguments](../features/browser/navigation/startup-arguments.md) | [Navigation](../features/browser/navigation/index.md) | diff --git a/index/by-pr.md b/index/by-pr.md index 7d22d85..d42a68a 100644 --- a/index/by-pr.md +++ b/index/by-pr.md @@ -6,6 +6,17 @@ Every History row across the tree, newest first. | PR | Date | Type | Node | Change | | --- | --- | --- | --- | --- | +| [lgse/strata#1934](https://github.com/lgse/strata/issues/1934) | 2026-10-29 | feat | [Updates](../features/app/updates/index.md) | Added the `STRATA_UPDATER=disabled` build switch, which leaves the updater out for distributions whose packages deliver updates. | +| [lgse/strata#1918](https://github.com/lgse/strata/issues/1918) | 2026-10-29 | feat | [Interface language](../features/settings/preferences/language.md) | Added Hungarian (Magyar) as the thirteenth language, with locale detection, no-break-space digit grouping, and lower-case error details after a colon. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Themes and appearance](../features/settings/themes/index.md) | Watched the resolved Omarchy theme folder and rebound it after a symlink switch, so `colors.toml` edits stay live without a restart. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Settings window and general preferences](../features/settings/preferences/index.md) | Kept hidden entries in folder monitors, so dot-files other programs change while hidden files are off show at once when they are turned on. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) | Showed the `g +` flash after the bookmark is saved, so new pins in slots 1–4 show their digit. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Frame and content density](../features/browser/view-modes/density.md) | Reserved width and an 8 px gap for the snap buttons so they stop overlapping, and translated zh-TW "Airy". | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Sidebar](../features/browser/sidebar/index.md) | Made sidebar hover a neutral tint, so a hovered old place no longer looks like a second selected row. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md) | Gave crumb labels a minimum width so deep paths scroll, and revealed the current crumb after layout and after editing. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Updates](../features/app/updates/index.md) | Shared one completed update-check result with every Settings → Updates row, so a page opened after the startup check shows it. | +| [lgse/strata#1837](https://github.com/lgse/strata/issues/1837) | 2026-10-29 | feat | [Administrator access](../features/browser/navigation/administrator-access.md) | Opened unreadable local folders through `admin://` after a polkit prompt, so root-owned folders on external drives can be browsed. | | [lgse/strata#1912](https://github.com/lgse/strata/issues/1912) | 2026-10-28 | fix | [Themes and appearance](../features/settings/themes/index.md) | Dropped popover, menu, and tooltip shadows and corner radii on displays without a compositor, where their transparent pixels render black. | | [lgse/strata#1912](https://github.com/lgse/strata/issues/1912) | 2026-10-28 | fix | [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md) | Opened Quick Preview on a file revealed from a typed path, and dropped that request when navigation moves on first. | | [lgse/strata#1885](https://github.com/lgse/strata/issues/1885) | 2026-10-28 | feat | [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) | Made shortcuts remappable per map in `settings.toml` and Settings → Keyboard. Users can move clashing keys and bind commands their map lacked. | diff --git a/index/qa.md b/index/qa.md index ffc226d..8207bf5 100644 --- a/index/qa.md +++ b/index/qa.md @@ -6,98 +6,99 @@ One sweep per area owns every node under it. [qa/README.md](../qa/README.md) say ## [App sweep](../qa/sweeps/app.md) `app` -reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 16 nodes, 16 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 16 nodes, 16 with probes -- Triggers: [`src/ui/window.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window.rs), [`src/ui/window/keyboard/items.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/keyboard/items.rs), [`src/ui/frame.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/frame.rs), [`src/ui/motion.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/motion.rs), [`src/style.css`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/style.css), [`src/ui/input_ownership.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/input_ownership.rs), [`src/ui/window/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/window/tests.rs), [`src/ui/frame/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/frame/tests.rs), [`src/ui/input_ownership/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/input_ownership/tests.rs), [`src/ui/motion/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/motion/tests.rs) -- Tools: [`scripts/test_installer.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/test_installer.py), [`install.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/install.sh), [`docs/packaging.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/packaging.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/signed-updates.md), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-navigation.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md), [`docs/keymap.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keymap.md), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/harness.json), [`scripts/qa-drive.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/qa-drive.sh) -- Hand-offs: Window title text after a folder opens → [`browser`](../qa/sweeps/browser.md); The `GDK_DEBUG` value programs launched from a service-activated Strata see → [`integration`](../qa/sweeps/integration.md); Per-mode movement, selection, the keyboard cursor after reloads, and type-to-search → [`browser`](../qa/sweeps/browser.md); Context menu items, placement, and Open With → [`browser`](../qa/sweeps/browser.md); The sidebar as a navigation surface, the Trash row, and the update notice's text and layout → [`browser`](../qa/sweeps/browser.md); Sidebar toggle steps and tooltip text → [`browser`](../qa/sweeps/browser.md); Sidebar automatic rail → [`preview`](../qa/sweeps/preview.md); Settings layer mechanics and pages other than Updates, including Window buttons and text size controls → [`settings`](../qa/sweeps/settings.md); Settings search terms that find "Install a specific release" → [`settings`](../qa/sweeps/settings.md); The "Not responding" notice and request lanes on a stalled mount → [`browser`](../qa/sweeps/browser.md); The FileManager1 D-Bus service and Open in Terminal → [`integration`](../qa/sweeps/integration.md); The portal file chooser, including its identity and refresh after an update → [`integration`](../qa/sweeps/integration.md); 10xer-mode key variants and footer prompts → [`integration`](../qa/sweeps/integration.md); Settings search finding Keyboard rows and the Settings navigation layout → [`settings`](../qa/sweeps/settings.md); Custom action slot feedback, keymap overrides in the portal chooser, and Ctrl-bound history, parent, and home keys there → [`integration`](../qa/sweeps/integration.md); Rebound keys in previews → [`preview`](../qa/sweeps/preview.md); Rebound context-menu accelerators and Ctrl-bound history, parent, and home in the browser → [`browser`](../qa/sweeps/browser.md); Tab numbers, view switching, text size, and the filter on other layouts → [`browser`](../qa/sweeps/browser.md); Chosen states of sort options and Appearance options other than Hidden files, after changes made while their menus are closed → [`browser`](../qa/sweeps/browser.md); Chosen states of Settings choice options and the Hidden files option → [`settings`](../qa/sweeps/settings.md); The contents and outcome of operation dialogs such as paste conflicts, Compress, and progress → [`operations`](../qa/sweeps/operations.md); The mount authentication dialog and remote paths in the search palette → [`remote`](../qa/sweeps/remote.md); Thumbnail size steps and the size notice → [`browser`](../qa/sweeps/browser.md); Format Drive label limits and units per filesystem → [`devices`](../qa/sweeps/devices.md); The Settings file chooser row on a silent session bus → [`integration`](../qa/sweeps/integration.md) +- Triggers: [`src/ui/window.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window.rs), [`src/ui/window/keyboard/items.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/items.rs), [`src/ui/frame.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/frame.rs), [`src/ui/motion.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/motion.rs), [`src/style.css`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/style.css), [`src/ui/input_ownership.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/input_ownership.rs), [`src/ui/window/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests.rs), [`src/ui/frame/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/frame/tests.rs), [`src/ui/input_ownership/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/input_ownership/tests.rs), [`src/ui/motion/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/motion/tests.rs) +- Tools: [`scripts/test_installer.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_installer.py), [`install.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/install.sh), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/signed-updates.md), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md), [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json), [`scripts/qa-drive.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/qa-drive.sh) +- Hand-offs: Window title text after a folder opens → [`browser`](../qa/sweeps/browser.md); The `GDK_DEBUG` value programs launched from a service-activated Strata see → [`integration`](../qa/sweeps/integration.md); Per-mode movement, selection, the keyboard cursor after reloads, and type-to-search → [`browser`](../qa/sweeps/browser.md); Context menu items, placement, and Open With → [`browser`](../qa/sweeps/browser.md); The sidebar as a navigation surface, the Trash row, and the update notice's text and layout → [`browser`](../qa/sweeps/browser.md); Sidebar toggle steps and tooltip text → [`browser`](../qa/sweeps/browser.md); Sidebar automatic rail → [`preview`](../qa/sweeps/preview.md); Settings layer mechanics and pages other than Updates, including Window buttons and text size controls → [`settings`](../qa/sweeps/settings.md); Settings search terms that find "Install a specific release" → [`settings`](../qa/sweeps/settings.md); Settings search, navigation, and the Diagnostics Installation row in a build without the updater → [`settings`](../qa/sweeps/settings.md); Opening an unreadable folder as administrator, its breadcrumb root, and its notice → [`browser`](../qa/sweeps/browser.md); The "Not responding" notice and request lanes on a stalled mount → [`browser`](../qa/sweeps/browser.md); The FileManager1 D-Bus service and Open in Terminal → [`integration`](../qa/sweeps/integration.md); The portal file chooser, including its identity and refresh after an update → [`integration`](../qa/sweeps/integration.md); 10xer-mode key variants and footer prompts → [`integration`](../qa/sweeps/integration.md); Settings search finding Keyboard rows and the Settings navigation layout → [`settings`](../qa/sweeps/settings.md); Custom action slot feedback, keymap overrides in the portal chooser, and Ctrl-bound history, parent, and home keys there → [`integration`](../qa/sweeps/integration.md); Rebound keys in previews → [`preview`](../qa/sweeps/preview.md); Rebound context-menu accelerators and Ctrl-bound history, parent, and home in the browser → [`browser`](../qa/sweeps/browser.md); Tab numbers, view switching, text size, and the filter on other layouts → [`browser`](../qa/sweeps/browser.md); Chosen states of sort options and Appearance options other than Hidden files, after changes made while their menus are closed → [`browser`](../qa/sweeps/browser.md); Chosen states of Settings choice options and the Hidden files option → [`settings`](../qa/sweeps/settings.md); The contents and outcome of operation dialogs such as paste conflicts, Compress, and progress → [`operations`](../qa/sweeps/operations.md); The mount authentication dialog and remote paths in the search palette → [`remote`](../qa/sweeps/remote.md); Thumbnail size steps and the size notice → [`browser`](../qa/sweeps/browser.md); Format Drive label limits and units per filesystem → [`devices`](../qa/sweeps/devices.md); The Settings file chooser row on a silent session bus → [`integration`](../qa/sweeps/integration.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | -| [Accessibility](../features/app/accessibility.md) `app/accessibility` | 10 | [`tests/qa/scenarios/accessibility`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/accessibility), [`tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl) | 1 | [`docs/testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/testing.md) | -| [Modal dialogs](../features/app/dialogs.md) `app/dialogs` | 15 | [`tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl) | 3 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| [Shared location model and listing adapter](../features/app/infrastructure.md) `app/infrastructure` | 14 | [`tests/qa/scenarios/visual_baselines`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/visual_baselines) | 43 | [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/performance-baseline.md), [`docs/hardened-configuration.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/hardened-configuration.md), [`docs/unsafe-code.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/unsafe-code.md), [`docs/testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/testing.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/packaging.md) | +| [Accessibility](../features/app/accessibility.md) `app/accessibility` | 11 | [`tests/qa/scenarios/accessibility`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/accessibility), [`tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl) | 1 | [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md) | +| [Modal dialogs](../features/app/dialogs.md) `app/dialogs` | 17 | [`tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl) | 3 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | +| [Shared location model and listing adapter](../features/app/infrastructure.md) `app/infrastructure` | 15 | [`tests/qa/scenarios/visual_baselines`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/visual_baselines) | 43 | [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md), [`docs/hardened-configuration.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/hardened-configuration.md), [`docs/unsafe-code.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/unsafe-code.md), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | | [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md) `app/keyboard-shortcuts` | 20 | — | 1 | [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md) | -| ↳ [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) `app/keyboard-shortcuts/remapping` | 19 | [`tests/qa/scenarios/keymap`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keymap) | 9 | [`docs/keymap.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keymap.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md) (inherited) | -| [Packaging and installation](../features/app/packaging/index.md) `app/packaging` | 7 | — | 0 | [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/install.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) | +| ↳ [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) `app/keyboard-shortcuts/remapping` | 19 | [`tests/qa/scenarios/keymap`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keymap) | 9 | [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md) (inherited) | +| [Packaging and installation](../features/app/packaging/index.md) `app/packaging` | 7 | — | 0 | [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/install.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | | ↳ [AUR packages](../features/app/packaging/aur.md) `app/packaging/aur` | 3 | — | 1 | [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/install.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | -| ↳ [Release installer](../features/app/packaging/installer.md) `app/packaging/installer` | 21 | — | 2 | [`docs/internationalization.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/internationalization.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/signed-updates.md), [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/install.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | +| ↳ [Release installer](../features/app/packaging/installer.md) `app/packaging/installer` | 22 | — | 2 | [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/signed-updates.md), [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/install.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) (inherited) | | [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md) `app/shortcut-reference` | 20 | [`tests/qa/scenarios/dialogs_and_menus/shortcut-reference-search-keeps-editing-chords.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/shortcut-reference-search-keeps-editing-chords.jsonl) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| [Updates](../features/app/updates/index.md) `app/updates` | 6 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) | -| ↳ [In-place update install](../features/app/updates/install.md) `app/updates/install` | 6 | — | 9 | [`site/src/reference/signed-updates.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/signed-updates.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | -| ↳ [Package-managed installs](../features/app/updates/package-managed.md) `app/updates/package-managed` | 6 | — | 1 | [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | -| ↳ [Release channels](../features/app/updates/release-channels.md) `app/updates/release-channels` | 7 | — | 1 | [`docs/releasing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/releasing.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | -| ↳ [Install a specific release](../features/app/updates/release-picker.md) `app/updates/release-picker` | 5 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | -| [Window chrome and structure](../features/app/window/index.md) `app/window` | 8 | — | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| ↳ [Window key and wheel dispatch](../features/app/window/key-dispatch.md) `app/window/key-dispatch` | 16 | [`tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl) | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | +| [Updates](../features/app/updates/index.md) `app/updates` | 11 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | +| ↳ [In-place update install](../features/app/updates/install.md) `app/updates/install` | 6 | — | 9 | [`site/src/reference/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/signed-updates.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) (inherited) | +| ↳ [Package-managed installs](../features/app/updates/package-managed.md) `app/updates/package-managed` | 6 | — | 1 | [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | +| ↳ [Release channels](../features/app/updates/release-channels.md) `app/updates/release-channels` | 7 | — | 1 | [`docs/releasing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/releasing.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | +| ↳ [Install a specific release](../features/app/updates/release-picker.md) `app/updates/release-picker` | 5 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | +| [Window chrome and structure](../features/app/window/index.md) `app/window` | 8 | — | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | +| ↳ [Window key and wheel dispatch](../features/app/window/key-dispatch.md) `app/window/key-dispatch` | 16 | [`tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/modal-dialog-blocks-window-shortcuts.jsonl) | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | ## [Browser sweep](../qa/sweeps/browser.md) `browser` -reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 45 nodes, 45 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 46 nodes, 46 with probes -- Triggers: [`src/ui/browser.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser.rs), [`src/ui/browser/events.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/events.rs), [`src/ui/browser/preferences.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/preferences.rs), [`src/ui/entry_list_model.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/entry_list_model.rs), [`src/app/browser.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser.rs), [`src/app/browser/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/tests.rs), [`src/app/navigation.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/navigation.rs), [`src/app/navigation/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/navigation/tests.rs), [`src/app/browser/tests/events.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/tests/events.rs), [`src/app/browser/tests/reveal.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/app/browser/tests/reveal.rs), [`src/ui/entry_list_model/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/entry_list_model/tests.rs) -- Tools: [`scripts/generate-fixture.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/generate-fixture.sh), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-navigation.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md), [`docs/keymap.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keymap.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`tests/qa/mutations`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/harness.json), [`tests/qa/fixtures/file_drag_source.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/fixtures/file_drag_source.py), [`docs/testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/testing.md), [`scripts/qa-mutation.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/qa-mutation.sh) -- Hand-offs: Drag and drop once a press is read as a file drag, except Escape cancellation, which `browser/tabs` owns → [`operations`](../qa/sweeps/operations.md); File transfers dropped on tabs and sidebar rows, and every file operation → [`operations`](../qa/sweeps/operations.md); DEVICES rows, Set label…, mounting, and ejecting → [`devices`](../qa/sweeps/devices.md); Remote shares beyond the typed URI rejections and credential masking covered here, including the mounts and sign-in prompts behind Connect to server → [`remote`](../qa/sweeps/remote.md); The action editor's tabs, toggles, and footer beyond arrow focus → [`integration`](../qa/sweeps/integration.md); Modal dialog shell, the shortcut footer, F1, and key precedence → [`app`](../qa/sweeps/app.md); What the preview panel and quick preview render → [`preview`](../qa/sweeps/preview.md); The Settings pages that hold the preferences named in these probes → [`settings`](../qa/sweeps/settings.md); 10xer-mode key variants and the portal file chooser → [`integration`](../qa/sweeps/integration.md); Sidebar rail fit rule and automatic rail → [`preview`](../qa/sweeps/preview.md) +- Triggers: [`src/ui/browser.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser.rs), [`src/ui/browser/events.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/events.rs), [`src/ui/browser/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/preferences.rs), [`src/ui/entry_list_model.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/entry_list_model.rs), [`src/app/browser.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser.rs), [`src/app/browser/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests.rs), [`src/app/navigation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/navigation.rs), [`src/app/navigation/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/navigation/tests.rs), [`src/app/browser/tests/events.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/events.rs), [`src/app/browser/tests/reveal.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/reveal.rs), [`src/ui/entry_list_model/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/entry_list_model/tests.rs) +- Tools: [`scripts/generate-fixture.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/generate-fixture.sh), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md), [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`tests/qa/mutations`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json), [`tests/qa/fixtures/file_drag_source.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/fixtures/file_drag_source.py), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`scripts/qa-mutation.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/qa-mutation.sh) +- Hand-offs: Drag and drop once a press is read as a file drag, except Escape cancellation, which `browser/tabs` owns → [`operations`](../qa/sweeps/operations.md); File transfers dropped on tabs and sidebar rows, and every file operation → [`operations`](../qa/sweeps/operations.md); Trash, Undo, and Replace inside `admin://` folders, and Trash drops from them → [`operations`](../qa/sweeps/operations.md); Open and Open With refusals for files in `admin://` folders → [`integration`](../qa/sweeps/integration.md); DEVICES rows, Set label…, mounting, and ejecting → [`devices`](../qa/sweeps/devices.md); Remote shares beyond the typed URI rejections and credential masking covered here, including the mounts and sign-in prompts behind Connect to server → [`remote`](../qa/sweeps/remote.md); The action editor's tabs, toggles, and footer beyond arrow focus → [`integration`](../qa/sweeps/integration.md); Modal dialog shell, the shortcut footer, F1, and key precedence → [`app`](../qa/sweeps/app.md); What the preview panel and quick preview render → [`preview`](../qa/sweeps/preview.md); The Settings pages that hold the preferences named in these probes → [`settings`](../qa/sweeps/settings.md); 10xer-mode key variants and the portal file chooser → [`integration`](../qa/sweeps/integration.md); Sidebar rail fit rule and automatic rail → [`preview`](../qa/sweeps/preview.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | -| [Context menus](../features/browser/context-menu.md) `browser/context-menu` | 16 | [`tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl), [`tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl), [`tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl) | 4 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| [Directory loading and monitoring](../features/browser/directory-monitoring/index.md) `browser/directory-monitoring` | 13 | [`tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl), [`tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl) | 11 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/performance-baseline.md), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/filesystem-compatibility.md) | -| ↳ [Network folder change checks](../features/browser/directory-monitoring/network-checks.md) `browser/directory-monitoring/network-checks` | 7 | — | 2 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/performance-baseline.md) (inherited), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/filesystem-compatibility.md) (inherited) | +| [Context menus](../features/browser/context-menu.md) `browser/context-menu` | 17 | [`tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/pane-menu-directory-actions.jsonl), [`tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/secondary-click-retargets-menu.jsonl), [`tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/submenu-arrows-return-to-parent.jsonl) | 4 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | +| [Directory loading and monitoring](../features/browser/directory-monitoring/index.md) `browser/directory-monitoring` | 14 | [`tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/deleting-open-root-closes-children.jsonl), [`tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/refresh-reconciles-external-changes.jsonl) | 11 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/filesystem-compatibility.md) | +| ↳ [Network folder change checks](../features/browser/directory-monitoring/network-checks.md) `browser/directory-monitoring/network-checks` | 7 | — | 2 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md) (inherited), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/filesystem-compatibility.md) (inherited) | | [Folder and file customization](../features/browser/folder-customization.md) `browser/folder-customization` | 7 | [`tests/qa/scenarios/dialogs_and_menus/customization-follows-move-and-trash.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/customization-follows-move-and-trash.jsonl), [`tests/qa/scenarios/dialogs_and_menus/customize-takes-focus-single-escape.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/customize-takes-focus-single-escape.jsonl), [`tests/qa/scenarios/dialogs_and_menus/background-customize-ancestor-column.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/background-customize-ancestor-column.jsonl) | 0 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) | -| [Navigation](../features/browser/navigation/index.md) `browser/navigation` | 4 | [`tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | +| [Navigation](../features/browser/navigation/index.md) `browser/navigation` | 4 | [`tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | +| ↳ [Administrator access](../features/browser/navigation/administrator-access.md) `browser/navigation/administrator-access` | 9 | — | 1 | [`docs/administrator-access.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/administrator-access.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Folder jump](../features/browser/navigation/folder-jump.md) `browser/navigation/folder-jump` | 2 | — | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | -| ↳ [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md) `browser/navigation/location-bar` | 16 | [`tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl), [`tests/qa/scenarios/locations/named-location-controls.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/named-location-controls.jsonl), [`tests/qa/scenarios/locations/typed-path-navigates.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/typed-path-navigates.jsonl), [`tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl) | 2 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | -|  ↳ [Location path completion](../features/browser/navigation/location-bar/completion.md) `browser/navigation/location-bar/completion` | 5 | — | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | +| ↳ [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md) `browser/navigation/location-bar` | 17 | [`tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/breadcrumb-returns-to-parent.jsonl), [`tests/qa/scenarios/locations/named-location-controls.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/named-location-controls.jsonl), [`tests/qa/scenarios/locations/typed-path-navigates.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/typed-path-navigates.jsonl), [`tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/list-typed-file-path.jsonl) | 2 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | +|  ↳ [Location path completion](../features/browser/navigation/location-bar/completion.md) `browser/navigation/location-bar/completion` | 5 | — | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Recent](../features/browser/navigation/recent.md) `browser/navigation/recent` | 4 | [`tests/qa/scenarios/recent`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/recent) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Startup location arguments](../features/browser/navigation/startup-arguments.md) `browser/navigation/startup-arguments` | 3 | [`tests/qa/scenarios/startup_arguments`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/startup_arguments) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | -| [Properties dialog](../features/browser/properties/index.md) `browser/properties` | 4 | [`tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl), [`tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl) | 0 | — | -| ↳ [Media details in Properties](../features/browser/properties/media.md) `browser/properties/media` | 3 | [`tests/qa/scenarios/properties_media/media-details-properties-only.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/properties_media/media-details-properties-only.jsonl) | 2 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) | +| [Properties dialog](../features/browser/properties/index.md) `browser/properties` | 4 | [`tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/properties-copy-path-slashes-only-folders.jsonl), [`tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/properties-pins-and-unpins-folder.jsonl) | 0 | — | +| ↳ [Media details in Properties](../features/browser/properties/media.md) `browser/properties/media` | 3 | [`tests/qa/scenarios/properties_media/media-details-properties-only.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/properties_media/media-details-properties-only.jsonl) | 2 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) | | ↳ [RAW photo details](../features/browser/properties/raw-metadata.md) `browser/properties/raw-metadata` | 3 | [`tests/qa/scenarios/properties_media/raw-details-preview-and-properties.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/properties_media/raw-details-preview-and-properties.jsonl) | 3 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) | | ↳ [Folder and selection size](../features/browser/properties/size.md) `browser/properties/size` | 3 | [`tests/qa/scenarios/properties_size`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/properties_size) | 1 | — | | [Scrolling](../features/browser/scrolling.md) `browser/scrolling` | 5 | [`tests/qa/scenarios/popover_scrolling`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/popover_scrolling) | 3 | — | -| [Search](../features/browser/search/index.md) `browser/search` | 12 | [`tests/qa/scenarios/search_filter_sort/global-search-*`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort) | 5 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) | +| [Search](../features/browser/search/index.md) `browser/search` | 12 | [`tests/qa/scenarios/search_filter_sort/global-search-*`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort) | 5 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) | | ↳ [Global search exclusions](../features/browser/search/exclusions.md) `browser/search/exclusions` | 2 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | -| ↳ [Pane filter](../features/browser/search/filter/index.md) `browser/search/filter` | 22 | [`tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl), [`tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl), [`tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl), [`tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl), [`tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl), [`tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl), [`tests/qa/scenarios/filter_results/space-completes-composition.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/filter_results/space-completes-composition.jsonl), [`tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl), [`tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl), [`tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl), [`tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl) | 7 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited) | +| ↳ [Pane filter](../features/browser/search/filter/index.md) `browser/search/filter` | 22 | [`tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/delete-trashes-filtered-result.jsonl), [`tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filtered-control-selection-group.jsonl), [`tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filtered-file-click-previews.jsonl), [`tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filtered-results-group-selection.jsonl), [`tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filter-results-follow-external-changes.jsonl), [`tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/filter-updates-retain-state.jsonl), [`tests/qa/scenarios/filter_results/space-completes-composition.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/filter_results/space-completes-composition.jsonl), [`tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/dismissing-filter-keeps-hidden.jsonl), [`tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/local-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/recursive-filtered-result-opens-once.jsonl), [`tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/recursive-file-double-click-launches-once.jsonl), [`tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/type-to-search-finds-nested.jsonl), [`tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/wildcard-filter-patterns.jsonl) | 7 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) | |  ↳ [Filter Enter target](../features/browser/search/filter/enter-target.md) `browser/search/filter/enter-target` | 5 | [`tests/qa/scenarios/filter_results/filter-enter-opens-top-match.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/filter_results/filter-enter-opens-top-match.jsonl) | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | | [Selection](../features/browser/selection/index.md) `browser/selection` | 9 | [`tests/qa/scenarios/selection`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/selection), [`tests/qa/scenarios/background_selection`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/background_selection), [`tests/qa/scenarios/escape_selection`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/escape_selection), [`tests/qa/scenarios/monitor_selection`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/monitor_selection) | 3 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) | | ↳ [Click modes](../features/browser/selection/click-modes.md) `browser/selection/click-modes` | 3 | [`tests/qa/scenarios/click_modes`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/click_modes) | 2 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | -| ↳ [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md) `browser/selection/keyboard-navigation` | 9 | [`tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl), [`tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl), [`tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl), [`tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl), [`tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl), [`tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl) | 5 | [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-navigation.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | +| ↳ [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md) `browser/selection/keyboard-navigation` | 10 | [`tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/alt-up-and-history.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus-remaining.jsonl), [`tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/arrow-keys-move-focus.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/columns-home-end-mirror.jsonl), [`tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/columns-return-selects-source-folder.jsonl), [`tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/focus-usable-after-view-change.jsonl), [`tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/keyboard-only-copy-paste.jsonl), [`tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/return-restores-nested-scroll.jsonl), [`tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/select-all-selects-every-entry.jsonl), [`tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/shift-arrow-extends-selection.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/tenxer-icons-edges-search-peek.jsonl), [`tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keyboard_navigation/tenxer-keeps-location-edit.jsonl) | 5 | [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Marquee selection](../features/browser/selection/marquee.md) `browser/selection/marquee` | 8 | [`tests/qa/scenarios/marquee_scrolling`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/marquee_scrolling) | 1 | [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-panel-layout.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Pointer intent](../features/browser/selection/pointer-intent.md) `browser/selection/pointer-intent` | 4 | [`tests/qa/scenarios/pointer_intent`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/pointer_intent) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | -| [Sidebar](../features/browser/sidebar/index.md) `browser/sidebar` | 11 | [`tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl), [`tests/qa/scenarios/locations/sidebar-place-navigates.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/locations/sidebar-place-navigates.jsonl) | 3 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | +| [Sidebar](../features/browser/sidebar/index.md) `browser/sidebar` | 12 | [`tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_reordering/builtin-places-reorder-survive-restart.jsonl), [`tests/qa/scenarios/locations/sidebar-place-navigates.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/sidebar-place-navigates.jsonl) | 3 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | | ↳ [Connect to server dialog](../features/browser/sidebar/connect-to-server.md) `browser/sidebar/connect-to-server` | 6 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Pinned folders](../features/browser/sidebar/pins/index.md) `browser/sidebar/pins` | 7 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | -|  ↳ [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) `browser/sidebar/pins/drag-to-pin` | 5 | [`tests/qa/scenarios/sidebar_pinning`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/sidebar_pinning), [`tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl) | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | +|  ↳ [Drag folders to pin](../features/browser/sidebar/pins/drag-to-pin.md) `browser/sidebar/pins/drag-to-pin` | 5 | [`tests/qa/scenarios/sidebar_pinning/folder-pins-order-and-bookmarks.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/folder-pins-order-and-bookmarks.jsonl), [`tests/qa/scenarios/sidebar_pinning/foreign-folder-drags-validate.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/foreign-folder-drags-validate.jsonl), [`tests/qa/scenarios/sidebar_pinning/pinned-rows-transfer-and-remote-gaps.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/pinned-rows-transfer-and-remote-gaps.jsonl), [`tests/qa/scenarios/sidebar_pinning/spring-loaded-rows-keep-pin-intent.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/spring-loaded-rows-keep-pin-intent.jsonl), [`tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_reordering/pin-insertion-keeps-one-destination.jsonl) | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Sidebar collapse and icon rail](../features/browser/sidebar/rail.md) `browser/sidebar/rail` | 7 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | -| [Browser tabs](../features/browser/tabs/index.md) `browser/tabs` | 22 | [`tests/qa/scenarios/tabs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/tabs), [`tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl) | 4 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-navigation.md) | -| ↳ [Tab session restore](../features/browser/tabs/session-restore.md) `browser/tabs/session-restore` | 9 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/10xer-mode.md) (inherited), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/keyboard-navigation.md) (inherited) | -| [Thumbnails](../features/browser/thumbnails/index.md) `browser/thumbnails` | 11 | — | 5 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md), [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-sandbox.md) | +| [Browser tabs](../features/browser/tabs/index.md) `browser/tabs` | 22 | [`tests/qa/scenarios/tabs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/tabs), [`tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/drag_and_drop/escape-cancels-file-drag.jsonl) | 4 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md) | +| ↳ [Tab session restore](../features/browser/tabs/session-restore.md) `browser/tabs/session-restore` | 9 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md) (inherited), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md) (inherited) | +| [Thumbnails](../features/browser/thumbnails/index.md) `browser/thumbnails` | 13 | — | 5 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md), [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-sandbox.md) | | ↳ [Thumbnail disk cache](../features/browser/thumbnails/cache.md) `browser/thumbnails/cache` | 3 | — | 1 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited), [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-sandbox.md) (inherited) | | ↳ [Thumbnail workers](../features/browser/thumbnails/workers.md) `browser/thumbnails/workers` | 7 | [`tests/qa/scenarios/browser_workers`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/browser_workers), [`tests/qa/scenarios/thumbnail_worker_settings`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/thumbnail_worker_settings) | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited), [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-sandbox.md) (inherited) | -| [View modes](../features/browser/view-modes/index.md) `browser/view-modes` | 15 | [`tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl), [`tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl) | 4 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| ↳ [Columns view](../features/browser/view-modes/columns.md) `browser/view-modes/columns` | 25 | [`tests/qa/scenarios/column_background`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/column_background), [`tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl), [`tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl) | 1 | [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preview-panel-layout.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | -| ↳ [Frame and content density](../features/browser/view-modes/density.md) `browser/view-modes/density` | 7 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | +| [View modes](../features/browser/view-modes/index.md) `browser/view-modes` | 16 | [`tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/appearance-menu-switches-view.jsonl), [`tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/shortcut-round-trip-keeps-selection.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/switching-keeps-directory-and-sort.jsonl), [`tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/switching-keeps-pane-filter.jsonl) | 4 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | +| ↳ [Columns view](../features/browser/view-modes/columns.md) `browser/view-modes/columns` | 25 | [`tests/qa/scenarios/column_background`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/column_background), [`tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/view_switching/column-autofit-stays-inside.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-keyboard-respects-disabled-previews.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-keyboard-stays-without-mirror.jsonl), [`tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/trashing-open-folder-opens-next.jsonl) | 1 | [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-panel-layout.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | +| ↳ [Frame and content density](../features/browser/view-modes/density.md) `browser/view-modes/density` | 8 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Per-folder sort and thumbnail size](../features/browser/view-modes/folder-views.md) `browser/view-modes/folder-views` | 11 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Icons view](../features/browser/view-modes/icons.md) `browser/view-modes/icons` | 6 | — | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [List view](../features/browser/view-modes/list/index.md) `browser/view-modes/list` | 4 | [`tests/qa/scenarios/view_switching/list-column-resize-tracks-pointer.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/view_switching/list-column-resize-tracks-pointer.jsonl) | 0 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | |  ↳ [List column order and visibility](../features/browser/view-modes/list/column-layout.md) `browser/view-modes/list/column-layout` | 10 | [`tests/qa/scenarios/view_switching/appearance-menu-switches-view-list.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/view_switching/appearance-menu-switches-view-list.jsonl), [`tests/qa/scenarios/view_switching/list-column-drag-applies-on-release.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/view_switching/list-column-drag-applies-on-release.jsonl) | 0 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | -| ↳ [Position restore on return and refresh](../features/browser/view-modes/position-restore.md) `browser/view-modes/position-restore` | 11 | — | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | -| ↳ [Sorting](../features/browser/view-modes/sorting.md) `browser/view-modes/sorting` | 8 | [`tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl), [`tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl) | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | +| ↳ [Position restore on return and refresh](../features/browser/view-modes/position-restore.md) `browser/view-modes/position-restore` | 11 | — | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | +| ↳ [Sorting](../features/browser/view-modes/sorting.md) `browser/view-modes/sorting` | 8 | [`tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/sorting-by-size.jsonl), [`tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/reversing-sort-direction.jsonl) | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Text size](../features/browser/view-modes/text-size.md) `browser/view-modes/text-size` | 4 | [`tests/qa/scenarios/text_size`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/text_size) | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Thumbnail size shortcuts](../features/browser/view-modes/thumbnail-size.md) `browser/view-modes/thumbnail-size` | 6 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/architecture.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/architecture.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | ## [Devices sweep](../qa/sweeps/devices.md) `devices` -reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 6 nodes, 6 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 6 nodes, 6 with probes -- Tools: [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-sandbox.md), [`data/udiskie/unlock`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/data/udiskie/unlock), [`scripts/sftp-fixture.sh`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/sftp-fixture.sh) +- Tools: [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-sandbox.md), [`data/udiskie/unlock`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/udiskie/unlock), [`scripts/sftp-fixture.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/sftp-fixture.sh) - Hand-offs: The Send to… submenu rows, Choose folder…, and copying to a device → [`operations`](../qa/sweeps/operations.md); The "Writing to device…" flush before a copy to removable media reports success → [`operations`](../qa/sweeps/operations.md); Device rows as navigation targets, sidebar keyboard order, and drops onto rows → [`browser`](../qa/sweeps/browser.md); SMB, SFTP, and other network mounts with their credential prompts → [`remote`](../qa/sweeps/remote.md); `install.sh` step wording, its default selection, `--with-udiskie-unlock`, `--without-udiskie-unlock`, and Omarchy detection → [`app`](../qa/sweeps/app.md); Previewing camera photos in the preview panel → [`preview`](../qa/sweeps/preview.md); The Settings page shell around the "Unlock encrypted volumes" row → [`settings`](../qa/sweeps/settings.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | | [Devices and volumes](../features/devices/volumes/index.md) `devices/volumes` | 9 | — | 1 | — | -| ↳ [Camera photos](../features/devices/volumes/camera.md) `devices/volumes/camera` | 6 | — | 4 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) | +| ↳ [Camera photos](../features/devices/volumes/camera.md) `devices/volumes/camera` | 6 | — | 4 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) | | ↳ [Drive format, label, and properties](../features/devices/volumes/drive-dialogs.md) `devices/volumes/drive-dialogs` | 11 | — | 4 | — | | ↳ [Encrypted volumes](../features/devices/volumes/encrypted.md) `devices/volumes/encrypted` | 6 | — | 1 | — | | ↳ [Unmount and eject](../features/devices/volumes/release.md) `devices/volumes/release` | 8 | — | 1 | [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/filesystem-compatibility.md) | @@ -105,26 +106,26 @@ reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e20 ## [Integration sweep](../qa/sweeps/integration.md) `integration` -reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 17 nodes, 17 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 17 nodes, 17 with probes -- Tools: [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/portal-file-chooser.md), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md), [`docs/custom-actions.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/custom-actions.md), [`scripts/chooser-dev.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/chooser-dev.sh), [`scripts/portal-test.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/portal-test.py), [`scripts/portal_test_environment.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/portal_test_environment.py), [`scripts/portal-test.html`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/portal-test.html), [`docs/testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/testing.md), [`scripts/qa.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/qa.sh), [`.agents/skills/qa-scenarios/reference.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/.agents/skills/qa-scenarios/reference.md), [`tests/qa/peers.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/peers.rs), [`tests/qa/peer_steps.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/peer_steps.rs), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md), [`docs/keymap.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keymap.md), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/harness.json) -- Hand-offs: The installer, `.desktop` entries, application ID, single-instance activation, and the modal dialog shell → [`app`](../qa/sweeps/app.md); Composition of the item and background context menus, and views, selection, and tabs inside the chooser → [`browser`](../qa/sweeps/browser.md); What Move to, Copy to, Extract to, Trash, delete, and Compress do on disk, and the Jobs dashboard → [`operations`](../qa/sweeps/operations.md); Preview rendering, archive and media surfaces, and the player start position handed to the default player → [`preview`](../qa/sweeps/preview.md); The preview find bar's matching and navigation → [`preview`](../qa/sweeps/preview.md); How a key on any layout, the keypad, or Caps Lock becomes a shortcut, input-method composition, and shortcut label notation → [`app`](../qa/sweeps/app.md); External file providers, their asynchronous actions and badges, and remote mounts → [`remote`](../qa/sweeps/remote.md); Typed `.` and `..` resolution in `go ›`, and where a keyboard sort is saved → [`browser`](../qa/sweeps/browser.md); The Settings pages hosting the System file manager, 10xer mode, and Actions rows → [`settings`](../qa/sweeps/settings.md); The Devices rows in the chooser sidebar and the Send to device list → [`devices`](../qa/sweeps/devices.md); The browser window's sidebar steps and the rail's row sizing → [`browser`](../qa/sweeps/browser.md); The saved `sidebar_compact` state of browser windows → [`app`](../qa/sweeps/app.md); Network-folder change checks, including the pause while a chooser is hidden → [`browser`](../qa/sweeps/browser.md); The `GDK_DEBUG` re-exec on service activation and how long a cold activation takes → [`app`](../qa/sweeps/app.md) +- Tools: [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/portal-file-chooser.md), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/10xer-mode.md), [`docs/custom-actions.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/custom-actions.md), [`scripts/chooser-dev.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/chooser-dev.sh), [`scripts/portal-test.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal-test.py), [`scripts/portal_test_environment.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal_test_environment.py), [`scripts/portal-test.html`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal-test.html), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`scripts/qa.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/qa.sh), [`.agents/skills/qa-scenarios/reference.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/.agents/skills/qa-scenarios/reference.md), [`tests/qa/peers.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/peers.rs), [`tests/qa/peer_steps.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/peer_steps.rs), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md), [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json) +- Hand-offs: The installer, `.desktop` entries, application ID, single-instance activation, and the modal dialog shell → [`app`](../qa/sweeps/app.md); Composition of the item and background context menus, and views, selection, and tabs inside the chooser → [`browser`](../qa/sweeps/browser.md); What Move to, Copy to, Extract to, Trash, delete, and Compress do on disk, and the Jobs dashboard → [`operations`](../qa/sweeps/operations.md); Preview rendering, archive and media surfaces, and the player start position handed to the default player → [`preview`](../qa/sweeps/preview.md); The preview find bar's matching and navigation → [`preview`](../qa/sweeps/preview.md); How a key on any layout, the keypad, or Caps Lock becomes a shortcut, input-method composition, and shortcut label notation → [`app`](../qa/sweeps/app.md); External file providers, their asynchronous actions and badges, and remote mounts → [`remote`](../qa/sweeps/remote.md); Typed `.` and `..` resolution in `go ›`, and where a keyboard sort is saved → [`browser`](../qa/sweeps/browser.md); The Settings pages hosting the System file manager, 10xer mode, and Actions rows → [`settings`](../qa/sweeps/settings.md); The Devices rows in the chooser sidebar and the Send to device list → [`devices`](../qa/sweeps/devices.md); The browser window's sidebar steps and the rail's row sizing → [`browser`](../qa/sweeps/browser.md); The saved `sidebar_compact` state of browser windows → [`app`](../qa/sweeps/app.md); Network-folder change checks, including the pause while a chooser is hidden → [`browser`](../qa/sweeps/browser.md); Opening a folder as administrator, the lock icon, and Open as Administrator → [`browser`](../qa/sweeps/browser.md); The `GDK_DEBUG` re-exec on service activation and how long a cold activation takes → [`app`](../qa/sweeps/app.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | | [10xer mode](../features/integration/10xer-mode/index.md) `integration/10xer-mode` | 9 | — | 3 | [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md) | | ↳ [10xer mode in the file chooser](../features/integration/10xer-mode/file-chooser.md) `integration/10xer-mode/file-chooser` | 6 | — | 1 | [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/portal-file-chooser.md), [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md) (inherited) | -| ↳ [10xer file commands](../features/integration/10xer-mode/file-verbs.md) `integration/10xer-mode/file-verbs` | 16 | [`tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl), [`tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl), [`tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl) | 2 | [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md) (inherited) | -| ↳ [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) `integration/10xer-mode/places` | 7 | — | 4 | [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md) (inherited) | +| ↳ [10xer file commands](../features/integration/10xer-mode/file-verbs.md) `integration/10xer-mode/file-verbs` | 17 | [`tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/tenxer-sort-chords-keep-cursor.jsonl), [`tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/tenxer-d-without-trash-confirms.jsonl), [`tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/tenxer-footer-rename-refuses-conflicts.jsonl) | 2 | [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/10xer-mode.md) (inherited) | +| ↳ [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) `integration/10xer-mode/places` | 8 | [`tests/qa/scenarios/sidebar_pinning/tenxer-pin-feedback-identifies-slot.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/sidebar_pinning/tenxer-pin-feedback-identifies-slot.jsonl) | 4 | [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/10xer-mode.md) (inherited) | | ↳ [10xer preview key ownership](../features/integration/10xer-mode/preview-keys.md) `integration/10xer-mode/preview-keys` | 10 | [`tests/qa/scenarios/quick_preview/tenxer-l-enters-preview.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/tenxer-l-enters-preview.jsonl) | 1 | [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/10xer-mode.md) (inherited) | | ↳ [10xer find, filter, and search](../features/integration/10xer-mode/search.md) `integration/10xer-mode/search` | 11 | [`tests/qa/scenarios/search_filter_sort/tenxer-footer-filter-commits.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/search_filter_sort/tenxer-footer-filter-commits.jsonl) | 3 | [`site/src/reference/10xer-mode.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/10xer-mode.md) (inherited), [`docs/10xer-mode.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/10xer-mode.md) (inherited) | | [Custom actions](../features/integration/custom-actions.md) `integration/custom-actions` | 11 | [`tests/qa/scenarios/custom_actions/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/custom_actions) | 7 | [`site/src/reference/custom-actions.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/custom-actions.md), [`docs/custom-actions.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/custom-actions.md) | | [FileManager1 D-Bus interface](../features/integration/file-manager-interface/index.md) `integration/file-manager-interface` | 6 | [`tests/qa/scenarios/file_manager_interface/**`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/file_manager_interface) | 1 | [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) | | ↳ [Launched-program GDK_DEBUG restore](../features/integration/file-manager-interface/service-activation.md) `integration/file-manager-interface/service-activation` | 3 | — | 1 | [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | -| [Opening files and Open With](../features/integration/open-with/index.md) `integration/open-with` | 10 | [`tests/qa/scenarios/open_with/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/open_with), [`tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl), [`tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl) | 2 | — | +| [Opening files and Open With](../features/integration/open-with/index.md) `integration/open-with` | 11 | [`tests/qa/scenarios/open_with/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/open_with), [`tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/executable-menu-confirmed-run.jsonl), [`tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/executable-requires-confirmation.jsonl) | 2 | — | | ↳ [Recently used applications](../features/integration/open-with/recent-apps.md) `integration/open-with/recent-apps` | 3 | — | 1 | — | | ↳ [Open in Terminal](../features/integration/open-with/terminal.md) `integration/open-with/terminal` | 10 | [`tests/qa/scenarios/terminal/**`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/terminal) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) | -| [System file chooser](../features/integration/portal-file-chooser/index.md) `integration/portal-file-chooser` | 34 | [`tests/qa/scenarios/chooser_selection/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/chooser_selection) | 13 | [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/portal-file-chooser.md), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/portal-file-chooser.md) | +| [System file chooser](../features/integration/portal-file-chooser/index.md) `integration/portal-file-chooser` | 35 | [`tests/qa/scenarios/chooser_selection/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/chooser_selection) | 13 | [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/portal-file-chooser.md), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/portal-file-chooser.md) | | ↳ [Chooser PNG conversion](../features/integration/portal-file-chooser/image-conversion.md) `integration/portal-file-chooser/image-conversion` | 5 | [`tests/qa/scenarios/chooser_image_conversion/**`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/chooser_image_conversion) | 3 | [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/portal-file-chooser.md) (inherited), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/portal-file-chooser.md) (inherited) | | ↳ [File chooser and file manager setup](../features/integration/portal-file-chooser/setup.md) `integration/portal-file-chooser/setup` | 8 | — | 3 | [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/portal-file-chooser.md) (inherited), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/portal-file-chooser.md) (inherited) | | ↳ [Name field filenames and URL downloads](../features/integration/portal-file-chooser/url-download.md) `integration/portal-file-chooser/url-download` | 5 | — | 1 | [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/portal-file-chooser.md) (inherited), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/portal-file-chooser.md) (inherited) | @@ -132,24 +133,24 @@ reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b2 ## [Operations sweep](../qa/sweeps/operations.md) `operations` -reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 26 nodes, 26 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 26 nodes, 26 with probes -- Triggers: [`src/services/operations.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/operations.rs), [`src/services/operations/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/operations), [`src/services/file_source.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/file_source.rs), [`src/services/file_source/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/services/file_source/tests.rs), [`src/adapters/local_operations.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations.rs), [`src/adapters/local_operations/tests.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests.rs), [`src/adapters/local_operations/tests/paths.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/adapters/local_operations/tests/paths.rs) -- Tools: [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/trash-restore-testing.md), [`docs/archives.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/archives.md), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/filesystem-compatibility.md), [`scripts/fslab`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/fslab), [`scripts/generate-fixture.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/generate-fixture.sh), [`scripts/qa-mutation.sh`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/qa-mutation.sh), [`tests/qa/fixtures/content-encrypted.7z`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/fixtures/content-encrypted.7z), [`tests/qa/mutations`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/mutations) -- Hand-offs: Pointer gestures before a drag starts, marquee, and click modes → [`browser`](../qa/sweeps/browser.md); The sidebar Trash row as a navigation target → [`browser`](../qa/sweeps/browser.md); Modal dialog shell: blur, Escape, backdrop, focus return → [`app`](../qa/sweeps/app.md); Rendering of archive members and documents inside the preview panel → [`preview`](../qa/sweeps/preview.md); Preview playback stopping, the sandbox wait, and the preview following a renamed item during an operation → [`preview`](../qa/sweeps/preview.md); Thumbnails asked for again after an operation stopped them → [`browser`](../qa/sweeps/browser.md); Releasing reads under a mount root before an unmount → [`devices`](../qa/sweeps/devices.md); Mounting, unmounting, and ejecting the devices Send to lists → [`devices`](../qa/sweeps/devices.md); Provider destinations inside Send to… and their protocol → [`remote`](../qa/sweeps/remote.md); Folder reloads and monitor events after an operation ends → [`browser`](../qa/sweeps/browser.md); 10xer-mode key variants of these operations → [`integration`](../qa/sweeps/integration.md); Escape cancelling a file drag → [`browser`](../qa/sweeps/browser.md); Item-menu Move to Trash, Permanently delete, Delete without Trash, and Restore entries and their visibility → [`browser`](../qa/sweeps/browser.md); The Trash pane's Empty Trash header button → [`browser`](../qa/sweeps/browser.md) +- Triggers: [`src/services/operations.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/operations.rs), [`src/services/operations/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/operations), [`src/services/file_source.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/file_source.rs), [`src/services/file_source/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/services/file_source/tests.rs), [`src/adapters/local_operations.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations.rs), [`src/adapters/local_operations/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests.rs), [`src/adapters/local_operations/tests/paths.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/adapters/local_operations/tests/paths.rs) +- Tools: [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/trash-restore-testing.md), [`docs/archives.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/archives.md), [`docs/filesystem-compatibility.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/filesystem-compatibility.md), [`scripts/fslab`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/fslab), [`scripts/generate-fixture.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/generate-fixture.sh), [`scripts/qa-mutation.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/qa-mutation.sh), [`tests/qa/fixtures/content-encrypted.7z`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/fixtures/content-encrypted.7z), [`tests/qa/mutations`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/mutations) +- Hand-offs: Pointer gestures before a drag starts, marquee, and click modes → [`browser`](../qa/sweeps/browser.md); The sidebar Trash row as a navigation target → [`browser`](../qa/sweeps/browser.md); Modal dialog shell: blur, Escape, backdrop, focus return → [`app`](../qa/sweeps/app.md); Rendering of archive members and documents inside the preview panel → [`preview`](../qa/sweeps/preview.md); Preview playback stopping, the sandbox wait, and the preview following a renamed item during an operation → [`preview`](../qa/sweeps/preview.md); Thumbnails asked for again after an operation stopped them → [`browser`](../qa/sweeps/browser.md); Releasing reads under a mount root before an unmount → [`devices`](../qa/sweeps/devices.md); Mounting, unmounting, and ejecting the devices Send to lists → [`devices`](../qa/sweeps/devices.md); Provider destinations inside Send to… and their protocol → [`remote`](../qa/sweeps/remote.md); Folder reloads and monitor events after an operation ends → [`browser`](../qa/sweeps/browser.md); 10xer-mode key variants of these operations → [`integration`](../qa/sweeps/integration.md); Escape cancelling a file drag → [`browser`](../qa/sweeps/browser.md); Item-menu Move to Trash, Permanently delete, Delete without Trash, and Restore entries and their visibility → [`browser`](../qa/sweeps/browser.md); The Trash pane's Empty Trash header button → [`browser`](../qa/sweeps/browser.md); Opening a folder as administrator, the lock icon, the admin notice, and Open as Administrator → [`browser`](../qa/sweeps/browser.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | -| [Archives](../features/operations/archives/index.md) `operations/archives` | 21 | [`tests/qa/scenarios/archive_activation`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_activation), [`tests/qa/scenarios/archive_conflicts`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_conflicts), [`tests/qa/scenarios/archive_errors`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_errors), [`tests/qa/scenarios/archive_reveal`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_reveal), [`tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl), [`tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl) | 9 | [`site/src/reference/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/archives.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md), [`docs/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/archives.md) | +| [Archives](../features/operations/archives/index.md) `operations/archives` | 21 | [`tests/qa/scenarios/archive_activation`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_activation), [`tests/qa/scenarios/archive_conflicts`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_conflicts), [`tests/qa/scenarios/archive_errors`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_errors), [`tests/qa/scenarios/archive_reveal`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/archive_reveal), [`tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/compress-then-chooser-extracts.jsonl), [`tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/invalid-archive-name-keeps-dialog.jsonl) | 9 | [`site/src/reference/archives.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/archives.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md), [`docs/archives.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/archives.md) | | ↳ [Extraction safety](../features/operations/archives/extraction-safety.md) `operations/archives/extraction-safety` | 9 | — | 1 | [`site/src/reference/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/archives.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited), [`docs/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/archives.md) (inherited) | | ↳ [Archive preview](../features/operations/archives/preview.md) `operations/archives/preview` | 7 | [`tests/qa/scenarios/archive_preview`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/archive_preview) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md), [`site/src/reference/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/archives.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited), [`docs/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/archives.md) (inherited) | | ↳ [RAR extraction](../features/operations/archives/rar.md) `operations/archives/rar` | 1 | — | 5 | [`site/src/reference/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/archives.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited), [`docs/archives.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/archives.md) (inherited) | -| [Copy, cut, and paste](../features/operations/clipboard/index.md) `operations/clipboard` | 12 | [`tests/qa/scenarios/clipboard`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/clipboard), [`tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl), [`tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl) | 8 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| ↳ [Paste name conflicts](../features/operations/clipboard/conflicts.md) `operations/clipboard/conflicts` | 7 | [`tests/qa/scenarios/copy_conflicts`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/copy_conflicts) | 4 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | +| [Copy, cut, and paste](../features/operations/clipboard/index.md) `operations/clipboard` | 12 | [`tests/qa/scenarios/clipboard`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/clipboard), [`tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/floating-chooser-transfers-files.jsonl), [`tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/cross_volume_drop/cross-volume-enter-choice.jsonl) | 8 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | +| ↳ [Paste name conflicts](../features/operations/clipboard/conflicts.md) `operations/clipboard/conflicts` | 8 | [`tests/qa/scenarios/copy_conflicts`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/copy_conflicts) | 4 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Send to removable devices](../features/operations/clipboard/send-to.md) `operations/clipboard/send-to` | 2 | — | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | [New Folder and New File](../features/operations/create.md) `operations/create` | 6 | [`tests/qa/scenarios/created_entry_columns`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/created_entry_columns), [`tests/qa/scenarios/entry_management/clicking-inside-keeps-new-entry.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/clicking-inside-keeps-new-entry.jsonl), [`tests/qa/scenarios/entry_management/new-file-collision-dialog.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/new-file-collision-dialog.jsonl), [`tests/qa/scenarios/entry_management/new-folder-collision-dialog.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/new-folder-collision-dialog.jsonl), [`tests/qa/scenarios/entry_management/new-folder-with-selection-groups.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/new-folder-with-selection-groups.jsonl), [`tests/qa/scenarios/entry_management/new-items-in-empty-directory.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/new-items-in-empty-directory.jsonl), [`tests/qa/scenarios/entry_management/undo-created-folder-trashes.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/undo-created-folder-trashes.jsonl) | 2 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) | | [Permanent deletion](../features/operations/delete/index.md) `operations/delete` | 3 | [`tests/qa/scenarios/entry_management/permanent-delete-symlinked-parent.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/permanent-delete-symlinked-parent.jsonl) | 1 | — | -| ↳ [Permanent-delete dissolve animation](../features/operations/delete/dissolve.md) `operations/delete/dissolve` | 4 | [`tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl) | 0 | — | +| ↳ [Permanent-delete dissolve animation](../features/operations/delete/dissolve.md) `operations/delete/dissolve` | 4 | [`tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/drag_animation/delete-animation-keeps-survivors.jsonl) | 0 | — | | [Drag and drop](../features/operations/drag-and-drop/index.md) `operations/drag-and-drop` | 4 | [`tests/qa/scenarios/drag_and_drop/drag-cancels-folder-peek.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/drag-cancels-folder-peek.jsonl), [`tests/qa/scenarios/drag_and_drop/drag-file-onto-folder.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/drag-file-onto-folder.jsonl), [`tests/qa/scenarios/drag_and_drop/drag-from-clipped-column-narrow-window.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/drag-from-clipped-column-narrow-window.jsonl), [`tests/qa/scenarios/drag_and_drop/drag-onto-pane-background.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/drag-onto-pane-background.jsonl), [`tests/qa/scenarios/drag_and_drop/drop-folder-into-itself.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/drop-folder-into-itself.jsonl), [`tests/qa/scenarios/drag_and_drop/empty-name-space-drag-starts-marquee.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/empty-name-space-drag-starts-marquee.jsonl), [`tests/qa/scenarios/drag_and_drop/filtered-result-to-sidebar-folder.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/filtered-result-to-sidebar-folder.jsonl), [`tests/qa/scenarios/drag_and_drop/folder-into-another-folder.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/folder-into-another-folder.jsonl), [`tests/qa/scenarios/drag_and_drop/multi-selection-drag-moves-every-entry.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/multi-selection-drag-moves-every-entry.jsonl), [`tests/qa/scenarios/drag_and_drop/release-outside-cancels-drag.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/release-outside-cancels-drag.jsonl), [`tests/qa/scenarios/drag_and_drop/row-padding-drag-view-policy.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/row-padding-drag-view-policy.jsonl), [`tests/qa/scenarios/drag_and_drop/selected-blank-space-starts-file-drag.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/selected-blank-space-starts-file-drag.jsonl), [`tests/qa/scenarios/sidebar_file_drops`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/sidebar_file_drops) | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) | | ↳ [Columns drag autoscroll](../features/operations/drag-and-drop/column-autoscroll.md) `operations/drag-and-drop/column-autoscroll` | 1 | [`tests/qa/scenarios/drag_and_drop/column-edge-scrolls-listing.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/column-edge-scrolls-listing.jsonl), [`tests/qa/scenarios/drag_and_drop/strip-edge-scrolls-columns-in.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/drag_and_drop/strip-edge-scrolls-columns-in.jsonl) | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | | ↳ [Drop copy-or-move policy](../features/operations/drag-and-drop/copy-or-move.md) `operations/drag-and-drop/copy-or-move` | 4 | [`tests/qa/scenarios/cross_volume_drop/cross-volume-plain-copy.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/cross_volume_drop/cross-volume-plain-copy.jsonl) | 3 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | @@ -160,44 +161,44 @@ reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b2 | ↳ [Progress dock](../features/operations/progress/dock.md) `operations/progress/dock` | 7 | — | 4 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | ↳ [Job queue and Jobs dashboard](../features/operations/progress/jobs.md) `operations/progress/jobs` | 5 | — | 4 | [`site/src/reference/custom-actions.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/custom-actions.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | | [Inline rename](../features/operations/rename.md) `operations/rename` | 13 | [`tests/qa/scenarios/inline_renaming`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/inline_renaming), [`tests/qa/scenarios/entry_management/rename-from-context-menu.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/rename-from-context-menu.jsonl), [`tests/qa/scenarios/entry_management/rename-shortcuts-leave-location.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/rename-shortcuts-leave-location.jsonl), [`tests/qa/scenarios/rename_visibility`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/rename_visibility), [`tests/qa/scenarios/dialogs_and_menus/rename-onto-existing-rejected.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/dialogs_and_menus/rename-onto-existing-rejected.jsonl) | 5 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) | -| [Trash](../features/operations/trash/index.md) `operations/trash` | 18 | [`tests/qa/scenarios/entry_management/delete-to-trash.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/delete-to-trash.jsonl), [`tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl), [`tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl) | 4 | [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/trash-restore-testing.md) | -| ↳ [Trash flight animation](../features/operations/trash/animation.md) `operations/trash/animation` | 2 | — | 1 | [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/trash-restore-testing.md) (inherited) | +| [Trash](../features/operations/trash/index.md) `operations/trash` | 19 | [`tests/qa/scenarios/entry_management/delete-to-trash.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/delete-to-trash.jsonl), [`tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/delete-without-trash-focuses-cancel.jsonl), [`tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/delete-file-symlink-sizes-link.jsonl) | 4 | [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/trash-restore-testing.md) | +| ↳ [Trash flight animation](../features/operations/trash/animation.md) `operations/trash/animation` | 2 | — | 1 | [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/trash-restore-testing.md) (inherited) | | ↳ [Empty Trash](../features/operations/trash/empty.md) `operations/trash/empty` | 2 | — | 1 | [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/trash-restore-testing.md) (inherited) | | ↳ [FUSE mounts that refuse Trash](../features/operations/trash/fuse-refusals.md) `operations/trash/fuse-refusals` | 4 | — | 1 | [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/trash-restore-testing.md) (inherited) | | ↳ [Restore from Trash](../features/operations/trash/restore.md) `operations/trash/restore` | 8 | — | 2 | [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/trash-restore-testing.md), [`docs/trash-restore-testing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/trash-restore-testing.md) (inherited) | -| [Undo and redo](../features/operations/undo.md) `operations/undo` | 5 | [`tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl) | 3 | — | +| [Undo and redo](../features/operations/undo.md) `operations/undo` | 6 | [`tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/entry_management/undo-restores-completed-move.jsonl) | 3 | — | ## [Preview sweep](../qa/sweeps/preview.md) `preview` -reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 16 nodes, 16 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 16 nodes, 16 with probes -- Tools: [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preview-sandbox.md), [`docs/document-previews.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/document-previews.md), [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preview-panel-layout.md), [`tests/fixtures/spreadsheets`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/spreadsheets), [`tests/fixtures/documents`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/documents), [`docs/testing.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/testing.md), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/harness.json) +- Tools: [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-sandbox.md), [`docs/document-previews.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/document-previews.md), [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-panel-layout.md), [`tests/fixtures/spreadsheets`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/spreadsheets), [`tests/fixtures/documents`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/documents), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json) - Hand-offs: Thumbnails in the listing, including STL model and G-code thumbnails, and the thumbnail worker pool → [`browser`](../qa/sweeps/browser.md); The RAW extension list, including `.ptx` and `.crf` → [`browser`](../qa/sweeps/browser.md); Header toggle steps, a chosen rail, and a sidebar stepped to full in a short window → [`browser`](../qa/sweeps/browser.md); Columns keyboard mirroring, including whether Up or Down onto a file opens a preview → [`browser`](../qa/sweeps/browser.md); Selection kept or cleared by clicks on blank preview chrome and disabled preview controls → [`browser`](../qa/sweeps/browser.md); F1 reference rows for preview find and media keys → [`app`](../qa/sweeps/app.md); Layout fallback, Caps Lock, keypad, and translated key names for every shortcut → [`app`](../qa/sweeps/app.md); Archive member listing and the archive preview → [`operations`](../qa/sweeps/operations.md); Releasing Strata's reads before an operation, and leftovers on network mounts → [`operations`](../qa/sweeps/operations.md); Unmounting a drive while a preview reads a file on it → [`devices`](../qa/sweeps/devices.md); Preview keys and track stepping in 10xer mode → [`integration`](../qa/sweeps/integration.md); Quick Preview opened by Enter on a typed file path → [`browser`](../qa/sweeps/browser.md); A rebound document zoom reset and other `[keymap.*]` overrides while a preview has focus → [`app`](../qa/sweeps/app.md); Media runtime packaging and GStreamer launch dependencies → [`app`](../qa/sweeps/app.md); The Settings controls for autoplay, backend, document rendering, units, and folder peeking → [`settings`](../qa/sweeps/settings.md); Mounting the sftp, MTP, and camera locations that remote previews read → [`remote`](../qa/sweeps/remote.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | -| [Preview panel](../features/preview/preview-panel/index.md) `preview/preview-panel` | 28 | [`tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl), [`tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl), [`tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl), [`tests/qa/scenarios/preview_media_layout`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/preview_media_layout) | 10 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) | +| [Preview panel](../features/preview/preview-panel/index.md) `preview/preview-panel` | 28 | [`tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/password-protected-pdf-reports-reason.jsonl), [`tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/pdf-zoom-keeps-text-size.jsonl), [`tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/preview-source-text-copies.jsonl), [`tests/qa/scenarios/preview_media_layout`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/preview_media_layout) | 10 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) | | ↳ [Rendered document previews](../features/preview/preview-panel/documents/index.md) `preview/preview-panel/documents` | 22 | [`tests/qa/scenarios/quick_preview/markdown-equations-keep-prose.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/markdown-equations-keep-prose.jsonl), [`tests/qa/scenarios/quick_preview/markdown-preview-renders-media.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/markdown-preview-renders-media.jsonl), [`tests/qa/scenarios/quick_preview/rendered-document-word-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/rendered-document-word-selection.jsonl), [`tests/qa/scenarios/quick_preview/sandboxed-office-shared-preview.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/sandboxed-office-shared-preview.jsonl) | 14 | [`site/src/reference/document-previews.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/document-previews.md), [`docs/document-previews.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/document-previews.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited) | |  ↳ [ODT and OTT document previews](../features/preview/preview-panel/documents/odt.md) `preview/preview-panel/documents/odt` | 4 | — | 2 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited), [`site/src/reference/document-previews.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/document-previews.md) (inherited), [`docs/document-previews.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/document-previews.md) (inherited) | |  ↳ [Document preview scrollbar](../features/preview/preview-panel/documents/scrollbar.md) `preview/preview-panel/documents/scrollbar` | 6 | — | 1 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited), [`site/src/reference/document-previews.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/document-previews.md) (inherited), [`docs/document-previews.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/document-previews.md) (inherited) | | ↳ [Find in preview](../features/preview/preview-panel/find.md) `preview/preview-panel/find` | 6 | [`tests/qa/scenarios/quick_preview/preview-find-navigates-content.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/preview-find-navigates-content.jsonl) | 1 | [`site/src/reference/document-previews.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/document-previews.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited) | | ↳ [G-code thumbnail previews](../features/preview/preview-panel/gcode.md) `preview/preview-panel/gcode` | 2 | — | 1 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited) | -| ↳ [Preview panel layout](../features/preview/preview-panel/layout.md) `preview/preview-panel/layout` | 20 | [`tests/qa/scenarios/preview_session`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/preview_session), [`tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl), [`tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl), [`tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl), [`tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl) | 1 | [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-panel-layout.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited) | +| ↳ [Preview panel layout](../features/preview/preview-panel/layout.md) `preview/preview-panel/layout` | 20 | [`tests/qa/scenarios/preview_session`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/preview_session), [`tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/column-preview-fills-free-space.jsonl), [`tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-keyboard-opens-preview.jsonl), [`tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/columns-preview-reopens-after-closing.jsonl), [`tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/narrow-window-keeps-last-column.jsonl), [`tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/preview-boundary-resizes-grabbed-side.jsonl) | 1 | [`docs/preview-panel-layout.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preview-panel-layout.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) (inherited) | | ↳ [Media playback](../features/preview/preview-panel/media/index.md) `preview/preview-panel/media` | 9 | — | 6 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited) | |  ↳ [Audio previews](../features/preview/preview-panel/media/audio.md) `preview/preview-panel/media/audio` | 5 | — | 7 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | |  ↳ [Video previews](../features/preview/preview-panel/media/video.md) `preview/preview-panel/media/video` | 6 | [`tests/qa/scenarios/preview_video`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/preview_video) | 7 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) (inherited) | -| ↳ [3D model previews](../features/preview/preview-panel/model-views.md) `preview/preview-panel/model-views` | 17 | [`tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl) | 6 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited) | +| ↳ [3D model previews](../features/preview/preview-panel/model-views.md) `preview/preview-panel/model-views` | 17 | [`tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/model-preview-reports-limits.jsonl) | 6 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) (inherited) | | ↳ [PDF text selection](../features/preview/preview-panel/pdf.md) `preview/preview-panel/pdf` | 6 | [`tests/qa/scenarios/quick_preview/pdf-preview-copies-text.jsonl`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/quick_preview/pdf-preview-copies-text.jsonl) | 3 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited) | -| ↳ [Offline route previews](../features/preview/preview-panel/routes.md) `preview/preview-panel/routes` | 6 | [`tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl) | 4 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/preview-sandbox.md) (inherited) | +| ↳ [Offline route previews](../features/preview/preview-panel/routes.md) `preview/preview-panel/routes` | 6 | [`tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/quick_preview/route-preview-shows-offline-track-and-elevation.jsonl) | 4 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) (inherited) | | ↳ [Preview sandbox](../features/preview/preview-panel/sandbox.md) `preview/preview-panel/sandbox` | 18 | — | 3 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md), [`docs/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preview-sandbox.md), [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/preview-sandbox.md) (inherited) | | [Quick preview](../features/preview/quick-preview/index.md) `preview/quick-preview` | 11 | [`tests/qa/scenarios/quick_preview/marquee-keeps-preview-closed.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/marquee-keeps-preview-closed.jsonl), [`tests/qa/scenarios/quick_preview/preview-follows-extended-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/preview-follows-extended-selection.jsonl), [`tests/qa/scenarios/quick_preview/preview-follows-selection.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/preview-follows-selection.jsonl), [`tests/qa/scenarios/quick_preview/preview-hides-on-folder.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/preview-hides-on-folder.jsonl), [`tests/qa/scenarios/quick_preview/preview-hides-on-shift-range-folder.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/preview-hides-on-shift-range-folder.jsonl), [`tests/qa/scenarios/quick_preview/space-enters-folder-without-preview.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/space-enters-folder-without-preview.jsonl), [`tests/qa/scenarios/quick_preview/space-previews-filtered-result.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/space-previews-filtered-result.jsonl), [`tests/qa/scenarios/quick_preview/space-previews-filtered-result-pointer.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/quick_preview/space-previews-filtered-result-pointer.jsonl) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| ↳ [Folder peek](../features/preview/quick-preview/folder-peek.md) `preview/quick-preview/folder-peek` | 4 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/keyboard-navigation.md) (inherited) | +| ↳ [Folder peek](../features/preview/quick-preview/folder-peek.md) `preview/quick-preview/folder-peek` | 4 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) | ## [Remote sweep](../qa/sweeps/remote.md) `remote` -reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · 6 nodes, 5 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 6 nodes, 5 with probes -- Tools: [`docs/file-providers.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/file-providers.md), [`docs/remote-sftp.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/remote-sftp.md), [`scripts/sftp-fixture.sh`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/scripts/sftp-fixture.sh), [`integrations/README.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/README.md), [`integrations/kdeconnect/tests/mock_service.py`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/tests/mock_service.py), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/fixtures/harness.json) +- Tools: [`docs/file-providers.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/file-providers.md), [`docs/remote-sftp.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/remote-sftp.md), [`scripts/sftp-fixture.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/sftp-fixture.sh), [`integrations/README.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/README.md), [`integrations/kdeconnect/tests/mock_service.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/tests/mock_service.py), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json) - Hand-offs: Sidebar Network place, DEVICES rows, pins, the Connect to server dialog, and the location field's parsing and history → [`browser`](../qa/sweeps/browser.md); The Send to… row, removable-drive groups beside provider submenus, and copying to a drive → [`operations`](../qa/sweeps/operations.md); Settings navigation to Integrations and Settings search aliases for it → [`settings`](../qa/sweeps/settings.md); Run in terminal on an install command, including the message with no terminal emulator → [`settings`](../qa/sweeps/settings.md); Copy, move, paste, rename, and delete with a remote folder as source or target → [`operations`](../qa/sweeps/operations.md); Preview panel and quick preview of remote files, and thumbnails on remote entries → [`preview`](../qa/sweeps/preview.md); Mounting, unmounting, and ejecting local volumes and removable media, and unmounting a remote mount from its DEVICES row → [`devices`](../qa/sweeps/devices.md); How a provider notice stacks with progress cards and replaces another visible notice in the dock → [`operations`](../qa/sweeps/operations.md); Thumbnail rendering that provider badges share, and search inside a remote location → [`browser`](../qa/sweeps/browser.md); How a non-UTF-8 or `%2F` URI displays, skipped-entry warnings, and directory-load log redaction → [`app`](../qa/sweeps/app.md) | Node | Probes | QA scenarios | Other tests | Docs | @@ -205,31 +206,31 @@ reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e20 | [Remote locations and file providers](../features/remote/file-providers/index.md) `remote/file-providers` | 0 | — | 0 | — | | ↳ [External file providers](../features/remote/file-providers/external.md) `remote/file-providers/external` | 21 | [`tests/qa/scenarios/file_providers`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/tests/qa/scenarios/file_providers) | 3 | [`site/src/reference/file-providers.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/file-providers.md), [`docs/file-providers.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/file-providers.md) | | ↳ [Integrations catalog](../features/remote/file-providers/integrations.md) `remote/file-providers/integrations` | 8 | — | 2 | [`docs/file-providers.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/file-providers.md), [`integrations/README.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/README.md) | -| ↳ [KDE Connect integration](../features/remote/file-providers/kde-connect.md) `remote/file-providers/kde-connect` | 5 | — | 1 | [`integrations/kdeconnect/README.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/kdeconnect/README.md) | -| ↳ [LocalSend integration](../features/remote/file-providers/localsend.md) `remote/file-providers/localsend` | 4 | — | 1 | [`integrations/localsend/README.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/integrations/localsend/README.md) | -| ↳ [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) `remote/file-providers/network-locations` | 12 | — | 3 | [`site/src/reference/remote-sftp.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/remote-sftp.md), [`docs/remote-sftp.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/remote-sftp.md) | +| ↳ [KDE Connect integration](../features/remote/file-providers/kde-connect.md) `remote/file-providers/kde-connect` | 5 | — | 1 | [`integrations/kdeconnect/README.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/kdeconnect/README.md) | +| ↳ [LocalSend integration](../features/remote/file-providers/localsend.md) `remote/file-providers/localsend` | 4 | — | 1 | [`integrations/localsend/README.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/integrations/localsend/README.md) | +| ↳ [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) `remote/file-providers/network-locations` | 14 | — | 3 | [`site/src/reference/remote-sftp.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/remote-sftp.md), [`docs/remote-sftp.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/remote-sftp.md) | ## [Settings sweep](../qa/sweeps/settings.md) `settings` -reviewed at [`73b3258`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb) · 11 nodes, 11 with probes +reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · 11 nodes, 11 with probes -- Triggers: [`src/ui/preferences.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/preferences.rs), [`src/ui/browser/preferences.rs`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/src/ui/browser/preferences.rs), [`data/locales/messages/**`](https://github.com/lgse/strata/tree/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/messages), [`data/locales/de.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/de.json), [`data/locales/en.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/en.json), [`data/locales/es.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/es.json), [`data/locales/fr.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/fr.json), [`data/locales/it.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/it.json), [`data/locales/ja.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/ja.json), [`data/locales/ko.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/ko.json), [`data/locales/pt-BR.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/pt-BR.json), [`data/locales/ru.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/ru.json), [`data/locales/vi.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/vi.json), [`data/locales/zh-CN.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/zh-CN.json), [`data/locales/zh-TW.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/data/locales/zh-TW.json) -- Tools: [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/themes.md), [`docs/internationalization.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/internationalization.md), [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/diagnostics.md), [`scripts/headless/environment.py`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/scripts/headless/environment.py), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/fixtures/harness.json) +- Triggers: [`src/ui/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preferences.rs), [`src/ui/browser/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/preferences.rs), [`data/locales/messages/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/messages), [`data/locales/de.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/de.json), [`data/locales/en.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/en.json), [`data/locales/es.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/es.json), [`data/locales/fr.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/fr.json), [`data/locales/hu.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/hu.json), [`data/locales/it.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/it.json), [`data/locales/ja.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/ja.json), [`data/locales/ko.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/ko.json), [`data/locales/pt-BR.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/pt-BR.json), [`data/locales/ru.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/ru.json), [`data/locales/vi.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/vi.json), [`data/locales/zh-CN.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/zh-CN.json), [`data/locales/zh-TW.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/zh-TW.json) +- Tools: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md), [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/diagnostics.md), [`scripts/headless/environment.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/headless/environment.py), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json) - Hand-offs: Browsing mode, click counts, folder peeking, sort defaults, and text size as they act in the file views → [`browser`](../qa/sweeps/browser.md); Frame and Content sliders in the titlebar Appearance menu, and Content spacing in file views → [`browser`](../qa/sweeps/browser.md); Properties dialog timestamps and sizes → [`browser`](../qa/sweeps/browser.md); System file chooser opt-in under Desktop integration and the chooser itself → [`integration`](../qa/sweeps/integration.md); 10xer mode toggle and custom actions pages, including the action editor's toggles, tabs, and footer → [`integration`](../qa/sweeps/integration.md); The Integrations page, its catalog, and installed providers → [`remote`](../qa/sweeps/remote.md); The sandbox and previews behind a failing Diagnostics check → [`preview`](../qa/sweeps/preview.md); GVfs and network backends behind a failing Diagnostics check → [`remote`](../qa/sweeps/remote.md); Drives, phones, and cameras behind a failing Diagnostics check → [`devices`](../qa/sweeps/devices.md); Terminal launch and custom actions behind a failing Diagnostics check → [`integration`](../qa/sweeps/integration.md); Automatic updates, release channel, and the Updates page → [`app`](../qa/sweeps/app.md); Window buttons rows and the F1 shortcuts reference → [`app`](../qa/sweeps/app.md); The Keyboard page's tables, key capture, conflict notes, and Reset all → [`app`](../qa/sweeps/app.md); Input-method and dead-key composition in Settings fields → [`app`](../qa/sweeps/app.md); Restore open tabs under General → Startup and the tab session it controls → [`browser`](../qa/sweeps/browser.md); Focus return after closing dialogs other than Settings → [`app`](../qa/sweeps/app.md); Focus return after closing the search palettes → [`browser`](../qa/sweeps/browser.md); Units as it acts on route previews, open and new, in the browser and the chooser → [`preview`](../qa/sweeps/preview.md); Video backend, autoplay, text wrap, render-by-default rows, and syntax highlighting inside the preview panel → [`preview`](../qa/sweeps/preview.md); What Watch network folders checks and re-reads in open folders → [`browser`](../qa/sweeps/browser.md); Thumbnail workers, thumbnail rendering, and what Show thumbnails and STL model thumbnails change in the file views → [`browser`](../qa/sweeps/browser.md); Remember sort and icon size per folder, Default sort, Forget all folder settings, and `folder-views.toml` → [`browser`](../qa/sweeps/browser.md); Show sizes in Columns view as it acts on the Columns badge → [`browser`](../qa/sweeps/browser.md); Search time limit and Search entry limit as they act on global search, pane filters, and the Partial results hint → [`browser`](../qa/sweeps/browser.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | -| [Diagnostics](../features/settings/diagnostics.md) `settings/diagnostics` | 9 | — | 2 | [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/diagnostics.md) | -| [Settings window and general preferences](../features/settings/preferences/index.md) `settings/preferences` | 31 | [`tests/qa/scenarios/hidden_files`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/hidden_files), [`tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl), [`tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl) | 6 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) | -| ↳ [Modified date format](../features/settings/preferences/date-format.md) `settings/preferences/date-format` | 6 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | -| ↳ [Interface language](../features/settings/preferences/language.md) `settings/preferences/language` | 11 | — | 2 | [`docs/internationalization.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/internationalization.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited) | +| [Diagnostics](../features/settings/diagnostics.md) `settings/diagnostics` | 10 | — | 2 | [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/diagnostics.md) | +| [Settings window and general preferences](../features/settings/preferences/index.md) `settings/preferences` | 33 | [`tests/qa/scenarios/hidden_files`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/hidden_files), [`tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl), [`tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl) | 6 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) | +| ↳ [Modified date format](../features/settings/preferences/date-format.md) `settings/preferences/date-format` | 6 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) | +| ↳ [Interface language](../features/settings/preferences/language.md) `settings/preferences/language` | 12 | — | 2 | [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) | | ↳ [Preference storage and synchronization](../features/settings/preferences/storage.md) `settings/preferences/storage` | 22 | [`tests/qa/scenarios/preferences`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/preferences) | 5 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited) | -| [Themes and appearance](../features/settings/themes/index.md) `settings/themes` | 50 | — | 7 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/themes.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md), [`docs/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/themes.md) | +| [Themes and appearance](../features/settings/themes/index.md) `settings/themes` | 50 | — | 7 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) | | ↳ [Corner roundness](../features/settings/themes/corner-roundness.md) `settings/themes/corner-roundness` | 8 | — | 1 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/themes.md) (inherited) | -| ↳ [Themed icons](../features/settings/themes/icons/index.md) `settings/themes/icons` | 13 | — | 2 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/themes.md) (inherited) | -|  ↳ [Catppuccin file-type icons](../features/settings/themes/icons/catppuccin.md) `settings/themes/icons/catppuccin` | 3 | — | 1 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/themes.md) (inherited) | +| ↳ [Themed icons](../features/settings/themes/icons/index.md) `settings/themes/icons` | 13 | — | 2 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) (inherited) | +|  ↳ [Catppuccin file-type icons](../features/settings/themes/icons/catppuccin.md) `settings/themes/icons/catppuccin` | 3 | — | 1 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) (inherited) | | ↳ [Interface font](../features/settings/themes/interface-font.md) `settings/themes/interface-font` | 6 | — | 0 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/themes.md) (inherited) | -| ↳ [Omarchy theme following](../features/settings/themes/omarchy.md) `settings/themes/omarchy` | 14 | — | 1 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/themes.md) (inherited) | +| ↳ [Omarchy theme following](../features/settings/themes/omarchy.md) `settings/themes/omarchy` | 15 | — | 1 | [`site/src/reference/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/themes.md) (inherited), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md) (inherited) | ## Nodes without probes (1) @@ -250,6 +251,7 @@ Neither the node nor its subtree cites a `tests/qa/scenarios/` scenario, so QA h - [Release channels](../features/app/updates/release-channels.md) `app/updates/release-channels` - [Install a specific release](../features/app/updates/release-picker.md) `app/updates/release-picker` - [Network folder change checks](../features/browser/directory-monitoring/network-checks.md) `browser/directory-monitoring/network-checks` +- [Administrator access](../features/browser/navigation/administrator-access.md) `browser/navigation/administrator-access` - [Folder jump](../features/browser/navigation/folder-jump.md) `browser/navigation/folder-jump` - [Location path completion](../features/browser/navigation/location-bar/completion.md) `browser/navigation/location-bar/completion` - [Global search exclusions](../features/browser/search/exclusions.md) `browser/search/exclusions` @@ -269,7 +271,6 @@ Neither the node nor its subtree cites a `tests/qa/scenarios/` scenario, so QA h - [Unmount and eject](../features/devices/volumes/release.md) `devices/volumes/release` - [udiskie unlock handler](../features/devices/volumes/udiskie-unlock.md) `devices/volumes/udiskie-unlock` - [10xer mode in the file chooser](../features/integration/10xer-mode/file-chooser.md) `integration/10xer-mode/file-chooser` -- [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) `integration/10xer-mode/places` - [Launched-program GDK_DEBUG restore](../features/integration/file-manager-interface/service-activation.md) `integration/file-manager-interface/service-activation` - [Recently used applications](../features/integration/open-with/recent-apps.md) `integration/open-with/recent-apps` - [File chooser and file manager setup](../features/integration/portal-file-chooser/setup.md) `integration/portal-file-chooser/setup` diff --git a/qa/sweeps/browser.md b/qa/sweeps/browser.md index 711a2fe..e74239f 100644 --- a/qa/sweeps/browser.md +++ b/qa/sweeps/browser.md @@ -1,13 +1,13 @@ --- title: Browser sweep -reviewed_at: 73b3258ff9da7fd5f8b279e442e4fbf576850deb +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 triggers: [src/ui/browser.rs, src/ui/browser/events.rs, src/ui/browser/preferences.rs, src/ui/entry_list_model.rs, src/app/browser.rs, src/app/browser/tests.rs, src/app/navigation.rs, src/app/navigation/tests.rs, src/app/browser/tests/events.rs, src/app/browser/tests/reveal.rs, src/ui/entry_list_model/tests.rs] tools: [scripts/generate-fixture.sh, docs/keyboard-navigation.md, docs/keyboard-shortcuts.md, docs/keymap.md, docs/preferences.md, tests/qa/mutations, tests/qa/keyboard.rs, tests/fixtures/harness.json, tests/qa/fixtures/file_drag_source.py, docs/testing.md, scripts/qa-mutation.sh] --- ## Scope -Everything that shows a folder and moves through it without changing files, in browser windows and in the portal file chooser's shared views. That covers selection by pointer and keyboard, with marquee, pointer intent, and click modes. It covers the Columns, Icons, and List views with sorting, per-folder views, Frame and Content density, text size, thumbnail size shortcuts, and position restore. It covers Back, Forward, and Parent history, the location bar, Recent, startup arguments, and folder jump, plus Ctrl+K search, the Ctrl+F filter, and search exclusions. The sidebar places, the sidebar toggle with its icon rail, pins with drag-to-pin, the Connect to server dialog, and the update notice belong here. So do thumbnails with their disk cache and worker pool, and Properties with its media, RAW, and size details. The context menus, directory loading and monitoring, folder customization, scrolling, and tabs with their session restore complete it. Arrow focus between controls in modal dialogs belongs here too. +Everything that shows a folder and moves through it without changing files, in browser windows and in the portal file chooser's shared views. That covers selection by pointer and keyboard, with marquee, pointer intent, and click modes. It covers the Columns, Icons, and List views with sorting, per-folder views, Frame and Content density, text size, thumbnail size shortcuts, and position restore. It covers Back, Forward, and Parent history, the location bar, Recent, startup arguments, folder jump, and opening unreadable folders as administrator, plus Ctrl+K search, the Ctrl+F filter, and search exclusions. The sidebar places, the sidebar toggle with its icon rail, pins with drag-to-pin, the Connect to server dialog, and the update notice belong here. So do thumbnails with their disk cache and worker pool, and Properties with its media, RAW, and size details. The context menus, directory loading and monitoring, folder customization, scrolling, and tabs with their session restore complete it. Arrow focus between controls in modal dialogs belongs here too. Tab-strip drops that open or move tabs belong here. Left to other sweeps: file drags once a press becomes one, except Escape cancellation, file transfers dropped on tabs and sidebar row bodies, and every operation that changes files. The DEVICES rows and remote shares in the sidebar go elsewhere too. So do the modal dialog shell, the shortcut footer, F1, and key precedence. What the preview panel renders, the Settings pages for these preferences, 10xer key variants, and the portal file chooser's own setup and dialogs are also left out. @@ -16,6 +16,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - `scripts/generate-fixture.sh ` builds `1000`, `10000`, and `100000` entry folders, a 256-level `deep` tree, and `edge-cases` with a broken symlink and a non-UTF-8 name. Add dot-files, a `.hidden` file naming one visible entry, a 255-byte name, two names differing only by case, and a symlink to a folder. - Two oversized folders built with `touch`: one of 200,000 entries and one of 260,000. - An unreadable folder (`chmod 000`) inside the fixture, and a folder to remove while it is open (`rm -rf` or `mv` from a shell), in every view. +- For administrator-access probes: a root-owned `0700` folder on a USB drive, GVfs with `gvfsd-admin`, and a polkit agent in the session. The QA container has neither, so these probes run by hand. - A slow directory: 2,000 images across every thumbnail format, plus 50 PDFs and 50 videos, with `$XDG_CACHE_HOME/thumbnails` emptied first so decoding is visible. - Two windows of the same build for sidebar, pins, text size, tabs, monitoring, and Recent checks; open the same folder in both where the probe says so. - Type to search on and off per probe: it changes what `h`, `j`, `k`, `l`, `p`, `/`, and plain letters do. `docs/keyboard-navigation.md` holds the key rules and `docs/preferences.md` the setting keys. @@ -66,6 +67,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - With Type to search off press `h` in the sidebar, the pane header, and the location entry; then toggle Keep arrows with Ctrl+\ while the header has focus and press Down. - In Columns with column 3 active, hover column 1 and Tab in from the header. Then Shift+Tab out with a filter open in column 2, and with none. - Tab and Shift+Tab around a listing with the preview panel open, closed, and showing a video; then from the unreadable folder's Retry button. +- In Columns, Tab and Shift+Tab across a locked folder's error buttons with and without GVfs `admin` support; press Enter on each. - Start a rename in Columns and press Shift+Tab; then Tab out of a rename whose name collides with a sibling. - In Settings → Actions → New action, press Up from the bottom control of each tab's page until focus stops, then Down; repeat after switching tabs with Left and Right from the strip. - Open a second tab on `100000` and switch back to the first while it loads; press arrows as the hidden load finishes. Then open Properties while the visible Columns folder reloads after an external change. @@ -106,6 +108,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Repeat those clicks on a non-previewable file, at a filtered `trash:///`, and with Include subfolders off. - In the file chooser, filter to a file and double-click it in Columns and in Icons and List search results; then press Enter. - With two tabs open, press Ctrl+3 then Down within one frame while `100000` loads in the visible tab; repeat right after a rename commits. Note which row holds focus after 500 ms. +- In List and Icons, `chmod 000` the open folder from a shell and press F5; click Open as Administrator and cancel the prompt. Then open an admin folder and switch views at 400 px wide. ### browser/view-modes/columns @@ -198,6 +201,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Open Appearance in two windows and drag a slider in one; then press a snap button in the other. - With the menu scrolled, wheel over each slider; then focus one and press Page Up at the maximum and Page Down at 0. - Read each slider and snap button with Orca while moving between presets and Custom values. +- In each interface language, open Appearance in Icons and List at text size 8, 13, and 48; look for overlapping Compact and Airy buttons. ### browser/view-modes/text-size @@ -236,6 +240,18 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Under `[keymap.default]`, bind `parent_folder` to `e`, `home_folder` to `h`, and `history_back` to `b`. Repeat under `[keymap.tenxer]` in 10xer mode. Press each with the file list, sidebar, location entry, and filter field focused. - Bind `parent_folder` to a Ctrl key another command already holds, such as `r`, by hand in the file; press it in each view. +### browser/navigation/administrator-access + +- Open the locked folder by single click, double click with double-click folders, Enter, →, and context-menu Open, in each view; cancel the prompt each time. +- Lock folders named with spaces, `%`, and non-UTF-8 bytes; open each and read the location entry and breadcrumbs. +- Deny access only through an ACL (`setfacl -m u:$USER:---`) on a `0755` folder; lock another through a symlink to a root-owned folder. +- Open the locked folder from a sidebar pin, a bookmark, a command-line argument, and a FileManager1 reveal; press Escape on the dialog, then retry with Open as Administrator. +- Type `ADMIN:///root`, `admin:///`, `admin:///missing`, and `admin://host/x` in the location bar. +- Run without a polkit agent, then with `gvfsd-admin` removed; open the locked folder and type `admin:///root`. +- Stay in an admin folder past the 5-minute polkit grant, then scroll, press F5, and switch views; note when a prompt appears. +- Press Alt+Up up to the Administrator crumb, then Back and Forward across the boundary between admin and ordinary folders. +- Open the same folder as administrator in two tabs and two windows, close them all, and read `gio mount -l`. + ### browser/navigation/folder-jump - Visit 120 folders in `deep` and open the palette; count the rows, then query `'level-0 !marker`, `^level`, `000$`, and the non-UTF-8 name. @@ -259,6 +275,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Type a file path whose parent is an unmounted share or a stalled sshfs mount. Before it loads, press Back, click a sidebar place, or submit a second path. Then select the file by hand. - Type a file path and press Back and Forward fast, five times, while the parent loads. - Type a file path in the portal file chooser's location field. +- Open ten nested folders with 40-character names in a 600 px window; open, submit, and cancel the entry there, then widen and narrow the window. ### browser/navigation/location-bar/completion @@ -347,6 +364,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Drag files over the Trash row with a selection inside Trash and with one on a read-only mount; then shrink the sidebar to the rail mid-drag. - Middle-click and choose Open in New Tab on Trash, Recent, Network, an unmounted `sftp://` pin, a mounted USB drive, and an unmounted volume; then do both on the icon rail. - Double middle-click a sidebar row, and middle-press one and drag past the threshold before release; count the tabs. +- Leave the pointer on a place or device row, then navigate with Alt+Up, Back, and the location bar; repeat in a light and a dark theme. ### browser/sidebar/rail @@ -398,6 +416,8 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Open `.stl` and `.STL` files on an `smb://` share with `gvfsd-fuse`, on an sshfs mount, and in a camera library; compare with the local copy. - Render an ASCII STL, a zero-triangle STL, and a 127 MiB binary STL; change a rendered file's bytes and reopen the folder. - Open a folder of `.gcode`, `.GCO`, and `.bgcode` files with STL model thumbnails off, then on; repeat on an `smb://` share and in the portal file chooser. +- Open the slow directory's images as administrator in each view; compare `$XDG_CACHE_HOME/thumbnails` before and after. +- `chmod 000` a folder in view from a shell, with and without a custom icon, in each view; watch its icon once its metadata fills. ### browser/thumbnails/cache @@ -458,6 +478,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - With two monitors of different heights, open a long menu near the shorter one's bottom, then with the window straddling both. - Repeat the edge probes on GNOME, KDE, Hyprland, X11, and GTK 4.14, and in the file chooser and Ctrl+K results. - Open a file menu in one window, rebind Rename and Copy in Settings → Keyboard from a second window, and read the hints; repeat in 10xer mode and in German. +- In an admin folder, open the menu on a file, a folder, a mixed multi-selection, and empty space. ### browser/directory-monitoring @@ -474,6 +495,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Rename an open folder to a dot name from a shell with hidden files off, then after Ctrl+H toggled them on and off mid-session. - Rename a column's only visible entry, an open folder, to a dot name with hidden files off; then press F2 and Down. - Sort a 2,000-entry folder on a stalled sshfs mount by Size; while sizes load, press F5, go Back, and switch to Icons and List. +- With hidden files off, create, rename, and delete dot-files from a shell in each view and on an `sftp://` folder, then press Ctrl+H. ### browser/directory-monitoring/network-checks @@ -530,7 +552,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d ### browser/tabs/session-restore -- Save tabs on `sftp://host/x`, `smb://user@host/share`, `trash:///`, a folder deleted before relaunch, and the `chmod 000` folder; relaunch and read `tabs.toml` before and after. +- Save tabs on `sftp://host/x`, `smb://user@host/share`, `trash:///`, `admin:///root`, a folder deleted before relaunch, and the `chmod 000` folder; relaunch and read `tabs.toml` before and after. - Run plain `strata` while a window is already open; count tabs in the new window, then change tabs in each window and quit both. - Hand-edit `tabs.toml` with 40 entries, an unknown `kind`, and duplicate entries; relaunch after each. - Open a tab on the non-UTF-8 folder beside two other tabs, select it, quit, and relaunch. @@ -544,6 +566,8 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Drag and drop once a press is read as a file drag, except Escape cancellation, which `browser/tabs` owns → `operations`. - File transfers dropped on tabs and sidebar rows, and every file operation → `operations`. +- Trash, Undo, and Replace inside `admin://` folders, and Trash drops from them → `operations`. +- Open and Open With refusals for files in `admin://` folders → `integration`. - DEVICES rows, Set label…, mounting, and ejecting → `devices`. - Remote shares beyond the typed URI rejections and credential masking covered here, including the mounts and sign-in prompts behind Connect to server → `remote`. - The action editor's tabs, toggles, and footer beyond arrow focus → `integration`. diff --git a/site/unguided.yaml b/site/unguided.yaml index 4a0e3ce..5bdb2f8 100644 --- a/site/unguided.yaml +++ b/site/unguided.yaml @@ -6,6 +6,7 @@ app/keyboard-shortcuts/remapping: New since v1.0.0; the next release docs run places it. app/updates/release-picker: New since v1.0.0; the next release docs run places it. browser/directory-monitoring/network-checks: New since v1.0.0; the next release docs run places it. +browser/navigation/administrator-access: New since v1.0.0; the next release docs run places it. browser/navigation/recent: No upstream user doc covered Recent; the guide does not cover it yet. browser/properties/size: No upstream user doc covered Properties; the guide does not cover it yet. browser/search/exclusions: Covered by the Find files guide page; its upstream doc, docs/preferences.md, stays upstream as contributor material. From b511f295da77c384f4e6d293cb4aba197b63e45f Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:34:03 +0000 Subject: [PATCH 07/17] Apply round-1 review fixes in app and devices Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/app/accessibility.md | 2 +- features/app/dialogs.md | 5 +++-- features/app/infrastructure.md | 5 ----- features/app/updates/index.md | 15 ++++++++++----- features/app/updates/install.md | 2 +- features/devices/volumes/index.md | 5 +++-- qa/sweeps/app.md | 4 ++-- qa/sweeps/devices.md | 1 + 8 files changed, 21 insertions(+), 18 deletions(-) diff --git a/features/app/accessibility.md b/features/app/accessibility.md index 9898f91..8b0e28e 100644 --- a/features/app/accessibility.md +++ b/features/app/accessibility.md @@ -21,7 +21,7 @@ App-wide accessible semantics for screen readers and AT-SPI automation. It cover - In every view, each entry is named with its display name and described as "Folder" or "File". lgse/strata#415 - A symbolic link is described as "Folder link" or "File link", a dangling link as "Broken link", and any other file type as "Other". lgse/strata#415 (unverified) -- A folder the user can't read or enter is described as "Folder that requires administrator access". lgse/strata#1837 +- Once metadata loads, a local folder the user can't read or enter is described as "Folder that requires administrator access". lgse/strata#1837 - A link to such a folder is described as "Folder link that requires administrator access". lgse/strata#1837 (unverified) - Each pane is a group named after its directory and described as "Columns view", "Icons view", or "List view". lgse/strata#415 - The entry list inside a pane is named after its directory and described as "Files". lgse/strata#415 diff --git a/features/app/dialogs.md b/features/app/dialogs.md index 762e0fc..be04b0e 100644 --- a/features/app/dialogs.md +++ b/features/app/dialogs.md @@ -33,8 +33,9 @@ The shared shell behind Strata's action dialogs: the blurred backdrop, open and - Confirmation dialogs open with the confirm button focused, so Enter confirms and Escape cancels: Permanently delete, Empty Trash, Restore, paste and archive Replace, Run, and Forget saved password. lgse/strata#1206 - With focus outside a text field, Enter activates the focused button and toggles a focused checkbox or switch, so Enter with Cancel focused cancels. lgse/strata#1052, lgse/strata#175 (unverified) - With focus outside a text field, an unmodified arrow key moves focus to the nearest button, menu button, checkbox, switch, or entry in that direction; Down on a menu button opens its menu. lgse/strata#175 (unverified) -- An error dialog that offers an action, such as Open as Administrator for an unreadable folder, opens with that accent button focused. lgse/strata#1837 (unverified) -- In that dialog, Close, the close button, and Escape dismiss it without running the action. lgse/strata#1837 (unverified) +- When only permissions block a folder and GIO supports `admin://`, the "Unable to open location" or "Unable to open directory" dialog offers Open as Administrator. lgse/strata#1837 +- That dialog opens with Open as Administrator focused. lgse/strata#1837 (unverified) +- That dialog's cancel button reads Close. Close, the close button, Escape, and a backdrop click dismiss it without opening the folder. lgse/strata#1837 (unverified) - While a dialog is open, focus that moves outside it is returned to the dialog's layer, not to a button inside it. lgse/strata#1432 ### Focus after closing diff --git a/features/app/infrastructure.md b/features/app/infrastructure.md index 7988595..5cf7ea6 100644 --- a/features/app/infrastructure.md +++ b/features/app/infrastructure.md @@ -69,11 +69,6 @@ The location model, URI display and diagnostic rules, and the directory-listing - A helper in a configured directory whose canonical target lies outside those roots is rejected, and the search moves to the next directory. lgse/strata#1746 - With no trusted copy in any directory, the lookup fails closed. lgse/strata#1055, lgse/strata#1746 -### Build switches - -- A build with `STRATA_UPDATER` set to a value other than `enabled` or `disabled`, such as `disable`, fails with `STRATA_UPDATER must be "enabled" or "disabled"`. lgse/strata#1934 -- A `STRATA_UPDATER` value is trimmed first, and an empty value builds with the updater. lgse/strata#1934 (unverified) - ### File manager activation - Started with `--gapplication-service` before any `--`, Strata re-execs before GTK starts, with `no-portals` appended to `GDK_DEBUG`, such as `misc:no-portals`. lgse/strata#1811 diff --git a/features/app/updates/index.md b/features/app/updates/index.md index fdf4349..6a114a6 100644 --- a/features/app/updates/index.md +++ b/features/app/updates/index.md @@ -22,10 +22,12 @@ Checking GitHub for a newer Strata release, the Settings → Updates page, relea - A build made with `STRATA_UPDATER=disabled` has no Updates entry in the Settings navigation and no Updates page. lgse/strata#1934 - Such a build never starts an automatic check, so the sidebar update notice never appears. lgse/strata#1934 - A build with `STRATA_UPDATER` unset or `enabled` keeps the Updates page and update checks. lgse/strata#1934 +- `STRATA_UPDATER` is trimmed before it is read, and an empty value also keeps the updater. lgse/strata#1934 (unverified) +- A build with any other value, such as `disable`, fails with `STRATA_UPDATER must be "enabled" or "disabled"`. lgse/strata#1934 ### Checking -- In a build with the updater, with "Check for updates automatically" on, a window's first themed frame starts a check unless one completed in this process within 24 hours. lgse/strata#944, lgse/strata#326 +- With "Check for updates automatically" on, a window's first themed frame starts a check unless one completed in this process within 24 hours. lgse/strata#944, lgse/strata#326 - Automatic checks are on in a new profile. lgse/strata#1461 - The first visit to Settings → Updates in a window starts an automatic check when one is due. lgse/strata#944 - The first automatic check of a session ignores the on-disk cache. lgse/strata#326 @@ -50,8 +52,10 @@ Checking GitHub for a newer Strata release, the Settings → Updates page, relea - Settings → Updates opened after the startup check completed shows that check's result, without Check now or another request. lgse/strata#1909 - When a startup or manual check completes, every open Settings → Updates row shows its result. lgse/strata#1909 - Check now in one Settings window leaves other windows' rows, including an offer's Install button, unchanged until its result lands. lgse/strata#1909 -- On a pacman or Omarchy install with a Preview or Nightly preference, a startup offer shows on the row with its package-managed action, such as "Check again". lgse/strata#1909 -- Turning automatic checks off or changing the channel resets every open row to "Check for updates" and Check now, except a row mid-check or with an install underway. lgse/strata#1909 (unverified) +- On a pacman or Omarchy install with a Preview or Nightly preference, a startup offer shows on the Updates row. lgse/strata#1909 +- That offer carries its package-managed action, such as "Check again" on pacman. lgse/strata#1909 +- Turning automatic checks off or changing the channel resets every open row to "Check for updates" and Check now. lgse/strata#1909 (unverified) +- That reset skips a row mid-check or with an install underway. lgse/strata#1909 (unverified) - An available update shows its notes inline, titled "Available release · vX" with its change count and publication date. lgse/strata#51 - Turning automatic checks off clears the sidebar notice in every window; turning them on runs a check. lgse/strata#944, lgse/strata#1554 - The Release channel menu is insensitive while automatic checks are off. lgse/strata#97 (unverified) @@ -88,8 +92,9 @@ Update checks use GitHub's unauthenticated REST API, limited to 60 requests per - Strata caches instead of changing the source. A published `latest.json` was heavier, `releases.atom` carries HTML notes, and shipping an API token was rejected (lgse/strata#181). - GitHub answers unauthenticated conditional requests with `200`, so the 6-hour floor and the per-tag notes cache do the actual saving (lgse/strata#197). - The first automatic check of each session bypasses the cache so a fresh launch never shows stale release information. Disabling the cache for every check was rejected as wasteful (lgse/strata#325). -- Results are broadcast to every window (lgse/strata#866). The last completed result, whether an offer, up to date, or a failure, is one shared snapshot. Every Settings → Updates row renders it, including rows opened later (lgse/strata#1909). -- Check now drops the shared snapshot and the sidebar notice, but other rows keep their rendering until the new result lands (lgse/strata#1909). +- Results are broadcast to every window, and a window opened later gets the last offer as its sidebar notice (lgse/strata#866). +- The last completed result, whether an offer, up to date, or a failure, is one shared snapshot. Every Settings → Updates row renders it, including rows opened later (lgse/strata#1909). +- Check now clears only the shared snapshot and the sidebar notice. Clearing every row dropped another window's offer and Install button until the result arrived (lgse/strata#1909). - Each check carries a generation number. A result superseded by a newer check is dropped, so a Preview result cannot land after a switch to Stable (lgse/strata#97). - Checks and package-manager detection run off the GTK thread, after the first frame rather than on a fixed 8-second delay (lgse/strata#944). - A release-notes failure never blocks an eligible update; the GitHub release page stays available as a fallback (lgse/strata#48). diff --git a/features/app/updates/install.md b/features/app/updates/install.md index 122a6ca..6a0cfac 100644 --- a/features/app/updates/install.md +++ b/features/app/updates/install.md @@ -21,7 +21,6 @@ Downloading a release, authenticating it against a signed manifest, replacing th - Install update on the Updates row, or Download update or Install release in the update dialog, starts the install without a prompt. lgse/strata#26, lgse/strata#51, lgse/strata#1781 - A chosen release older than the installed build installs. lgse/strata#1781 -- In a build made with `STRATA_UPDATER=disabled`, an install request fails with "In-app updates are disabled in this build." lgse/strata#1934 (unverified) - Only one install runs per process; starting another shows "Another install is already running — try again shortly." and leaves its button usable. lgse/strata#97, lgse/strata#1499 - A download location other than `https://github.com/lgse/strata/releases/download//strata---unknown-linux-gnu.tar.gz` is refused. lgse/strata#506 @@ -91,6 +90,7 @@ Downloading a release, authenticating it against a signed manifest, replacing th - Every install writes the same executable, so one guard spans all windows. Staging paths are also unique per install against leftovers from a killed process (lgse/strata#97). - Old instances are found through `/proc` and signalled through a pidfd, so a reused PID is never signalled (lgse/strata#1201). - The installer accepts a rollback because it compares the requested tag with the signed manifest's tag, not version order (lgse/strata#1781). +- A build made with `STRATA_UPDATER=disabled` has no Updates page, so no control starts an install. The install service still refuses to run there, as `docs/packaging.md` states (lgse/strata#1934). - Desktop metadata is only refreshed, never created, so an update does not add a launcher the user never installed (lgse/strata#182). ## History diff --git a/features/devices/volumes/index.md b/features/devices/volumes/index.md index 0c28602..3c68db2 100644 --- a/features/devices/volumes/index.md +++ b/features/devices/volumes/index.md @@ -3,8 +3,8 @@ title: Devices and volumes status: shipped origin: {issue: lgse/strata#441, pr: lgse/strata#493} branch: null -reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 -review: reviewed +reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 +review: draft code: [src/ui/window/devices.rs] tests: [src/ui/window/devices/tests.rs] docs: [] @@ -26,6 +26,7 @@ Listing the drives, volumes, and mounts that the desktop volume monitor reports - With no volumes, mounts, password drives, or pending releases, neither the DEVICES heading nor its separator renders. lgse/strata#536 - Plugging in, mounting, unmounting, or removing a device updates Devices without a restart. lgse/strata#536 - A row's udev encryption hint appears once a worker has read it; Devices rebuilds when the hint changes. lgse/strata#1729 (unverified) +- Hovering a device row tints it with the text color at 6%; only the current location's row keeps the accent fill. lgse/strata#1909 ### Mounting diff --git a/qa/sweeps/app.md b/qa/sweeps/app.md index 7383582..7a2424e 100644 --- a/qa/sweeps/app.md +++ b/qa/sweeps/app.md @@ -224,6 +224,7 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Start an install from one Settings window, run Check now in another, then cancel the install; read both rows until the next check. - On fake pacman and Omarchy installs with the Nightly preference, let the startup check offer a release, then switch the channel in a second window. - Launch the disabled build with an `update-check.toml` holding an offer, checks on, and the Preview channel saved; open two windows and count requests at the proxy. +- Build with `STRATA_UPDATER` set to ` disabled `, `DISABLED`, `enabled` followed by a newline, and an empty value; read whether each build fails and whether Settings lists Updates. ### app/updates/release-picker @@ -276,7 +277,6 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Start Strata with `STRATA_UI_STALL_MS` set to `0`, `-5`, `abc`, and ` 250 `; check for the watchdog thread `strata-ui-stalls`. - With Strata stopped, call the portal's `org.freedesktop.portal.OpenURI.OpenDirectory` on a file and time the reply. Repeat with activation `GDK_DEBUG` set to `misc` and to `misc:no-portals`, and read `/proc//environ`. - Launch `strata` and `strata ` while the activated process runs, and read the new window's process id. -- Build with `STRATA_UPDATER` set to ` disabled `, `DISABLED`, `enabled` followed by a newline, and an empty value; read whether each build fails and whether Settings lists Updates. - Run `strata --qa `, `strata --qa`, and `strata --qa` on a plain `cargo build` and a release build; read which window opens and whether stdin is read. ## Hand-offs @@ -290,7 +290,7 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Sidebar automatic rail → `preview`. - Settings layer mechanics and pages other than Updates, including Window buttons and text size controls → `settings`. - Settings search terms that find "Install a specific release" → `settings`. -- Settings search, navigation, and the Diagnostics Installation row in a build without the updater → `settings`. +- Settings search and the Diagnostics Installation row in a build without the updater → `settings`. - Opening an unreadable folder as administrator, its breadcrumb root, and its notice → `browser`. - The "Not responding" notice and request lanes on a stalled mount → `browser`. - The FileManager1 D-Bus service and Open in Terminal → `integration`. diff --git a/qa/sweeps/devices.md b/qa/sweeps/devices.md index da59e46..b5d04e9 100644 --- a/qa/sweeps/devices.md +++ b/qa/sweeps/devices.md @@ -33,6 +33,7 @@ Left to other sweeps: the Send to… submenu rows, Choose folder…, and copying - Attach the three-partition disk and count rows before and after mounting one partition from a shell. - Unplug a stick while its folder is open in Columns, Icons, and List, and once more while a copy into it is running. - Start a mount from the row while udiskie is prompting for the same volume. Cancel udiskie's prompt after 3 seconds, then on a fresh attempt after 10. +- Hover a device row while its folder is the current location, then after Alt+Up leaves the pointer on it; repeat in a light and a dark theme. - Loop-mount an image under `/mnt`, under `/run/media/$USER`, and with `udisksctl mount`; note which appear and which vanish on `umount`. - Mount one stick read-only with `mount -o ro` beside a writable one, then open Send to…. Remount it read-write from a shell and reopen the menu. - Clone a stick with `dd` so two carry one UUID, attach both, and open Send to…. From 187945e6489b376c80ad5a1de36f901e67c75ec1 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:34:15 +0000 Subject: [PATCH 08/17] Apply round-1 review fixes in settings and remote Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/remote/file-providers/kde-connect.md | 3 ++- features/remote/file-providers/localsend.md | 3 ++- features/remote/file-providers/network-locations.md | 5 +++-- features/settings/diagnostics.md | 4 ++-- features/settings/preferences/language.md | 2 +- qa/sweeps/settings.md | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/features/remote/file-providers/kde-connect.md b/features/remote/file-providers/kde-connect.md index 57d7a8f..4bc8304 100644 --- a/features/remote/file-providers/kde-connect.md +++ b/features/remote/file-providers/kde-connect.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1703, pr: lgse/strata#1704} branch: null reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 -review: reviewed +review: draft code: [integrations/kdeconnect/provider.py, integrations/kdeconnect/messages.json, integrations/kdeconnect/catalog.toml, integrations/kdeconnect/LICENSE] tests: [integrations/kdeconnect/tests] docs: [integrations/kdeconnect/README.md] @@ -53,6 +53,7 @@ An opt-in bundled file provider that lists paired KDE Connect devices under Send - The catalog entry `kdeconnect` is in the `devices` category and requires `kdeconnect-cli` and the Python module `gi`, each with pacman, apt, dnf, and zypper packages. lgse/strata#1704 - Provider messages follow `LC_ALL`, then `LC_MESSAGES`, then `LANG`, not Strata's language preference, with English as the fallback. lgse/strata#1704 +- Under `LANG=hu_HU.UTF-8`, provider messages read in Hungarian, such as "A KDE Connect nem válaszolt időben." lgse/strata#1918 - `zh_HK` and `zh_MO` locales get the zh-TW messages. lgse/strata#1704 ## Design diff --git a/features/remote/file-providers/localsend.md b/features/remote/file-providers/localsend.md index d9d5a1e..00ee8c4 100644 --- a/features/remote/file-providers/localsend.md +++ b/features/remote/file-providers/localsend.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#1754, pr: lgse/strata#1756} branch: null reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 -review: reviewed +review: draft code: [integrations/localsend/provider.py, integrations/localsend/messages.json, integrations/localsend/catalog.toml, integrations/localsend/LICENSE] tests: [integrations/localsend/tests/test_provider.py] docs: [integrations/localsend/README.md] @@ -52,6 +52,7 @@ An opt-in bundled file provider whose single Send to… ▸ LocalSend entry hand - The catalog entry `localsend` is in the `devices` category, runs on python3 with only the standard library, and requires `localsend` or `localsend_app` with no package install command. lgse/strata#1756 - Provider messages follow `LC_ALL`, then `LC_MESSAGES`, then `LANG`, with English as the fallback. lgse/strata#1756 (unverified) +- Under `LANG=hu_HU.UTF-8`, provider messages read in Hungarian, such as "A LocalSend nem indítható el." lgse/strata#1918 ## Design diff --git a/features/remote/file-providers/network-locations.md b/features/remote/file-providers/network-locations.md index a0c5b3e..709443b 100644 --- a/features/remote/file-providers/network-locations.md +++ b/features/remote/file-providers/network-locations.md @@ -42,9 +42,10 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native - An `smb://` location without its GVfs backend fails with a message naming common packages `gvfs-smb` or `gvfs-backends`. lgse/strata#31, lgse/strata#233 - An unresolvable host, refused connection, timeout, or unreachable host each shows its own message, such as "That host couldn’t be found. Check the address and DNS settings." lgse/strata#233 +- Opening, listing, or mounting a URI location that fails with a typed GIO error, such as permission denied, shows its translated reason. lgse/strata#1909 - Opening, listing, or mounting a URI location that fails with an unclassified GIO error shows the translated "An unexpected system error occurred", never the backend's text. lgse/strata#1909 -- An SMB open or listing that fails with a generic error naming refused credentials, such as "logon failure" or "authentication failed" in any case, shows "Permission denied". lgse/strata#1909 -- A mount failure on a location with a native path, such as a FUSE volume, shows the backend text with URI user info, query, and fragment removed. lgse/strata#233, lgse/strata#1909 +- Opening or listing a URI location that fails with an untyped error whose text names refused credentials, such as "Logon failure", shows "Permission denied". lgse/strata#1909 +- A mount failure on a location with a native path shows the translated reason for a typed error. An unclassified one shows the backend text with URI user info, query, and fragment removed. lgse/strata#233, lgse/strata#1909 (unverified) - The unclassified backend text goes only to the DEBUG log, sanitized. lgse/strata#1909 - At the default log level, a mount logs only the backend name and outcome. The location appears only at DEBUG, without user info, query, or fragment. lgse/strata#233 diff --git a/features/settings/diagnostics.md b/features/settings/diagnostics.md index 5b532f6..96376d0 100644 --- a/features/settings/diagnostics.md +++ b/features/settings/diagnostics.md @@ -72,8 +72,8 @@ Settings → Diagnostics, an on-demand page that checks the runtime pieces previ - After Run in terminal opens a row's install command, the row reads "The command opened in your terminal. Run diagnostics again when it finishes." lgse/strata#1735, lgse/strata#1704 - Copy report copies "Strata diagnostics", the System fields, and every result by group as `[Status] Title: message`, then shows "Copied" for 1.5 s. lgse/strata#1735 (unverified) - The System box lists Version, Commit, Installation, Toolkit, GStreamer, Kernel, Desktop environment, Display server, Interface renderer, and Language. lgse/strata#1735 -- In a `STRATA_UPDATER=disabled` build, Installation reads "In-app updates are disabled in this build.", and Copy report carries the same line. lgse/strata#1735, lgse/strata#1934 -- That line shows only when no package manager owns the installation. A pacman-owned or AUR-marked disabled build shows its ownership summary; a default build reads "Self-managed". lgse/strata#1934 (unverified) +- In a `STRATA_UPDATER=disabled` build that no package manager owns, Installation and the copied report read "In-app updates are disabled in this build." lgse/strata#1934 +- A pacman-owned or AUR-marked disabled build reads its ownership instead, such as "Installed by pacman as strata-bin." lgse/strata#1934 (unverified) ### Run in terminal diff --git a/features/settings/preferences/language.md b/features/settings/preferences/language.md index f8f9ae6..2c10b2c 100644 --- a/features/settings/preferences/language.md +++ b/features/settings/preferences/language.md @@ -65,7 +65,7 @@ The Language setting and the compiled-in translations behind it. Strata's own in - Changes apply on restart, approved by the owner instead of live relocalization (lgse/strata#1517, lgse/strata#1519). A language change never rebuilds an active browser or resets its navigation, selection, filters, or operations (docs/preferences.md). - Catalogs are compiled into the binary by `build.rs` with `rust-i18n`, so no system locale packages are needed. Japanese and Korean still need installed CJK fonts (lgse/strata#1519). Simplified Chinese needs a CJK font with Simplified glyphs, such as Noto Sans CJK SC (lgse/strata#1582, lgse/strata#1583). Traditional Chinese needs one with Traditional glyphs, such as Noto Sans CJK TC (docs/internationalization.md). - `build.rs` embeds the catalogs as static tables behind the `i18n::Catalogs` backend. The `i18n!` loader's per-message initializer overflowed 2 MiB thread stacks in unoptimized builds (lgse/strata#1519). -- Strata never rewrites the process locale. GTK-owned controls, GIO type descriptions, and system errors can therefore stay in the system language (lgse/strata#1519). Unclassified GIO errors at network-location boundaries show Strata's translated fallback instead, because backend wording is diagnostic detail (lgse/strata#1862, lgse/strata#1909). +- Strata never rewrites the process locale. GTK-owned controls, GIO type descriptions, and system errors can therefore stay in the system language (lgse/strata#1519). Network-location failures are the exception; see `remote/file-providers/network-locations` (lgse/strata#1909). - `rust-i18n` moved from 3.1.5 to 4.2.4 because cargo-deny rejects `unsafe-libyaml` (RUSTSEC-2024-0449). `i18n::Catalogs` follows the 4.0 `Backend` trait; the compiled tables are unchanged (lgse/strata#1583). - Traditional Chinese locales route to their own catalog (Option A), over a manual-only choice (Option B). Option A changes auto-detection for existing `zh_TW` and `zh_HK` users (lgse/strata#1613, lgse/strata#1745). - Hong Kong and Macau use the Taiwan catalog until a zh-HK one is contributed (lgse/strata#1613). diff --git a/qa/sweeps/settings.md b/qa/sweeps/settings.md index 8e83119..2056d11 100644 --- a/qa/sweeps/settings.md +++ b/qa/sweeps/settings.md @@ -74,7 +74,6 @@ For every control this sweep proves the binding: the file changes, the other win - Compare the navigation's icon column with the search field's icon at text size 8 and 48, labelled and icon-only. - Click the backdrop at each corner and edge strip around the Settings panel. Do it in a 640 px and a maximized window, at text size 8 and 48. Then click the panel padding, the navigation gap, and a scrollbar. - In a `STRATA_UPDATER=disabled` build, search "update", "rollback", "release notes", and "channel" with labelled and icon-only navigation, then on a pacman-owned prefix; read the visible rows and navigation entries. -- With hidden files off, create, rename, and delete dot-files from a shell in an open local folder, a folder on the sshfs mount, and a 10k-entry folder. Then press Ctrl+. and compare each view with `ls -A`. ### settings/preferences/storage @@ -273,6 +272,7 @@ For every control this sweep proves the binding: the file changes, the other win - Units as it acts on route previews, open and new, in the browser and the chooser → `preview`. - Video backend, autoplay, text wrap, render-by-default rows, and syntax highlighting inside the preview panel → `preview`. - What Watch network folders checks and re-reads in open folders → `browser`. +- Dot-file changes made while hidden files are off → `browser`. - Thumbnail workers, thumbnail rendering, and what Show thumbnails and STL model thumbnails change in the file views → `browser`. - Remember sort and icon size per folder, Default sort, Forget all folder settings, and `folder-views.toml` → `browser`. - Show sizes in Columns view as it acts on the Columns badge → `browser`. From 7de27ac07e821a3e9bab895cbd71c0dbd18e07f3 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:34:28 +0000 Subject: [PATCH 09/17] Apply round-1 review fixes in browser, integration, and operations; regenerate indexes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- README.md | 8 ++++---- features/browser/directory-monitoring/index.md | 1 + .../browser/navigation/administrator-access.md | 15 +++++++-------- features/browser/navigation/index.md | 2 +- features/browser/navigation/location-bar/index.md | 2 +- features/browser/sidebar/index.md | 2 +- features/browser/tabs/session-restore.md | 3 +-- features/browser/view-modes/density.md | 2 +- features/integration/10xer-mode/file-verbs.md | 2 +- features/integration/10xer-mode/places.md | 2 +- features/integration/portal-file-chooser/index.md | 2 +- features/operations/trash/index.md | 4 ++-- features/operations/undo.md | 5 +++-- index/by-area.md | 14 +++++++------- index/qa.md | 12 ++++++------ qa/sweeps/browser.md | 12 ++++++------ qa/sweeps/integration.md | 8 ++++---- qa/sweeps/operations.md | 8 ++++---- 18 files changed, 52 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 0a14665..fced992 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ One Markdown file per Strata feature, tying shipped behavior and design to the u Look features up [by area](index/by-area.md), [by path](index/by-path.md), [by PR](index/by-pr.md), or [by QA sweep](index/qa.md). *PRs since* counts upstream PRs touching a feature or its children since the oldest review in its subtree; `?` means the review commit is not in `data/prs.jsonl` yet. [qa/README.md](qa/README.md) says how to QA a PR or sweep an area. -Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `44bfeab` · 144 features, 88 reviewed +Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `44bfeab` · 144 features, 85 reviewed ## app @@ -90,7 +90,7 @@ QA sweep: [`qa/sweeps/devices.md`](qa/sweeps/devices.md) | Feature | Id | Status | Review | Reviewed at | PRs since | | --- | --- | --- | --- | --- | --- | -| [Devices and volumes](features/devices/volumes/index.md) | `devices/volumes` | shipped | reviewed | `86df474` | ? | +| [Devices and volumes](features/devices/volumes/index.md) | `devices/volumes` | shipped | draft | `44bfeab` | ? | | ↳ [Camera photos](features/devices/volumes/camera.md) | `devices/volumes/camera` | shipped | reviewed | `44bfeab` | ? | | ↳ [Drive format, label, and properties](features/devices/volumes/drive-dialogs.md) | `devices/volumes/drive-dialogs` | shipped | reviewed | `86df474` | 0 | | ↳ [Encrypted volumes](features/devices/volumes/encrypted.md) | `devices/volumes/encrypted` | shipped | reviewed | `86df474` | 0 | @@ -186,8 +186,8 @@ QA sweep: [`qa/sweeps/remote.md`](qa/sweeps/remote.md) | [Remote locations and file providers](features/remote/file-providers/index.md) | `remote/file-providers` | shipped | reviewed | `86df474` | ? | | ↳ [External file providers](features/remote/file-providers/external.md) | `remote/file-providers/external` | shipped | reviewed | `86df474` | 0 | | ↳ [Integrations catalog](features/remote/file-providers/integrations.md) | `remote/file-providers/integrations` | shipped | reviewed | `86df474` | 0 | -| ↳ [KDE Connect integration](features/remote/file-providers/kde-connect.md) | `remote/file-providers/kde-connect` | shipped | reviewed | `44bfeab` | ? | -| ↳ [LocalSend integration](features/remote/file-providers/localsend.md) | `remote/file-providers/localsend` | shipped | reviewed | `44bfeab` | ? | +| ↳ [KDE Connect integration](features/remote/file-providers/kde-connect.md) | `remote/file-providers/kde-connect` | shipped | draft | `44bfeab` | ? | +| ↳ [LocalSend integration](features/remote/file-providers/localsend.md) | `remote/file-providers/localsend` | shipped | draft | `44bfeab` | ? | | ↳ [Network locations (SMB, SFTP)](features/remote/file-providers/network-locations.md) | `remote/file-providers/network-locations` | shipped | draft | `44bfeab` | ? | ## settings diff --git a/features/browser/directory-monitoring/index.md b/features/browser/directory-monitoring/index.md index e4dd922..4d98ac6 100644 --- a/features/browser/directory-monitoring/index.md +++ b/features/browser/directory-monitoring/index.md @@ -150,3 +150,4 @@ Loading and file monitoring predate the PR history; the original monitor already - While one monitor creation is stuck on a mount that stopped answering, monitors on every folder deliver nothing until that server answers. lgse/strata#1729 - Before Linux 6.13, a change can share a clock tick with the load's stamp and land before the monitor goes live. It then stays hidden until the next change. lgse/strata#1729 - When another program removes an open folder, the cursor lands on the first row instead of a neighbor. lgse/strata#1874 +- Metadata fills on visible `admin://` rows still go through GIO. After the polkit grant expires, they can raise a prompt the user did not ask for. lgse/strata#1837 diff --git a/features/browser/navigation/administrator-access.md b/features/browser/navigation/administrator-access.md index b4da9b3..0d85657 100644 --- a/features/browser/navigation/administrator-access.md +++ b/features/browser/navigation/administrator-access.md @@ -8,7 +8,7 @@ review: draft code: [] tests: [src/app/browser/tests/administrator.rs] docs: [docs/administrator-access.md] -related: [browser/navigation/location-bar, browser/view-modes, browser/view-modes/columns, browser/thumbnails, browser/context-menu, browser/selection/keyboard-navigation, browser/tabs/session-restore, operations/trash, operations/undo, operations/clipboard/conflicts, integration/open-with, app/accessibility] +related: [browser/navigation/location-bar, browser/view-modes, browser/view-modes/columns, browser/thumbnails, browser/context-menu, browser/selection/keyboard-navigation, browser/tabs/session-restore, operations/trash, operations/undo, operations/clipboard/conflicts, integration/open-with, integration/portal-file-chooser, app/accessibility] --- ## Summary @@ -19,8 +19,8 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac ### Marking -- A local folder the user can't read or enter, such as a root-owned `0700` folder, shows a lock icon once its metadata loads. lgse/strata#1837 -- A folder link to such a folder shows the lock icon too. lgse/strata#1837 (unverified) +- A local folder the user can't read or enter, such as a root-owned `0700` folder, is marked locked with a lock icon. lgse/strata#1837 +- A folder link to such a folder is marked locked too. lgse/strata#1837 (unverified) - The check uses `access(2)`, so a folder readable only through an ACL is not marked. lgse/strata#1837 - The lock icon shows even where GIO has no `admin` scheme. lgse/strata#1837 (unverified) @@ -31,10 +31,10 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac - The polkit prompt appears while the current folder stays open; the tab switches only after the first read succeeds. lgse/strata#1837 - A path with spaces, `%`, or non-UTF-8 bytes is percent-escaped in its `admin://` form. lgse/strata#1836, lgse/strata#1837 - Moving the selection onto a locked folder with the arrow keys raises no polkit prompt. lgse/strata#1837 -- A typed path, sidebar place, bookmark, pin, or command-line argument to an unreadable folder shows the permission error dialog with an Open as Administrator button. lgse/strata#1837 -- Open as Administrator in that dialog opens the folder's `admin://` form. lgse/strata#1837 +- Where GIO supports `admin`, a typed path to an unreadable folder shows the permission error dialog with an Open as Administrator button. lgse/strata#1837 +- A sidebar place, bookmark, pin, or command-line argument to an unreadable folder offers the same button in its dialog, column, or pane. lgse/strata#1837 (unverified) +- Open as Administrator opens the folder's `admin://` form. lgse/strata#1837 - Where GIO has no `admin` scheme, no dialog, column, or pane offers Open as Administrator. lgse/strata#1837 -- The portal file chooser never offers Open as Administrator. lgse/strata#1837 - A folder peek of an unreadable folder offers no Open as Administrator. lgse/strata#1837 (unverified) - Typing `admin:///path` in the location bar opens that folder as administrator. lgse/strata#1837 @@ -54,7 +54,7 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac - Only an explicit open prompts. Columns previews the selected folder, so prompting on selection would let arrow keys raise password prompts. GNOME Files behaves the same (lgse/strata#1836). - Validation runs the first `admin://` operation, so polkit prompts before the current folder is replaced (lgse/strata#1837). - GVfs reports a dismissed or refused prompt as `PERMISSION_DENIED`, not as cancelled. The prompt comes from the session's polkit agent, not from `GMountOperation`, so Strata needs no password form (lgse/strata#1836). -- Polkit authorizes each operation for about five minutes, so a first visit may prompt twice: once for the `gvfsd-admin` helper and once for the first read (lgse/strata#1836). +- Polkit authorizes each operation for about five minutes. A first visit may therefore prompt twice: once for the `gvfsd-admin` helper and once for the first read (lgse/strata#1836). - Access is read-write from the start, because writes already use the GIO paths Strata uses for SFTP and SMB (lgse/strata#1836). - Lock marking uses `access(2)` rather than mode bits, so ACLs count (lgse/strata#1837). - Running Strata as root, or through `pkexec strata`, was rejected as unsafe for a GUI and unlike other file managers (lgse/strata#1836). @@ -68,4 +68,3 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac ## Known gaps - Strata can't unmount its `admin://` mount: it is private to the process and invisible to GIO's volume monitor. GVfs drops it when Strata exits. lgse/strata#1837 -- Metadata fills on visible `admin://` rows still go through GIO, so after the polkit grant expires they can raise a prompt the user did not ask for. lgse/strata#1837 diff --git a/features/browser/navigation/index.md b/features/browser/navigation/index.md index b4e52df..689b716 100644 --- a/features/browser/navigation/index.md +++ b/features/browser/navigation/index.md @@ -31,7 +31,7 @@ Moving between locations in a browser pane: Back, Forward, and Parent history fr ### Unreadable folders -- Where GIO has no `admin` scheme, clicking or opening a folder Strata may not read, such as after `chmod 000`, shows an "Unable to open directory" dialog saying you do not have permission. lgse/strata#1807, lgse/strata#1837 +- Where GIO has no `admin` scheme, clicking or opening a folder Strata may not read in Columns shows an "Unable to open directory" permission dialog. lgse/strata#1807, lgse/strata#1837 (unverified) ### Mouse buttons diff --git a/features/browser/navigation/location-bar/index.md b/features/browser/navigation/location-bar/index.md index 23560a8..0c14265 100644 --- a/features/browser/navigation/location-bar/index.md +++ b/features/browser/navigation/location-bar/index.md @@ -68,7 +68,7 @@ The header control that shows the active location as breadcrumbs and switches to - When crumbs overflow, the wheel scrolls them horizontally and edge fades mark the hidden part. lgse/strata#820 - The overflow scrollbar sits in its own row below the crumbs, hidden at rest and shown on hover or scroll, never covering labels. lgse/strata#820 - Crumb labels longer than 32 characters are shortened in the middle. lgse/strata#1143 -- Deep paths keep each crumb label at its text width, up to 32 characters, and the crumb row scrolls instead of shrinking labels to "l…". lgse/strata#1909 +- Deep paths keep each crumb label at its text width, up to 32 characters. The crumb row scrolls instead of shrinking labels to "l…". lgse/strata#1909 - After navigation, or after submitting or cancelling the entry, the crumbs scroll to show the current crumb. lgse/strata#1909 - The current crumb's Copy path button copies the path and shows a check and "Path copied" for 2 seconds. lgse/strata#316 (unverified) - The Copy path button is named "Copy path"; after a click it is named "Path copied", then "Copy path" again 2 s later. lgse/strata#1895 diff --git a/features/browser/sidebar/index.md b/features/browser/sidebar/index.md index c9cdc58..008af3b 100644 --- a/features/browser/sidebar/index.md +++ b/features/browser/sidebar/index.md @@ -22,7 +22,7 @@ The left panel of every browser window and the file chooser: built-in places, th - By default the sidebar lists Home, Trash, Network, Recent, Desktop, Documents, Downloads, Music, Pictures, and Videos in one block, followed by PINNED and DEVICES. lgse/strata#1161, lgse/strata#1342 - Desktop, Documents, Downloads, Music, Pictures, and Videos open the folders set in `user-dirs.dirs`; Music follows `XDG_MUSIC_DIR`. lgse/strata#1342 - The row for the current location shows an 18% accent tint and an accent-coloured icon. lgse/strata#106 -- Hovering a place or device row that is not the current location shows a neutral 6% text-colour fill, not an accent tint. lgse/strata#1909 +- Hovering a place row that is not the current location shows a neutral 6% text-colour fill, not an accent tint. lgse/strata#1909 - After Alt+Up, Back, or location-bar navigation with the pointer left on the old row, only the new current row keeps the accent tint. lgse/strata#1909 - Clicking a place that fails to open, such as Network with `GIO_USE_VFS=local`, and dismissing the error leaves the pane and the highlight on the open place. lgse/strata#1605 - While a place mounts before opening, the highlight stays on the open place; a failed or cancelled mount leaves it there. lgse/strata#1605 diff --git a/features/browser/tabs/session-restore.md b/features/browser/tabs/session-restore.md index 35d37cc..076a6cd 100644 --- a/features/browser/tabs/session-restore.md +++ b/features/browser/tabs/session-restore.md @@ -36,8 +36,7 @@ A plain launch reopens the previous session's tab locations in strip order, with - When that tab is the only one, it opens the default folder instead. lgse/strata#1729 (unverified) - A saved folder whose check times out, as on a server that does not answer, keeps its tab and shows its error. It loads by itself once the mount answers. lgse/strata#1729 - Trashed-item children (`trash:///x`) and non-root Recent entries (`recent:///x`) are skipped, while `trash:///` and `recent:///` restore. lgse/strata#1532 -- Camera roots such as `gphoto2://` are skipped. So is every scheme other than `smb`, `sftp`, `ftp`, `ftps`, `dav`, `davs`, `trash`, `network`, and `recent`. lgse/strata#1532 (unverified) -- A saved `admin://` tab is skipped, so startup never raises a polkit prompt. lgse/strata#1837 +- Camera roots such as `gphoto2://` are skipped. So is every scheme other than `smb`, `sftp`, `ftp`, `ftps`, `dav`, `davs`, `trash`, `network`, and `recent`, including `admin://`. lgse/strata#1532, lgse/strata#1837 (unverified) - When a skipped entry precedes the active tab, the restored selection still lands on the saved active location. lgse/strata#1532 - When the saved active entry is skipped, the nearest kept tab to its left is selected. With none to its left, the first restored tab is. lgse/strata#1532 (unverified) - An active index beyond the last restorable tab selects the last restored tab. lgse/strata#1532 (unverified) diff --git a/features/browser/view-modes/density.md b/features/browser/view-modes/density.md index e68500e..4b3d05a 100644 --- a/features/browser/view-modes/density.md +++ b/features/browser/view-modes/density.md @@ -24,7 +24,7 @@ Two spacing settings in the Appearance menu's DENSITY section. Frame is the vert - Content runs from 0 to 16 px, with Compact 4, the default, and Airy 8. lgse/strata#1776 - Each slider's value label reads "Compact · N px" or "Airy · N px" at a preset, otherwise "Custom · N px". lgse/strata#1776 - Each slider has tick marks at its Compact and Airy values, with "Compact" and "Airy" buttons under them. lgse/strata#1776 -- The "Compact" and "Airy" buttons never overlap, in any locale: at least 8 px separates them, and the menu reserves their combined width. lgse/strata#1909 +- The Compact and Airy buttons sit at least 8 px apart, and the menu reserves their combined width, such as in Russian at text size 48. lgse/strata#1909 - In Traditional Chinese, the Airy button reads 寬鬆. lgse/strata#1909 - Clicking "Compact" or "Airy" snaps that slider to the preset; the label of the current preset shows in the accent color. lgse/strata#1776 (unverified) - Dragging a slider or clicking a snap button leaves the Appearance menu open. lgse/strata#1776 diff --git a/features/integration/10xer-mode/file-verbs.md b/features/integration/10xer-mode/file-verbs.md index 66438fa..2292276 100644 --- a/features/integration/10xer-mode/file-verbs.md +++ b/features/integration/10xer-mode/file-verbs.md @@ -83,7 +83,7 @@ Single-key file commands in 10xer mode: yank, cut, paste, delete, create, rename - `O` looks up types and applications without blocking keys, then opens Open With for the targets. lgse/strata#1308 - Outside Flatpak, for a mixed selection, Recommended Applications lists only applications that handle every type. lgse/strata#1308, lgse/strata#1635 - A newer key, a selection or focus change, navigation, leaving the mode, or closing the window drops an unfinished Open With lookup. lgse/strata#1308 -- `O` with any target in a folder opened as administrator flashes "Other applications can't open files in a folder opened as administrator. Preview the file here, or copy it to another folder first." No chooser opens. lgse/strata#1837 (unverified) +- `O` on any target in a folder opened as administrator opens no chooser. It flashes "Other applications can't open files in a folder opened as administrator. Preview the file here, or copy it to another folder first." lgse/strata#1837 (unverified) - `;` arms a chord whose panel lists the first ten matching custom actions in context-menu order, then `t`, `c`, `e`, and `E`. lgse/strata#1308, lgse/strata#1340 - `; 1` to `; 9` and `; 0` run that action; a vacant slot flashes `No action N` and runs nothing. lgse/strata#1308 - If the targets or the action list changed since `;`, the digit flashes `Selection changed` or `Actions changed` and runs nothing. lgse/strata#1308 diff --git a/features/integration/10xer-mode/places.md b/features/integration/10xer-mode/places.md index 2275800..ad5c4d2 100644 --- a/features/integration/10xer-mode/places.md +++ b/features/integration/10xer-mode/places.md @@ -35,7 +35,7 @@ Keyboard jumps to places and folders in 10xer mode: the `g` chord, pins, the `go ### Pins - `g +`, or `g` then keypad `+`, pins the folder under the cursor, or the current folder from a file. It flashes `Pinned “Name” as g N`. lgse/strata#1340 -- The `g +` flash appears once the bookmark is saved, so the 1st to 4th new pins read `Pinned “Name” as g 1` to `… as g 4`. lgse/strata#1909 +- The `g +` flash appears once the bookmark is saved, so a new pin in slots 1–4 reads `Pinned “Name” as g N`. lgse/strata#1909 - When the bookmark save leaves the folder unpinned, `g +` flashes `Can’t pin “Name”` instead of `Pinned …`. lgse/strata#1909 (unverified) - A new pin outside the first nine visible pins flashes `Pinned “Name”` with no digit. lgse/strata#1340 (unverified) - `g -`, or `g` then keypad `-`, unpins it and flashes `Unpinned “Name”`; pinning twice flashes `“Name” is already pinned`. lgse/strata#1340 diff --git a/features/integration/portal-file-chooser/index.md b/features/integration/portal-file-chooser/index.md index 6898c2b..0d42fd6 100644 --- a/features/integration/portal-file-chooser/index.md +++ b/features/integration/portal-file-chooser/index.md @@ -8,7 +8,7 @@ review: draft code: [src/portal.rs, src/portal/dbus.rs, src/ui/chooser.rs, src/ui/browser/chooser_context.rs] tests: [src/portal/tests.rs, src/portal/dbus/tests.rs, src/ui/chooser/tests.rs, src/ui/chooser/tests/acceptance.rs, src/ui/chooser/tests/column_widths.rs, src/ui/chooser/tests/confined.rs, src/ui/chooser/tests/filtered_preview.rs, src/ui/chooser/tests/sizing.rs, tests/qa/scenarios/chooser_selection/**, scripts/portal-test.py, scripts/portal-test.html, scripts/portal_test_environment.py, scripts/test_portal_test_environment.py, scripts/chooser-dev.sh] docs: [site/src/reference/portal-file-chooser.md, docs/portal-file-chooser.md] -related: [integration/10xer-mode, browser/directory-monitoring, operations/clipboard, operations/archives, operations/trash, browser/sidebar, preview/preview-panel/layout, browser/search/filter, browser/view-modes, browser/view-modes/columns, browser/view-modes/list] +related: [integration/10xer-mode, browser/directory-monitoring, operations/clipboard, operations/archives, operations/trash, browser/sidebar, preview/preview-panel/layout, browser/search/filter, browser/view-modes, browser/view-modes/columns, browser/view-modes/list, browser/navigation/administrator-access] --- ## Summary diff --git a/features/operations/trash/index.md b/features/operations/trash/index.md index e404cb6..67d3158 100644 --- a/features/operations/trash/index.md +++ b/features/operations/trash/index.md @@ -31,7 +31,7 @@ Moving files and folders to the freedesktop.org Trash, undoing that move, and br - A folder whose first listed entry is a symlink into `/dev/shm` still offers Move to Trash, and Delete moves a regular file there to Trash. lgse/strata#1551, lgse/strata#1584 - A no-Trash folder is an open folder reporting `access::can-trash` false and `access::can-delete` true, such as `/dev/shm`. lgse/strata#1533 -- Delete, or a drop on the sidebar Trash row, opens "Permanently delete N items?" at once when every item is in a no-Trash folder. lgse/strata#1533 +- Delete, or a drop on the sidebar Trash row from a folder not opened as administrator, opens "Permanently delete N items?" at once when every item is in a no-Trash folder. lgse/strata#1533, lgse/strata#1837 - In that case no trash move is attempted, so nothing reaches the Trash. lgse/strata#1533 - That dialog's text opens with the paragraph "This location doesn't support Trash." lgse/strata#1533, lgse/strata#1614 - When a refusal was recorded for the first item's mount, the next paragraph reads "Trash isn't available on ()." lgse/strata#1614 @@ -40,7 +40,7 @@ Moving files and folders to the freedesktop.org Trash, undoing that move, and br - When the folder's `access::can-trash` value is unknown, or the item's folder is not open, Delete attempts the trash move first. lgse/strata#1533 (unverified) - A folder opened as administrator (`admin://`) counts as a no-Trash folder, whatever its `access::can-trash` reports. lgse/strata#1837 - Delete, or 10xer `d`, on items in such a folder opens "Permanently delete N items?" at once, with Cancel focused. No trash move is attempted. lgse/strata#1837 -- That dialog's reason paragraph reads "Trash isn't available when browsing as administrator.", followed by the local deletion sentence. lgse/strata#1837 +- Its second paragraph reads "Trash isn't available when browsing as administrator.", followed by the local deletion sentence. lgse/strata#1837 - Dropping items from such a folder on the sidebar Trash row is refused, and no confirmation opens. lgse/strata#1837 (unverified) - In a read-only folder, where `access::can-trash` and `access::can-delete` are both false, Delete still attempts the trash move and opens no dialog first. lgse/strata#1533 - When a trash move fails because every failed item's location lacks Trash, the same explained dialog opens with Cancel focused, for only those items. lgse/strata#225, lgse/strata#1425, lgse/strata#1533 diff --git a/features/operations/undo.md b/features/operations/undo.md index e37b599..1440714 100644 --- a/features/operations/undo.md +++ b/features/operations/undo.md @@ -30,8 +30,9 @@ One undo history and one redo history for file operations, shared by every Strat - Redo is shared too: after Ctrl+Z in one window, Ctrl+Shift+Z in another window re-applies that operation. lgse/strata#1120 - Repeated Ctrl+Z undoes earlier operations newest first, up to 32 entries; recording a 33rd drops the oldest. lgse/strata#444 - A paste that created nothing records no entry, so Ctrl+Z still undoes the operation before it. lgse/strata#444 -- A copy, Merge, New Folder, or New File into a folder opened as administrator records no entry; Ctrl+Z then undoes the operation before it. lgse/strata#1837 -- A rename or move inside such a folder still records its entry. lgse/strata#1837 +- A copy, including one whose conflict is answered Replace, or a New Folder or New File, into a folder opened as administrator records no entry. Ctrl+Z then undoes the operation before it. lgse/strata#1837 +- Such a copy, New Folder, or New File leaves the redo history as it was. lgse/strata#1837 (unverified) +- A rename, or a move into or out of such a folder, still records its entry. lgse/strata#1837 - An undo records no undo entry of its own, so a second Ctrl+Z undoes the previous operation instead of reverting the undo. lgse/strata#301, lgse/strata#444 - While an undo or redo runs, Ctrl+Z or Ctrl+Shift+Z in another window does not start it a second time. lgse/strata#228, lgse/strata#1120 (unverified) - A completed redo becomes the latest undo entry again, so Ctrl+Z after Ctrl+Shift+Z reverts it once more. lgse/strata#1120 diff --git a/index/by-area.md b/index/by-area.md index 380bcd1..fe56112 100644 --- a/index/by-area.md +++ b/index/by-area.md @@ -249,7 +249,7 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac - Tests: [`src/app/browser/tests/administrator.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/administrator.rs) - Docs: [`docs/administrator-access.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/administrator-access.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) -- Related: [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [Thumbnails](../features/browser/thumbnails/index.md), [Context menus](../features/browser/context-menu.md), [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md), [Tab session restore](../features/browser/tabs/session-restore.md), [Trash](../features/operations/trash/index.md), [Undo and redo](../features/operations/undo.md), [Paste name conflicts](../features/operations/clipboard/conflicts.md), [Opening files and Open With](../features/integration/open-with/index.md), [Accessibility](../features/app/accessibility.md) +- Related: [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [Thumbnails](../features/browser/thumbnails/index.md), [Context menus](../features/browser/context-menu.md), [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md), [Tab session restore](../features/browser/tabs/session-restore.md), [Trash](../features/operations/trash/index.md), [Undo and redo](../features/operations/undo.md), [Paste name conflicts](../features/operations/clipboard/conflicts.md), [Opening files and Open With](../features/integration/open-with/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Accessibility](../features/app/accessibility.md) ### [Folder jump](../features/browser/navigation/folder-jump.md) `browser/navigation/folder-jump` @@ -700,12 +700,12 @@ Keyboard and wheel shortcuts that step the Icons thumbnail size along a fixed la ### [Devices and volumes](../features/devices/volumes/index.md) `devices/volumes` -shipped · reviewed · reviewed at [`86df474`](https://github.com/lgse/strata/tree/86df474dc0e8352e0e2098637a017cc4c77a8c44) · ? PRs since · origin issue [lgse/strata#441](https://github.com/lgse/strata/issues/441), pr [lgse/strata#493](https://github.com/lgse/strata/issues/493) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#441](https://github.com/lgse/strata/issues/441), pr [lgse/strata#493](https://github.com/lgse/strata/issues/493) Listing the drives, volumes, and mounts that the desktop volume monitor reports under Devices, and mounting them on demand. It also supplies the removable destinations Send to… offers and the drive roots Ctrl+K searches. Children: `devices/volumes/release` (Unmount and Eject), `devices/volumes/encrypted` (Unlock and Lock), `devices/volumes/udiskie-unlock` (udiskie handoff), `devices/volumes/drive-dialogs` (Format, Set label, Properties), and `devices/volumes/camera` (camera Photos view). -- Code: [`src/ui/window/devices.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/window/devices.rs) -- Tests: [`src/ui/window/devices/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/ui/window/devices/tests.rs) +- Code: [`src/ui/window/devices.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/devices.rs) +- Tests: [`src/ui/window/devices/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/devices/tests.rs) - Related: [Sidebar](../features/browser/sidebar/index.md), [Search](../features/browser/search/index.md), [Send to removable devices](../features/operations/clipboard/send-to.md), [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) - Children: [Camera photos](../features/devices/volumes/camera.md), [Drive format, label, and properties](../features/devices/volumes/drive-dialogs.md), [Encrypted volumes](../features/devices/volumes/encrypted.md), [Unmount and eject](../features/devices/volumes/release.md), [udiskie unlock handler](../features/devices/volumes/udiskie-unlock.md) @@ -906,7 +906,7 @@ Strata as the XDG Desktop Portal FileChooser backend: Open, Save, and Save Files - Code: [`src/portal.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal.rs), [`src/portal/dbus.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal/dbus.rs), [`src/ui/chooser.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser.rs), [`src/ui/browser/chooser_context.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/chooser_context.rs) - Tests: [`src/portal/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal/tests.rs), [`src/portal/dbus/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/portal/dbus/tests.rs), [`src/ui/chooser/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests.rs), [`src/ui/chooser/tests/acceptance.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/acceptance.rs), [`src/ui/chooser/tests/column_widths.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/column_widths.rs), [`src/ui/chooser/tests/confined.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/confined.rs), [`src/ui/chooser/tests/filtered_preview.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/filtered_preview.rs), [`src/ui/chooser/tests/sizing.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/chooser/tests/sizing.rs), [`tests/qa/scenarios/chooser_selection/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/chooser_selection), [`scripts/portal-test.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal-test.py), [`scripts/portal-test.html`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal-test.html), [`scripts/portal_test_environment.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/portal_test_environment.py), [`scripts/test_portal_test_environment.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_portal_test_environment.py), [`scripts/chooser-dev.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/chooser-dev.sh) - Docs: [`site/src/reference/portal-file-chooser.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/portal-file-chooser.md), [`docs/portal-file-chooser.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/portal-file-chooser.md) -- Related: [10xer mode](../features/integration/10xer-mode/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Copy, cut, and paste](../features/operations/clipboard/index.md), [Archives](../features/operations/archives/index.md), [Trash](../features/operations/trash/index.md), [Sidebar](../features/browser/sidebar/index.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [Pane filter](../features/browser/search/filter/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [List view](../features/browser/view-modes/list/index.md) +- Related: [10xer mode](../features/integration/10xer-mode/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Copy, cut, and paste](../features/operations/clipboard/index.md), [Archives](../features/operations/archives/index.md), [Trash](../features/operations/trash/index.md), [Sidebar](../features/browser/sidebar/index.md), [Preview panel layout](../features/preview/preview-panel/layout.md), [Pane filter](../features/browser/search/filter/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [List view](../features/browser/view-modes/list/index.md), [Administrator access](../features/browser/navigation/administrator-access.md) - Children: [Chooser PNG conversion](../features/integration/portal-file-chooser/image-conversion.md), [File chooser and file manager setup](../features/integration/portal-file-chooser/setup.md), [Name field filenames and URL downloads](../features/integration/portal-file-chooser/url-download.md), [Chooser window size and placement](../features/integration/portal-file-chooser/window-placement.md) ### [Chooser PNG conversion](../features/integration/portal-file-chooser/image-conversion.md) `integration/portal-file-chooser/image-conversion` @@ -1457,7 +1457,7 @@ Settings → Integrations, a catalog of opt-in provider programs bundled with St ### [KDE Connect integration](../features/remote/file-providers/kde-connect.md) `remote/file-providers/kde-connect` -shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1703](https://github.com/lgse/strata/issues/1703), pr [lgse/strata#1704](https://github.com/lgse/strata/issues/1704) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1703](https://github.com/lgse/strata/issues/1703), pr [lgse/strata#1704](https://github.com/lgse/strata/issues/1704) An opt-in bundled file provider that lists paired KDE Connect devices under Send to… ▸ KDE Connect. It sends the whole selection to the chosen device over D-Bus, with no device-picker window. For users moving from Nautilus who relied on KDE Connect's device-aware context menu. It installs from `remote/file-providers/integrations`. @@ -1468,7 +1468,7 @@ An opt-in bundled file provider that lists paired KDE Connect devices under Send ### [LocalSend integration](../features/remote/file-providers/localsend.md) `remote/file-providers/localsend` -shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1754](https://github.com/lgse/strata/issues/1754), pr [lgse/strata#1756](https://github.com/lgse/strata/issues/1756) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#1754](https://github.com/lgse/strata/issues/1754), pr [lgse/strata#1756](https://github.com/lgse/strata/issues/1756) An opt-in bundled file provider whose single Send to… ▸ LocalSend entry hands the selected files and folders to the installed LocalSend app. LocalSend then picks the device and sends. For users who would otherwise re-pick the same files in LocalSend's own dialog. It installs from `remote/file-providers/integrations`. diff --git a/index/qa.md b/index/qa.md index 8207bf5..0748a75 100644 --- a/index/qa.md +++ b/index/qa.md @@ -10,20 +10,20 @@ reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993ba - Triggers: [`src/ui/window.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window.rs), [`src/ui/window/keyboard/items.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/keyboard/items.rs), [`src/ui/frame.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/frame.rs), [`src/ui/motion.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/motion.rs), [`src/style.css`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/style.css), [`src/ui/input_ownership.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/input_ownership.rs), [`src/ui/window/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/tests.rs), [`src/ui/frame/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/frame/tests.rs), [`src/ui/input_ownership/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/input_ownership/tests.rs), [`src/ui/motion/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/motion/tests.rs) - Tools: [`scripts/test_installer.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/test_installer.py), [`install.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/install.sh), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/signed-updates.md), [`docs/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-navigation.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md), [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`tests/qa/keyboard.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/keyboard.rs), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json), [`scripts/qa-drive.sh`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/qa-drive.sh) -- Hand-offs: Window title text after a folder opens → [`browser`](../qa/sweeps/browser.md); The `GDK_DEBUG` value programs launched from a service-activated Strata see → [`integration`](../qa/sweeps/integration.md); Per-mode movement, selection, the keyboard cursor after reloads, and type-to-search → [`browser`](../qa/sweeps/browser.md); Context menu items, placement, and Open With → [`browser`](../qa/sweeps/browser.md); The sidebar as a navigation surface, the Trash row, and the update notice's text and layout → [`browser`](../qa/sweeps/browser.md); Sidebar toggle steps and tooltip text → [`browser`](../qa/sweeps/browser.md); Sidebar automatic rail → [`preview`](../qa/sweeps/preview.md); Settings layer mechanics and pages other than Updates, including Window buttons and text size controls → [`settings`](../qa/sweeps/settings.md); Settings search terms that find "Install a specific release" → [`settings`](../qa/sweeps/settings.md); Settings search, navigation, and the Diagnostics Installation row in a build without the updater → [`settings`](../qa/sweeps/settings.md); Opening an unreadable folder as administrator, its breadcrumb root, and its notice → [`browser`](../qa/sweeps/browser.md); The "Not responding" notice and request lanes on a stalled mount → [`browser`](../qa/sweeps/browser.md); The FileManager1 D-Bus service and Open in Terminal → [`integration`](../qa/sweeps/integration.md); The portal file chooser, including its identity and refresh after an update → [`integration`](../qa/sweeps/integration.md); 10xer-mode key variants and footer prompts → [`integration`](../qa/sweeps/integration.md); Settings search finding Keyboard rows and the Settings navigation layout → [`settings`](../qa/sweeps/settings.md); Custom action slot feedback, keymap overrides in the portal chooser, and Ctrl-bound history, parent, and home keys there → [`integration`](../qa/sweeps/integration.md); Rebound keys in previews → [`preview`](../qa/sweeps/preview.md); Rebound context-menu accelerators and Ctrl-bound history, parent, and home in the browser → [`browser`](../qa/sweeps/browser.md); Tab numbers, view switching, text size, and the filter on other layouts → [`browser`](../qa/sweeps/browser.md); Chosen states of sort options and Appearance options other than Hidden files, after changes made while their menus are closed → [`browser`](../qa/sweeps/browser.md); Chosen states of Settings choice options and the Hidden files option → [`settings`](../qa/sweeps/settings.md); The contents and outcome of operation dialogs such as paste conflicts, Compress, and progress → [`operations`](../qa/sweeps/operations.md); The mount authentication dialog and remote paths in the search palette → [`remote`](../qa/sweeps/remote.md); Thumbnail size steps and the size notice → [`browser`](../qa/sweeps/browser.md); Format Drive label limits and units per filesystem → [`devices`](../qa/sweeps/devices.md); The Settings file chooser row on a silent session bus → [`integration`](../qa/sweeps/integration.md) +- Hand-offs: Window title text after a folder opens → [`browser`](../qa/sweeps/browser.md); The `GDK_DEBUG` value programs launched from a service-activated Strata see → [`integration`](../qa/sweeps/integration.md); Per-mode movement, selection, the keyboard cursor after reloads, and type-to-search → [`browser`](../qa/sweeps/browser.md); Context menu items, placement, and Open With → [`browser`](../qa/sweeps/browser.md); The sidebar as a navigation surface, the Trash row, and the update notice's text and layout → [`browser`](../qa/sweeps/browser.md); Sidebar toggle steps and tooltip text → [`browser`](../qa/sweeps/browser.md); Sidebar automatic rail → [`preview`](../qa/sweeps/preview.md); Settings layer mechanics and pages other than Updates, including Window buttons and text size controls → [`settings`](../qa/sweeps/settings.md); Settings search terms that find "Install a specific release" → [`settings`](../qa/sweeps/settings.md); Settings search and the Diagnostics Installation row in a build without the updater → [`settings`](../qa/sweeps/settings.md); Opening an unreadable folder as administrator, its breadcrumb root, and its notice → [`browser`](../qa/sweeps/browser.md); The "Not responding" notice and request lanes on a stalled mount → [`browser`](../qa/sweeps/browser.md); The FileManager1 D-Bus service and Open in Terminal → [`integration`](../qa/sweeps/integration.md); The portal file chooser, including its identity and refresh after an update → [`integration`](../qa/sweeps/integration.md); 10xer-mode key variants and footer prompts → [`integration`](../qa/sweeps/integration.md); Settings search finding Keyboard rows and the Settings navigation layout → [`settings`](../qa/sweeps/settings.md); Custom action slot feedback, keymap overrides in the portal chooser, and Ctrl-bound history, parent, and home keys there → [`integration`](../qa/sweeps/integration.md); Rebound keys in previews → [`preview`](../qa/sweeps/preview.md); Rebound context-menu accelerators and Ctrl-bound history, parent, and home in the browser → [`browser`](../qa/sweeps/browser.md); Tab numbers, view switching, text size, and the filter on other layouts → [`browser`](../qa/sweeps/browser.md); Chosen states of sort options and Appearance options other than Hidden files, after changes made while their menus are closed → [`browser`](../qa/sweeps/browser.md); Chosen states of Settings choice options and the Hidden files option → [`settings`](../qa/sweeps/settings.md); The contents and outcome of operation dialogs such as paste conflicts, Compress, and progress → [`operations`](../qa/sweeps/operations.md); The mount authentication dialog and remote paths in the search palette → [`remote`](../qa/sweeps/remote.md); Thumbnail size steps and the size notice → [`browser`](../qa/sweeps/browser.md); Format Drive label limits and units per filesystem → [`devices`](../qa/sweeps/devices.md); The Settings file chooser row on a silent session bus → [`integration`](../qa/sweeps/integration.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | | [Accessibility](../features/app/accessibility.md) `app/accessibility` | 11 | [`tests/qa/scenarios/accessibility`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/accessibility), [`tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl) | 1 | [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md) | | [Modal dialogs](../features/app/dialogs.md) `app/dialogs` | 17 | [`tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl) | 3 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | -| [Shared location model and listing adapter](../features/app/infrastructure.md) `app/infrastructure` | 15 | [`tests/qa/scenarios/visual_baselines`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/visual_baselines) | 43 | [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md), [`docs/hardened-configuration.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/hardened-configuration.md), [`docs/unsafe-code.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/unsafe-code.md), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | +| [Shared location model and listing adapter](../features/app/infrastructure.md) `app/infrastructure` | 14 | [`tests/qa/scenarios/visual_baselines`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/visual_baselines) | 43 | [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md), [`docs/hardened-configuration.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/hardened-configuration.md), [`docs/unsafe-code.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/unsafe-code.md), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | | [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md) `app/keyboard-shortcuts` | 20 | — | 1 | [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md) | | ↳ [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) `app/keyboard-shortcuts/remapping` | 19 | [`tests/qa/scenarios/keymap`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keymap) | 9 | [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md) (inherited) | | [Packaging and installation](../features/app/packaging/index.md) `app/packaging` | 7 | — | 0 | [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/install.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | | ↳ [AUR packages](../features/app/packaging/aur.md) `app/packaging/aur` | 3 | — | 1 | [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/site/src/reference/install.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | | ↳ [Release installer](../features/app/packaging/installer.md) `app/packaging/installer` | 22 | — | 2 | [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/signed-updates.md), [`site/src/reference/install.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/install.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) (inherited) | | [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md) `app/shortcut-reference` | 20 | [`tests/qa/scenarios/dialogs_and_menus/shortcut-reference-search-keeps-editing-chords.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/shortcut-reference-search-keeps-editing-chords.jsonl) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | -| [Updates](../features/app/updates/index.md) `app/updates` | 11 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | +| [Updates](../features/app/updates/index.md) `app/updates` | 12 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | | ↳ [In-place update install](../features/app/updates/install.md) `app/updates/install` | 6 | — | 9 | [`site/src/reference/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/signed-updates.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) (inherited) | | ↳ [Package-managed installs](../features/app/updates/package-managed.md) `app/updates/package-managed` | 6 | — | 1 | [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | | ↳ [Release channels](../features/app/updates/release-channels.md) `app/updates/release-channels` | 7 | — | 1 | [`docs/releasing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/releasing.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | @@ -97,7 +97,7 @@ reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993ba | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | -| [Devices and volumes](../features/devices/volumes/index.md) `devices/volumes` | 9 | — | 1 | — | +| [Devices and volumes](../features/devices/volumes/index.md) `devices/volumes` | 10 | — | 1 | — | | ↳ [Camera photos](../features/devices/volumes/camera.md) `devices/volumes/camera` | 6 | — | 4 | [`site/src/reference/preview-sandbox.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/preview-sandbox.md) | | ↳ [Drive format, label, and properties](../features/devices/volumes/drive-dialogs.md) `devices/volumes/drive-dialogs` | 11 | — | 4 | — | | ↳ [Encrypted volumes](../features/devices/volumes/encrypted.md) `devices/volumes/encrypted` | 6 | — | 1 | — | @@ -216,12 +216,12 @@ reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993ba - Triggers: [`src/ui/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/preferences.rs), [`src/ui/browser/preferences.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/preferences.rs), [`data/locales/messages/**`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/messages), [`data/locales/de.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/de.json), [`data/locales/en.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/en.json), [`data/locales/es.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/es.json), [`data/locales/fr.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/fr.json), [`data/locales/hu.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/hu.json), [`data/locales/it.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/it.json), [`data/locales/ja.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/ja.json), [`data/locales/ko.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/ko.json), [`data/locales/pt-BR.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/pt-BR.json), [`data/locales/ru.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/ru.json), [`data/locales/vi.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/vi.json), [`data/locales/zh-CN.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/zh-CN.json), [`data/locales/zh-TW.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/data/locales/zh-TW.json) - Tools: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/themes.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/themes.md), [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/diagnostics.md), [`scripts/headless/environment.py`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/scripts/headless/environment.py), [`tests/fixtures/harness.json`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/fixtures/harness.json) -- Hand-offs: Browsing mode, click counts, folder peeking, sort defaults, and text size as they act in the file views → [`browser`](../qa/sweeps/browser.md); Frame and Content sliders in the titlebar Appearance menu, and Content spacing in file views → [`browser`](../qa/sweeps/browser.md); Properties dialog timestamps and sizes → [`browser`](../qa/sweeps/browser.md); System file chooser opt-in under Desktop integration and the chooser itself → [`integration`](../qa/sweeps/integration.md); 10xer mode toggle and custom actions pages, including the action editor's toggles, tabs, and footer → [`integration`](../qa/sweeps/integration.md); The Integrations page, its catalog, and installed providers → [`remote`](../qa/sweeps/remote.md); The sandbox and previews behind a failing Diagnostics check → [`preview`](../qa/sweeps/preview.md); GVfs and network backends behind a failing Diagnostics check → [`remote`](../qa/sweeps/remote.md); Drives, phones, and cameras behind a failing Diagnostics check → [`devices`](../qa/sweeps/devices.md); Terminal launch and custom actions behind a failing Diagnostics check → [`integration`](../qa/sweeps/integration.md); Automatic updates, release channel, and the Updates page → [`app`](../qa/sweeps/app.md); Window buttons rows and the F1 shortcuts reference → [`app`](../qa/sweeps/app.md); The Keyboard page's tables, key capture, conflict notes, and Reset all → [`app`](../qa/sweeps/app.md); Input-method and dead-key composition in Settings fields → [`app`](../qa/sweeps/app.md); Restore open tabs under General → Startup and the tab session it controls → [`browser`](../qa/sweeps/browser.md); Focus return after closing dialogs other than Settings → [`app`](../qa/sweeps/app.md); Focus return after closing the search palettes → [`browser`](../qa/sweeps/browser.md); Units as it acts on route previews, open and new, in the browser and the chooser → [`preview`](../qa/sweeps/preview.md); Video backend, autoplay, text wrap, render-by-default rows, and syntax highlighting inside the preview panel → [`preview`](../qa/sweeps/preview.md); What Watch network folders checks and re-reads in open folders → [`browser`](../qa/sweeps/browser.md); Thumbnail workers, thumbnail rendering, and what Show thumbnails and STL model thumbnails change in the file views → [`browser`](../qa/sweeps/browser.md); Remember sort and icon size per folder, Default sort, Forget all folder settings, and `folder-views.toml` → [`browser`](../qa/sweeps/browser.md); Show sizes in Columns view as it acts on the Columns badge → [`browser`](../qa/sweeps/browser.md); Search time limit and Search entry limit as they act on global search, pane filters, and the Partial results hint → [`browser`](../qa/sweeps/browser.md) +- Hand-offs: Browsing mode, click counts, folder peeking, sort defaults, and text size as they act in the file views → [`browser`](../qa/sweeps/browser.md); Frame and Content sliders in the titlebar Appearance menu, and Content spacing in file views → [`browser`](../qa/sweeps/browser.md); Properties dialog timestamps and sizes → [`browser`](../qa/sweeps/browser.md); System file chooser opt-in under Desktop integration and the chooser itself → [`integration`](../qa/sweeps/integration.md); 10xer mode toggle and custom actions pages, including the action editor's toggles, tabs, and footer → [`integration`](../qa/sweeps/integration.md); The Integrations page, its catalog, and installed providers → [`remote`](../qa/sweeps/remote.md); The sandbox and previews behind a failing Diagnostics check → [`preview`](../qa/sweeps/preview.md); GVfs and network backends behind a failing Diagnostics check → [`remote`](../qa/sweeps/remote.md); Drives, phones, and cameras behind a failing Diagnostics check → [`devices`](../qa/sweeps/devices.md); Terminal launch and custom actions behind a failing Diagnostics check → [`integration`](../qa/sweeps/integration.md); Automatic updates, release channel, and the Updates page → [`app`](../qa/sweeps/app.md); Window buttons rows and the F1 shortcuts reference → [`app`](../qa/sweeps/app.md); The Keyboard page's tables, key capture, conflict notes, and Reset all → [`app`](../qa/sweeps/app.md); Input-method and dead-key composition in Settings fields → [`app`](../qa/sweeps/app.md); Restore open tabs under General → Startup and the tab session it controls → [`browser`](../qa/sweeps/browser.md); Focus return after closing dialogs other than Settings → [`app`](../qa/sweeps/app.md); Focus return after closing the search palettes → [`browser`](../qa/sweeps/browser.md); Units as it acts on route previews, open and new, in the browser and the chooser → [`preview`](../qa/sweeps/preview.md); Video backend, autoplay, text wrap, render-by-default rows, and syntax highlighting inside the preview panel → [`preview`](../qa/sweeps/preview.md); What Watch network folders checks and re-reads in open folders → [`browser`](../qa/sweeps/browser.md); Dot-file changes made while hidden files are off → [`browser`](../qa/sweeps/browser.md); Thumbnail workers, thumbnail rendering, and what Show thumbnails and STL model thumbnails change in the file views → [`browser`](../qa/sweeps/browser.md); Remember sort and icon size per folder, Default sort, Forget all folder settings, and `folder-views.toml` → [`browser`](../qa/sweeps/browser.md); Show sizes in Columns view as it acts on the Columns badge → [`browser`](../qa/sweeps/browser.md); Search time limit and Search entry limit as they act on global search, pane filters, and the Partial results hint → [`browser`](../qa/sweeps/browser.md) | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | | [Diagnostics](../features/settings/diagnostics.md) `settings/diagnostics` | 10 | — | 2 | [`docs/diagnostics.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/diagnostics.md) | -| [Settings window and general preferences](../features/settings/preferences/index.md) `settings/preferences` | 33 | [`tests/qa/scenarios/hidden_files`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/hidden_files), [`tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl), [`tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl) | 6 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) | +| [Settings window and general preferences](../features/settings/preferences/index.md) `settings/preferences` | 32 | [`tests/qa/scenarios/hidden_files`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/hidden_files), [`tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/settings-closes-on-an-outside-click.jsonl), [`tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/search_filter_sort/hidden-files-toggle.jsonl) | 6 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) | | ↳ [Modified date format](../features/settings/preferences/date-format.md) `settings/preferences/date-format` | 6 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) | | ↳ [Interface language](../features/settings/preferences/language.md) `settings/preferences/language` | 12 | — | 2 | [`docs/internationalization.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/internationalization.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited) | | ↳ [Preference storage and synchronization](../features/settings/preferences/storage.md) `settings/preferences/storage` | 22 | [`tests/qa/scenarios/preferences`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/preferences) | 5 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/preferences.md) (inherited) | diff --git a/qa/sweeps/browser.md b/qa/sweeps/browser.md index e74239f..aaca983 100644 --- a/qa/sweeps/browser.md +++ b/qa/sweeps/browser.md @@ -242,10 +242,10 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d ### browser/navigation/administrator-access -- Open the locked folder by single click, double click with double-click folders, Enter, →, and context-menu Open, in each view; cancel the prompt each time. +- Open the locked folder by single click, by double click with double-click folders, and by Enter, →, and context-menu Open. Do it in each view and cancel each prompt. - Lock folders named with spaces, `%`, and non-UTF-8 bytes; open each and read the location entry and breadcrumbs. - Deny access only through an ACL (`setfacl -m u:$USER:---`) on a `0755` folder; lock another through a symlink to a root-owned folder. -- Open the locked folder from a sidebar pin, a bookmark, a command-line argument, and a FileManager1 reveal; press Escape on the dialog, then retry with Open as Administrator. +- Open the locked folder from a sidebar pin, a bookmark, a command-line argument, and a FileManager1 reveal. Press Escape on each dialog, then retry with Open as Administrator. - Type `ADMIN:///root`, `admin:///`, `admin:///missing`, and `admin://host/x` in the location bar. - Run without a polkit agent, then with `gvfsd-admin` removed; open the locked folder and type `admin:///root`. - Stay in an admin folder past the 5-minute polkit grant, then scroll, press F5, and switch views; note when a prompt appears. @@ -275,7 +275,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Type a file path whose parent is an unmounted share or a stalled sshfs mount. Before it loads, press Back, click a sidebar place, or submit a second path. Then select the file by hand. - Type a file path and press Back and Forward fast, five times, while the parent loads. - Type a file path in the portal file chooser's location field. -- Open ten nested folders with 40-character names in a 600 px window; open, submit, and cancel the entry there, then widen and narrow the window. +- Open ten nested folders with 40-character names in a 600 px window. Open, submit, and cancel the entry there, then widen and narrow the window. ### browser/navigation/location-bar/completion @@ -364,7 +364,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Drag files over the Trash row with a selection inside Trash and with one on a read-only mount; then shrink the sidebar to the rail mid-drag. - Middle-click and choose Open in New Tab on Trash, Recent, Network, an unmounted `sftp://` pin, a mounted USB drive, and an unmounted volume; then do both on the icon rail. - Double middle-click a sidebar row, and middle-press one and drag past the threshold before release; count the tabs. -- Leave the pointer on a place or device row, then navigate with Alt+Up, Back, and the location bar; repeat in a light and a dark theme. +- Leave the pointer on a place row, then navigate with Alt+Up, Back, and the location bar. Repeat in a light and a dark theme. ### browser/sidebar/rail @@ -417,7 +417,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Render an ASCII STL, a zero-triangle STL, and a 127 MiB binary STL; change a rendered file's bytes and reopen the folder. - Open a folder of `.gcode`, `.GCO`, and `.bgcode` files with STL model thumbnails off, then on; repeat on an `smb://` share and in the portal file chooser. - Open the slow directory's images as administrator in each view; compare `$XDG_CACHE_HOME/thumbnails` before and after. -- `chmod 000` a folder in view from a shell, with and without a custom icon, in each view; watch its icon once its metadata fills. +- In each view, `chmod 000` a folder in view from a shell, with and without a custom icon. Watch its icon once its metadata fills. ### browser/thumbnails/cache @@ -495,7 +495,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Rename an open folder to a dot name from a shell with hidden files off, then after Ctrl+H toggled them on and off mid-session. - Rename a column's only visible entry, an open folder, to a dot name with hidden files off; then press F2 and Down. - Sort a 2,000-entry folder on a stalled sshfs mount by Size; while sizes load, press F5, go Back, and switch to Icons and List. -- With hidden files off, create, rename, and delete dot-files from a shell in each view and on an `sftp://` folder, then press Ctrl+H. +- With hidden files off, create, rename, and delete dot-files from a shell, then press Ctrl+H. Do it in each view, on an `sftp://` folder, on an sshfs mount, and in `10000`. ### browser/directory-monitoring/network-checks diff --git a/qa/sweeps/integration.md b/qa/sweeps/integration.md index 4b9fff4..82848a9 100644 --- a/qa/sweeps/integration.md +++ b/qa/sweeps/integration.md @@ -21,7 +21,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - A fake `.desktop` default handler under `$XDG_DATA_HOME/applications`, without `Path=`, that logs its argv and cwd. Add `%f` and `%u` variants, plus `NoDisplay=true` and `OnlyShowIn=KDE` twins; `mimeapps.list` in the throwaway `$XDG_CONFIG_HOME`. - `$XDG_CONFIG_HOME/strata/actions` with a Python action, a Bash action, and a command action: one with `confirm = true`, one per-item, one naming a missing interpreter, one broken manifest, and one that emits progress and output events. - A folder under `/dev/shm`, whose listing reports no Trash support, a read-only folder, and a regular Home folder. -- A `chmod 000` folder in Home. For administrator probes, GVfs's `admin` backend (`gvfsd-admin`), a polkit agent, and a root-owned `0700` folder holding a text file, an executable `.sh`, and a subfolder; skip those probes without them and say so. +- A `chmod 000` folder in Home. Administrator probes need GVfs's `admin` backend (`gvfsd-admin`) and a polkit agent; skip them without these and say so. They use a root-owned `0700` folder holding a text file, an executable `.sh`, and a subfolder. - A vfat loop mount, an ext4 folder with casefold on, an sshfs mount of localhost, and an exfat-fuse or ntfs-3g (`fuseblk`) mount. Typed-name and Trash-refusal probes use them. - An NTFS loop image attached with `udisksctl loop-setup` and mounted through `ntfs-3g` (`fuseblk`), so it lists under Send to. It holds a link to a folder off the device and a link to a folder on it. A script stops its `ntfs-3g` process with `kill -STOP` and resumes it with `kill -CONT`. - A silent session bus: a Unix socket that accepts connections and never replies, such as `socat UNIX-LISTEN:,fork EXEC:'sleep infinity'`, named by `DBUS_SESSION_BUS_ADDRESS`. @@ -74,7 +74,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - With a preview showing, press on its blank chrome and drag out into the file list. Repeat in a multiple-selection request. Read the selection and the marquee. - Rebind `parent_folder`, `home_folder`, `history_back`, and `history_forward` to Ctrl keys, then to Super keys, in each table. Press each in the file view, in Name under `save`, in the filter, and with 10xer mode on; read the location. - Hand-edit `parent_folder = ["h"]` into `settings.toml`, open a chooser, and press Ctrl+H with the file view focused. -- Under `directory` and `single`, open the `chmod 000` folder by click, Enter, and the address bar, and type `admin:///` into the address bar; read each error. +- Under `directory` and `single`, open the `chmod 000` folder by click, Enter, and the address bar. Then type `admin:///` into the address bar; read each error. ### integration/portal-file-chooser/setup @@ -146,7 +146,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - Arm `g`, then open and close Settings from the gear, Alt+Tab to another window, and press F5; read the footer after each. - With Downloads on the sshfs mount stopped by `kill -STOP`, press `g d`, then `g h` before 2 s pass. - On `fr` and `ch(de)`, press `g` then the keys that type `+` and `-`, on a pinned folder, an unpinned one, and the tenth pin. -- Press `g +` with the bookmarks file read-only, then on two folders in quick succession, then on the 4th and 5th new pins; read each flash and the bookmarks file. +- Press `g +` with the bookmarks file read-only, then on two folders in quick succession, then on the 4th and 5th new pins. Read each flash and the bookmarks file. ### integration/10xer-mode/search @@ -180,7 +180,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - Rebind `"sort.size"` under `[keymap.tenxer]` to `5`, then to `s`, and press each with and without Shift. Repeat on `fr`, rebinding a step to a key whose Shift form types another symbol. - Press a slot key for a `confirm = true` action, cancel, then press it again with 10xer mode on. - In Columns, press a slot key and a direct Move to key on an unselected row in a second column. Repeat in Icons. -- In an `admin://` folder, press `O` on one file, on a fill mixing a file and a folder, and again after leaving the folder before the lookup ends. +- In an `admin://` folder, press `O` on one file and on a fill mixing a file and a folder. ### integration/10xer-mode/file-chooser diff --git a/qa/sweeps/operations.md b/qa/sweeps/operations.md index 03844a8..d59387f 100644 --- a/qa/sweeps/operations.md +++ b/qa/sweeps/operations.md @@ -27,7 +27,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - A second local user (`useradd`) to own pre-created paths, and a Python Action that sleeps 30 s. - Two windows of the same build for cross-window paste, undo, and progress dock checks. - A desktop session running `gvfsd` for `trash:///` listings. The pinned test container sets `GIO_USE_VFS=local` and cannot browse Trash. -- For administrator probes, GVfs's `admin` backend (`gvfsd-admin`), a polkit agent, and a root-owned `0700` folder opened through `admin://`. It holds files, a subfolder, and names shared with a Home folder. The pinned container has neither; skip those probes and say so. +- For administrator probes, GVfs's `admin` backend (`gvfsd-admin`), a polkit agent, and a root-owned `0700` folder opened through `admin://`. It holds files, a subfolder, and names shared with a Home folder. The pinned container has none of these; skip those probes and say so. - Verify every operation on disk with `ls -la`, `stat`, and `cmp`, never in the listing alone. Watch the log for GTK criticals during dialogs and animations. - `tests/qa/mutations/` holds deliberate defects the QA scenarios must catch; `./scripts/qa-mutation.sh drag-and-drop` or `rename-caret` is evidence when those areas changed. @@ -86,7 +86,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Merge without Trash on NFS while another program holds one replaced file open; then cancel a second such merge. - After a Merge, edit one placed file, only `touch` another, then undo. - On tmpfs and on `/dev/shm`, where Trash is unavailable, Replace a folder holding files, in List, Icons, and Columns, without pressing F5. -- In an `admin://` folder, paste a file over a file, a folder over a folder, and a file over a folder, by copy and by cut; then copy a file from it over a same-named Home file and answer Replace, then Keep Both. +- In an `admin://` folder, paste a file over a file, a folder over a folder, and a file over a folder, by copy and by cut. Then copy a file from it over a same-named Home file and answer Replace, then Keep Both. ### operations/clipboard/send-to @@ -168,7 +168,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Press 10xer `d` on 60 file links, then confirm while their rows still show "—". - Shift+Delete on NFS, SMB, sshfs, virtiofs or 9p, a `fuseblk` drive, and a mergerfs pool; read each title and subtitle. - Shift+Delete through a symlink alias into an NFS folder. -- In an `admin://` folder, press Delete, Shift+Delete, and 10xer `d` on a file, a folder, and a selection mixing it with Home items from a search; drag one item onto the sidebar Trash row. +- In an `admin://` folder, press Delete, Shift+Delete, and 10xer `d` on a file and on a folder. Then drag one item onto the sidebar Trash row. ### operations/trash/restore @@ -294,7 +294,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Press Ctrl+Z in a second window and in the file chooser. - Move the folder built for `operations/filesystem-compatibility` onto vfat, rename one fixed name on the stick, then undo and redo. - Move a dangling symlink and a link into a stopped sshfs mount, then undo. -- In an `admin://` folder, copy in, New Folder, Merge, rename, and move out, pressing Ctrl+Z after each. Then undo a Home rename, copy into the admin folder, and press Ctrl+Shift+Z. +- In an `admin://` folder, copy in, New Folder, a copy onto an existing file answered Replace, rename, and move out, pressing Ctrl+Z after each. Then undo a Home rename, copy into the admin folder, and press Ctrl+Shift+Z. ## Hand-offs From 796514edc4e3523e13bb8a28ed1f0b84e43dcdf8 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:40:42 +0000 Subject: [PATCH 10/17] Apply round-2 review fixes in integration, operations, app, and devices Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/app/infrastructure.md | 2 +- features/devices/volumes/index.md | 2 +- features/integration/10xer-mode/file-verbs.md | 2 +- features/integration/10xer-mode/places.md | 6 +++--- features/operations/trash/index.md | 5 +++-- qa/sweeps/operations.md | 2 +- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/features/app/infrastructure.md b/features/app/infrastructure.md index 5cf7ea6..9ed2f60 100644 --- a/features/app/infrastructure.md +++ b/features/app/infrastructure.md @@ -4,7 +4,7 @@ status: shipped origin: {issue: lgse/strata#14, pr: lgse/strata#27} branch: null reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 -review: draft +review: reviewed code: [src/model/mod.rs, src/ui/settings.rs, src/adapters/local_files.rs, src/ui/mod.rs, src/main.rs, src/app/mod.rs, src/adapters/mod.rs, src/services/mod.rs, src/ui/resize_feedback.rs, src/ui/preferences/trashed.rs, src/adapters/volume/mounts.rs, src/adapters/volume/mount_snapshot.rs, README.md, THIRD_PARTY_LICENSES.md, data/licenses, data/strata.gresource.xml, AGENTS.md, typos.toml, clippy.toml, Cargo.toml, Cargo.lock, mise.toml, mise.lock, scripts/benchmark-scroll.py, src/build_info.rs, src/services/native_fs.rs, src/ui/keys/bindings.rs, src/ui/keys/bindings/**, build.rs, deny.toml, scripts/quality.sh, scripts/quality_ci.py, scripts/test-headless.py, scripts/integration_tests.py, src/ui/settings/install_command.rs, src/adapters/local_operations/fs_ops.rs, src/adapters/local_operations/native_fs.rs, src/adapters/local_operations/work_queue.rs, src/trusted_command.rs, src/adapters/gio_close.rs, src/adapters/volume/mount_watch.rs, src/adapters/volume/mount_lanes.rs, src/adapters/local_operations/probes.rs, src/util/ui_thread.rs, src/util/ui_thread/**, scripts/trace-main-io.py, tests/qa/main-io-allowlist.toml, .agents/skills, .claude/skills, .gitignore, .cursor/CLOUD.md, .dockerignore, CONTRIBUTING.md, scripts/check.sh, src/qa.rs, src/qa/**, src/ui/accessibility/qa.rs, scripts/qa*.sh, scripts/qa_*.py, scripts/lib/qa-container.sh, scripts/headless/**, scripts/image_*.py, tests/container/**, tests/fixtures/harness.json, src/logging.rs, src/metrics.rs, src/services/listeners.rs, src/services/network_error.rs, src/ui/close_guard.rs, src/ui/browser/paths.rs, src/ui/browser/entry_animation.rs, data/icons/scalable/actions/**, .github, .gitattributes, CLAUDE.md, LICENSE, rustfmt.toml, skills-lock.json, docs/assets, docs/evidence, scripts/discord_triage.py, scripts/profile-fixture.sh, scripts/generate-fixture.sh, scripts/quality-durations.json, scripts/release_version.py, scripts/start-dev.sh, src/services/package_manager.rs, src/ui/browser/location.rs] tests: [src/model/tests.rs, src/adapters/local_files/tests.rs, src/adapters/local_files/tests/browse.rs, src/adapters/volume/mounts/tests.rs, src/test_support.rs, src/test_support/**, scripts/test_benchmark_scroll.py, src/build_info/tests.rs, scripts/test_quality_ci.py, scripts/test_quality_runner.py, scripts/test_headless_runner.py, scripts/test_integration_tests.py, src/ui/settings/install_command/tests.rs, src/trusted_command/tests.rs, src/adapters/gio_close/tests.rs, src/adapters/local_operations/tests/closes.rs, src/adapters/volume/mount_watch/tests.rs, src/adapters/volume/mount_lanes/tests.rs, src/adapters/local_operations/probes/tests.rs, src/adapters/local_operations/fs_ops/tests.rs, src/adapters/volume/mounts/tests/byte_paths.rs, scripts/test_trace_main_io.py, tests/qa.rs, tests/qa/*.rs, tests/qa/foreign_drag_source.py, tests/qa/baselines/**, src/qa/tests.rs, src/qa/tests/**, scripts/test_qa_*.py, scripts/test_image_*.py, tests/qa/scenarios/visual_baselines, src/logging/tests.rs, src/metrics/tests.rs, src/services/listeners/tests.rs, src/services/network_error/tests.rs, scripts/test_discord_triage.py, scripts/test_makefile.py, scripts/test_release_version.py, src/tests.rs, src/ui/preferences/tests/preferences.rs, src/ui/window/tests/preferences.rs, tests/qa/fixtures/file_drag_source.py, src/services/package_manager/tests.rs, src/ui/browser/location/tests.rs] docs: [docs/performance-baseline.md, docs/hardened-configuration.md, docs/unsafe-code.md, docs/testing.md, docs/packaging.md] diff --git a/features/devices/volumes/index.md b/features/devices/volumes/index.md index 3c68db2..d6adf04 100644 --- a/features/devices/volumes/index.md +++ b/features/devices/volumes/index.md @@ -26,7 +26,7 @@ Listing the drives, volumes, and mounts that the desktop volume monitor reports - With no volumes, mounts, password drives, or pending releases, neither the DEVICES heading nor its separator renders. lgse/strata#536 - Plugging in, mounting, unmounting, or removing a device updates Devices without a restart. lgse/strata#536 - A row's udev encryption hint appears once a worker has read it; Devices rebuilds when the hint changes. lgse/strata#1729 (unverified) -- Hovering a device row tints it with the text color at 6%; only the current location's row keeps the accent fill. lgse/strata#1909 +- Hovering a device row tints it with the text color at 6%; only the current location's row keeps the accent fill. lgse/strata#1909 (unverified) ### Mounting diff --git a/features/integration/10xer-mode/file-verbs.md b/features/integration/10xer-mode/file-verbs.md index 2292276..d8f86a9 100644 --- a/features/integration/10xer-mode/file-verbs.md +++ b/features/integration/10xer-mode/file-verbs.md @@ -39,7 +39,7 @@ Single-key file commands in 10xer mode: yank, cut, paste, delete, create, rename ### Delete and restore - `d` and Delete ask before moving to Trash. lgse/strata#1306, lgse/strata#1340 -- Where every item's open folder reports `access::can-trash` false and `access::can-delete` true, `d` opens the explained permanent confirmation with Cancel focused. lgse/strata#1533 +- `d` opens the explained permanent confirmation with Cancel focused where every item's open folder lacks Trash. That is a folder reporting `access::can-trash` false and `access::can-delete` true, or one opened as administrator. lgse/strata#1533, lgse/strata#1837 - `D`, Shift+Delete, and `d` inside Trash open the permanent-delete confirmation with Permanently delete focused. lgse/strata#1340, lgse/strata#1508 - In Columns, `d` on an open folder whose empty child column has focus asks to trash that folder instead of flashing `Nothing to delete`. lgse/strata#1508 - While an `f` or `s` result list shows no hits, `d` and `D` flash `Nothing to delete` and leave the open folder alone. lgse/strata#1508 (unverified) diff --git a/features/integration/10xer-mode/places.md b/features/integration/10xer-mode/places.md index ad5c4d2..4040718 100644 --- a/features/integration/10xer-mode/places.md +++ b/features/integration/10xer-mode/places.md @@ -34,10 +34,10 @@ Keyboard jumps to places and folders in 10xer mode: the `g` chord, pins, the `go ### Pins -- `g +`, or `g` then keypad `+`, pins the folder under the cursor, or the current folder from a file. It flashes `Pinned “Name” as g N`. lgse/strata#1340 -- The `g +` flash appears once the bookmark is saved, so a new pin in slots 1–4 reads `Pinned “Name” as g N`. lgse/strata#1909 +- `g +`, or `g` then keypad `+`, pins the folder under the cursor, or the current folder from a file. lgse/strata#1340 +- The `g +` flash waits for the bookmark save and names the saved slot, `Pinned “Name” as g 1` to `… as g 9`. lgse/strata#1340, lgse/strata#1909 - When the bookmark save leaves the folder unpinned, `g +` flashes `Can’t pin “Name”` instead of `Pinned …`. lgse/strata#1909 (unverified) -- A new pin outside the first nine visible pins flashes `Pinned “Name”` with no digit. lgse/strata#1340 (unverified) +- A new pin outside the first nine visible pins flashes `Pinned “Name”` with no digit. lgse/strata#1340, lgse/strata#1909 - `g -`, or `g` then keypad `-`, unpins it and flashes `Unpinned “Name”`; pinning twice flashes `“Name” is already pinned`. lgse/strata#1340 - `g -` on a folder that is not pinned flashes `“Name” isn’t pinned`. lgse/strata#1340 (unverified) - `g` then Shift+keypad `+` or Shift+keypad `-` neither pins nor unpins. lgse/strata#1576 diff --git a/features/operations/trash/index.md b/features/operations/trash/index.md index 67d3158..c454403 100644 --- a/features/operations/trash/index.md +++ b/features/operations/trash/index.md @@ -31,7 +31,7 @@ Moving files and folders to the freedesktop.org Trash, undoing that move, and br - A folder whose first listed entry is a symlink into `/dev/shm` still offers Move to Trash, and Delete moves a regular file there to Trash. lgse/strata#1551, lgse/strata#1584 - A no-Trash folder is an open folder reporting `access::can-trash` false and `access::can-delete` true, such as `/dev/shm`. lgse/strata#1533 -- Delete, or a drop on the sidebar Trash row from a folder not opened as administrator, opens "Permanently delete N items?" at once when every item is in a no-Trash folder. lgse/strata#1533, lgse/strata#1837 +- Delete opens "Permanently delete N items?" at once when every item is in a no-Trash folder. So does a drop on the sidebar Trash row, unless the folder is opened as administrator. lgse/strata#1533, lgse/strata#1837 - In that case no trash move is attempted, so nothing reaches the Trash. lgse/strata#1533 - That dialog's text opens with the paragraph "This location doesn't support Trash." lgse/strata#1533, lgse/strata#1614 - When a refusal was recorded for the first item's mount, the next paragraph reads "Trash isn't available on ()." lgse/strata#1614 @@ -54,7 +54,8 @@ Moving files and folders to the freedesktop.org Trash, undoing that move, and br ### Deletion confirmations - A selection is remote only when every item is remote; a mixed selection gets the local wording. lgse/strata#1571, lgse/strata#1614 -- A remote item is a native path on a network mount, such as NFS, SMB, or sshfs, or a non-`trash:` URI. lgse/strata#1614 +- A remote item is a native path on a network mount, such as NFS, SMB, or sshfs, or a URI other than `trash:` or `admin:`. lgse/strata#1614, lgse/strata#1837 +- Shift+Delete or Permanently delete in a folder opened as administrator opens the local-worded confirmation. A partial-failure retry button there reads "Delete Permanently". lgse/strata#1837 (unverified) - `fuseblk` drives and local FUSE overlays, such as mergerfs or gocryptfs, count as local. lgse/strata#1614 - For a local or mixed selection, the permanent-delete dialog is titled "Permanently delete N items?" and its danger-styled button reads "Permanently delete N items". lgse/strata#164, lgse/strata#1614 - Its text reads "This item will be permanently deleted. This action cannot be undone.", or "These items…" for several. lgse/strata#1614 diff --git a/qa/sweeps/operations.md b/qa/sweeps/operations.md index d59387f..bb79a4a 100644 --- a/qa/sweeps/operations.md +++ b/qa/sweeps/operations.md @@ -86,7 +86,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Merge without Trash on NFS while another program holds one replaced file open; then cancel a second such merge. - After a Merge, edit one placed file, only `touch` another, then undo. - On tmpfs and on `/dev/shm`, where Trash is unavailable, Replace a folder holding files, in List, Icons, and Columns, without pressing F5. -- In an `admin://` folder, paste a file over a file, a folder over a folder, and a file over a folder, by copy and by cut. Then copy a file from it over a same-named Home file and answer Replace, then Keep Both. +- In an `admin://` folder, paste a file over a file, a folder over a folder, a file over a folder, and a folder over a file, by copy and by cut. Then copy a file from it over a same-named Home file and answer Replace, then Keep Both. ### operations/clipboard/send-to From 488b8f03b42cc8ffde647be79b86965985c6999b Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:41:23 +0000 Subject: [PATCH 11/17] Apply round-2 review fixes in app dialogs, updates, and sweep Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/app/dialogs.md | 4 +--- features/app/updates/index.md | 2 +- qa/sweeps/app.md | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/features/app/dialogs.md b/features/app/dialogs.md index be04b0e..951313a 100644 --- a/features/app/dialogs.md +++ b/features/app/dialogs.md @@ -33,9 +33,7 @@ The shared shell behind Strata's action dialogs: the blurred backdrop, open and - Confirmation dialogs open with the confirm button focused, so Enter confirms and Escape cancels: Permanently delete, Empty Trash, Restore, paste and archive Replace, Run, and Forget saved password. lgse/strata#1206 - With focus outside a text field, Enter activates the focused button and toggles a focused checkbox or switch, so Enter with Cancel focused cancels. lgse/strata#1052, lgse/strata#175 (unverified) - With focus outside a text field, an unmodified arrow key moves focus to the nearest button, menu button, checkbox, switch, or entry in that direction; Down on a menu button opens its menu. lgse/strata#175 (unverified) -- When only permissions block a folder and GIO supports `admin://`, the "Unable to open location" or "Unable to open directory" dialog offers Open as Administrator. lgse/strata#1837 -- That dialog opens with Open as Administrator focused. lgse/strata#1837 (unverified) -- That dialog's cancel button reads Close. Close, the close button, Escape, and a backdrop click dismiss it without opening the folder. lgse/strata#1837 (unverified) +- An error dialog that offers Open as Administrator opens with that button focused, and its cancel button reads Close. lgse/strata#1837 (unverified) - While a dialog is open, focus that moves outside it is returned to the dialog's layer, not to a button inside it. lgse/strata#1432 ### Focus after closing diff --git a/features/app/updates/index.md b/features/app/updates/index.md index 6a114a6..3142378 100644 --- a/features/app/updates/index.md +++ b/features/app/updates/index.md @@ -92,7 +92,7 @@ Update checks use GitHub's unauthenticated REST API, limited to 60 requests per - Strata caches instead of changing the source. A published `latest.json` was heavier, `releases.atom` carries HTML notes, and shipping an API token was rejected (lgse/strata#181). - GitHub answers unauthenticated conditional requests with `200`, so the 6-hour floor and the per-tag notes cache do the actual saving (lgse/strata#197). - The first automatic check of each session bypasses the cache so a fresh launch never shows stale release information. Disabling the cache for every check was rejected as wasteful (lgse/strata#325). -- Results are broadcast to every window, and a window opened later gets the last offer as its sidebar notice (lgse/strata#866). +- Results are broadcast to every window, and a window opened later gets the last offer as its sidebar notice (lgse/strata#866, lgse/strata#1909). - The last completed result, whether an offer, up to date, or a failure, is one shared snapshot. Every Settings → Updates row renders it, including rows opened later (lgse/strata#1909). - Check now clears only the shared snapshot and the sidebar notice. Clearing every row dropped another window's offer and Install button until the result arrived (lgse/strata#1909). - Each check carries a generation number. A result superseded by a newer check is dropped, so a Preview result cannot land after a switch to Stable (lgse/strata#97). diff --git a/qa/sweeps/app.md b/qa/sweeps/app.md index 7a2424e..a56eae1 100644 --- a/qa/sweeps/app.md +++ b/qa/sweeps/app.md @@ -47,7 +47,7 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - Hover every header, footer, breadcrumb, and sidebar control for 3 s at each sidebar width and list which tooltips appear. - Dump the focused node in a `chmod 000` folder and in a folder still loading over a stalled remote mount. Repeat in an empty folder with the interface in ja. - Empty a folder from a shell while it is open, then add a file back; dump the pane after each step and read its name and description. -- Dump entries for a `chmod 000` folder, a `chmod 311` folder, a link to each, and a folder denied only by `setfacl -m u:$USER:---`; read each description, then `chmod 755` one and press F5. +- Dump entries for a `chmod 000` folder, a `chmod 311` folder, a link to each, and a root-owned `0755` folder with `setfacl -m u:$USER:---`; read each description, then `chmod 755` one and press F5. - Dump an Icons card with a truncated name while its name tooltip shows, and one whose name fits; compare their names and descriptions. - Collapse the sidebar to the rail and hover each row: places, pins, a mounted drive, a drive being ejected, and a network location. Expand and collapse it again during the eject. - With the interface in de and ja, read the names of the pane header buttons, the filter field, and the media buttons against their tooltips. From 182dff41f5151c94de8f23f060a65aa96af79787 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:42:31 +0000 Subject: [PATCH 12/17] Apply round-2 review fixes in browser Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/browser/context-menu.md | 1 + features/browser/directory-monitoring/index.md | 2 +- features/browser/navigation/index.md | 4 ++-- features/browser/navigation/location-bar/index.md | 2 +- features/browser/tabs/session-restore.md | 3 ++- features/browser/thumbnails/index.md | 2 +- features/browser/view-modes/density.md | 2 +- qa/sweeps/browser.md | 6 +++--- 8 files changed, 12 insertions(+), 10 deletions(-) diff --git a/features/browser/context-menu.md b/features/browser/context-menu.md index d082eec..6472908 100644 --- a/features/browser/context-menu.md +++ b/features/browser/context-menu.md @@ -90,6 +90,7 @@ The item and background context menus in Columns, Icons, and List. This node cov - The menu hides "Permanently delete" when `access::can-delete` reports false for the folder's contents, and shows it when the query is unresolved. lgse/strata#361 - In a folder without write permission, such as after `chmod 555`, neither Move to Trash nor Permanently delete appears in the item menu. lgse/strata#361 - Outside Trash, the item context menu hides Move to Trash when the folder's listing reports `access::can-trash` false, and shows it when the value is unknown. lgse/strata#314 +- In an `admin://` folder, the item menu shows Permanently delete, not Move to Trash or Delete without Trash. lgse/strata#1837 - Trash menus omit Rename, Compress, New Folder, New File, and paste destinations. lgse/strata#499 - Top-level Trash items keep Restore, Cut, Move to…, Copy, and permanent deletion in their menus. lgse/strata#499 - Restore appears in the item menu only when every selected item is a top-level Trash item. lgse/strata#499 diff --git a/features/browser/directory-monitoring/index.md b/features/browser/directory-monitoring/index.md index 4d98ac6..6c6ee13 100644 --- a/features/browser/directory-monitoring/index.md +++ b/features/browser/directory-monitoring/index.md @@ -40,7 +40,7 @@ How an open folder's listing is loaded, published to the view, and kept in step - Another program keeps changing files in the open folder, such as `/tmp`. A wheel-scrolled listing stays where it was, and keyboard focus does not move. lgse/strata#803 - A temporary file created and then renamed to its target within one 100 ms batch appears once, under the target name. lgse/strata#803 - With hidden files off, dot-files that another program creates, renames, or removes stay hidden but are tracked. Showing hidden files then lists their current names without F5. lgse/strata#1909 -- With hidden files off, a dot-file renamed to a visible name appears in the listing. lgse/strata#1266 (unverified) +- With hidden files off, a dot-file renamed to a visible name appears in the listing. lgse/strata#1266, lgse/strata#1909 (unverified) - More than 4,096 pending changes in one batch, an unmount, or an unrecognized monitor event reload the whole folder instead. lgse/strata#75, lgse/strata#1266 (unverified) - Files created, renamed, or removed externally while a large folder is still loading are not overridden by late enumeration rows. lgse/strata#1037 - Renaming an open folder externally in Columns re-points its column and every open descendant to the new path. lgse/strata#1036, lgse/strata#1037 diff --git a/features/browser/navigation/index.md b/features/browser/navigation/index.md index 689b716..bd84677 100644 --- a/features/browser/navigation/index.md +++ b/features/browser/navigation/index.md @@ -13,7 +13,7 @@ related: [browser/tabs, browser/view-modes, browser/view-modes/position-restore, ## Summary -Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), `browser/navigation/startup-arguments` (locations passed on the command line), `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders), and `browser/navigation/administrator-access` (opening unreadable local folders through `admin://`). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. +Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), and `browser/navigation/startup-arguments` (command-line locations). Also `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders) and `browser/navigation/administrator-access` (unreadable local folders through `admin://`). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. ## Behavior @@ -31,7 +31,7 @@ Moving between locations in a browser pane: Back, Forward, and Parent history fr ### Unreadable folders -- Where GIO has no `admin` scheme, clicking or opening a folder Strata may not read in Columns shows an "Unable to open directory" permission dialog. lgse/strata#1807, lgse/strata#1837 (unverified) +- Where GIO has no `admin` scheme, opening an unreadable folder in Columns shows an "Unable to open directory" dialog. lgse/strata#1807, lgse/strata#1837 (unverified) ### Mouse buttons diff --git a/features/browser/navigation/location-bar/index.md b/features/browser/navigation/location-bar/index.md index 0c14265..eeb52ce 100644 --- a/features/browser/navigation/location-bar/index.md +++ b/features/browser/navigation/location-bar/index.md @@ -36,7 +36,7 @@ The header control that shows the active location as breadcrumbs and switches to - `~other-user/Documents` is rejected with "Only ~ and ~/ paths are supported for the current user's home directory." lgse/strata#242 - A relative path such as `Documents` is rejected with "Enter an absolute path." lgse/strata#242 (unverified) - UNC paths (`\\host\share`, `//host/share`) and SCP addresses (`user@host:path`) are rejected with a message suggesting `smb://`, `sftp://`, `ftp://`, or `dav://` URIs. lgse/strata#20 -- A URI scheme other than smb, sftp, ftp, ftps, dav, davs, admin, trash, network, or recent is rejected with "The :// scheme isn't supported." and a list that omits trash and network. lgse/strata#20, lgse/strata#1837 (unverified) +- Accepted URI schemes are smb, sftp, ftp, ftps, dav, davs, admin, trash, network, and recent. Any other is rejected with "The :// scheme isn't supported." The message lists the accepted schemes except trash and network. lgse/strata#20, lgse/strata#1837 (unverified) - Submitting `smb://alice:secret@host/share` or `smb://alice;password=secret@host/share` shows `smb://alice@host/share` in the entry while mounting and uses the password for that one attempt. lgse/strata#145 - A typed password is never saved; failed credentials open the normal sign-in dialog. lgse/strata#145 - The sign-in dialog's fields are named after their visible labels: "Username", "Domain", and "Password" or "Passphrase". lgse/strata#1896 (unverified) diff --git a/features/browser/tabs/session-restore.md b/features/browser/tabs/session-restore.md index 076a6cd..cacf8d4 100644 --- a/features/browser/tabs/session-restore.md +++ b/features/browser/tabs/session-restore.md @@ -36,7 +36,8 @@ A plain launch reopens the previous session's tab locations in strip order, with - When that tab is the only one, it opens the default folder instead. lgse/strata#1729 (unverified) - A saved folder whose check times out, as on a server that does not answer, keeps its tab and shows its error. It loads by itself once the mount answers. lgse/strata#1729 - Trashed-item children (`trash:///x`) and non-root Recent entries (`recent:///x`) are skipped, while `trash:///` and `recent:///` restore. lgse/strata#1532 -- Camera roots such as `gphoto2://` are skipped. So is every scheme other than `smb`, `sftp`, `ftp`, `ftps`, `dav`, `davs`, `trash`, `network`, and `recent`, including `admin://`. lgse/strata#1532, lgse/strata#1837 (unverified) +- Camera roots such as `gphoto2://` are skipped. So is every scheme other than `smb`, `sftp`, `ftp`, `ftps`, `dav`, `davs`, `trash`, `network`, and `recent`. lgse/strata#1532 (unverified) +- A saved `admin://` tab is skipped, so relaunching raises no polkit prompt. lgse/strata#1837 - When a skipped entry precedes the active tab, the restored selection still lands on the saved active location. lgse/strata#1532 - When the saved active entry is skipped, the nearest kept tab to its left is selected. With none to its left, the first restored tab is. lgse/strata#1532 (unverified) - An active index beyond the last restorable tab selects the last restored tab. lgse/strata#1532 (unverified) diff --git a/features/browser/thumbnails/index.md b/features/browser/thumbnails/index.md index ce2432c..67d4a5e 100644 --- a/features/browser/thumbnails/index.md +++ b/features/browser/thumbnails/index.md @@ -23,7 +23,7 @@ Image previews in place of file icons in Columns, List, Icons, folder peeks, and - Folders never get thumbnails and keep their folder icon. lgse/strata#43 - A file or folder with a custom icon shows that icon instead of a thumbnail. lgse/strata#294 (unverified) - Files in a folder opened through `admin://` get no thumbnail and show their type icon. lgse/strata#1837 -- A folder row already shown in Columns, List, or Icons swaps to the lock icon in place when its metadata fill finds it locked. lgse/strata#1837 +- A metadata fill can find a shown folder locked. Its row in Columns, List, or Icons then swaps to the lock icon in place. lgse/strata#1837 - A locked folder with a custom icon keeps that icon. lgse/strata#1837 (unverified) - Ctrl+F filter results and recursive search results show thumbnails in Columns, List, and Icons, with none left over when the query changes. lgse/strata#548 - Inline-renaming a file without changing its extension, size, or modification time keeps its thumbnail without decoding again. lgse/strata#1148 diff --git a/features/browser/view-modes/density.md b/features/browser/view-modes/density.md index 4b3d05a..6cd4504 100644 --- a/features/browser/view-modes/density.md +++ b/features/browser/view-modes/density.md @@ -24,7 +24,7 @@ Two spacing settings in the Appearance menu's DENSITY section. Frame is the vert - Content runs from 0 to 16 px, with Compact 4, the default, and Airy 8. lgse/strata#1776 - Each slider's value label reads "Compact · N px" or "Airy · N px" at a preset, otherwise "Custom · N px". lgse/strata#1776 - Each slider has tick marks at its Compact and Airy values, with "Compact" and "Airy" buttons under them. lgse/strata#1776 -- The Compact and Airy buttons sit at least 8 px apart, and the menu reserves their combined width, such as in Russian at text size 48. lgse/strata#1909 +- The Compact and Airy buttons sit at least 8 px apart, and the menu reserves their combined width, such as in Russian at 13 or 24 px. lgse/strata#1909 - In Traditional Chinese, the Airy button reads 寬鬆. lgse/strata#1909 - Clicking "Compact" or "Airy" snaps that slider to the preset; the label of the current preset shows in the accent color. lgse/strata#1776 (unverified) - Dragging a slider or clicking a snap button leaves the Appearance menu open. lgse/strata#1776 diff --git a/qa/sweeps/browser.md b/qa/sweeps/browser.md index aaca983..b3ddd7f 100644 --- a/qa/sweeps/browser.md +++ b/qa/sweeps/browser.md @@ -7,7 +7,7 @@ tools: [scripts/generate-fixture.sh, docs/keyboard-navigation.md, docs/keyboard- ## Scope -Everything that shows a folder and moves through it without changing files, in browser windows and in the portal file chooser's shared views. That covers selection by pointer and keyboard, with marquee, pointer intent, and click modes. It covers the Columns, Icons, and List views with sorting, per-folder views, Frame and Content density, text size, thumbnail size shortcuts, and position restore. It covers Back, Forward, and Parent history, the location bar, Recent, startup arguments, folder jump, and opening unreadable folders as administrator, plus Ctrl+K search, the Ctrl+F filter, and search exclusions. The sidebar places, the sidebar toggle with its icon rail, pins with drag-to-pin, the Connect to server dialog, and the update notice belong here. So do thumbnails with their disk cache and worker pool, and Properties with its media, RAW, and size details. The context menus, directory loading and monitoring, folder customization, scrolling, and tabs with their session restore complete it. Arrow focus between controls in modal dialogs belongs here too. +Everything that shows a folder and moves through it without changing files, in browser windows and in the portal file chooser's shared views. That covers selection by pointer and keyboard, with marquee, pointer intent, and click modes. It covers the Columns, Icons, and List views with sorting, per-folder views, Frame and Content density, text size, thumbnail size shortcuts, and position restore. It covers Back, Forward, and Parent history, the location bar, Recent, startup arguments, folder jump, and opening unreadable folders as administrator. Ctrl+K search, the Ctrl+F filter, and search exclusions belong here too. The sidebar places, the sidebar toggle with its icon rail, pins with drag-to-pin, the Connect to server dialog, and the update notice belong here. So do thumbnails with their disk cache and worker pool, and Properties with its media, RAW, and size details. The context menus, directory loading and monitoring, folder customization, scrolling, and tabs with their session restore complete it. Arrow focus between controls in modal dialogs belongs here too. Tab-strip drops that open or move tabs belong here. Left to other sweeps: file drags once a press becomes one, except Escape cancellation, file transfers dropped on tabs and sidebar row bodies, and every operation that changes files. The DEVICES rows and remote shares in the sidebar go elsewhere too. So do the modal dialog shell, the shortcut footer, F1, and key precedence. What the preview panel renders, the Settings pages for these preferences, 10xer key variants, and the portal file chooser's own setup and dialogs are also left out. @@ -242,7 +242,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d ### browser/navigation/administrator-access -- Open the locked folder by single click, by double click with double-click folders, and by Enter, →, and context-menu Open. Do it in each view and cancel each prompt. +- With double-click folders, open the locked folder in each view, cancelling each prompt. Repeat on a folder whose metadata fill has not marked it yet. - Lock folders named with spaces, `%`, and non-UTF-8 bytes; open each and read the location entry and breadcrumbs. - Deny access only through an ACL (`setfacl -m u:$USER:---`) on a `0755` folder; lock another through a symlink to a root-owned folder. - Open the locked folder from a sidebar pin, a bookmark, a command-line argument, and a FileManager1 reveal. Press Escape on each dialog, then retry with Open as Administrator. @@ -364,7 +364,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Drag files over the Trash row with a selection inside Trash and with one on a read-only mount; then shrink the sidebar to the rail mid-drag. - Middle-click and choose Open in New Tab on Trash, Recent, Network, an unmounted `sftp://` pin, a mounted USB drive, and an unmounted volume; then do both on the icon rail. - Double middle-click a sidebar row, and middle-press one and drag past the threshold before release; count the tabs. -- Leave the pointer on a place row, then navigate with Alt+Up, Back, and the location bar. Repeat in a light and a dark theme. +- Hover the current row and rows on the icon rail, in a light and a dark theme. ### browser/sidebar/rail From 02df0f6b01e259fa78d0d59da2163e00d8212db9 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:42:47 +0000 Subject: [PATCH 13/17] Apply round-2 review fixes in settings and remote; regenerate indexes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- README.md | 4 ++-- features/remote/file-providers/network-locations.md | 8 +++++--- features/settings/diagnostics.md | 4 ++-- features/settings/preferences/language.md | 2 +- features/settings/themes/index.md | 2 +- features/settings/themes/omarchy.md | 3 ++- index/by-area.md | 4 ++-- index/by-pr.md | 2 +- qa/sweeps/remote.md | 2 +- qa/sweeps/settings.md | 2 +- 10 files changed, 18 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index fced992..497ea5a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ One Markdown file per Strata feature, tying shipped behavior and design to the u Look features up [by area](index/by-area.md), [by path](index/by-path.md), [by PR](index/by-pr.md), or [by QA sweep](index/qa.md). *PRs since* counts upstream PRs touching a feature or its children since the oldest review in its subtree; `?` means the review commit is not in `data/prs.jsonl` yet. [qa/README.md](qa/README.md) says how to QA a PR or sweep an area. -Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `44bfeab` · 144 features, 85 reviewed +Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `44bfeab` · 144 features, 86 reviewed ## app @@ -16,7 +16,7 @@ QA sweep: [`qa/sweeps/app.md`](qa/sweeps/app.md) | --- | --- | --- | --- | --- | --- | | [Accessibility](features/app/accessibility.md) | `app/accessibility` | shipped | draft | `44bfeab` | ? | | [Modal dialogs](features/app/dialogs.md) | `app/dialogs` | shipped | draft | `44bfeab` | ? | -| [Shared location model and listing adapter](features/app/infrastructure.md) | `app/infrastructure` | shipped | draft | `44bfeab` | ? | +| [Shared location model and listing adapter](features/app/infrastructure.md) | `app/infrastructure` | shipped | reviewed | `44bfeab` | ? | | [Shortcuts on any keyboard layout](features/app/keyboard-shortcuts/index.md) | `app/keyboard-shortcuts` | shipped | draft | `73b3258` | ? | | ↳ [Remappable shortcuts per map](features/app/keyboard-shortcuts/remapping.md) | `app/keyboard-shortcuts/remapping` | shipped | draft | `44bfeab` | ? | | [Packaging and installation](features/app/packaging/index.md) | `app/packaging` | shipped | draft | `44bfeab` | ? | diff --git a/features/remote/file-providers/network-locations.md b/features/remote/file-providers/network-locations.md index 709443b..9995173 100644 --- a/features/remote/file-providers/network-locations.md +++ b/features/remote/file-providers/network-locations.md @@ -42,8 +42,10 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native - An `smb://` location without its GVfs backend fails with a message naming common packages `gvfs-smb` or `gvfs-backends`. lgse/strata#31, lgse/strata#233 - An unresolvable host, refused connection, timeout, or unreachable host each shows its own message, such as "That host couldn’t be found. Check the address and DNS settings." lgse/strata#233 -- Opening, listing, or mounting a URI location that fails with a typed GIO error, such as permission denied, shows its translated reason. lgse/strata#1909 -- Opening, listing, or mounting a URI location that fails with an unclassified GIO error shows the translated "An unexpected system error occurred", never the backend's text. lgse/strata#1909 +- Opening or listing a URI location that fails with a typed GIO error, such as permission denied, shows its translated reason. lgse/strata#1909 +- Mounting a URI location that fails with permission denied, or with untyped refused-credentials text, reopens the sign-in prompt instead of an error. lgse/strata#233, lgse/strata#1909 +- A mount that fails with any other typed error shows its translated reason, unless a missing-backend, host-key, or transport message applies. lgse/strata#233, lgse/strata#1909 (unverified) +- Opening, listing, or mounting a URI location with any other unclassified GIO error shows "An unexpected system error occurred", translated. A mount does so only when no missing-backend, host-key, or transport message applies. lgse/strata#1909 - Opening or listing a URI location that fails with an untyped error whose text names refused credentials, such as "Logon failure", shows "Permission denied". lgse/strata#1909 - A mount failure on a location with a native path shows the translated reason for a typed error. An unclassified one shows the backend text with URI user info, query, and fragment removed. lgse/strata#233, lgse/strata#1909 (unverified) - The unclassified backend text goes only to the DEBUG log, sanitized. lgse/strata#1909 @@ -91,7 +93,7 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native | Date | PR | Type | Change | | --- | --- | --- | --- | -| 2026-10-29 | lgse/strata#1909 | fix | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs. | +| 2026-10-29 | lgse/strata#1909 | fix | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs for URI locations. | | 2026-10-15 | lgse/strata#1634 | fix | Guarded optional GIO attributes in directory measurement, so measuring an SFTP folder for permanent delete logs no GLib-GIO critical. | | 2026-10-10 | lgse/strata#1544 | fix | Published the neighbour cursor after a remote reload removes the cursor file, without taking focus from outside the pane. | | 2026-10-09 | lgse/strata#1533 | fix | Kept GIO's percent-encoding in URI locations so names that are not valid UTF-8 are listed and `%2F` stays a name. | diff --git a/features/settings/diagnostics.md b/features/settings/diagnostics.md index 96376d0..49638ad 100644 --- a/features/settings/diagnostics.md +++ b/features/settings/diagnostics.md @@ -72,8 +72,8 @@ Settings → Diagnostics, an on-demand page that checks the runtime pieces previ - After Run in terminal opens a row's install command, the row reads "The command opened in your terminal. Run diagnostics again when it finishes." lgse/strata#1735, lgse/strata#1704 - Copy report copies "Strata diagnostics", the System fields, and every result by group as `[Status] Title: message`, then shows "Copied" for 1.5 s. lgse/strata#1735 (unverified) - The System box lists Version, Commit, Installation, Toolkit, GStreamer, Kernel, Desktop environment, Display server, Interface renderer, and Language. lgse/strata#1735 -- In a `STRATA_UPDATER=disabled` build that no package manager owns, Installation and the copied report read "In-app updates are disabled in this build." lgse/strata#1934 -- A pacman-owned or AUR-marked disabled build reads its ownership instead, such as "Installed by pacman as strata-bin." lgse/strata#1934 (unverified) +- In a `STRATA_UPDATER=disabled` build with no install marker, Installation and the copied report read "In-app updates are disabled in this build." The marker is `share/strata/install-source.toml` under the executable's prefix. lgse/strata#1934 +- A disabled build with an install marker, such as the AUR package's, reads the marker's ownership instead, such as "Installed by pacman as strata-bin." lgse/strata#1934 (unverified) ### Run in terminal diff --git a/features/settings/preferences/language.md b/features/settings/preferences/language.md index 2c10b2c..17c7876 100644 --- a/features/settings/preferences/language.md +++ b/features/settings/preferences/language.md @@ -65,7 +65,7 @@ The Language setting and the compiled-in translations behind it. Strata's own in - Changes apply on restart, approved by the owner instead of live relocalization (lgse/strata#1517, lgse/strata#1519). A language change never rebuilds an active browser or resets its navigation, selection, filters, or operations (docs/preferences.md). - Catalogs are compiled into the binary by `build.rs` with `rust-i18n`, so no system locale packages are needed. Japanese and Korean still need installed CJK fonts (lgse/strata#1519). Simplified Chinese needs a CJK font with Simplified glyphs, such as Noto Sans CJK SC (lgse/strata#1582, lgse/strata#1583). Traditional Chinese needs one with Traditional glyphs, such as Noto Sans CJK TC (docs/internationalization.md). - `build.rs` embeds the catalogs as static tables behind the `i18n::Catalogs` backend. The `i18n!` loader's per-message initializer overflowed 2 MiB thread stacks in unoptimized builds (lgse/strata#1519). -- Strata never rewrites the process locale. GTK-owned controls, GIO type descriptions, and system errors can therefore stay in the system language (lgse/strata#1519). Network-location failures are the exception; see `remote/file-providers/network-locations` (lgse/strata#1909). +- Strata never rewrites the process locale. GTK-owned controls, GIO type descriptions, and system errors can therefore stay in the system language (lgse/strata#1519). Unclassified failures on URI network locations show Strata's own text instead (lgse/strata#1909). - `rust-i18n` moved from 3.1.5 to 4.2.4 because cargo-deny rejects `unsafe-libyaml` (RUSTSEC-2024-0449). `i18n::Catalogs` follows the 4.0 `Backend` trait; the compiled tables are unchanged (lgse/strata#1583). - Traditional Chinese locales route to their own catalog (Option A), over a manual-only choice (Option B). Option A changes auto-detection for existing `zh_TW` and `zh_HK` users (lgse/strata#1613, lgse/strata#1745). - Hong Kong and Macau use the Taiwan catalog until a zh-HK one is contributed (lgse/strata#1613). diff --git a/features/settings/themes/index.md b/features/settings/themes/index.md index bff7c9e..e3c3780 100644 --- a/features/settings/themes/index.md +++ b/features/settings/themes/index.md @@ -246,4 +246,4 @@ The Settings → Appearance page and the color system behind it. It covers 95 bu - Theme cards show the selected theme only with a check icon and expose no checked state to assistive technology. lgse/strata#1544 - Text is below 4.5:1 on highlight in 34 bundled themes and on the selected-row fill in 19. lgse/strata#1566 -- For a custom theme file, only the final file in a link chain has its folder watched. Repointing an intermediate directory link it passes through, such as `~/.config/omarchy/current/theme`, does not reload the theme. Follow Omarchy is not affected. lgse/strata#1887, lgse/strata#1909 +- For a custom theme file, only the final file in a link chain has its folder watched. Repointing an intermediate directory link it passes through, such as `~/.config/omarchy/current/theme`, does not reload the theme. lgse/strata#1887 diff --git a/features/settings/themes/omarchy.md b/features/settings/themes/omarchy.md index 57933f6..828ae99 100644 --- a/features/settings/themes/omarchy.md +++ b/features/settings/themes/omarchy.md @@ -22,7 +22,8 @@ Follow Omarchy applies the active Omarchy Quattro desktop theme to Strata and tr - On first launch with no `settings.toml` and a valid Quattro state, Strata follows Omarchy. lgse/strata#542 - While following, the theme library is insensitive and the Current theme description reads "Managed by Omarchy. Turn off Follow Omarchy to pick a theme manually." lgse/strata#849 (unverified) - Switching the Omarchy theme or editing `colors.toml` re-applies the palette in every window without restart. lgse/strata#1482 -- After `current/theme` is repointed to another theme folder, editing that folder's `colors.toml` in place, or replacing it by rename, re-applies the palette without restart. Switching back keeps this. lgse/strata#1909 +- After `current/theme` is repointed to another theme folder, editing that folder's `colors.toml` in place, or replacing it by rename, re-applies the palette without restart. Switching back to the first folder and editing its `colors.toml` re-applies the palette too. lgse/strata#1909 +- When `current/theme` points to a theme folder that is itself a link, repointing that inner link does not reload the palette. lgse/strata#1909 (unverified) - A Quattro color in a GTK-only form, such as `accent = "#7a7a2af7f"`, loads as `#rrggbb`; icons stay visible and the accent styling applies. lgse/strata#1554, lgse/strata#1429 - While following, invalid Quattro state midway through a theme switch leaves the Settings preview and new document previews on the last applied palette. lgse/strata#1554, lgse/strata#1429 - Deleting `~/.local/state/omarchy` while Strata runs hides Follow Omarchy, restores the previously selected theme, and saves `mode = "theme"`. lgse/strata#958 diff --git a/index/by-area.md b/index/by-area.md index fe56112..b70838e 100644 --- a/index/by-area.md +++ b/index/by-area.md @@ -28,7 +28,7 @@ The shared shell behind Strata's action dialogs: the blurred backdrop, open and ### [Shared location model and listing adapter](../features/app/infrastructure.md) `app/infrastructure` -shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#14](https://github.com/lgse/strata/issues/14), pr [lgse/strata#27](https://github.com/lgse/strata/issues/27) +shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#14](https://github.com/lgse/strata/issues/14), pr [lgse/strata#27](https://github.com/lgse/strata/issues/27) The location model, URI display and diagnostic rules, and the directory-listing adapter that every feature shares, plus the crate and module roots. It also owns shared helpers, test support, catalogs, the README, third-party notices, and crate manifests. It owns the build script, CI workflows and tooling, the bug report template, and lint, dependency-audit, and agent configuration and skills. It owns the `qa` build's in-process QA harness, the QA runner, and the pinned test image. It owns the trusted helper lookup, the syscall layer that local operations share, and the Run in terminal control that Diagnostics and Integrations share. It owns the mount-table watcher, per-mount request lanes, off-thread probes and closes, and the UI-thread checks. It is the `fallback` node in `scopes.yaml`. @@ -233,7 +233,7 @@ Per-item colors and icons for local folders and files, chosen in the Customize d shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin issue [lgse/strata#70](https://github.com/lgse/strata/issues/70), pr [lgse/strata#118](https://github.com/lgse/strata/issues/118) -Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), `browser/navigation/startup-arguments` (locations passed on the command line), `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders), and `browser/navigation/administrator-access` (opening unreadable local folders through `admin://`). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. +Moving between locations in a browser pane: Back, Forward, and Parent history from keys, mouse buttons, and pane-header buttons. Children: `browser/navigation/location-bar` (path entry and breadcrumbs), `browser/navigation/recent` (the Recent collection), and `browser/navigation/startup-arguments` (command-line locations). Also `browser/navigation/folder-jump` (Ctrl+Shift+K over visited folders) and `browser/navigation/administrator-access` (unreadable local folders through `admin://`). Restoring an Icons or List folder's position on return belongs to `browser/view-modes/position-restore`. Selecting the folder you came from in Columns belongs to `browser/view-modes/columns`, and the List and Icons pane-header history buttons to `browser/view-modes`. - Code: [`src/ui/window/composition/input.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/window/composition/input.rs) - Tests: [`src/app/browser/tests/navigation.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/navigation.rs), [`tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/locations/unreadable-location-reports-error.jsonl) diff --git a/index/by-pr.md b/index/by-pr.md index d42a68a..4e99416 100644 --- a/index/by-pr.md +++ b/index/by-pr.md @@ -10,7 +10,7 @@ Every History row across the tree, newest first. | [lgse/strata#1918](https://github.com/lgse/strata/issues/1918) | 2026-10-29 | feat | [Interface language](../features/settings/preferences/language.md) | Added Hungarian (Magyar) as the thirteenth language, with locale detection, no-break-space digit grouping, and lower-case error details after a colon. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Themes and appearance](../features/settings/themes/index.md) | Watched the resolved Omarchy theme folder and rebound it after a symlink switch, so `colors.toml` edits stay live without a restart. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Settings window and general preferences](../features/settings/preferences/index.md) | Kept hidden entries in folder monitors, so dot-files other programs change while hidden files are off show at once when they are turned on. | -| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs for URI locations. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) | Showed the `g +` flash after the bookmark is saved, so new pins in slots 1–4 show their digit. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Frame and content density](../features/browser/view-modes/density.md) | Reserved width and an 8 px gap for the snap buttons so they stop overlapping, and translated zh-TW "Airy". | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Sidebar](../features/browser/sidebar/index.md) | Made sidebar hover a neutral tint, so a hovered old place no longer looks like a second selected row. | diff --git a/qa/sweeps/remote.md b/qa/sweeps/remote.md index 7334ebe..4fca7f0 100644 --- a/qa/sweeps/remote.md +++ b/qa/sweeps/remote.md @@ -41,7 +41,7 @@ Left to other sweeps: sidebar rows, the Connect to server dialog, and location-f - Drop files onto a remote folder in the file pane and onto its DEVICES row. Then search with Ctrl+F inside the remote folder with Include subfolders on, and read what the UI says. - On the SFTP fixture, build a folder holding hidden files, a symlink to a folder, and nested folders. Press Delete on it, then open Properties on it alone and in a multi-selection, watching the log for GLib-GIO criticals. - Type `network:`, `network://`, and `network:///` in the location bar, then switch Strata's language while the Network column is open; read the heading, breadcrumbs, window title, and tab title. -- On the real SFTP and Samba backends, `chmod 000` a server folder, delete a folder while it lists, and kill `gvfsd-sftp` mid-mount. Read each message under English and Français, and grep the DEBUG log. +- On the `sftp-fixture.sh` server and the local Samba share, `chmod 000` a server folder, delete a folder while it lists, and kill `gvfsd-sftp` mid-mount. Read each message under English and Français, and grep the DEBUG log. - On Samba, enter a wrong password, then disable the account, then exhaust its logon attempts; read the message and whether sign-in reopens. - Start Strata with `gvfsd` stopped and D-Bus activation masked, then with `gvfsd` running but `gvfsd-sftp` removed; compare startup time and the two failure texts. diff --git a/qa/sweeps/settings.md b/qa/sweeps/settings.md index 2056d11..4228c34 100644 --- a/qa/sweeps/settings.md +++ b/qa/sweeps/settings.md @@ -135,7 +135,7 @@ For every control this sweep proves the binding: the file changes, the other win - Repeat both on an Integrations install command, and with `$TERMINAL` set to a missing program. Press the button twice quickly and read the row and the process list. - On Integrations, press Run in terminal with `$TERMINAL` unset, no `xdg-terminal-exec`, and no listed terminal on `PATH`. Install one and press it again without Refresh. - Run with one custom action that cannot run and one broken action file, then with neither; compare with Settings → Actions. -- Run a `STRATA_UPDATER=disabled` build with and without network, then on a pacman-owned prefix and with the AUR install marker; read Installation, Update server, and the copied report. +- Run a `STRATA_UPDATER=disabled` build with and without network. Repeat with an install marker under its prefix, then on a pacman-owned prefix with no marker; read Installation, Update server, and the copied report. ### settings/themes From ba8a84cf4d286dbde21b23451e2347a8b3568058 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:47:11 +0000 Subject: [PATCH 14/17] Apply round-3 review fixes in app Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/app/packaging/installer.md | 2 +- features/app/updates/index.md | 6 +++--- features/app/updates/package-managed.md | 1 - qa/sweeps/app.md | 3 ++- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/features/app/packaging/installer.md b/features/app/packaging/installer.md index 0e5ec8a..73d6d24 100644 --- a/features/app/packaging/installer.md +++ b/features/app/packaging/installer.md @@ -118,7 +118,7 @@ related: [integration/file-manager-interface, integration/portal-file-chooser/se - With `LANGUAGE=zz:fr` and `LC_ALL=C.UTF-8`, the plan reads "Installer dans ". lgse/strata#1730 (unverified) - With `LANGUAGE=fr` and `LC_ALL=C`, the plan reads "Install to ". lgse/strata#1730 (unverified) - `zh_TW`, `zh_HK`, `zh_MO`, and `zh-Hant…` show Traditional Chinese messages; every other `zh` locale shows Simplified Chinese. lgse/strata#1745 -- A `hu` locale, such as `LANG=hu_HU.UTF-8`, shows Hungarian messages: the banner reads "Interaktív telepítő" and the plan "Telepítés ide: ". lgse/strata#1918 +- A `hu` locale, such as `LANG=hu_HU.UTF-8`, shows Hungarian messages: the banner reads "Interaktív telepítő" and the plan "Telepítés ide: ". lgse/strata#1918 (unverified) - Paths in messages show literally, even when they hold `&` or `%{version}`. lgse/strata#1730 (unverified) - The installer ignores the language saved in Strata's Settings. lgse/strata#1730 diff --git a/features/app/updates/index.md b/features/app/updates/index.md index 3142378..0a56605 100644 --- a/features/app/updates/index.md +++ b/features/app/updates/index.md @@ -53,9 +53,9 @@ Checking GitHub for a newer Strata release, the Settings → Updates page, relea - When a startup or manual check completes, every open Settings → Updates row shows its result. lgse/strata#1909 - Check now in one Settings window leaves other windows' rows, including an offer's Install button, unchanged until its result lands. lgse/strata#1909 - On a pacman or Omarchy install with a Preview or Nightly preference, a startup offer shows on the Updates row. lgse/strata#1909 -- That offer carries its package-managed action, such as "Check again" on pacman. lgse/strata#1909 -- Turning automatic checks off or changing the channel resets every open row to "Check for updates" and Check now. lgse/strata#1909 (unverified) -- That reset skips a row mid-check or with an install underway. lgse/strata#1909 (unverified) +- That offer carries its package-managed action, such as "Check again" on pacman. lgse/strata#1909 (unverified) +- Turning automatic checks on or off, or changing the channel, resets every open row to "Check for updates" and Check now. lgse/strata#1909 +- That reset skips a row mid-check or with an install underway. lgse/strata#1909 - An available update shows its notes inline, titled "Available release · vX" with its change count and publication date. lgse/strata#51 - Turning automatic checks off clears the sidebar notice in every window; turning them on runs a check. lgse/strata#944, lgse/strata#1554 - The Release channel menu is insensitive while automatic checks are off. lgse/strata#97 (unverified) diff --git a/features/app/updates/package-managed.md b/features/app/updates/package-managed.md index 5d1b613..7e44df9 100644 --- a/features/app/updates/package-managed.md +++ b/features/app/updates/package-managed.md @@ -7,7 +7,6 @@ reviewed_at: 86df474dc0e8352e0e2098637a017cc4c77a8c44 review: reviewed code: [src/services/install_source.rs] tests: [src/services/install_source/tests.rs] -docs: [docs/packaging.md] related: [app/packaging/aur, integration/open-with/terminal] --- diff --git a/qa/sweeps/app.md b/qa/sweeps/app.md index a56eae1..2fe9136 100644 --- a/qa/sweeps/app.md +++ b/qa/sweeps/app.md @@ -69,7 +69,8 @@ Left to other sweeps: per-mode movement and selection keys, the context menu and - In a byte-limited field, paste text whose limit falls inside a multi-byte character. Paste with the cursor at the start, middle, and end, then undo and redo. - Type into a limited field with an input method composing, and drop text onto it by drag and drop. - Type the path of a `chmod 000` folder so the error dialog offers Open as Administrator. Dismiss it by backdrop click, Escape, and Close, then press Down and read where focus lands. -- Repeat with that dialog stacked over Properties, and with no GVfs `admin` backend installed. +- Repeat with that dialog stacked over Properties. +- With no GVfs `admin` backend, type the same path and read which button has focus. - Click an install command's copy button twice within 2 s, then close its dialog before 2 s pass; read the button's name every 500 ms. ### app/shortcut-reference From e71559da73be5b3dcc900a1b08eb9c7abbbbfdff Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:48:46 +0000 Subject: [PATCH 15/17] Apply round-3 review fixes in integration and operations Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/integration/10xer-mode/file-verbs.md | 4 ++-- features/operations/clipboard/conflicts.md | 4 ++-- features/operations/trash/index.md | 9 ++++----- features/operations/undo.md | 2 +- qa/sweeps/integration.md | 4 ++-- qa/sweeps/operations.md | 2 +- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/features/integration/10xer-mode/file-verbs.md b/features/integration/10xer-mode/file-verbs.md index d8f86a9..649d512 100644 --- a/features/integration/10xer-mode/file-verbs.md +++ b/features/integration/10xer-mode/file-verbs.md @@ -39,7 +39,7 @@ Single-key file commands in 10xer mode: yank, cut, paste, delete, create, rename ### Delete and restore - `d` and Delete ask before moving to Trash. lgse/strata#1306, lgse/strata#1340 -- `d` opens the explained permanent confirmation with Cancel focused where every item's open folder lacks Trash. That is a folder reporting `access::can-trash` false and `access::can-delete` true, or one opened as administrator. lgse/strata#1533, lgse/strata#1837 +- `d` opens the explained permanent confirmation with Cancel focused where every item's open folder lacks Trash. That is a folder reporting `access::can-trash` false and `access::can-delete` true, or every item is in a folder opened as administrator. lgse/strata#1533, lgse/strata#1837 - `D`, Shift+Delete, and `d` inside Trash open the permanent-delete confirmation with Permanently delete focused. lgse/strata#1340, lgse/strata#1508 - In Columns, `d` on an open folder whose empty child column has focus asks to trash that folder instead of flashing `Nothing to delete`. lgse/strata#1508 - While an `f` or `s` result list shows no hits, `d` and `D` flash `Nothing to delete` and leave the open folder alone. lgse/strata#1508 (unverified) @@ -83,7 +83,7 @@ Single-key file commands in 10xer mode: yank, cut, paste, delete, create, rename - `O` looks up types and applications without blocking keys, then opens Open With for the targets. lgse/strata#1308 - Outside Flatpak, for a mixed selection, Recommended Applications lists only applications that handle every type. lgse/strata#1308, lgse/strata#1635 - A newer key, a selection or focus change, navigation, leaving the mode, or closing the window drops an unfinished Open With lookup. lgse/strata#1308 -- `O` on any target in a folder opened as administrator opens no chooser. It flashes "Other applications can't open files in a folder opened as administrator. Preview the file here, or copy it to another folder first." lgse/strata#1837 (unverified) +- When any `O` target is in a folder opened as administrator, `O` opens no chooser. It flashes "Other applications can't open files in a folder opened as administrator. Preview the file here, or copy it to another folder first." lgse/strata#1837 (unverified) - `;` arms a chord whose panel lists the first ten matching custom actions in context-menu order, then `t`, `c`, `e`, and `E`. lgse/strata#1308, lgse/strata#1340 - `; 1` to `; 9` and `; 0` run that action; a vacant slot flashes `No action N` and runs nothing. lgse/strata#1308 - If the targets or the action list changed since `;`, the digit flashes `Selection changed` or `Actions changed` and runs nothing. lgse/strata#1308 diff --git a/features/operations/clipboard/conflicts.md b/features/operations/clipboard/conflicts.md index 7f0df72..a7ebceb 100644 --- a/features/operations/clipboard/conflicts.md +++ b/features/operations/clipboard/conflicts.md @@ -46,7 +46,7 @@ The "File already exists" dialog shown when a paste, Move to…, Copy to…, or ### Undo -- Ctrl+Z after a copy answered with Replace restores the overwritten original from Trash. lgse/strata#1097 +- Ctrl+Z after a copy answered with Replace restores the overwritten original from Trash, outside folders opened as administrator. lgse/strata#1097, lgse/strata#1837 - Ctrl+Z after a Merge removes what the merge created and restores the overwritten originals, leaving destination-only items. lgse/strata#1092, lgse/strata#1097 - An item edited since the Merge or Replace stays on undo, its original stays in Trash, and the dialog says so. lgse/strata#1615 - Where Trash is unavailable, a Merge undo deletes only created items it recorded and finds unchanged, and reports the rest. lgse/strata#1615 @@ -59,7 +59,7 @@ The "File already exists" dialog shown when a paste, Move to…, Copy to…, or - A failed, cancelled, or disk-full Replace leaves the existing destination unchanged and removes the partial copy. lgse/strata#25 - An item that appears at the destination after the dialog is answered is not overwritten. lgse/strata#25, lgse/strata#1097 - Replacing a folder swaps the whole folder; none of its old contents remain. lgse/strata#25 -- Replace onto a destination without a local path fails with "Safe replacement is unavailable at this destination" and keeps the existing item. lgse/strata#25 +- Replace onto a destination without a local path, other than a folder opened as administrator, fails with "Safe replacement is unavailable at this destination". The existing item is kept. lgse/strata#25, lgse/strata#1837 - Without Trash, Replace moves the original into a hidden `.strata-originals-/` folder under its own name, then deletes it after the flush. lgse/strata#1615, lgse/strata#1729 - An exchange Replace also runs through that folder, so a `.strata-copy-*` stage only ever holds a copy. lgse/strata#1729 - A failure there puts the original back; Replace is refused before copying when no strategy is safe. lgse/strata#1615 diff --git a/features/operations/trash/index.md b/features/operations/trash/index.md index c454403..bd4ba0c 100644 --- a/features/operations/trash/index.md +++ b/features/operations/trash/index.md @@ -37,10 +37,9 @@ Moving files and folders to the freedesktop.org Trash, undoing that move, and br - When a refusal was recorded for the first item's mount, the next paragraph reads "Trash isn't available on ()." lgse/strata#1614 - The last paragraph is the local or remote deletion sentence of the permanent-delete confirmation, below. lgse/strata#1533, lgse/strata#1614 - That dialog focuses Cancel, still after the size summary loads, so Enter closes it and keeps the files. lgse/strata#1533 -- When the folder's `access::can-trash` value is unknown, or the item's folder is not open, Delete attempts the trash move first. lgse/strata#1533 (unverified) -- A folder opened as administrator (`admin://`) counts as a no-Trash folder, whatever its `access::can-trash` reports. lgse/strata#1837 -- Delete, or 10xer `d`, on items in such a folder opens "Permanently delete N items?" at once, with Cancel focused. No trash move is attempted. lgse/strata#1837 -- Its second paragraph reads "Trash isn't available when browsing as administrator.", followed by the local deletion sentence. lgse/strata#1837 +- When the folder's `access::can-trash` value is unknown, or the item's folder is not open, Delete attempts the trash move first, except for items under `admin://`. lgse/strata#1533, lgse/strata#1837 (unverified) +- Any item in a folder opened as administrator (`admin://`) counts as lacking Trash. That holds whatever its `access::can-trash` reports, and whether or not its folder is open. lgse/strata#1837 +- For such items, the no-Trash dialog's second paragraph reads "Trash isn't available when browsing as administrator.", followed by the local deletion sentence. lgse/strata#1837 - Dropping items from such a folder on the sidebar Trash row is refused, and no confirmation opens. lgse/strata#1837 (unverified) - In a read-only folder, where `access::can-trash` and `access::can-delete` are both false, Delete still attempts the trash move and opens no dialog first. lgse/strata#1533 - When a trash move fails because every failed item's location lacks Trash, the same explained dialog opens with Cancel focused, for only those items. lgse/strata#225, lgse/strata#1425, lgse/strata#1533 @@ -54,7 +53,7 @@ Moving files and folders to the freedesktop.org Trash, undoing that move, and br ### Deletion confirmations - A selection is remote only when every item is remote; a mixed selection gets the local wording. lgse/strata#1571, lgse/strata#1614 -- A remote item is a native path on a network mount, such as NFS, SMB, or sshfs, or a URI other than `trash:` or `admin:`. lgse/strata#1614, lgse/strata#1837 +- A remote item is a native path on a network mount, such as NFS, SMB, or sshfs. A URI other than `trash:` or `admin:` is remote too. lgse/strata#1614, lgse/strata#1837 - Shift+Delete or Permanently delete in a folder opened as administrator opens the local-worded confirmation. A partial-failure retry button there reads "Delete Permanently". lgse/strata#1837 (unverified) - `fuseblk` drives and local FUSE overlays, such as mergerfs or gocryptfs, count as local. lgse/strata#1614 - For a local or mixed selection, the permanent-delete dialog is titled "Permanently delete N items?" and its danger-styled button reads "Permanently delete N items". lgse/strata#164, lgse/strata#1614 diff --git a/features/operations/undo.md b/features/operations/undo.md index 1440714..6e90928 100644 --- a/features/operations/undo.md +++ b/features/operations/undo.md @@ -30,7 +30,7 @@ One undo history and one redo history for file operations, shared by every Strat - Redo is shared too: after Ctrl+Z in one window, Ctrl+Shift+Z in another window re-applies that operation. lgse/strata#1120 - Repeated Ctrl+Z undoes earlier operations newest first, up to 32 entries; recording a 33rd drops the oldest. lgse/strata#444 - A paste that created nothing records no entry, so Ctrl+Z still undoes the operation before it. lgse/strata#444 -- A copy, including one whose conflict is answered Replace, or a New Folder or New File, into a folder opened as administrator records no entry. Ctrl+Z then undoes the operation before it. lgse/strata#1837 +- A copy into a folder opened as administrator records no entry, even when a conflict is answered Replace. So does a New Folder or New File there. Ctrl+Z then undoes the operation before it. lgse/strata#1837 - Such a copy, New Folder, or New File leaves the redo history as it was. lgse/strata#1837 (unverified) - A rename, or a move into or out of such a folder, still records its entry. lgse/strata#1837 - An undo records no undo entry of its own, so a second Ctrl+Z undoes the previous operation instead of reverting the undo. lgse/strata#301, lgse/strata#444 diff --git a/qa/sweeps/integration.md b/qa/sweeps/integration.md index 82848a9..3447b0c 100644 --- a/qa/sweeps/integration.md +++ b/qa/sweeps/integration.md @@ -146,7 +146,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - Arm `g`, then open and close Settings from the gear, Alt+Tab to another window, and press F5; read the footer after each. - With Downloads on the sshfs mount stopped by `kill -STOP`, press `g d`, then `g h` before 2 s pass. - On `fr` and `ch(de)`, press `g` then the keys that type `+` and `-`, on a pinned folder, an unpinned one, and the tenth pin. -- Press `g +` with the bookmarks file read-only, then on two folders in quick succession, then on the 4th and 5th new pins. Read each flash and the bookmarks file. +- Press `g +` with the bookmarks file read-only, then on two folders in quick succession, then on the 5th new pin. Read each flash and the bookmarks file. ### integration/10xer-mode/search @@ -203,7 +203,7 @@ Left to other sweeps: the installer, `.desktop` entries, and single-instance act - Start Strata from a folder on the sshfs mount. Activate a file and use Open With… with the fake handler and a `Path=/tmp` twin; read each cwd. - Press Enter twice fast on a file with no handler, once with a modal open, and once in a second window. Count the choosers. - Open a file, a folder, and three files at once through Open With…, then by activation; read `~/.local/share/recently-used.xbel` after each. -- In an `admin://` folder, activate the text file by Enter, double-click, and the menu's Open, then the executable `.sh`; check the handler log stays empty. +- In an `admin://` folder, activate the text file by Enter, double-click, and the menu's Open, then the executable `.sh`. Check the handler log stays empty. ### integration/open-with/recent-apps diff --git a/qa/sweeps/operations.md b/qa/sweeps/operations.md index bb79a4a..bc7cf85 100644 --- a/qa/sweeps/operations.md +++ b/qa/sweeps/operations.md @@ -86,7 +86,7 @@ Left to other sweeps: pointer gestures and selection before a drag starts, the s - Merge without Trash on NFS while another program holds one replaced file open; then cancel a second such merge. - After a Merge, edit one placed file, only `touch` another, then undo. - On tmpfs and on `/dev/shm`, where Trash is unavailable, Replace a folder holding files, in List, Icons, and Columns, without pressing F5. -- In an `admin://` folder, paste a file over a file, a folder over a folder, a file over a folder, and a folder over a file, by copy and by cut. Then copy a file from it over a same-named Home file and answer Replace, then Keep Both. +- In an `admin://` folder, paste by copy and by cut: a file over a file, a folder over a folder. Then a file over a folder, and a folder over a file. Then copy a file from it over a same-named Home file and answer Replace, then Keep Both. ### operations/clipboard/send-to From 6c3c777cdaf04a612b7005e3d70eccb9d729c37c Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:49:22 +0000 Subject: [PATCH 16/17] Apply round-3 review fixes in browser; move folder-peek admin bullet to its owner Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- README.md | 4 ++-- features/browser/navigation/administrator-access.md | 5 ++--- features/browser/navigation/index.md | 2 +- features/browser/tabs/session-restore.md | 2 +- features/browser/view-modes/columns.md | 2 +- features/browser/view-modes/density.md | 2 +- features/preview/quick-preview/folder-peek.md | 5 +++-- index/by-area.md | 8 ++++---- index/qa.md | 4 ++-- qa/sweeps/browser.md | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 497ea5a..a4a0ec0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ One Markdown file per Strata feature, tying shipped behavior and design to the u Look features up [by area](index/by-area.md), [by path](index/by-path.md), [by PR](index/by-pr.md), or [by QA sweep](index/qa.md). *PRs since* counts upstream PRs touching a feature or its children since the oldest review in its subtree; `?` means the review commit is not in `data/prs.jsonl` yet. [qa/README.md](qa/README.md) says how to QA a PR or sweep an area. -Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `44bfeab` · 144 features, 86 reviewed +Upstream [lgse/strata](https://github.com/lgse/strata) · watermark `44bfeab` · 144 features, 85 reviewed ## app @@ -175,7 +175,7 @@ QA sweep: [`qa/sweeps/preview.md`](qa/sweeps/preview.md) | ↳ [Offline route previews](features/preview/preview-panel/routes.md) | `preview/preview-panel/routes` | shipped | reviewed | `44bfeab` | ? | | ↳ [Preview sandbox](features/preview/preview-panel/sandbox.md) | `preview/preview-panel/sandbox` | shipped | reviewed | `86df474` | 0 | | [Quick preview](features/preview/quick-preview/index.md) | `preview/quick-preview` | shipped | draft | `73b3258` | ? | -| ↳ [Folder peek](features/preview/quick-preview/folder-peek.md) | `preview/quick-preview/folder-peek` | shipped | reviewed | `44bfeab` | ? | +| ↳ [Folder peek](features/preview/quick-preview/folder-peek.md) | `preview/quick-preview/folder-peek` | shipped | draft | `44bfeab` | ? | ## remote diff --git a/features/browser/navigation/administrator-access.md b/features/browser/navigation/administrator-access.md index 0d85657..de7d014 100644 --- a/features/browser/navigation/administrator-access.md +++ b/features/browser/navigation/administrator-access.md @@ -8,7 +8,7 @@ review: draft code: [] tests: [src/app/browser/tests/administrator.rs] docs: [docs/administrator-access.md] -related: [browser/navigation/location-bar, browser/view-modes, browser/view-modes/columns, browser/thumbnails, browser/context-menu, browser/selection/keyboard-navigation, browser/tabs/session-restore, operations/trash, operations/undo, operations/clipboard/conflicts, integration/open-with, integration/portal-file-chooser, app/accessibility] +related: [browser/navigation/location-bar, browser/view-modes, browser/view-modes/columns, browser/thumbnails, browser/context-menu, browser/selection/keyboard-navigation, browser/tabs/session-restore, operations/trash, operations/undo, operations/clipboard/conflicts, integration/open-with, integration/portal-file-chooser, app/accessibility, preview/quick-preview/folder-peek] --- ## Summary @@ -35,7 +35,6 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac - A sidebar place, bookmark, pin, or command-line argument to an unreadable folder offers the same button in its dialog, column, or pane. lgse/strata#1837 (unverified) - Open as Administrator opens the folder's `admin://` form. lgse/strata#1837 - Where GIO has no `admin` scheme, no dialog, column, or pane offers Open as Administrator. lgse/strata#1837 -- A folder peek of an unreadable folder offers no Open as Administrator. lgse/strata#1837 (unverified) - Typing `admin:///path` in the location bar opens that folder as administrator. lgse/strata#1837 ### Refusals @@ -45,7 +44,7 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac ### Browsing as administrator -- In an `admin://` folder, the breadcrumbs start at an "Administrator" crumb with a lock icon instead of `admin:`. lgse/strata#1837 +- In an `admin://` folder, the breadcrumbs start at an "Administrator" crumb with a lock icon instead of `admin:`. lgse/strata#1836, lgse/strata#1837 ## Design diff --git a/features/browser/navigation/index.md b/features/browser/navigation/index.md index bd84677..45bdd76 100644 --- a/features/browser/navigation/index.md +++ b/features/browser/navigation/index.md @@ -31,7 +31,7 @@ Moving between locations in a browser pane: Back, Forward, and Parent history fr ### Unreadable folders -- Where GIO has no `admin` scheme, opening an unreadable folder in Columns shows an "Unable to open directory" dialog. lgse/strata#1807, lgse/strata#1837 (unverified) +- In Columns, opening an unreadable folder not yet marked locked, or any where GIO has no `admin` scheme, shows an "Unable to open directory" dialog. lgse/strata#1807, lgse/strata#1837 (unverified) ### Mouse buttons diff --git a/features/browser/tabs/session-restore.md b/features/browser/tabs/session-restore.md index cacf8d4..cdc7d87 100644 --- a/features/browser/tabs/session-restore.md +++ b/features/browser/tabs/session-restore.md @@ -37,7 +37,7 @@ A plain launch reopens the previous session's tab locations in strip order, with - A saved folder whose check times out, as on a server that does not answer, keeps its tab and shows its error. It loads by itself once the mount answers. lgse/strata#1729 - Trashed-item children (`trash:///x`) and non-root Recent entries (`recent:///x`) are skipped, while `trash:///` and `recent:///` restore. lgse/strata#1532 - Camera roots such as `gphoto2://` are skipped. So is every scheme other than `smb`, `sftp`, `ftp`, `ftps`, `dav`, `davs`, `trash`, `network`, and `recent`. lgse/strata#1532 (unverified) -- A saved `admin://` tab is skipped, so relaunching raises no polkit prompt. lgse/strata#1837 +- A saved `admin://` tab is skipped, so relaunching raises no polkit prompt. lgse/strata#1836, lgse/strata#1837 - When a skipped entry precedes the active tab, the restored selection still lands on the saved active location. lgse/strata#1532 - When the saved active entry is skipped, the nearest kept tab to its left is selected. With none to its left, the first restored tab is. lgse/strata#1532 (unverified) - An active index beyond the last restorable tab selects the last restored tab. lgse/strata#1532 (unverified) diff --git a/features/browser/view-modes/columns.md b/features/browser/view-modes/columns.md index f63640d..5dd3896 100644 --- a/features/browser/view-modes/columns.md +++ b/features/browser/view-modes/columns.md @@ -46,7 +46,7 @@ Miller columns, the default view: each opened folder appends a column to a horiz - Shift+Home, Shift+End, and other Shift-extended ranges do not mirror. lgse/strata#1447, lgse/strata#1533 - Mirroring waits 75 ms after the last key, so holding Down loads only the folder where the cursor stops. lgse/strata#1179 - With Mirror columns selection on, Return on a folder still validating when the 75 ms mirror fires opens it in the next column. Focus lands on its first entry. lgse/strata#1771 (unverified) -- A column whose folder Strata may not read shows "Unable to read this directory" and the reason, with Open as Administrator and Retry buttons. Without GIO `admin` support only Retry shows. lgse/strata#1837 +- Where GIO supports `admin`, a column whose folder Strata may not read offers Open as Administrator above Retry on its error page. lgse/strata#1837 - In an `admin://` folder, the "Browsing as administrator" lock notice shows on the root column only. lgse/strata#1837 (unverified) ### Returning to an ancestor diff --git a/features/browser/view-modes/density.md b/features/browser/view-modes/density.md index 6cd4504..e2880fb 100644 --- a/features/browser/view-modes/density.md +++ b/features/browser/view-modes/density.md @@ -24,7 +24,7 @@ Two spacing settings in the Appearance menu's DENSITY section. Frame is the vert - Content runs from 0 to 16 px, with Compact 4, the default, and Airy 8. lgse/strata#1776 - Each slider's value label reads "Compact · N px" or "Airy · N px" at a preset, otherwise "Custom · N px". lgse/strata#1776 - Each slider has tick marks at its Compact and Airy values, with "Compact" and "Airy" buttons under them. lgse/strata#1776 -- The Compact and Airy buttons sit at least 8 px apart, and the menu reserves their combined width, such as in Russian at 13 or 24 px. lgse/strata#1909 +- The Compact and Airy buttons sit at least 8 px apart. The menu reserves their combined width, such as in Russian at text size 13 or 24 px. lgse/strata#1909 - In Traditional Chinese, the Airy button reads 寬鬆. lgse/strata#1909 - Clicking "Compact" or "Airy" snaps that slider to the preset; the label of the current preset shows in the accent color. lgse/strata#1776 (unverified) - Dragging a slider or clicking a snap button leaves the Appearance menu open. lgse/strata#1776 diff --git a/features/preview/quick-preview/folder-peek.md b/features/preview/quick-preview/folder-peek.md index e6a3bc0..a03d1ce 100644 --- a/features/preview/quick-preview/folder-peek.md +++ b/features/preview/quick-preview/folder-peek.md @@ -4,11 +4,11 @@ status: shipped origin: {issue: null, pr: lgse/strata#132} branch: null reviewed_at: 44bfeab305cfb68993bafcf4794fe0bbf7ff1433 -review: reviewed +review: draft code: [src/app/peek.rs, src/ui/browser/peek.rs] tests: [src/app/peek/tests.rs, src/ui/browser/peek/tests.rs] docs: [docs/preferences.md] -related: [settings/preferences, browser/view-modes, browser/directory-monitoring, operations/drag-and-drop, integration/10xer-mode] +related: [settings/preferences, browser/view-modes, browser/directory-monitoring, operations/drag-and-drop, integration/10xer-mode, browser/navigation/administrator-access] --- ## Summary @@ -34,6 +34,7 @@ A transient popover that lists up to 8 entries of a folder when the pointer rest - Long names are ellipsized in the middle, keeping the extension visible. lgse/strata#1143 - Hidden entries are left out unless hidden files are shown. lgse/strata#201, lgse/strata#1449 - Entries appear in the order the folder enumerates them, not the browser's sort order. A folder of over 8 entries peeks an arbitrary subset. lgse/strata#1449 (unverified) +- A peek of a folder Strata may not read shows its error with no Open as Administrator button. lgse/strata#1837 (unverified) ### Placement and closing diff --git a/index/by-area.md b/index/by-area.md index b70838e..d61eaf4 100644 --- a/index/by-area.md +++ b/index/by-area.md @@ -135,7 +135,7 @@ Update checks and actions for Strata installed by a package manager: the officia - Code: [`src/services/install_source.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/install_source.rs) - Tests: [`src/services/install_source/tests.rs`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/src/services/install_source/tests.rs) -- Docs: [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) +- Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) - Related: [AUR packages](../features/app/packaging/aur.md), [Open in Terminal](../features/integration/open-with/terminal.md) ### [Release channels](../features/app/updates/release-channels.md) `app/updates/release-channels` @@ -249,7 +249,7 @@ Opening local folders the user can't read or enter through GVfs's `admin://` bac - Tests: [`src/app/browser/tests/administrator.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/browser/tests/administrator.rs) - Docs: [`docs/administrator-access.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/administrator-access.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) -- Related: [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [Thumbnails](../features/browser/thumbnails/index.md), [Context menus](../features/browser/context-menu.md), [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md), [Tab session restore](../features/browser/tabs/session-restore.md), [Trash](../features/operations/trash/index.md), [Undo and redo](../features/operations/undo.md), [Paste name conflicts](../features/operations/clipboard/conflicts.md), [Opening files and Open With](../features/integration/open-with/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Accessibility](../features/app/accessibility.md) +- Related: [Location bar and breadcrumbs](../features/browser/navigation/location-bar/index.md), [View modes](../features/browser/view-modes/index.md), [Columns view](../features/browser/view-modes/columns.md), [Thumbnails](../features/browser/thumbnails/index.md), [Context menus](../features/browser/context-menu.md), [Keyboard navigation in views](../features/browser/selection/keyboard-navigation.md), [Tab session restore](../features/browser/tabs/session-restore.md), [Trash](../features/operations/trash/index.md), [Undo and redo](../features/operations/undo.md), [Paste name conflicts](../features/operations/clipboard/conflicts.md), [Opening files and Open With](../features/integration/open-with/index.md), [System file chooser](../features/integration/portal-file-chooser/index.md), [Accessibility](../features/app/accessibility.md), [Folder peek](../features/preview/quick-preview/folder-peek.md) ### [Folder jump](../features/browser/navigation/folder-jump.md) `browser/navigation/folder-jump` @@ -1414,14 +1414,14 @@ Opening, closing, and retargeting the file preview from the listing: Space, the ### [Folder peek](../features/preview/quick-preview/folder-peek.md) `preview/quick-preview/folder-peek` -shipped · reviewed · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#132](https://github.com/lgse/strata/issues/132) +shipped · draft · reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993bafcf4794fe0bbf7ff1433) · ? PRs since · origin pr [lgse/strata#132](https://github.com/lgse/strata/issues/132) A transient popover that lists up to 8 entries of a folder when the pointer rests on it in Icons or List. It is controlled by Settings → General → Browsing → Folder peeking, which is off by default. - Code: [`src/app/peek.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/peek.rs), [`src/ui/browser/peek.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/peek.rs) - Tests: [`src/app/peek/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/app/peek/tests.rs), [`src/ui/browser/peek/tests.rs`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/src/ui/browser/peek/tests.rs) - Docs: [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) (inherited) -- Related: [Settings window and general preferences](../features/settings/preferences/index.md), [View modes](../features/browser/view-modes/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Drag and drop](../features/operations/drag-and-drop/index.md), [10xer mode](../features/integration/10xer-mode/index.md) +- Related: [Settings window and general preferences](../features/settings/preferences/index.md), [View modes](../features/browser/view-modes/index.md), [Directory loading and monitoring](../features/browser/directory-monitoring/index.md), [Drag and drop](../features/operations/drag-and-drop/index.md), [10xer mode](../features/integration/10xer-mode/index.md), [Administrator access](../features/browser/navigation/administrator-access.md) ## remote diff --git a/index/qa.md b/index/qa.md index 0748a75..9c1246c 100644 --- a/index/qa.md +++ b/index/qa.md @@ -15,7 +15,7 @@ reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993ba | Node | Probes | QA scenarios | Other tests | Docs | | --- | --- | --- | --- | --- | | [Accessibility](../features/app/accessibility.md) `app/accessibility` | 11 | [`tests/qa/scenarios/accessibility`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/accessibility), [`tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/entry-menu-named-actions.jsonl) | 1 | [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md) | -| [Modal dialogs](../features/app/dialogs.md) `app/dialogs` | 17 | [`tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl) | 3 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | +| [Modal dialogs](../features/app/dialogs.md) `app/dialogs` | 18 | [`tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/dialogs_and_menus/dismissed-overlays-return-focus.jsonl) | 3 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | | [Shared location model and listing adapter](../features/app/infrastructure.md) `app/infrastructure` | 14 | [`tests/qa/scenarios/visual_baselines`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/visual_baselines) | 43 | [`docs/performance-baseline.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/performance-baseline.md), [`docs/hardened-configuration.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/hardened-configuration.md), [`docs/unsafe-code.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/unsafe-code.md), [`docs/testing.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/testing.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | | [Shortcuts on any keyboard layout](../features/app/keyboard-shortcuts/index.md) `app/keyboard-shortcuts` | 20 | — | 1 | [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/docs/keyboard-shortcuts.md) | | ↳ [Remappable shortcuts per map](../features/app/keyboard-shortcuts/remapping.md) `app/keyboard-shortcuts/remapping` | 19 | [`tests/qa/scenarios/keymap`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/tests/qa/scenarios/keymap) | 9 | [`docs/keymap.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keymap.md), [`docs/keyboard-shortcuts.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/keyboard-shortcuts.md) (inherited) | @@ -25,7 +25,7 @@ reviewed at [`44bfeab`](https://github.com/lgse/strata/tree/44bfeab305cfb68993ba | [Keyboard shortcut reference and footer](../features/app/shortcut-reference.md) `app/shortcut-reference` | 20 | [`tests/qa/scenarios/dialogs_and_menus/shortcut-reference-search-keeps-editing-chords.jsonl`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/tests/qa/scenarios/dialogs_and_menus/shortcut-reference-search-keeps-editing-chords.jsonl) | 1 | [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/73b3258ff9da7fd5f8b279e442e4fbf576850deb/site/src/reference/keyboard-navigation.md) | | [Updates](../features/app/updates/index.md) `app/updates` | 12 | — | 2 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) | | ↳ [In-place update install](../features/app/updates/install.md) `app/updates/install` | 6 | — | 9 | [`site/src/reference/signed-updates.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/signed-updates.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/packaging.md) (inherited) | -| ↳ [Package-managed installs](../features/app/updates/package-managed.md) `app/updates/package-managed` | 6 | — | 1 | [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | +| ↳ [Package-managed installs](../features/app/updates/package-managed.md) `app/updates/package-managed` | 6 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | | ↳ [Release channels](../features/app/updates/release-channels.md) `app/updates/release-channels` | 7 | — | 1 | [`docs/releasing.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/releasing.md), [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | | ↳ [Install a specific release](../features/app/updates/release-picker.md) `app/updates/release-picker` | 5 | — | 1 | [`docs/preferences.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/preferences.md) (inherited), [`docs/packaging.md`](https://github.com/lgse/strata/blob/86df474dc0e8352e0e2098637a017cc4c77a8c44/docs/packaging.md) (inherited) | | [Window chrome and structure](../features/app/window/index.md) `app/window` | 8 | — | 1 | [`docs/architecture.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/docs/architecture.md), [`site/src/reference/keyboard-navigation.md`](https://github.com/lgse/strata/blob/44bfeab305cfb68993bafcf4794fe0bbf7ff1433/site/src/reference/keyboard-navigation.md) | diff --git a/qa/sweeps/browser.md b/qa/sweeps/browser.md index b3ddd7f..629be5f 100644 --- a/qa/sweeps/browser.md +++ b/qa/sweeps/browser.md @@ -16,7 +16,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - `scripts/generate-fixture.sh ` builds `1000`, `10000`, and `100000` entry folders, a 256-level `deep` tree, and `edge-cases` with a broken symlink and a non-UTF-8 name. Add dot-files, a `.hidden` file naming one visible entry, a 255-byte name, two names differing only by case, and a symlink to a folder. - Two oversized folders built with `touch`: one of 200,000 entries and one of 260,000. - An unreadable folder (`chmod 000`) inside the fixture, and a folder to remove while it is open (`rm -rf` or `mv` from a shell), in every view. -- For administrator-access probes: a root-owned `0700` folder on a USB drive, GVfs with `gvfsd-admin`, and a polkit agent in the session. The QA container has neither, so these probes run by hand. +- For administrator-access probes: a root-owned `0700` folder on a USB drive, GVfs with `gvfsd-admin`, and a polkit agent in the session. The QA container has no GVfs or polkit agent, so these probes run by hand. - A slow directory: 2,000 images across every thumbnail format, plus 50 PDFs and 50 videos, with `$XDG_CACHE_HOME/thumbnails` emptied first so decoding is visible. - Two windows of the same build for sidebar, pins, text size, tabs, monitoring, and Recent checks; open the same folder in both where the probe says so. - Type to search on and off per probe: it changes what `h`, `j`, `k`, `l`, `p`, `/`, and plain letters do. `docs/keyboard-navigation.md` holds the key rules and `docs/preferences.md` the setting keys. @@ -201,7 +201,7 @@ Tab-strip drops that open or move tabs belong here. Left to other sweeps: file d - Open Appearance in two windows and drag a slider in one; then press a snap button in the other. - With the menu scrolled, wheel over each slider; then focus one and press Page Up at the maximum and Page Down at 0. - Read each slider and snap button with Orca while moving between presets and Custom values. -- In each interface language, open Appearance in Icons and List at text size 8, 13, and 48; look for overlapping Compact and Airy buttons. +- In each interface language, open Appearance in Icons and List at text size 8 and 48, with each slider at a Custom value. ### browser/view-modes/text-size From dd64a41c494c4035d93df7901f6dae6bdcd87a95 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:51:19 +0000 Subject: [PATCH 17/17] Apply round-3 review fixes in settings and remote; regenerate indexes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE --- features/remote/file-providers/network-locations.md | 10 +++++----- index/by-pr.md | 2 +- qa/sweeps/settings.md | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/features/remote/file-providers/network-locations.md b/features/remote/file-providers/network-locations.md index 9995173..38dabc0 100644 --- a/features/remote/file-providers/network-locations.md +++ b/features/remote/file-providers/network-locations.md @@ -42,13 +42,13 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native - An `smb://` location without its GVfs backend fails with a message naming common packages `gvfs-smb` or `gvfs-backends`. lgse/strata#31, lgse/strata#233 - An unresolvable host, refused connection, timeout, or unreachable host each shows its own message, such as "That host couldn’t be found. Check the address and DNS settings." lgse/strata#233 -- Opening or listing a URI location that fails with a typed GIO error, such as permission denied, shows its translated reason. lgse/strata#1909 -- Mounting a URI location that fails with permission denied, or with untyped refused-credentials text, reopens the sign-in prompt instead of an error. lgse/strata#233, lgse/strata#1909 -- A mount that fails with any other typed error shows its translated reason, unless a missing-backend, host-key, or transport message applies. lgse/strata#233, lgse/strata#1909 (unverified) +- Opening or listing a URI location that fails with a GIO error Strata names, such as permission denied or not found, shows its translated reason. Opening handles not mounted and unsupported first. lgse/strata#1909 +- Mounting a URI location that fails with permission denied, or with refused-credentials text in its message, reopens the sign-in prompt instead of an error. lgse/strata#233 +- A mount that fails with any other GIO error Strata names shows its translated reason, unless a missing-backend, host-key, or transport message applies. lgse/strata#233, lgse/strata#1909 (unverified) - Opening, listing, or mounting a URI location with any other unclassified GIO error shows "An unexpected system error occurred", translated. A mount does so only when no missing-backend, host-key, or transport message applies. lgse/strata#1909 - Opening or listing a URI location that fails with an untyped error whose text names refused credentials, such as "Logon failure", shows "Permission denied". lgse/strata#1909 - A mount failure on a location with a native path shows the translated reason for a typed error. An unclassified one shows the backend text with URI user info, query, and fragment removed. lgse/strata#233, lgse/strata#1909 (unverified) -- The unclassified backend text goes only to the DEBUG log, sanitized. lgse/strata#1909 +- For URI locations, the unclassified backend text goes only to the DEBUG log, sanitized. lgse/strata#1909 - At the default log level, a mount logs only the backend name and outcome. The location appears only at DEBUG, without user info, query, or fragment. lgse/strata#233 ### Sidebar @@ -93,7 +93,7 @@ Browsing `smb://`, `sftp://`, and other GIO/GVfs network locations as URI-native | Date | PR | Type | Change | | --- | --- | --- | --- | -| 2026-10-29 | lgse/strata#1909 | fix | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs for URI locations. | +| 2026-10-29 | lgse/strata#1909 | fix | Translated unclassified GIO failures and showed "Permission denied" for untyped credential rejections, so URI-location dialogs no longer show raw backend text. | | 2026-10-15 | lgse/strata#1634 | fix | Guarded optional GIO attributes in directory measurement, so measuring an SFTP folder for permanent delete logs no GLib-GIO critical. | | 2026-10-10 | lgse/strata#1544 | fix | Published the neighbour cursor after a remote reload removes the cursor file, without taking focus from outside the pane. | | 2026-10-09 | lgse/strata#1533 | fix | Kept GIO's percent-encoding in URI locations so names that are not valid UTF-8 are listed and `%2F` stays a name. | diff --git a/index/by-pr.md b/index/by-pr.md index 4e99416..26203be 100644 --- a/index/by-pr.md +++ b/index/by-pr.md @@ -10,7 +10,7 @@ Every History row across the tree, newest first. | [lgse/strata#1918](https://github.com/lgse/strata/issues/1918) | 2026-10-29 | feat | [Interface language](../features/settings/preferences/language.md) | Added Hungarian (Magyar) as the thirteenth language, with locale detection, no-break-space digit grouping, and lower-case error details after a colon. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Themes and appearance](../features/settings/themes/index.md) | Watched the resolved Omarchy theme folder and rebound it after a symlink switch, so `colors.toml` edits stay live without a restart. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Settings window and general preferences](../features/settings/preferences/index.md) | Kept hidden entries in folder monitors, so dot-files other programs change while hidden files are off show at once when they are turned on. | -| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) | Showed translated text for unclassified GIO failures and "Permission denied" for untyped SMB credential rejections, so raw English backend text no longer reaches dialogs for URI locations. | +| [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Network locations (SMB, SFTP)](../features/remote/file-providers/network-locations.md) | Translated unclassified GIO failures and showed "Permission denied" for untyped credential rejections, so URI-location dialogs no longer show raw backend text. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [10xer place chords and folder picker](../features/integration/10xer-mode/places.md) | Showed the `g +` flash after the bookmark is saved, so new pins in slots 1–4 show their digit. | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Frame and content density](../features/browser/view-modes/density.md) | Reserved width and an 8 px gap for the snap buttons so they stop overlapping, and translated zh-TW "Airy". | | [lgse/strata#1909](https://github.com/lgse/strata/issues/1909) | 2026-10-29 | fix | [Sidebar](../features/browser/sidebar/index.md) | Made sidebar hover a neutral tint, so a hovered old place no longer looks like a second selected row. | diff --git a/qa/sweeps/settings.md b/qa/sweeps/settings.md index 4228c34..e42f595 100644 --- a/qa/sweeps/settings.md +++ b/qa/sweeps/settings.md @@ -18,7 +18,7 @@ For every control this sweep proves the binding: the file changes, the other win - Two windows of one process, Settings open in both on different pages, plus a second process on the same HOME for the cross-process cases. The portal chooser runs on that HOME through `scripts/chooser-dev.sh`. - Custom themes under `$XDG_CONFIG_HOME/strata/themes/`: `extreme.toml` with `background = "#ff0000"`, `text = "#ffffff"`, and the other 12 colors pure red or white; `bad-color.toml`, `missing-key.toml`, `tokyo-night.toml`, and a file of unparseable TOML. - A screenshot set per theme with `import` on the private display, repeated in Columns, Icons, and List. It holds a context menu, a modal dialog, a rename editor, a cut item, a focused selection, a hovered row, a code preview, and the Settings panel. -- Locale runs: `LANGUAGE=ar:ja`, `LANGUAGE=pt_PT:fr LANG=C`, `LC_ALL= LC_MESSAGES=ko_KR.UTF-8`, `LANG=de_DE.UTF-8@euro`, `LANG=ru_RU.UTF-8`, `LANG=hu_HU.UTF-8`, `LANGUAGE=xx:hu_HU:fr LANG=de_DE`, `LANG=zh_TW.UTF-8`, `LANGUAGE=zh-Hant:ja`, `LC_ALL=zh_MO.UTF-8`, `LANG=zh_MY.UTF-8`, `LANGUAGE=zh-Hans-TW`, `LANGUAGE=zh-Hant-HK`, and all four empty. Install CJK fonts with Simplified and Traditional Chinese glyphs, such as Noto Sans CJK SC and TC, for the ja, ko, and zh runs; none of the thirteen languages is right-to-left. +- Locale runs: `LANGUAGE=ar:ja`, `LANGUAGE=pt_PT:fr LANG=C`, `LC_ALL= LC_MESSAGES=ko_KR.UTF-8`, `LANG=de_DE.UTF-8@euro`, `LANG=ru_RU.UTF-8`, `LC_MESSAGES=hu_HU.UTF-8 LANG=C`, `LANGUAGE=hu`, `LANG=zh_TW.UTF-8`, `LANGUAGE=zh-Hant:ja`, `LC_ALL=zh_MO.UTF-8`, `LANG=zh_MY.UTF-8`, `LANGUAGE=zh-Hans-TW`, `LANGUAGE=zh-Hant-HK`, and all four empty. Install CJK fonts with Simplified and Traditional Chinese glyphs, such as Noto Sans CJK SC and TC, for the ja, ko, and zh runs; none of the thirteen languages is right-to-left. - A hostile desktop GTK setup under the throwaway HOME: `~/.config/gtk-4.0/gtk.css` with `* { outline: 3px solid red; font-family: serif; }`, `label { letter-spacing: 1px; color: red; }`, `button { min-width: 60px; padding: 12px; }`, `scrollbar { -gtk-icon-size: 40px; }`, and `@define-color strata_accent red;`; a `settings.ini` naming an installed desktop theme with `gtk-application-prefer-dark-theme=1`; and `~/.local/share/themes/StrataEmpty/gtk-4.0/gtk.css` holding the same rules. - A dotfiles folder at `$HOME/dotfiles` and a second on `/dev/shm`, for `settings.toml` and theme files symlinked across filesystems. A root-owned file and link made with `sudo` for the ownership cases. - A fake Quattro state at `$HOME/.local/state/omarchy/current/theme.name` and `current/theme/colors.toml` under the throwaway HOME. `current/theme` is a symlink, the way Omarchy lays it out. A script renames it away and back with 0, 1, and 5 s gaps. @@ -73,7 +73,7 @@ For every control this sweep proves the binding: the file changes, the other win - Rebind an action in `settings.toml` before launch, then search its old and new keys under English and `language = "ja"`. - Compare the navigation's icon column with the search field's icon at text size 8 and 48, labelled and icon-only. - Click the backdrop at each corner and edge strip around the Settings panel. Do it in a 640 px and a maximized window, at text size 8 and 48. Then click the panel padding, the navigation gap, and a scrollbar. -- In a `STRATA_UPDATER=disabled` build, search "update", "rollback", "release notes", and "channel" with labelled and icon-only navigation, then on a pacman-owned prefix; read the visible rows and navigation entries. +- In a `STRATA_UPDATER=disabled` build, search "update", "rollback", "release notes", and "channel" with labelled and icon-only navigation. Repeat on a pacman-owned prefix, reading the visible rows and navigation entries. ### settings/preferences/storage @@ -112,8 +112,8 @@ For every control this sweep proves the binding: the file changes, the other win - Under 正體中文 on an `en_US` system, with only Noto Sans CJK SC installed, then only TC, read Settings and a file list for mixed glyph forms. - Under 简体中文, read the sidebar toggle tooltip in full, compact, and hidden states, and the password remember choices in a mount dialog. - Under 简体中文, read the Tasks icon name in Customize… and the Danger color label in Add theme. -- Under Magyar, select 1, 2, and 3,000 items and read the footer count, a 1.5 MB size, a 1 234 567 byte Properties size, and a transfer rate. Fail a copy into a read-only folder and read the case after the colon. -- Run Deutsch, Magyar, and Русский at the 1250 px panel width and in the destructive-delete dialog; look for clipped labels, broken Hangul in Korean, and missing-glyph boxes without CJK fonts. +- Under Magyar, select 1, 2, and 3,000 items and read the footer count. Read a 1.5 MB size, a 1 234 567 byte Properties size, and a transfer rate. Fail a copy into a read-only folder and read the case after the colon. +- Run Deutsch, Magyar, and Русский at the 1250 px panel width and in the destructive-delete dialog. Look for clipped labels, broken Hangul in Korean, and missing-glyph boxes without CJK fonts. ### settings/preferences/date-format @@ -135,7 +135,7 @@ For every control this sweep proves the binding: the file changes, the other win - Repeat both on an Integrations install command, and with `$TERMINAL` set to a missing program. Press the button twice quickly and read the row and the process list. - On Integrations, press Run in terminal with `$TERMINAL` unset, no `xdg-terminal-exec`, and no listed terminal on `PATH`. Install one and press it again without Refresh. - Run with one custom action that cannot run and one broken action file, then with neither; compare with Settings → Actions. -- Run a `STRATA_UPDATER=disabled` build with and without network. Repeat with an install marker under its prefix, then on a pacman-owned prefix with no marker; read Installation, Update server, and the copied report. +- Run a `STRATA_UPDATER=disabled` build with and without network. Repeat with an install marker under its prefix, then on a pacman-owned prefix with no marker. Read Installation, Update server, and the copied report. ### settings/themes