Releases: blueworkslabs/construct
Release list
Construct alpha31 — module-owned Camera phone pilot
Camera is module-owned
Install the ARM64 alpha31 APK in place, without uninstalling. Then update Pocket Camera to 0.2.1 and explicitly review its new grants. Alpha30's old native Camera grant cannot authorize photo pixels, private-library access, the new capture surface or local inference. Existing private originals and other module data are retained.
The reviewed PR includes Camera 0.2.1 in its catalog. Until production catalog propagation is verified, use the pinned Camera catalog:
https://ad140941.construct-20x.pages.dev/index.json
That test catalog does not include Measure's 0.2.5 loupe update. Use Measure's separate pinned catalog if installing that version:
https://72c51f5e.construct-20x.pages.dev/index.json
What changed
- Album, selected-photo workflow, face/object boxes/results and minimum-score filter ship inside the signed Camera module.
- The shell retains reusable native CameraX viewfinder/shutter, confirmed private-photo operations and bounded offline CPU inference.
- Old native Camera versions show Update required; their saved photos can still be deleted through host Module access. Rollback into retired native code is explicitly blocked.
- No native Sky, Measure or Camera application workspace remains. No DEX loading, unrestricted WebView camera, live-frame bridge or network access was added.
Verification and limits
Use the accompanying acceptance.json and repository acceptance report for exact source, checks, hashes and unmodified captures. The APKs are frozen b11381e build outputs, not rebuilt from a later docs/catalog-only commit. Camera ZIP bytes are immutable 0.2.1.
Synthetic API37 emulator evidence is not physical ARM64 camera, accuracy, thermal or battery acceptance. This preserves saved-photo analysis with native live preview; it does not demonstrate realtime video processing in a WebView. The controlled debug experiment found rendering improvements but also poor repeated full-canvas painting on this software renderer. Both are documented, along with rejected earlier candidates.
Phone-testing pilot
Published for physical-phone testing. The tester subsequently confirmed that it works as expected on a Pixel, and PR #30 was merged on 2026-09-20. This is user-reported functional feedback, not a quantitative phone benchmark. The release tag points to reviewed source plus documentation fixes at 1e73231; the unchanged APKs were built from b11381e.
Completed emulator scopes: Camera 18/18, migration 6/6, signed update/rollback 7/7, Measure regression 19/19, focused capture layout 4/4. 187 JVM tests and lint passed. The implementation CI passed; documentation-triggered CI was still running at publication.
Physical-phone checklist and acceptance report. Please report phone model/Android version, first versus repeated analysis wait, responsiveness, camera switching and any reproducible issues. Personal photo uploads are not needed.
Construct alpha30 — Measure precision loupe pilot
Construct alpha30 — Measure precision loupe pilot
Merged implementation; exact-artifact pilot prerelease.
Install
Install the ARM64 alpha30 APK over the existing app; do not uninstall. The x86_64 APK is for the emulator.
In the module catalog settings use https://72c51f5e.construct-20x.pages.dev/index.json, then update Pocket Measure to 0.2.5. Install both the host and module for the complete reviewed candidate. Existing Measure 0.2.x grants remain subject to normal grant rules; upgrades from native Measure need fresh image-pixel and marker grants. Sky Watch 0.2.2 is unchanged.
Changes
- Module-owned magnifier for held endpoint placement and handle dragging, with aligned crosshair and edge-aware positioning.
- UI polish, correctly sized calibration input, coalesced canvas rendering, and corrected Android 2×-text/resize behavior.
- Human photo-picker requests no longer expire in the module; manifest validation rejects marker detection without declared image access.
Evidence
175 JVM tests, 29 module tests and zero lint errors; exact-artifact Android functional 19/19 and signed Measure 0.2.2 → 0.2.5 → 0.2.2 update/rollback 2/2 on identical APK bytes. Both PR heads have successful hosted CI. PR #29 latest automated review completed with no findings; PR #28 findings are resolved.
https://github.com/blueworkslabs/construct/blob/637a411/docs/measure-loupe-alpha30-acceptance.md
APK source: 8de6f89. Combined reviewed source: 637a411. No rebuild is required for module-only changes. Checksums are in SHA256SUMS.
Physical ARM64 phone acceptance and real-camera accuracy remain unverified. Camera/live Sky and full legacy-retirement suites were not repeated on alpha30. Photos and measurements remain intentionally transient.
Delivery status
PR #29 and parent PR #28 are merged. Main merge commit: 2b83fcc. Its source tree is identical to reviewed 637a411. Merge-triggered CI runs are separate from the already-passing candidate runs.
The tested Measure 0.2.5 is available through the fixed candidate catalog linked above. The default catalog currently offers 0.2.2; use the linked catalog for the magnifier. Historical package bytes are unchanged.
Construct alpha29 — module-owned Measure
Pocket Measure moves into its downloadable module. The shell provides only bounded image selection/decoding and generic local marker detection; the module owns calibration, geometry, editing, units and screens. Web/hybrid architecture retained.
Install and update
- Install the ARM64 APK over your existing Construct app; do not uninstall.
- Pocket Measure needs its 0.2.2 module update as well as alpha29. Explicitly grant selected image pixels and local marker detection. The former native Measure grant is not carried over: selected pixels now reach module JavaScript under the new contract.
- While PR #28 remains unmerged, use this candidate catalog under Construct → Settings → Use catalog:
https://00fe7344.construct-20x.pages.dev/index.json. Review and install Pocket Measure 0.2.2. Production/main catalog is not promoted by this pilot. - Existing Measure 0.1.x remains manageable but shows Update required. Its native workspace and rollback into it are retired; saved module data remains intact. Alpha28 is the last native Measure host. An APK downgrade is not a promised recovery path.
- Sky Watch 0.2.2 needs no module change. Camera remains the unfinished native-workflow migration.
Behavior and privacy
Choose one saved photo containing the reference card, enter its measured black-square side, then place/drag/nudge endpoints. Module-owned Undo, zoom/pan, reset and centimetres/millimetres controls work locally. No networking, saved-data or diagnostic capability is declared by this module. Images, calibration and results are transient; leaving/backgrounding clears them. Rotation and the native menu preserve completed work.
The generic image contract strips original EXIF/provider metadata, bounds pixels and processing, and checks live grants/session identity. Other modules with broader granted capabilities can retain or send data they receive; revocation is not retroactive erasure. These are approximate planar measurements, not a certified accuracy guarantee.
Evidence
Frozen host source c26c85e; signed module source 1022428. Later runner/catalog/docs changes leave both artifacts unchanged. Local: 174 JVM tests, lint zero errors, 18 module tests, 67 runner tests. APKs preserve signing identity, permissions and 17 protected assets; only the marker JNI native library changes. Native Sky and Measure classes are absent. Exact-APK Android checks passed: functional/lifecycle/layout 18/18, retirement/upgrade 5/5, signed units update/rollback 2/2. Synthetic screenshots reviewed in portrait, landscape and 2× text. At large text sizes, supporting copy requires scrolling the control panel.
No physical-phone acceptance claimed. Earlier debug prototype and incomplete runs are separate evidence, not acceptance of these optimized artifacts. PR #28 is not merged. The full Camera and live Sky device suites were not rerun.
Construct alpha28 — native Sky retirement pilot
Native Sky retirement pilot
This candidate completes the first native-domain extraction. Sky Watch continues to run from its unchanged signed 0.2.2 module; the host APK no longer contains native Sky networking, data models, aircraft identity/metadata or map/UI classes.
Install and compatibility
Install the ARM64 APK over your current Construct installation. Do not uninstall.
- Already using Sky Watch 0.2.2? No module update or catalog change is needed.
- Still using Sky Watch 0.1.0? Update it to 0.2.2 from the catalog. On this host, the old module shows Update required → Find update. Your selected catalog and saved module data are retained. Approve the modern module's internet access separately; optional location still requires its own consent.
- Native
sky.watchis retired. New installs, execution and rollback to versions requiring it are blocked. Supported module-to-module rollback still works. Alpha27 remains the last host with native Sky; this release does not promise APK downgrade support.
Camera and Measure still have native feature workflows and are explicitly tracked for later extraction. This is not a DEX loader migration or a claim that all shell cleanup is complete.
Exact-artifact verification
Frozen app source: 1dd5fc21a89356f8df779286ba150fc4e022ca49.
- 184 JVM tests; lint: zero errors. Architecture, module and runner checks passed.
- Same exact x86_64 APK: retirement/upgrade 5/5, unrelated Checklist workflow update/rollback 2/2, modern Sky 13/13.
- Three independently completed Android 17 emulator scopes, not one uninterrupted run or physical ARM64 acceptance. Camera/Measure full device suites were not rerun.
- Both ABI size and 16 KiB alignment checks passed; signer, permissions, 17 protected assets and native libraries match alpha27.
- Reviewed retirement UI at normal and 2x text in both orientations. The attached evidence records incomplete development runs and screenshot timing limitations; excluded frames are not offered as visual proof.
ARM64 APK SHA-256: d32f4a59d4553e6236574762a79e12ea8534d4a337b8fbe922ce8c4fdf5ec4fd.
Implementation/evidence: #25 (not merged at publication).
Next extractions: Measure #26 and Camera #27. Material agent assistance: Astra/Codex.
Construct alpha27 — consent and approximate-location fixes
Alpha27: consent and approximate-location fixes
This host update includes the review fixes for module updates and rollback:
- Removing HTTP clears its consent; narrowing destinations forgets removed origins even if the enabled switch is untouched. Later updates/rollback cannot silently recover that scope, including stale saved state from alpha26.
- Reintroduced sensitive capabilities require fresh opt-in, matching the installer’s off switch. Unchanged grants, explicitly revoked storage and saved module data remain preserved.
- Coarse-only location uses a permitted network provider without attempting fine-only GPS registration.
Install
Install the ARM64 APK over existing Construct; do not uninstall. Sky Watch 0.2.2 is unchanged and needs no further module update if already installed.
Continue using the pilot catalog: https://feat-modular-sky-watch.construct-20x.pages.dev/index.json
The production catalog and previous releases are unchanged. PR #23 remains open and unmerged; the legacy Sky launcher is still supported.
Exact-artifact verification
- Frozen host source:
b2b249b629eae93afd1c1b1ce786853b33187887. Later PR commits only change test drivers, documentation and catalog presentation; the core diff is empty. - 208 JVM tests, zero lint errors, 13/13 Sky, 5/5 upgrade/legacy, 6/6 HTTP consent and 4/4 location checks.
- Four independently completed Android 17 x86_64 scopes, all stopped cleanly. Old bugs were reproduced on alpha26 before in-place upgrades; counters survived. Coarse-only permission returned an approximate synthetic network fix.
- Signing identity, Android permissions, 17 protected assets and native-library bytes match the prior baseline. Both APK architecture/size/alignment checks passed.
- The same-APK signed module glossary update and rollback remain verified. Reviewed map/large-text and native consent/denial screenshots are attached.
The test harness needed corrections for dialog timing, fixture CSP, trial-version sequencing, a child timeout and emulator memory pressure. Failed/incomplete runs remain excluded; HTTP and location now use separate clean snapshots. Some immediate captures lagged the asserted state and are excluded from visual evidence; live accessibility assertions and saved result text are retained. See the attached sanitized evidence for details.
Human Pixel acceptance applies to the earlier alpha26/Sky0.2.2 pilot—not physical-phone acceptance of this new host. These are scoped emulator checks, not every Android version, physical GPS accuracy or a complete sandbox proof. GitHub CI is independent of this local exact-artifact acceptance.
Source/review: #23
Construct alpha26 — module-owned Sky Watch pilot
Module-owned Sky Watch pilot
Sky Watch 0.2.2 now carries its aircraft/provider parsing, merge rules, glossary, metadata lookup, Canvas map and UI in the signed downloadable module. Construct alpha26 supplies reusable, explicitly granted HTTP and foreground-location APIs.
Architecture proof: two signed synthetic module versions changed the King Air glossary and rolled it back on the exact same checksummed APK. These clearly labelled fixtures are not in this pilot catalog.
Install over the existing app
- Download the ARM64 APK below and install it over Construct. Do not uninstall.
- In Construct menu → Settings, use the pilot catalog URL:
https://feat-modular-sky-watch.construct-20x.pages.dev/index.json
Choose Use catalog, then Browse and update Sky Watch to 0.2.2. - Enable Allow approved internet sources. The old native Sky Watch grant does not authorize the new HTTP capability.
- For optional GPS, enable Allow reading phone location and Allow Android location access in Module access. Manual coordinates need neither.
This is a branch-preview pilot. The production catalog and previous releases are unchanged; PR #23 remains open for review. The existing Sky Watch 0.1.0 launcher/native workspace is still supported for compatibility and rollback. Measure, Camera and AR are not migrated here.
Verified artifacts
- App source:
90fee23cf092eb6e749245da553c73f48c45ff39; later PR commits only update the runner, catalog and evidence. - Sky Watch 0.2.2 SHA-256:
9871b7e5116ce2271e71c40196581def781e446f4d08cdb0e52cb185aa886d39. - 191 JVM tests, lint 0 errors, 13/13 modular Sky Android checks, 5/5 upgrade/legacy checks.
- Reviewed portrait/landscape and Android 2x text, including scrolled metadata fields.
- The completed Android run contains no Construct crash/ANR markers. An earlier candidate's main-thread TLS cleanup crash was fixed and that failed candidate was not released.
- Signing identity, Android permissions, protected assets and native libraries match alpha25. Both APK architecture/size checks passed.
- The device checks use Android 17 x86_64 and synthetic GPS, not physical-phone GPS accuracy or ARM64 execution. Real-phone touch/GPS behavior remains the hands-on check.
ADSB.lol, OpenSky, Combined and opt-in ADSBdb details are retained. Registry owner and callsign airline remain distinct; no guessed private/cargo labels, routes or photos.
Source/review: #23
Construct alpha25 — Sky Watch aircraft details
Sky Watch aircraft details — alpha25
Install this ARM64 APK over your existing Construct installation. Do not uninstall.
The existing signed Sky Watch 0.1.0 module does not need updating.
New
- Common aircraft-type codes become readable names, with reported categories and suitable map/list symbols. Unknown types remain honest unknowns.
- Combined mode retains known registration/type/category even when another source has the newest position. Live motion stays a coherent observation; identity differences are labelled.
- Select a plane → More aircraft info. Review the disclosure, then Look up with ADSBdb for optional manufacturer/model/registry-owner and callsign-airline details.
- Lookups are independent of tracking, cached only in the current workspace, and cleared on leaving. No automatic lookup, photo, route, API key or added Android permission.
Registry owner and callsign-associated airline are not necessarily the current operator. Model type is not proof of a private, passenger or cargo mission. Database records can be missing or old.
Verification
- 168 JVM tests, Android lint with 0 errors, and 67 runner tests passed.
- Corrected, checksummed optimized APK passed 13/13 Android 17 Sky Watch checks and 3/3 alpha24→25 upgrade/data-preservation checks. Verification receipt and checksum are attached.
- Portrait, landscape and 2×-text screenshots reviewed. The first candidate's cramped metadata labels were corrected before publication.
- Full aircraft/owner plus airline lookup succeeded on the first candidate; the final candidate verified a missing aircraft record alongside a successful callsign-airline result. Missing metadata never blocks the map.
- Signing identity, 17 protected bundled assets and native libraries unchanged; APK architecture, size and 16 KiB checks passed.
Source: PR #19, revision 24c458e. This is a pilot prerelease; the PR remains open for review. GitHub's independent source CI was still running at publication.
No physical-phone GPS accuracy or unrelated full camera/vision/measurement rerun is claimed.
Construct alpha24 — Sky Watch polish and review fixes
Sky Watch polish and review fixes
Install the ARM64 APK over your existing Construct app; do not uninstall. Existing modules and their data remain in place. The signed Sky Watch launcher stays at 0.1.0, so no module update is needed.
- Clearer map markers, compact controls, direction/bearing details, source status and refresh countdown.
- Fresh provider observations survive switching ADSB.lol / OpenSky / Combined, including request-floor failures.
- Selected labels are constrained to map width and disappear with their off-screen markers.
- Keyboard Done cannot change the area during an in-flight refresh.
Verification
App source: 08413f617c825efbd3eeba4b99525d7edcf52c1e (same app source as merged PRs #17 and #15).
- 156/156 JVM, 25/25 publisher/configuration, 67/67 runner tests passed; lint has no errors.
- 12/12 Sky Watch checks passed on the exact optimized x86_64 APK, Android 17: both live providers, Combined, grant/denial/revocation, foreground synthetic GPS, offline and lifecycle handling.
- 3/3 alpha23→alpha24 upgrade checks passed: saved catalog choice, installed module/permission/data, and public module update with data preserved.
- Portrait, landscape, 2× text and 2×+landscape screenshots reviewed, plus selected-aircraft off-screen/recenter behavior.
- Same app signer; protected assets/native libraries unchanged; alignment and both ABI size budgets passed. No Construct crash/ANR markers in the final Sky run.
ARM64 APK SHA-256: 3c484bc2bc4c6fabf136e85990f1dc2f39b7e44695b7f2a998b09415035078d8.
See attached checksums and sanitized acceptance JSON. This is focused Sky/upgrade verification, not a full camera/vision/measure rerun or physical-phone/GPS-accuracy acceptance. The x86_64 artifact listed in the receipt is the emulator-tested counterpart; the attached ARM64 APK is for phones.
AR remains deferred. Public aircraft coverage can be delayed, incomplete or quota-limited. Sky Watch sends the chosen area to the selected aircraft providers and visible map areas to OpenStreetMap. Location is foreground-only; module JavaScript cannot access coordinates or aircraft data.
Construct alpha23 — Sky Watch map
Sky Watch: nearby aircraft, map first
Install the ARM64 APK over your current Construct app to retain installed modules and data. Do not uninstall first.
Open Browse → Refresh catalog → Sky Watch → Review & install. In Module access, enable Allow Sky Watch map and data, then open the aircraft map. A saved custom catalog remains unchanged; use Settings → Use configured registry → Use catalog to select the public catalog if needed.
- ADSB.lol, OpenSky, or Combined, with 10/25/50/100 km radius.
- Optional Android foreground location, or manual latitude/longitude without location permission.
- North-up map, aircraft direction, pan/zoom, Search here, nearby list and aircraft details.
- Combined mode keeps the newest complete observation for each ICAO address and preserves source attribution; it does not average positions.
- Explicit freshness/source status and partial-provider failures. Automatic refresh every 30 seconds can be switched off.
Scope and privacy
This is an experimental spotting guide, not a navigation instrument. Aircraft coverage is incomplete; ordinary consumer drones generally are not included. OpenSky's anonymous daily allowance and both providers' availability can limit live updates. AR/camera is deferred.
The chosen area is sent to the selected aircraft provider(s); visible map tile coordinates are sent to OpenStreetMap. The signed module cannot read location or aircraft data. Leaving the native map closes its workspace and discards its coordinates/aircraft data; a bounded on-device map-tile cache remains. Phone location is a single recent fix, not continuous movement tracking; choose Area → Use my location to update it.
Verification
- 152 JVM/Robolectric, 25 publisher/configuration and 67 runner tests passed during implementation; full source CI passed before the final layout-only refinement.
- Final optimized APK: 12/12 Sky Watch checks passed on Android 17, using both live providers and synthetic public-airport GPS. Portrait, landscape and Android 2× font screenshots reviewed.
- Final alpha22→alpha23 in-place upgrade: 3/3 checks passed, retaining catalog choice, installed module, grant and stored data, including a subsequent module update.
- No Construct crash/ANR markers in the final Sky run. An earlier intermediate emulator attempt hit a first-launch WebView ANR under CPU contention; its failure was retained, and clean repeat/final runs passed.
- Physical ARM64 phone/GPS accuracy acceptance is still pending. These are focused Sky Watch and upgrade checks, not a full camera/vision/measure rerun. The source PR remains open for review, separate from this pilot.
The attached sky-watch-acceptance.json records exact artifact hashes, scoped checks and test environment. Screenshots use a public Frankfurt-area fixture, not a personal location.
Artifact identity
App source: 0fcb7ec9ba2609d7f580f933983fd8edc1022528 (API 0.8.0). Same application signing certificate as alpha22. ARM64 APK: 23,723,875 bytes; SHA-256:
0977744741e8b73be7bed9262485eb0d93e131e9100e2734f459af1cffd7a6a0
Signed Sky Watch 0.1.0 package SHA-256:
96bf0b6ba3745d7ccb4e0b09c1bc1c9eaef56a183a098cc03003ecefcaf61c9e
All 17 protected model/fixture assets and native library bytes remain unchanged from alpha22. Added Android permissions are foreground coarse/fine location only. System-only TLS and public configured catalog verified in the optimized APK.
Data attribution
Map © OpenStreetMap contributors. ADSB.lol data: ODbL 1.0. OpenSky: Schäfer et al., Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research, IPSN 2014. See Sky Watch documentation for access terms, quotas and full boundaries. This pilot does not claim a production service agreement or SLA.
Construct alpha22 — public catalog ready
Construct alpha22 — public catalog ready
This ARM64 pilot includes the public catalog URL out of the box:
https://construct-20x.pages.dev/index.json
Start using it
- Fresh installation: open Browse → Refresh catalog. No URL entry or custom certificate is needed.
- Upgrade: install over the existing pilot; do not uninstall to change hosting. Saved catalog choices and module data are preserved.
- If an older installation still has the local catalog selected, choose Settings → Use configured registry → Use catalog once. This selects the new public URL without typing it. Explicit custom and demo choices are not silently overwritten.
App launch remains local-only; no automatic startup fetch, module installation, permission grant, or data migration is added. Source builds without a deployment profile still default to the bundled demo.
Artifact and continuity
- Version code 22 / version name 0.1.0-alpha22.
- Frozen source:
aa1dd0b8aa76e2ff126e8ca3af323d924732c982(this tag). - ARM64 Android phones; Android 9 / API 28 or newer, with some capabilities requiring newer Android versions.
- Same pilot signing identity as alpha21: certificate SHA-256
c066034d20f4f9f625b5b2bda525a5b94f32961583f837d0e3437746013443cb. - 23,592,699-byte APK; SHA-256
f952ac6eee9ba09db2db19ac1dcfa52531aefc47de23fd0bd603db9eec9ec6d6. Checksum file attached. - All 17 protected publisher/demo/model/license assets and every native library are byte-identical to alpha21. App permissions unchanged; old local CA removed; public catalog uses system TLS trust.
This remains a development-signed experimental prerelease with alpha21's UX and capability limitations, not a production store release. The broader UX review remains separate. See default selection and verification.
Checks
137 local JVM tests passed; lint had zero errors. Packaged signer, version, permissions, public URL/system trust, unchanged protected assets/native libraries and 16 KiB alignment verified. Targeted Android16 x86_64 checks passed fresh default/public download/offline use plus in-place upgrade/saved selection/data and public module update. Evidence is three checks from an earlier partial run plus a separate clean three-check upgrade continuation, not one uninterrupted suite. The first run selected a deliberately failing old demo fixture before upgrade; candidate bytes did not change. See the linked verification document for scope. No physical ARM64 phone pass is claimed yet.