Skip to content

K2GO-443 feat(code-addons): add-ons gallery updater on the durable job engine - #628

Merged
luisguzman-adfa merged 3 commits into
mainfrom
feat/K2GO-443-addons-job-engine
Oct 3, 2026
Merged

luisguzman-adfa merged 3 commits into
mainfrom
feat/K2GO-443-addons-job-engine

Conversation

@luisguzman-adfa

Copy link
Copy Markdown
Collaborator

Add-ons gallery content updater moves from the fire-and-forget refresh wrapper to the durable job
engine: live progress (percent/speed), pause/resume/retry, and resilience to a network change or drop.
Only the heavy add-on binaries (.cgp + source tarballs) go through aria2 (verified by sha-256); the
mirror stages the small files (shell, catalog, icons, pages) with its Cloudflare clean and catalog base
rewrite. Incremental: unchanged files reuse by the catalog sha; a same-build catalog with every file
present short-circuits as up to date (presence-aware, so a file lost out-of-band re-downloads).

dash-node 1.3.12: code-addons is a job type (POST /code-addons/download, GET /code-addons/jobs/:id,
pause/resume/retry/cancel over the generic /:type/* surface, like build-assets). Runner
sockets/code_addons.exec.ts + the shared sockets/aria2-download.ts; mirror_addons.py keeps the content
work (--print-aria2-input stages the small files and emits the heavy aria2 input, with a #status marker
so a small-file-only change still swaps; --finalize-only verifies). One shared _stage core keeps the
bake and legacy-wrapper path unchanged.

App: AddonsDownloadService (foreground, extends the shared ContentDownloadServiceBase) + reworked
AddonsRefresh (determinate bar, speed, pause/resume, cancel); removes AddonsRefreshClient.

Members-sheet fix (a K2GO-445 grouping regression, affecting the already-merged build-assets too): the
grouped Code-on-the-Go-Dev members had no per-row overflow, so a ready member tap opened its content and
the action sheet hosting "Update add-ons" / "Update build assets" was unreachable. Add a per-row overflow
(status -> menu -> open arrow, a Material more_vert vector) that opens the member action sheet, and give
each member its own glyph (Add-ons = extension, Build assets = box; they shared the code glyph).

The older POST /addons/refresh (wrapper) stays for now.

Verified: dash-node typecheck, app compile, l10n, mirror self-tests, double-pass review. Device-validated
on a OnePlus: REST end to end (download into dl/, sha-256 verify, atomic swap, self-heal, up-to-date) and
the app UI tap-through (overflow -> Update add-ons -> inline progress -> complete); build-assets update
now reachable too.

…evice test)

The same-build short-circuit only compared the served catalog, so a file lost out-of-band (interrupted
swap, disk, manual delete) was reported up to date while 404-ing, never self-healing. Now it also
requires every planned file present, matching the build-assets mirror. Caught on device.
…icons

The Code-on-the-Go-Dev members had no overflow, so a ready member's row tap opened its content and the
per-member action sheet (the only home of 'Update add-ons' / 'Update build assets') was unreachable: a
reachability regression from the K2GO-445 grouping. Add a per-row overflow (status -> menu -> open arrow,
48dp touch) that opens the member action sheet. Give Add-ons an extension glyph and Build assets a box
glyph (all three shared the code glyph before).
… a text glyph

M3 iconography: the per-member overflow was a TextView "vertical ellipsis" glyph (matching the legacy
grid-card overflow). Use an ic_more_vert vector in an ImageView, tinted like the other sheet icons.
@luisguzman-adfa
luisguzman-adfa merged commit f02644e into main Oct 3, 2026
3 checks passed
@luisguzman-adfa
luisguzman-adfa deleted the feat/K2GO-443-addons-job-engine branch October 3, 2026 18:10
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