Skip to content

Gnome: regenerate Flathub assets from gjsify.flatpak config (Phase F.9.4)#96

Merged
JumpLink merged 3 commits into
mainfrom
feat/regen-flatpak-from-gjsify-config
May 19, 2026
Merged

Gnome: regenerate Flathub assets from gjsify.flatpak config (Phase F.9.4)#96
JumpLink merged 3 commits into
mainfrom
feat/regen-flatpak-from-gjsify-config

Conversation

@JumpLink
Copy link
Copy Markdown
Owner

Summary

Closes the easy6502 → gjsify-flatpak-helpers migration. With gjsify 0.4.12's Phase F.9 + F.9.6 toolchain, gjsify flatpak init covers the full Flathub AppStream surface incl. translator hints. This PR replaces the hand-written manifest + MetaInfo + .desktop files with a single package.json#gjsify.flatpak config block that regenerates all four files via gjsify flatpak init --force.

Config content

  • App identity: appId, kind: "app", name: "Learn 6502 Assembly" (display-name override — see gjsify#199 for the new name field this depends on)
  • Developer: id + name + email + nameTranslatable: false (→ <name translate="no">)
  • summary + summaryTranslatorHint
  • description as DescriptionBlock[] — 4 blocks (3 paragraphs + 1 bullet list of 5 items) with translator hints preserved 1:1 from hand-written XML
  • License, 4 URLs, iconRemote, 9 keywords, 2 categories
  • branding (light + dark accents), contentRating w/ 2 OARS attributes
  • 4 kudos, provides binary, supports controls, requires/recommends display_length
  • 4 screenshots with caption translator hints
  • 12 releases (0.1.0 → 0.6.5) with rich per-release <description> blocks — every translator hint preserved

Verification

Check Result
jq -S diff regenerated vs hand-written manifest semantically identical
appstreamcli validate --strict on regenerated metainfo same baseline as hand-written (1 Info nonstandard-gnome-extension kudos)
Compiled .metainfo.xml via gjsify gettext refreshed with new translations (id, he)
.desktop.in superset of hand-written — preserves keys, adds Comment / Keywords / StartupWMClass
New yarn flatpak:regen refreshes all four files from one config edit

Drops + Adds

Drops (now generated):

  • 230-line packages/app-gnome/data/metainfo/eu.jumplink.Learn6502.metainfo.xml.in
  • packages/app-gnome/data/eu.jumplink.Learn6502.desktop.in
  • Root manifest eu.jumplink.Learn6502.json

Adds: flathub.json (empty {} — Flathub policy stub)

Dependencies

@gjsify/cli bumped ^0.3.16^0.4.13 (waiting on gjsify#199 → v0.4.13 release for the gjsify.flatpak.name display-name override surfaced during this migration).

Test plan

  • appstreamcli validate --strict on regenerated metainfo (same baseline as hand-written)
  • jq -S semantic diff manifest = empty
  • .desktop.in keys preserved + extended
  • Compiled .metainfo.xml matches new .xml.in + current .po files
  • CI: existing .github/workflows/flatpak.yml Flatpak build (same manifest path)
  • CI: meson appstreamcli validate test

Re-running the scaffold

# Edit `package.json#gjsify.flatpak` then:
yarn flatpak:regen

JumpLink added 3 commits May 18, 2026 22:29
…gjsify.flatpak config

Phase F.9.4 — completes the easy6502 → gjsify-flatpak-helpers migration.
With gjsify 0.4.13's `flatpak init` covering the full AppStream surface,
the hand-written manifest + MetaInfo + .desktop files are now generated
from a single `package.json#gjsify.flatpak` config block.

What's in the config now:

- `kind: "app"` — desktop-application MetaInfo + .desktop scaffolding
- `name: "Learn 6502 Assembly"` — display name override (npm pkg name
  is `learn6502`, doesn't match display name; needs the F.9.7
  `gjsify.flatpak.name` override from gjsify#199)
- `developer` with id, name, email, `nameTranslatable: false` →
  emits `<name translate="no">Pascal Garber</name>` like before
- `summary` + `summaryTranslatorHint`
- `description` as DescriptionBlock[] — 4 blocks (3 paragraphs + 1
  bullet list with 5 items), each with translator hints carrying the
  same context strings the hand-written XML had
- license (CC0-1.0 metadata, GPL-3.0-or-later project)
- homepage / bugtracker / vcs-browser / translate URLs
- iconRemote (Flathub thumbnail URL)
- 9 keywords (TRANSLATORS comments dropped — these are technical
  terms: "6502", "Assembly", "IDE", "GNOME", etc. don't need
  per-keyword translator context)
- branding accent colours (light + dark)
- contentRating with 2 OARS attributes (social-info: mild, language-humor: mild)
- 4 kudos (ModernToolkit, HiDpiIcon, TouchscreenSupport, UserDocs)
- provides binary
- supports: keyboard + pointing + touch
- requires display_length ≥ 360 px (phone-portrait minimum)
- recommends display_length ≥ 480 px (tablet recommendation)
- 4 screenshots with captions + captionTranslatorHints
- 12 releases (0.1.0 → 0.6.5) with rich per-release `<description>`
  blocks carrying their translator hints — exact 1:1 with the
  hand-written history

Verification:
- `appstreamcli validate --strict` on the regenerated metainfo
  returns the same baseline result as the original (1 Info-level
  `nonstandard-gnome-extension kudos` message — expected, since
  AppStream kudos are a GNOME extension; identical to pre-migration)
- Generated manifest is semantically identical to the hand-written
  `eu.jumplink.Learn6502.json` (only whitespace/indentation differs;
  `jq -S` diff is empty)
- New `.desktop.in` is a superset of the hand-written one — adds
  Comment (from summary), Keywords (from gjsify config), and
  StartupWMClass (Flathub recommendation). All existing keys preserved
  byte-for-byte.
- Compiled `.metainfo.xml` regenerated via `gjsify gettext` from the
  new `.xml.in` + existing `packages/translations/*.po` — picks up
  recent translations that hadn't made it into the previous compiled
  output (Indonesian, Hebrew)

Re-running `yarn flatpak:regen` (new script) refreshes all four
files from the config. The skip-if-exists semantics of init mean
user edits to one file don't block regenerating the others; pass
`--force` (already in the script) to overwrite.

Devdep bumped: `@gjsify/cli` `^0.3.16` → `^0.4.13`.

Drops:
- The hand-written 230-line `eu.jumplink.Learn6502.metainfo.xml.in`
  (now generated)
- The hand-written `.desktop.in` (now generated, with extra keys)
- The hand-written manifest `eu.jumplink.Learn6502.json` (now generated)
Yarn 4 install with the bumped pin pulls 92 new dependencies (the
0.4.x @girs-* type packages + @gjsify infra). yarn install also
re-formatted package.json with multi-line array entries (cosmetic only —
content unchanged).
`gjsify flatpak init` writes JSON with 4-space indentation; the repo's
prettier config wants 2 spaces. Format the manifest in-place so
`yarn check:format` passes. Filed as gjsify follow-up: `flatpak init`
should consult prettier (or expose an --indent flag) so this step is
unnecessary going forward.
@JumpLink JumpLink merged commit 02f13e2 into main May 19, 2026
2 checks passed
@JumpLink JumpLink deleted the feat/regen-flatpak-from-gjsify-config branch May 19, 2026 07:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant