Files
reverse-engineering-anything/docs
fa0fcf35ce fix(desktop): resolve desktop entry ids that name a nested entry (#9563)
* fix(desktop): resolve desktop entry ids that name a nested entry

The desktop file id of an entry below an applications folder replaces
the directory separators with dashes, so applications/vendor/foo.desktop
advertises vendor-foo.desktop. locateDesktopEntry only probed the flat
path, so such an entry was either not found or, when a lower-priority
XDG root installed a flat file with the same id, a different
application was launched under the requested id.

List each applications directory instead and form every entry's id from
the path that holds it, so a dash inside a directory name does not
change the answer. The walk is bounded and stops reporting absence once
it can no longer decide, so a truncated search refuses instead of
falling through to a lower-priority root.

* fix(desktop): search nested entry directories without skipping answers

Three defects in findNestedDesktopEntry, all of which could select a lower-priority application under the same desktop file id:

`readdir` failure was treated as an empty directory, so an applications root or nested directory that could not be listed silently yielded to a lower-priority root. Only ENOENT and ENOTDIR now mean the root is not installed; any other failure reports desktop_entry_search_incomplete.

A directory whose own name ends in `.desktop` was skipped before it was searched, so `vendor.desktop/app.desktop` (id `vendor.desktop-app.desktop`) was unreachable. The suffix now selects a candidate only for files; directories still descend.

The entry budget was applied after `readdir` had materialized every name, so a large directory allocated far more than the 4096 entries it may examine. The walk now enumerates with `opendir` and charges the budget per entry.

* fix(desktop): finish the reachable nested search before reporting a gap

An unreadable or over-budget subtree is not proof the entry is absent, but
returning truncated as soon as one was met stopped the walk before the
siblings that could still hold it. The entry then looked incomplete even
though this root could answer, so a lower-priority root was never consulted
and the search reported a gap instead of the entry.

* test(javascript): distinguish package scope in route fixtures

* test(apple): separate identity and refusal fixture groups

* fix(desktop): resolve only applicable desktop ID paths

* test(desktop): cover applicable probe failure before a matching spelling

---------

Co-authored-by: 2SinceJuly <202121119+2SinceJuly@users.noreply.github.com>
Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
2026-11-09 21:47:20 +08:00
..

Documentation directory

REA documentation is organized by reader task and document owner. This directory links every authored guide; the site also serves separate product pages. The VitePress documentation source is this docs/ tree.

Getting started

Native binaries

JavaScript and Electron

Browser and captured websites

Android applications

Apple applications

.NET assemblies

Firmware

HarmonyOS packages

WebAssembly

EVM contracts

Databases and recorded packets

Process capture and instrumentation

Signal recordings

Provider setup and formats

Contracts and evidence

Development and verification

Release migrations

Architecture and authoring

Machine-owned documentation

Path Owner and update command
public/product-catalog.json Ignored contract projection; npm run docs:generate
verification/managed-conformance-*.json Ignored managed conformance projections; npm run evidence:generate
error-contract.schema.json Tracked schema from contracts; npm run docs:error-schema
user-visible-errors.csv Authored error classification inventory; preserve its schema
releases/<version>.contributions.json Durable release contribution record; follow the release guide
assets/ Shared authored images referenced by guides

Do not edit generated catalogs or evidence to change product facts. Change their canonical contracts or producer and regenerate. Historical release records retain the exact commit messages and references from the release they describe.

Additional guides