Record: format research and readers

Outcome

The project was created from 00-project-skeleton and phase 1 was completed. The AppImage and desktop entry formats were researched from their authoritative specifications and are recorded in documents/07 through documents/09. The project now reads AppImage containers, their SquashFS payloads, and desktop entry files, and it locates desktop files through the GNOME and XDG search path. Both readers are reachable through the command-line tools appimage-inspect and desktop-inspect.

What Was Built

Area Files
AppImage container reader sources/appimage/appimage_reader.h, sources/appimage/appimage_reader.cpp
SquashFS payload reader sources/appimage/squashfs_reader.h, sources/appimage/squashfs_reader.cpp
Desktop entry reader sources/desktop/desktop_entry_reader.h, sources/desktop/desktop_entry_reader.cpp
Desktop entry locator sources/desktop/desktop_entry_locator.h, sources/desktop/desktop_entry_locator.cpp
Command-line tools sources/tools/appimage_inspect.cpp, sources/tools/desktop_inspect.cpp
Build sources/CMakeLists.txt, scripts/program-build.sh, scripts/version-generate.sh

Decisions

Verification

Verified 2026-09-21 with make test from a clean tree; all tests passed.

Test Tier Result
tests/00-skeleton.sh portable pass
tests/01-site-build.sh portable pass
tests/02-test-run-log.sh portable pass
tests/10-desktop-entry-reader.sh portable pass
tests/20-desktop-entry-locator.sh portable pass
tests/30-appimage-reader.sh portable pass
tests/40-squashfs-payload-reader.sh tool-gated on mksquashfs pass for gzip, xz, zstd, and uncompressed blocks
tests/50-desktop-search-path-live.sh live-state PASS, 5 existing directories, 190 entries, 0 warnings
tests/60-command-line-tools.sh integration pass

Additional evidence:

Commits

Next Tasks

  1. Decide the open questions in TODO.md, especially the icon policy and whether integration installs a desktop file.
  2. Implement phase 2: install a desktop entry for an AppImage under $XDG_DATA_HOME/applications and verify it appears in the GNOME application menu.
  3. Consider extracting .DirIcon or resolving Icon= through the XDG icon theme for the installed entry.