Skip to content

Add native wrapper apps for iOS and Android (native/) - #87

Open
savrum wants to merge 1 commit into
nyblnet:mainfrom
savrum:native-wrapper-apps
Open

Add native wrapper apps for iOS and Android (native/)#87
savrum wants to merge 1 commit into
nyblnet:mainfrom
savrum:native-wrapper-apps

Conversation

@savrum

@savrum savrum commented Jul 26, 2026

Copy link
Copy Markdown

Just created a pull request on very minimal ios and android wrappers. I've injected JS to act for normal filesystem routines. Worth a check.

Plain Swift/WKWebView and Kotlin/WebView shells, no dependencies, ~500 KB
per platform. The bundled deck is a build input (native/scripts/fetch-deck.sh
prefers a local build:single output, falls back to the latest release).

iOS implements the full document cycle: decks from Files/Mail open in place,
bento's retained-handle saves write back through a File System Access shim,
plus a native logo menu, text-edit affordance, keyboard and gesture fixes,
and a UserDefaults-backed localStorage bridge. Android is the minimal shell
(WebView, SAF save/open, OTA) pending the same treatment.

Integration points and known gaps are documented in native/README.md.
nyblnet added a commit that referenced this pull request Jul 26, 2026
One line — preferences.isElementFullscreenEnabled — and presenting on a phone
stops being a compromise.

iPhone Safari has never offered element fullscreen to web pages, so Bento's
present mode falls back to filling its view; that is why present.ts treats a
denied requestFullscreen as the normal tab-fill path. WKWebView exposes it as an
opt-in, so a document hosted here presents properly where the SAME FILE in
Safari cannot. That makes this the first place the wrapper does something the
browser cannot, rather than restoring parity with desktop.

Spotted in #87, which sets the same flag. Two analyses disagreed about whether
iPhone WebKit supports this at all, so it was settled by testing rather than by
picking a side.

VERIFIED on iPhone 17 Pro Max: tapping Slideshow hides the status bar, the host
nav bar and Bento's toolbar; the deck letterboxes on black with a native ✕
control and a 1/12 counter; swiping advances to 2/12 with Bento's own touch
navigation intact.

This also retires the limitation the README recorded — the nav bar cannot
intrude on a slideshow, because a slideshow is now genuinely fullscreen. It is
editing chrome only.
nyblnet added a commit that referenced this pull request Jul 26, 2026
Two faults reported side by side with #87, both ours.

1. THE PAGE DID NOT REACH THE EDGES. contentInsetAdjustmentBehavior was left at
   its default, so UIKit inset the scroll view by the safe area and a landscape
   slideshow showed bands down the left, right and bottom. Set to .never: the
   document owns its margins, the host adds none. #87 had this right and we did
   not — found by comparing directly.

2. THE FLOATING EXIT SAT ON TOP OF THE SLIDESHOW. Presenting is supposed to shed
   chrome, and the host was adding its own back. webView.fullscreenState is now
   observed, and entering fullscreen hides the nav bar and the floating exit
   together; leaving restores whatever the orientation calls for.

Worth recording: an earlier analysis concluded fullscreenState was not a usable
trigger because iPhone WebKit has no element fullscreen. It does — that was
settled by testing — and the observation works.

VERIFIED in landscape: the editor now runs to all four edges, and presenting
shows the deck full-bleed with only WebKit's own ✕ and the 1/12 counter — the
chevron is gone. The temporary rotation hook used to reach landscape is removed
again in this commit.
deepmindru-afk pushed a commit to deepmindru-afk/bento that referenced this pull request Jul 26, 2026
… work

Two contributors have now independently built something already open as a PR —
math (nyblnet#68, superseded by the Temml work) and a native wrapper (nyblnet#87, overlapping
the bento/tray branch). Neither could have known: the README roadmap says which
APPS are coming and nothing about what is being built right now, and
CONTRIBUTING never asked anyone to check.

- README gains a Community section pointing at Discussions (Q&A, Ideas, Show
  and tell) with bugs still going to issues and security to SECURITY.md.
- CONTRIBUTING gains 'Before you build something substantial': check open PRs
  and the pinned What's-in-flight issue, and open an issue or Idea before
  writing anything large — with a specific warning that PLATFORM.md §1-2 (the
  single-file promise, the splice contract) cannot be bent however good the
  code is. That is exactly what sank nyblnet#68.
- CONTRIBUTING gains an AI-assisted contributions policy: welcome, provided you
  have read and understood what you submit and can answer for it, and commits
  are authored under your own name rather than a bot identity. Notes that an AI
  will produce something locally coherent that violates a plainly stated rule,
  so checking against PLATFORM.md is worth more than polish.
nyblnet added a commit that referenced this pull request Jul 27, 2026
… work

Two contributors have now independently built something already open as a PR —
math (#68, superseded by the Temml work) and a native wrapper (#87, overlapping
the bento/tray branch). Neither could have known: the README roadmap says which
APPS are coming and nothing about what is being built right now, and
CONTRIBUTING never asked anyone to check.

- README gains a Community section pointing at Discussions (Q&A, Ideas, Show
  and tell) with bugs still going to issues and security to SECURITY.md.
- CONTRIBUTING gains 'Before you build something substantial': check open PRs
  and the pinned What's-in-flight issue, and open an issue or Idea before
  writing anything large — with a specific warning that PLATFORM.md §1-2 (the
  single-file promise, the splice contract) cannot be bent however good the
  code is. That is exactly what sank #68.
- CONTRIBUTING gains an AI-assisted contributions policy: welcome, provided you
  have read and understood what you submit and can answer for it, and commits
  are authored under your own name rather than a bot identity. Notes that an AI
  will produce something locally coherent that violates a plainly stated rule,
  so checking against PLATFORM.md is worth more than polish.
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