Skip to content

Exercise every simulator profile in a matrix - #116

Open
abhishek-anand wants to merge 34 commits into
betafrom
feature/simulator-profile-matrix
Open

Exercise every simulator profile in a matrix#116
abhishek-anand wants to merge 34 commits into
betafrom
feature/simulator-profile-matrix

Conversation

@abhishek-anand

@abhishek-anand abhishek-anand commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Run the simulator against every supported reader profile and keep the report out of the screenshot tree.
  • Map Libra 2 page buttons to the pose the device actually uses, and reject dangling matrix output symlinks.

Test plan

  • kobo simulator matrix job produces a report for each profile
  • Libra 2 page-turn pose matches the hardware

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Copilot AI lite review requested due to automatic review settings September 4, 2026 07:51

Copilot AI 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.

🔵 Needs a closer look

It changes safety-critical installer/bootstrapping and credential-handling paths alongside broad protocol/simulator updates, and needs careful human verification beyond automated review.

Pull request overview

This pull request broadens the simulator and release tooling to cover all supported device profiles, while introducing protocol-12 compatibility rules, app-scoped credential storage (with in-app setup), and a stable launch/bootstrap path that remains valid across OTA-managed version tree swaps.

Changes:

  • Extend release/version tooling for protocol 12 (minimum Cobalt 0.3.5) and tighten “compatible-change” isolation (including Cargo.lock gating).
  • Add app-scoped credential install/read paths (including SetSecret + SDK CredentialSetup) and update docs/apps to the new minimum/runtime behavior.
  • Introduce a stable .adds/cobalt-launch.sh bootstrap and safer install/undo semantics, plus expanded simulator profile documentation/testing.
File summaries
File Description
tools/check-app-versions.test.mjs Adds protocol-12 and lock isolation tests
tools/check-app-versions.mjs Protocol minimums + Cargo.lock isolation logic
tools/app-release-compatible-changes.json Protocol-12 reviewed compatible blob set
SECURITY.md Clarifies OTA vs USB activation behavior
SDK.md Documents app-scoped credentials + setup flow
scripts/shoot-apps.sh Updates gallery/launcher shot routes for Folio
README.md Reframes simulator as profile-driven
examples/launcher/README.md Updates launcher screenshots/copy for Folio
examples/launcher/Cargo.toml Adds kobo-profile dev dependency
examples/gallery/src/main.rs Adds Folio/V2 acceptance + ghosting page
examples/gallery/README.md Documents V2/Folio acceptance surface
docs/RELEASE-TRAIN.md Adds protocol-transition acceptance steps
docs/INSTALL.md Bumps version to 0.3.5 + bootstrap/undo notes
docs/DEVICES.md Adds simulator profile facts and bootstrap path
docs/DEVELOPING.md Documents matrix runs + per-profile simulation
docs/CONTRIBUTING_APPS.md Updates beta workflow + credential setup guidance
docs/apps/zotero-reader/index.html Bumps app + minimum Cobalt to 0.3.5
docs/apps/gallery/index.html Bumps app + minimum Cobalt to 0.3.5
docs/APP_STORE.md Documents beta-only publishing + protocol-12 rules
crates/kobod/src/main.rs Simulation profile metrics + host secret handling
crates/kobod/src/device.rs Adds per-app protocol version + SetSecret handling
crates/kobo-ui/Cargo.toml Adds unicode-width + profile dev dependency
crates/kobo-text/src/lib.rs Adds serif display discovery + legacy typography split
crates/kobo-sdk/src/terminal.rs Reworks terminal keyboard layout + extensive tests
crates/kobo-sdk/src/lib.rs Adds Folio primitives + SetSecret API
crates/kobo-sdk/src/keyboard.rs Adds masked secret entry helpers
crates/kobo-sdk/src/credentials.rs New SDK modal credential setup flow
crates/kobo-sdk/Cargo.toml Adds dev deps for profile/layout tests
crates/kobo-profile/src/lib.rs Adds hardware capability facts + pose validation
crates/kobo-policy/src/tasks.rs App-scoped secret lookup with global fallback
crates/kobo-policy/src/services.rs Simulated SetSecret response wiring
crates/kobo-policy/src/credentials.rs App-scoped secret install + validation
crates/kobo-cli/src/setup.rs Installs bootstrap; safer undo with recovery slots
crates/kobo-cli/src/panel.rs Fixes present option parsing formatting
crates/kobo-cli/src/package.rs Allows reviewed bootstrap member + new folder writers
crates/kobo-cli/src/menu.rs NickelMenu entry now targets stable bootstrap
crates/kobo-cli/src/bootstrap.rs New stable bootstrap install/migration/remove logic
crates/kobo-cli/Cargo.toml Adds protocol/sdk deps for CLI features
crates/kobo-abi/src/lib.rs Adds open_read_nofollow helper
Cargo.toml Bumps workspace version to 0.3.5
Cargo.lock Updates workspace crate versions/deps
assets/cobalt-launch.sh New stable launch script outside version trees
apps/zotero-reader/src/main.rs Adds credential setup + retries on NoCredential
apps/sudoku/src/main.rs Moves actions to top bar
apps/catalog.json Bumps gallery/zotero versions + minimum Cobalt
apps/backgammon/src/main.rs Avoids empty points grid layout
apps/arxiv/src/main.rs Moves Search to top bar glyph
Review details
  • Files reviewed: 52/54 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +63 to +71
if temporary.exists() {
let kind = fs::symlink_metadata(&temporary)
.map_err(|_| kobo_protocol::DeviceError::Backend)?
.file_type();
if !kind.is_file() && !kind.is_symlink() {
return Err(kobo_protocol::DeviceError::Backend);
}
fs::remove_file(&temporary).map_err(|_| kobo_protocol::DeviceError::Backend)?;
}
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.

2 participants