Skip to content

Releases: recovery image per product - #73

Merged
adamshiervani merged 1 commit into
devfrom
feat/recovery-per-product
Sep 18, 2026
Merged

adamshiervani merged 1 commit into
devfrom
feat/recovery-per-product

Conversation

@adamshiervani

@adamshiervani adamshiervani commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

The Mini's recovery image is a merged full-flash binary: bootloader, partition table, the firmware in the first OTA slot, erased OTA selection data. Written with esptool or a browser flasher at offset 0. It is built with the firmware and shares its version, so it lives next to it.

 src/skus.ts
-  "jetkvm-mini-ethernet": { system: "mini/jetkvm-mini.bin" },
-  "jetkvm-mini-wireless": { system: "mini/jetkvm-mini.bin" },
+  "jetkvm-mini-ethernet": { system: "mini/jetkvm-mini.bin", recovery: "mini/jetkvm-mini-full.bin" },
+  "jetkvm-mini-wireless": { system: "mini/jetkvm-mini.bin", recovery: "mini/jetkvm-mini-full.bin" },

The recovery redirect already reads prefix and file for the requested SKU from the table (#70), so registering the artifact is the whole change:

GET /releases/system_recovery/latest?sku=jetkvm-v2              -> system/<v>/skus/jetkvm-v2/update.img
GET /releases/system_recovery/latest?sku=jetkvm-mini-wireless   -> mini/<v>/skus/jetkvm-mini-wireless/jetkvm-mini-full.bin

JetKVM redirects are unchanged. The route keeps its historical name.

Not in this PR: the kvm-mini build does not produce jetkvm-mini-full.bin yet. Until it is uploaded, a Mini request 404s from the artifact lookup like any missing version.

Stack: 5 of 5. Based on #71. Independent of the devices PR.


Note

Medium Risk
Changes device firmware and recovery download URLs for a new product line; incorrect SKU mapping could serve wrong hardware images, though unknown SKUs remain rejected at the API boundary.

Overview
Registers full-flash recovery (mini/jetkvm-mini-full.bin) for jetkvm-mini-ethernet and jetkvm-mini-wireless in the SKU table, alongside their existing system OTA image (mini/jetkvm-mini.bin). Because /releases/system_recovery/latest already resolves prefix and filename from artifactFor(sku, "recovery"), Mini recovery requests redirect under the mini/ R2 prefix instead of system/, while JetKVM behavior stays the same.

Also documents mini as a valid Release.type / R2 prefix in the Prisma schema comment, extends sync-releases and SKU tests for the mini/ prefix (SKU-only layout, no legacy mini paths), and adds release API tests for Mini-only OTA responses (system fields only, no app), prerelease listing scoped to mini/, recovery redirects, and rejecting app-latest for Mini SKUs.

Reviewed by Cursor Bugbot for commit ff346ce. Bugbot is set up for automated code reviews on this repo. Configure here.

@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from 5403fa3 to 716d54e Compare September 18, 2026 14:59
@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from 9712ef8 to 071ed90 Compare September 18, 2026 14:59
@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor

cursor Bot commented Sep 18, 2026

Copy link
Copy Markdown

Skipping Bugbot: Bugbot is disabled for this repository. Visit the Bugbot dashboard to update your settings.

@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from 716d54e to e641567 Compare September 18, 2026 15:16
@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from 071ed90 to 396e05a Compare September 18, 2026 15:16
@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from e641567 to b852ad8 Compare September 18, 2026 15:25
@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from 396e05a to 6ec149a Compare September 18, 2026 15:25
@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from b852ad8 to 2440bff Compare September 18, 2026 15:40
@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from 6ec149a to 7e59429 Compare September 18, 2026 15:40
@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from 7e59429 to 9221287 Compare September 18, 2026 15:41
@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from 2440bff to 7b29c42 Compare September 18, 2026 15:41
@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from 9221287 to e2736a8 Compare September 18, 2026 15:52
@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from 7b29c42 to 4ba1d17 Compare September 18, 2026 15:52
@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from 4ba1d17 to bf58da8 Compare September 18, 2026 16:07
@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from e2736a8 to 6afa94f Compare September 18, 2026 16:07
@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 6afa94f. Configure here.

@adamshiervani
adamshiervani force-pushed the feat/mini-product-releases branch from bf58da8 to b8119e9 Compare September 18, 2026 16:25
The Mini's recovery image is a merged full-flash binary: bootloader,
partition table, the firmware in the first OTA slot and erased OTA
selection data, written with esptool or a browser flasher at offset 0.
It is built with the firmware and shares its version, so it lives next
to it: mini/<version>/skus/<sku>/jetkvm-mini-full.bin.

The recovery redirect already reads the prefix and file name from the
product table, so registering the artifact is the whole change.
JetKVM redirects are unchanged.
@adamshiervani
adamshiervani force-pushed the feat/recovery-per-product branch from 6afa94f to ff346ce Compare September 18, 2026 16:25
@adamshiervani
adamshiervani changed the base branch from feat/mini-product-releases to dev September 18, 2026 16:26
@adamshiervani
adamshiervani marked this pull request as ready for review September 18, 2026 16:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-18T16:28:13.690904Z ff346ce Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@adamshiervani
adamshiervani merged commit 80b5437 into dev Sep 18, 2026
2 checks passed
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