feat(symbian): run PocketJS apps on Nokia E7#176
Merged
Conversation
This was referenced Jul 24, 2026
doodlewind
marked this pull request as ready for review
July 24, 2026 18:25
doodlewind
added a commit
to wonderbeel/pocketjs
that referenced
this pull request
Jul 25, 2026
pocket-stack#176 landed symbian-e7-dev on hostAbi 4 while this branch was open, so two contracts claimed the same wire generation. assertNativeHostContract checks (target, abi) so nothing mis-binds, but the number is a registry-wide sequence — the incoming target yields to 5 (psp=1, vita=2, macos-widget=3, symbian-e7-dev=4). Also register pocketbook in tests/symbian-runtime.test.ts (a second exhaustive target-key assertion) and record the on-device re-confirm plus the WIP status in the README. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
linux/amd64Qt 4.7.4, Belle SDK, GCCE 4.6.3, GnuPoc, Rust, and QuickJS toolchain for Nokia E7 developmentpocket symbian ..., including exact E7 MTP staging with readback verification, direct USB CODA health checks, and repeatablecoda usb launch640x360landscape and360x640portrait, with Qt automatic orientation and in-place Solid/Vue Vapor relayout that preserves application state480x272PSP/Vita contract while adding a dynamic E7 variant and portrait-safe responsive rowsReview follow-up
mallocguarantee in bothallocandrealloc60 / POCKETJS_FRAME_RATEand reject non-positive or non-divisor rates at compile time4and pass the resolved plan value through build-app → qmake → C++ instead of duplicating ithost.ts; Solid and Vue Vapor tests now retain a real content node and component state across resize without remountingdocs/SYMBIAN_E7.mdgit-only, document the container Bash exception, update repository structure, and add the standalone Symbian bridge test to the release workflowdoctorrequire the locally installed pinned nightly, its Cargo component, and exactrust-srcstate without implicitly downloading a missing toolchain; app builds invoke that selected nightly explicitlyFollow-up design work is tracked in #178, #179, #180, #181, and #182.
Physical-device validation
pocket symbian doctor --device --coda-usbpasses against an RM-626 Nokia E7 in Nokia Suite mode4.0.23:app; the TCF Locator handshake completes over USB without an IP address or legacy Nokia macOS driverpocket symbian coda usb launchremotely starts the installedPocketJsE7Runtime.exe; the final public CLI validation returned CODA process contextp2399PocketJS Rust core linked on SymbianQuickJS + Promise jobs: 421.1.1was staged toMass memory/Installsand read back byte-for-byte; SHA-256:49e40c39d9bc0aaab93ad0d62f4722f956180aa40c1dfa87d6dae3379bfd35b81.1.1installation, launch, visible output, and native640x360landscape /360x640portrait live relayout are confirmed on the RM-6261.1.2with host ABI4packages successfully from the fixed-snapshot toolchain; SHA-256:e23903d0dbeb8535dac4f1644cb3cdf0fd6587c1984f3e95b338cd889a8662a8Validation
bun run test— 221 + 170 + 1 + 7 + 4 + 10 + 13 tests passbun tests/golden.ts— 49/49 web pixel goldens pass without updatesbun run tape:check— 180/180 deterministic frame hashes match-Wall -Wextra -Werrorbunx tsc --noEmitcargo fmt --manifest-path engine/symbian/Cargo.toml -- --checkcargo clippy --manifest-path engine/symbian/Cargo.toml --all-targets -- -D warningscargo test --locked --manifest-path engine/symbian/Cargo.toml— 2/2 passarmv6-symbian-eabino-std release buildfe3bf96a06fa3051d08e8c7d9e1d5084a9447b80c2a71f18c15a107dd7add95cbun tools/symbian.ts setup --yeswith native qmake, Qt code-generator, GCCE/E32, SIS, and signing smoke checksbun tools/symbian.ts doctorpasses Docker, pinned Rust/Cargo/rust-src, download hashes, native tools, and host MTP prerequisiteself2e32, SIS packaging, signing, and host ABI4propagation640x360and360x640confirms a full opaque canvas, portrait wrapping, and no clipping or overlapgit diff --checkBoundary
The private
symbian-e7-devprofile remains outside the production target registry until repeatable physical-device acceptance and golden testing are complete. The current public input wire has 9-bit touch coordinates, so the E7 host does not advertise touch and suppresses native-size touch snapshots rather than truncating the 640-pixel axis.The new CODA command is remote launch, not a full source-level debugger. CODA exposes run control, logging, memory, registers, and breakpoints, but PocketJS does not yet ship a CODA-to-GDB adapter, matching native symbol artifacts, or a Symbian GDB. QuickJS source-level breakpoints remain a separate PocketJS DevTools transport task.