Skip to content

Sync lgse/strata#1934, #1909, #1918, #1837: admin folders, builds without the updater, Hungarian, stale-state fixes - #49

Open
wmfeht wants to merge 17 commits into
claude/friendly-cray-rvlc98from
claude/friendly-cray-83sucw
Open

wmfeht wants to merge 17 commits into
claude/friendly-cray-rvlc98from
claude/friendly-cray-83sucw

Conversation

@wmfeht

@wmfeht wmfeht commented Oct 29, 2026

Copy link
Copy Markdown
Owner

Stacked on #47

Closes #48

Read this first

Upstream range

73b3258ff9da7fd5f8b279e442e4fbf576850deb (#47's watermark) → 44bfeab305cfb68993bafcf4794fe0bbf7ff1433: 4 commits, 4 PRs, no direct pushes. Every touched node and sweep is reviewed at 44bfeab.

PR Type Merged (UTC) History row on
lgse/strata#1934: build without the in-app updater, license every file as MIT feat(packaging) 2026-10-29 app/updates
lgse/strata#1909: resolve verified stale-state QA findings fix(ui), batch of 8 fixes (closes #1862) 2026-10-29 see below
lgse/strata#1918: add Hungarian locale feat(i18n) 2026-10-29 settings/preferences/language (drift)
lgse/strata#1837: open unreadable local folders as administrator feat(browser) 2026-10-29 new node browser/navigation/administrator-access
  • #1934 was in triage. It gets one row on app/updates, for the STRATA_UPDATER=disabled switch.
    • The licence change only edits SPDX header comments, which is trivial and gets no row.
    • It is not split into two batch rows, because the two candidate nodes are a parent and its child (app/updates, app/updates/install).
  • #1909 is a batch: its body and closing issue #1862 list 8 fixes. Each fix has one row:
    1. Omarchy rebinds after a current/theme switch → settings/themes, which owns theme.rs. The Behavior is on omarchy.
    2. Neutral sidebar hover → browser/sidebar.
    3. Translated unclassified network-location errors → remote/file-providers/network-locations.
    4. One shared update-check snapshot for every Updates row → app/updates.
    5. Folder monitors keep hidden entries → settings/preferences, which owns the hidden-files toggle, its QA scenario, and docs/preferences.md. The Behavior is on browser/directory-monitoring.
    6. The g + flash waits for the bookmark save → integration/10xer-mode/places.
    7. Breadcrumb width and scroll → browser/navigation/location-bar.
    8. Density button gap and zh-TW "Airy" → browser/view-modes/density.
  • #1837 passes the Nest rule (own origin, Behavior, test module, and doc), so its new node takes the row.

Per node

New

  • browser/navigation/administrator-access: origin {issue: lgse/strata#1836, pr: lgse/strata#1837}, shipped, draft.
    • code: []: every implementing file is a sweep trigger or belongs to app/infrastructure. tests: [src/app/browser/tests/administrator.rs], docs: [docs/administrator-access.md].
    • Behavior:
      • which folders are marked locked (access(2), so ACLs count)
      • the open routes that redirect to admin://, with percent-escaping
      • arrow keys raise no prompt
      • Open as Administrator in dialogs, columns, and panes where GIO supports admin
      • typed admin:///
      • silent refusals
      • the Administrator crumb and notice
    • Design is from #1836 and #1837.
    • Known gap: the admin:// mount can't be unmounted (#1837).
    • Added to site/unguided.yaml.

app

  • app/updates: rows for #1909 and #1934.
    • Front matter: code += src/ui/settings/update_status.rs (new in #1909). docs += docs/packaging.md, which I removed from the child package-managed, since children inherit docs.
    • #1934 Behavior: new "Builds without the updater" group: no Updates page, no automatic checks, and how STRATA_UPDATER values are accepted or rejected.
    • #1909 Behavior: the startup result reaches every row, Check now leaves other rows' offers alone, the pacman/Omarchy non-stable startup offer, and the preference-change reset.
    • Design: the snapshot replaces the offer cache; why Check now spares other rows; the #1933 alternatives.
    • Gap: a row with an install underway ignores newer results (l0gicgate's comment on #1909).
  • app/updates/install: Design line saying a disabled build refuses installs (#1934, docs/packaging.md).
  • app/dialogs: the Open as Administrator error dialog focuses its button, and its cancel button reads Close (#1837).
  • app/accessibility: "Folder that requires administrator access" and the folder-link variant (#1837).
  • app/packaging: the desktop entry has hu (#1918).
  • app/packaging/installer: hu* locales get Hungarian messages (#1918).
  • reviewed_at only: infrastructure, window, window/key-dispatch, keyboard-shortcuts/remapping.

browser

  • navigation: the unreadable-folder dialog bullet is now limited to Columns, for folders not yet marked or where GIO lacks admin (#1807, #1837, unverified). The Summary names the new child.
  • navigation/location-bar: #1909 row.
    • Crumbs keep up to 32 characters and the row scrolls; the current crumb is revealed after layout and after editing.
    • The "l…" gap is dropped.
    • admin is now an accepted scheme.
  • sidebar: #1909 row. Place rows use a neutral hover tint. The #1862 gap is dropped.
  • view-modes/density: #1909 row. The buttons sit at least 8 px apart with reserved width, and zh-TW "Airy" reads 寬鬆. The gap is dropped.
  • directory-monitoring:
    • The "dot-files ignored" bullet is rewritten (#1909), plus a Design bullet. The F5 gap is dropped.
    • New gap: metadata fills on admin:// rows can prompt after the grant expires. l0gicgate's review on #1837 is the only source.
  • #1837 bullets, no rows:
    • context-menu: Open With hidden; Permanently delete instead of Move to Trash.
    • view-modes: pane button and notice.
    • view-modes/columns: column button; notice on the root column only.
    • selection/keyboard-navigation: Tab order Open as Administrator → Retry.
    • thumbnails: no admin thumbnails; in-place lock icon; custom icons kept.
    • tabs/session-restore: admin tabs skipped (#1836, #1837).
  • sidebar/pins/drag-to-pin: tests narrowed from the sidebar_pinning folder to 4 explicit files. tenxer-pin-feedback-identifies-slot.jsonl (new in #1909) goes to integration/10xer-mode/places.
  • reviewed_at only: the other drift-listed browser nodes.

integration

  • 10xer-mode/places: #1909 row.
    • The g + flash waits for the save and names slot g 1–g 9.
    • A failed save flashes "Can't pin" (unverified).
    • The tenth-pin bullet now also cites #1909.
    • The #1862 gap is dropped, and the new scenario is added to tests.
  • 10xer-mode/file-verbs:
    • d in an admin folder opens the permanent confirmation (#1837).
    • O with an admin target refuses with a flash (unverified).
  • open-with: activating a file in an admin folder shows "Unable to open item" with the refusal, plus a Design bullet (#1836, #1837).
  • portal-file-chooser: an unreadable folder never offers Open as Administrator (#1837). related now links the new node.

operations

  • trash:
    • Admin items count as lacking Trash, whether or not their folder is open.
    • The no-Trash dialog's second paragraph reads "Trash isn't available when browsing as administrator."
    • Sidebar Trash refuses drops from admin folders.
    • The remote-item definition now excludes admin:, so admin items get the local wording.
    • Design bullets from #1836.
  • undo: copies (including Replace), New Folder, and New File into an admin folder record no entry and keep the redo history. Rename and moves still record (#1837).
  • clipboard/conflicts: in an admin folder:
    • Merge is not offered.
    • A file replacing a file is overwritten in place.
    • Replacing a folder fails with "Safe replacement is unavailable at this destination".
    • The Failure-safety and Undo bullets are qualified for admin.
    • Gap: replacing a local file with one copied from an admin folder fails (#1837 body).
  • reviewed_at only: archives, clipboard, delete/dissolve, trash/animation.

settings

  • preferences/language: #1918 row.
    • Thirteen languages, Magyar in the menu, detection for hu_HU, Hungarian digit grouping and durations.
    • Lower-case error details after a colon (#1519, #1918, unverified).
    • Design pointer to network-locations (#1909).
  • preferences: #1909 fix-5 row and Design bullet.
    • #1934: Updates nav and search bullets now say "In a default build". A disabled build finds no Updates row.
    • #1918: "Magyar" and "Hungarian" find Language.
  • preferences/date-format: Hungarian Long date and weekday (#1918).
  • diagnostics: in a disabled build with no install marker, Installation reads "In-app updates are disabled in this build."; with a marker, it reads the marker's ownership (unverified) (#1934).
  • themes: #1909 fix-1 row. The link-chain gap now names custom theme files only (#1887).
  • themes/omarchy: editing colors.toml after a current/theme switch re-applies the palette (#1909), plus a Design bullet. An inner-link repoint does not reload (unverified; see Bugs).
  • reviewed_at only: icons, icons/catppuccin.

remote

  • file-providers/network-locations: #1909 row.
    • A named GIO error on open or list shows its translated reason.
    • A refused credential on a mount reopens sign-in (#233).
    • On a mount, other named errors show their translated reason, unless a more specific message applies.
    • Any other unclassified error shows "An unexpected system error occurred".
    • Untyped refused-credential text shows "Permission denied".
    • For URI locations, backend text goes only to the DEBUG log.
    • Native-path mounts keep sanitized backend text (unverified).
    • Design bullets.
  • file-providers/kde-connect, localsend: provider messages in Hungarian under hu_HU (#1918).

devices and preview

  • devices/volumes: device rows share the neutral hover (#1909, the 6% figure unverified). The rows are built in src/ui/window.rs, an app trigger, so the bullet goes on the feature it serves.
  • preview/quick-preview/folder-peek: a peek of an unreadable folder shows no Open as Administrator (#1837, unverified). This is an ownership fix: peek.rs passes no admin button. The bullet first sat on the new node.
  • reviewed_at only: devices/volumes/camera, preview/preview-panel and its layout, model-views, and routes children.

scopes.yaml is unchanged.

QA

All 8 sweeps are touched, and each has reviewed_at: 44bfeab.

  • Probes added:
    • app: STRATA_UPDATER values; updates in a disabled build, a stalled startup check, Check now with a failing proxy, install plus check plus cancel; dialogs; locked-folder accessibility with ACLs; hu_HU launcher and installer. Setup adds a disabled build.
    • browser:
      • a new ### browser/navigation/administrator-access section
      • keyboard navigation, view modes, breadcrumbs, density at text sizes 8 and 48, sidebar hover
      • thumbnails, context menu, dot-files on sshfs and in 10k folders, admin:///root session restore
      • Setup adds a root-owned folder with GVfs and polkit, run by hand.
    • integration: chooser, g + with a read-only bookmarks file, O and activation in admin folders.
    • operations: conflicts (four copy shapes), trash and undo in admin folders, including redo.
    • settings: Magyar language and date runs, disabled-build search and Diagnostics (marker, no marker, pacman prefix with no marker), Omarchy symlink repointing. triggers += data/locales/hu.json.
    • remote: unclassified failures and SMB credential variants.
    • devices: device-row hover.
  • Probes retired:
    • the duplicate dot-file probe in the settings sweep, handed off to browser
    • the drag-to-pin coverage of tenxer-pin-feedback-identifies-slot, now on places
  • Tier-1 plans (qa --pr N --tier 1). None has "Unmapped changes".
    • #1934: primaries app/infrastructure, app/updates/install, location-bar/completion, delete/dissolve, trash/animation, settings/diagnostics, settings/preferences. Sweeps: app, browser, operations, settings (trigger data/locales/messages/**).
    • #1909: 16 primary nodes. Sweeps: app, browser, integration, settings, and operations by trigger (services/file_source.rs).
    • #1918: primaries in app, remote, and settings (language, date-format, preferences). Triggers include data/locales/hu.json.
    • #1837: 36 primary nodes, including the new node. Sweeps: all 8.

Needs a person

  • Row placements I decided (the batch rule read literally would put them on the fallback node):
    • #1909 fix 3 is on network-locations. Most of its lines are in services/file_source.rs (unowned) and local_files.rs (app/infrastructure).
    • #1909 fix 7 is on location-bar. Its lines are in location.rs (app/infrastructure) and ui/browser.rs (trigger).
    • #1909 fix 5 is on settings/preferences, with its Behavior on directory-monitoring.
    • #1934 has one row. The licence-header change has none.
  • Ownership questions:
  • Not shipped from #1836, so not recorded: #1836 asked that a refused prompt say so, and that a missing polkit agent get its own message. #1837 is silent for both, and its body does not state the remainder.
  • Proposed children / triggers / scopes: none.
  • Unmapped files: none. #1934's message catalogs and #1909's zh-TW.json hit existing settings triggers; hu.json was added as a trigger.
  • (unverified) claims added: 33. List them with git diff origin/claude/friendly-cray-rvlc98...HEAD -- features | grep '^+' | grep '(unverified)'.

Bugs and upstream doc contradictions

None was filed upstream. Issue search (search/issues) is blocked in this session. Instead, the research agents listed the 600 newest lgse/strata issues and PRs and checked titles and bodies; none covers these.

  • Found by code reading:
    • A STRATA_UPDATER=disabled build's Diagnostics "Update server" check still contacts api.github.com/rate_limit.
      • On failure it reports that update checks are unavailable, in a build with no update checks.
      • Code: src/services/diagnostics.rs:431-433, 800-805; no updater_enabled() gate.
      • Recorded (unverified) on settings/diagnostics.
    • Follow Omarchy: when current/theme points to a folder that is itself a link, repointing that inner link does not reload the palette.
      • Code: src/ui/theme.rs:1171-1180 watches only the canonical target and the state folder's ancestors.
      • Recorded (unverified) on settings/themes/omarchy.
  • Stated by a maintainer, no issue filed:
    • Metadata fills on visible admin:// rows go through GIO and can raise an unasked polkit prompt after the grant expires (l0gicgate on #1837). Recorded as a gap on browser/directory-monitoring.
    • An Updates row with an install underway ignores newer results, and cancelling or failing the install doesn't restore it (l0gicgate on #1909). Recorded as a gap on app/updates.
  • Upstream doc contradicting the code at 44bfeab: docs/remote-sftp.md:48-49 still says backend text reaches the dialog with user info stripped. Since #1909, URI locations show translated text instead.

Site pages made stale (for the next release docs run; not edited)

  • reference/remote-sftp.md:149-151: backend error text (#1909).
  • guide/settings.md: "11 languages" (now 13, #1918), the Updates page in builds without the updater (#1934), and Diagnostics Installation.
  • reference/signed-updates.md and guide/install.md: the STRATA_UPDATER=disabled build switch (#1934).
  • guide/views.md and reference/keyboard-navigation.md: Open as Administrator, the lock icon, and the admin notice (#1837).
  • guide/operations.md: Trash, Undo, and Replace in admin folders (#1837).
  • guide/10xer.md and reference/10xer-mode.md: d and O in admin folders (#1837); g + slot feedback (#1909).
  • guide/themes.md: sidebar hover and Follow Omarchy symlink switches (#1909).

Review loop

Three rounds, each with one fresh adversarial reviewer per area group: app (+devices), browser, integration+operations, settings+remote. A fresh verifier checked every blocking finding before any fix. No finding was refuted.

  • Round 1: 5 blocking findings, all confirmed and fixed:
    • the STRATA_UPDATER bullets were on app/infrastructure; moved to app/updates
    • a duplicate chooser bullet on two nodes
    • an untestable Merge case on undo
    • contradictory trash drop bullets
    • a false all-views unreadable-folder dialog bullet on navigation
    • About 30 minor fixes, including the metadata-fill gap moved to its code owner, the device-row hover moved to devices, and long sentences.
  • Round 2: 6 blocking findings, all confirmed and fixed:
    • the trash remote-item definition (admin is local)
    • diagnostics naming pacman ownership instead of the install marker
    • the typed-error mount bullet on network-locations
    • an unsourced "Follow Omarchy is not affected" gap claim
    • review: draft on a front-matter-only node
    • a duplicate Open as Administrator offer on app/dialogs
    • Also an unsourced density example.
  • Round 3: 1 blocking finding, confirmed and fixed: the folder-peek bullet moved to preview/quick-preview/folder-peek. All round-3 minors were applied, except the ones listed below.
  • Unresolved minors:
    • Design lines on settings/preferences (#1909 hidden entries) and settings/preferences/language (network-location pointer) partly repeat Design on the nodes that own the code. Both are sourced.
    • The (unverified) Update server bullet on diagnostics cites #1934, which did not change that path.
    • Older probes in the browser sweep run past 25 words if semicolon clauses count as one sentence. They predate this sync.

Generated by Claude Code

claude added 17 commits October 29, 2026 17:08
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
…iew and devices nodes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
…ss node; regenerate indexes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
…egenerate indexes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE
…to its owner

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQ23ABVQmsKTvBAiWPnosE

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants