Skip to content

feat(gamepad): add focus-isolated runtime and Paja support - #297

Merged
dskvr merged 2 commits into
mainfrom
feat/nap-gamepad
Oct 12, 2026
Merged

dskvr merged 2 commits into
mainfrom
feat/nap-gamepad

Conversation

@dskvr

@dskvr dskvr commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Add the proposed GAMEPAD runtime boundary: one host reader, focus/visibility-scoped snapshots, immediate subscription state, connection updates, neutral timestamps/buttons/axes for other windows, unavailable reasons, and polling/rate/session cleanup. Paja/playground frames deny native gamepad/HID/USB access before execution. The injected API caches validated parent state and preserves null slots and independent listeners.

SHELL is optional in the living specification. Bind trusted creation identity and frozen grants independently of readiness, preserve integrator prebound sessions, and expose SHELL only when selected. Retain the handshake-domain compatibility export as an empty array. Peer ranges accept the published 0.32 baseline and coordinated core/NAP 0.34 set.

Validation: build/type tasks pass; full unit suite passes 2110 tests, with updated peer metadata guards separately checked. Chromium proves real native API denial, two-frame focus isolation, host/tab focus loss, and connection updates using canonical host test samples. Core/NAP 0.34 tarball matrix passes build/types and 2105 behavior tests; distribution-only assertions appropriately reject the temporary unpublished overrides. Those overrides were removed. Docs gate and slop 100/100 pass. Three pre-existing relay timing tests now use a controlled clock with real crypto and unchanged packet/deadline vectors.

Changesets prepare services/shell 0.24.0, runtime 0.24.1, Paja 0.21.0, CLI 0.5.5, and ACL/firewall compatibility metadata patches. Publish this package set before the napplet CLI release selects CLI 0.5.5; conformance screenshots consume Paja 0.21.0.

The optional native getGamepads replacement is deferred: GAMEPAD permits it while NIP-5D limits injection to window.napplet. Required domain support and native denial are implemented without that replacement. No fabricated gamepad capability, haptics, raw device handle, or new handshake.

Living sources: napplet/naps#108 (0b28f77) and nostr-protocol/nips#2303 (020cb8b), rechecked unchanged.

Coordinated consumer PRs: napplet/boilerplate#7, napplet/nappagochi#1, napplet/migrate#1, napplet/cvm#1, napplet/.github#1.

@dskvr
dskvr merged commit b89015f into main Oct 12, 2026
6 checks passed
dskvr added a commit that referenced this pull request Oct 31, 2026
…r ranges (#365)

* fix(deps): admit @napplet/nap 0.35.x and core 0.36.x in published peer ranges

The llm domain first ships in @napplet/core@0.35.0 / @napplet/nap@0.35.0,
and @napplet/nap@0.35.1 requires @napplet/core@^0.36.0. The old <0.35.0
cap made npm ERESOLVE and pnpm warn for any llm install. Peers become
core >=0.32.0 <0.37.0 and nap >=0.32.0 <0.36.0; development stays on the
0.32.0 baseline. Guards now assert per-package ranges and that every docs
package page lists the published peer rows.

Closes #364

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: sync published @napplet peer ranges and llm subpath availability

Package pages and READMEs still listed the pre-#297 <0.33.0 peers, and the
llm docs claimed no published nap ships the llm subpath. Record the new
ranges, add the missing cli peer table, and note that the services mirror
is structurally identical to the @napplet/nap@0.35.1 export.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(planning): record quick task 261031-l9b (#364 peer ranges)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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