Repository navigation
Add native notification centre and reliable Log navigation - #79
Open
ricardovfreixo wants to merge 7 commits into
Open
ricardovfreixo wants to merge 7 commits into
ricardovfreixo wants to merge 7 commits into
Conversation
ricardovfreixo
marked this pull request as ready for review
October 23, 2026 13:32
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
Closes #71.
Native notification centre
Log navigation and refresh feedback
Complete companion delivery
f06d13ccc80e597b86600e442a2dd2407ac0ab5e28753b7ea337349243330c1f531ed61f386a2c6dThe core/UI refs are public fork refs recorded in
composer.jsonandcomposer.lock; only those two package records changed. No local path repositories, vendor patches or committed generated Android sources are needed. UI release must follow the matching core interface. Replace the temporary fork pins with upstream versions once the companions are released.Missing backend metadata degrades honestly, but is not full end-to-end preview parity. The runtime lock and ignored free manifests are not committed; the author's existing PHP 8.5.12 runtime pin was preserved byte-for-byte.
Latest-main conflict refresh
Merged upstream
main(9cb4a9e, #77) without rewriting the public branch. Retained the reviewed SDK fork lock entries: coref06d13calready includes upstream's557de018change. Upstream's signed 4.2.0-rc.2 binary example is preserved. The author's existing.env, PHP 8.5.12 runtime lock and ignored free manifests were left unchanged. Composer validation and all 50 focused Onboarding/Log checks passed after resolution.Verification
composer testpreviously passed 3,972 tests / 21,963 assertions, 100% code/type coverage, lint and frontend checks.No native build, JVM tests, Android instrumentation or physical-device verification was executed by the agent. The pane instrumentation test checks saveable-state ownership, not a real feed's pixel offset. This is a draft, not a native-validation claim.
Follow-up: reported Kotlin compile failure
The first user build reported four unresolved references to
LocalTopBarColor/LocalTopTabRowin the upstream UI tab-strip renderer. The pinned core does not expose those hooks. UI commit28753b7removes the unsupported imports and retains the documented transparent container; no core stubs or other tab behavior were added.Both locks now pin that public fix. Its two source regression tests passed (red before the fix), the UI suite passed 407 tests, and the app's 26 Log navigation/feedback tests passed. The 1,297-test full app run above predates this Kotlin-only follow-up. Native compilation still awaits the user's rerun; PHP checks are not compiler validation.
Follow-up: Onboarding missing-file startup race
The next user build reached PHP but failed including Flysystem's
PortableVisibilityConverter.php. The file was verified in the host, staging directory, bundle ZIP, APK's nested bundle and the exact device include path. Device error time was12:50:30.192UTC; the file was rewritten at12:50:30.676UTC, about 485 ms later.Core commit
f06d13ccloses the source-confirmed race: an initializer could check persistent-runtime state before waiting onextractionLock, then re-extract DEBUG'slaravel/directory after another initializer booted PHP. Both foreground and background initializers now recheck under the SAME lock used by persistent boot, before extraction/artisan work. No credentials, persisted data or key-store implementation were changed.Six source-contract regressions pass; a production-helper two-thread JVM test is included but unrun. Core PHP suites pass 2,157 tests, independent review is clear, and 50 app Onboarding/Log tests pass. Both locks pin the public fix. The installed and generated Kotlin files have been updated locally; the author only needs to rerun
native:run android, not reinstall/clear app data. Native compile/cold-start verification for this latest guard still remains user-run.Reproduce / Android test
Fresh checkout: use the README's normal or free setup. The normal manifest includes the paid secure-storage plugin. The existing author checkout already has
composer.free.json/composer.free.lockupdated to the same public refs; do not rerun first-install scripts that regenerate.env/keys on an existing installation.For the existing free setup:
Regenerate the Android shell so the new CORE Kotlin files are included; hot reload is insufficient. Back up any custom files under
nativephp/androidfirst: the installer replaces that generated directory. The author must run these commands manually:Use Java 21 and the configured Android SDK. Keep host/bundled PHP minor versions aligned and inspect any installer-induced runtime-lock changes; do not commit the author's local runtime pin. The 1G override is required for the host build and does NOT change on-device PHP memory.
Outstanding gates
BottomTabTapDecisionTest,NativeScrollTargetRegistryTest,ScreenTokensTest) and pane instrumentation (ScreenTokenPaneStateTest).Explicit non-claims / separate work