Skip to content

feat(macos): add native Files and managed OpenStrike windows - #13

Draft
lodyai[bot] wants to merge 10 commits into
mainfrom
feat/macos-device-browser
Draft

lodyai[bot] wants to merge 10 commits into
mainfrom
feat/macos-device-browser

Conversation

@lodyai

@lodyai lodyai Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Pocket Shell ships as a standalone macOS app with a 1024×768 desktop, Files, Devices and Minesweeper, plus Cards, Motions and Stats as independent PocketJS packages. Files browses the real Mac filesystem through paginated snapshots, history, keyboard navigation and scrolling. Its sidebar contains Home, Native Apps and Pocket Apps. Native Apps displays the applications’ actual macOS icons and opens them through Launch Services; visible rows own and release their icon textures.

OpenStrike now opens in a resizable Shell window. The generic native-package installer signs and hashes a module into the System installation plan; PocketJS loads it on demand, composites its GPU surface, routes focused input, suspends it when minimized and destroys its state when closed. Other trusted, co-built native apps use the same package format through POCKET_NATIVE_APPS. No OpenStrike process or separate OS window is launched. Clicking inside captures the pointer; Escape releases it. Window borders, menus, dragging, resizing, Cmd+M and Cmd+W retain Shell ownership.

Devices directly shows connected Sony PSP and iPod touch 4 hardware in switchable icon/list views, with compact chrome in Aqua, XP and Classic 98. Device classes only select shared artwork. Semantic bitmap icons support theme overrides and Aqua fallback; Files uses Blender/pixel artwork throughout, OpenStrike has a rifle icon, Aqua navigation controls use antialiased raster faces, narrow captions avoid controls, and the Dock animates between empty and populated states.

Dependencies: PocketJS #451 provides the general native module SDK and host lifecycle. OpenStrike #24, based on #21, provides the game adapter and package builder. vendor/pocketjs pins the published SDK commit. Native modules require matching SDK/compiler/profile and GPU dependency fingerprints and run with host-process permissions. Files currently supports browsing/opening; filesystem editing is not implemented.

Reproduce the packaged game with an updated OpenStrike checkout and an existing cooked map:

OPENSTRIKE_ROOT=/path/to/open-strike-native-checkout \
OPENSTRIKE_MAPS=/path/to/cooked/maps \
bun run desktop build
bun run desktop test:macos
open "shells/desktop/dist/Pocket Shell.app"

The resulting signed bundle contains the module, HUD, model and map and runs without either checkout. Maps, binaries, editable Blender scenes and validation captures remain ignored local artifacts.

Validation on Apple M3 Max / Metal:

  • bun run check: 187 tests passed with all three shells’ type checks and asset audit. The desktop simulator includes native content versus resize-border input routing and per-window failure recovery.
  • bun run desktop test:macos: 2 tests / 119 assertions passed on the final bundle, including signing, 1024×768 viewport, native package contents, bounded application icon pages and distinct Finder/Calculator artwork.
  • Generic SDK: all 11 upstream CI checks passed at 7fa4afed on macOS/Linux and shared contracts. Locally, 8 Rust host tests passed, including an independent dylib with real GPU readback, two-instance isolation, close/reopen state release and invalid ABI/build/hash rejection.
  • Real native OpenStrike rendering/HUD, WASD, mouse look, firing, resize, drag, minimize/restore, close/reopen and Aqua/98/XP switches passed. The final rebuilt and installed bundle also loaded the native module and rendered successfully.
  • Real companion enumeration found Mac applications with native artwork and the attached Sony PSP/iPod touch 4. No firmware or device contents were changed.
  • Updated the installed ~/Applications/Pocket Shell.app after preserving the old bundle in ignored validation storage. Captures and logs are in .pocket-build/validation/native-modules/.

@lodyai lodyai Bot changed the title feat(macos): add standalone Devices app with USB discovery feat(macos): ship desktop with windowed Devices app Sep 17, 2026
@lodyai lodyai Bot changed the title feat(macos): ship desktop with windowed Devices app feat(macos): ship desktop apps and USB device discovery Sep 17, 2026
@doodlewind doodlewind changed the title feat(macos): ship desktop apps and USB device discovery feat(macos): add native Files and themed desktop applications Sep 17, 2026
@doodlewind doodlewind changed the title feat(macos): add native Files and themed desktop applications feat(macos): add native Files and managed OpenStrike windows Sep 18, 2026
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