peachsim 0.1.1644 → 0.1.1653
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/cli/app-catalog.ts +1 -1
- package/cli/app-fonts.ts +11 -80
- package/cli/app-splash.ts +18 -12
- package/cli/bridge-flow-runner.ts +11 -7
- package/cli/cloud-client.ts +10 -13
- package/cli/command-registry.ts +13 -4
- package/cli/commands/box.ts +4 -4
- package/cli/commands/control.ts +93 -53
- package/cli/commands/coverage-parser.ts +67 -0
- package/cli/commands/coverage.ts +550 -0
- package/cli/commands/debug.ts +9 -18
- package/cli/commands/desktop.ts +19 -7
- package/cli/commands/device.ts +14 -9
- package/cli/commands/guest-host.ts +6 -10
- package/cli/commands/inspect/core.ts +81 -17
- package/cli/commands/inspect.ts +13 -8
- package/cli/commands/kotlin.ts +2 -2
- package/cli/commands/maestro-compare.ts +1 -1
- package/cli/commands/platform.ts +20 -11
- package/cli/commands/preview.ts +16 -18
- package/cli/commands/runtime.ts +3 -2
- package/cli/commands/screenshot-layers.ts +1 -1
- package/cli/commands/screenshot.ts +1 -1
- package/cli/commands/serve.ts +5 -1
- package/cli/commands/support.ts +4 -4
- package/cli/commands/three-mode.ts +22 -15
- package/cli/commands/upload.ts +44 -45
- package/cli/current-sim.ts +38 -0
- package/cli/desktop-companion.ts +36 -8
- package/cli/device-option.ts +1 -1
- package/cli/drivers/playwright.ts +1 -0
- package/cli/drivers/types.ts +4 -0
- package/cli/help-core.ts +1 -1
- package/cli/internal-child.ts +2 -1
- package/cli/main.ts +9 -3
- package/cli/outbound-endpoints.ts +11 -3
- package/cli/output-redaction.ts +39 -14
- package/cli/remote-simulators.ts +4 -1
- package/cli/scene-video.ts +5 -2
- package/cli/send-to-box.ts +7 -10
- package/cli/telemetry.ts +1 -1
- package/cli/ws-bridge.ts +8 -1
- package/detox/attempt-events.cjs +3 -1
- package/detox/attempt-events.d.cts +1 -1
- package/detox/expectations.ts +108 -99
- package/detox/frame-offset.d.mts +6 -0
- package/detox/frame-offset.mjs +35 -0
- package/detox/gestures.ts +6 -18
- package/detox/index.ts +169 -101
- package/detox/jest-preset.cjs +1 -3
- package/detox/jest-transform.cjs +4 -0
- package/detox/matchers.ts +3 -0
- package/detox/motion-change.cjs +46 -114
- package/detox/motion-change.d.cts +5 -27
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +65 -1
- package/dist-lib/bridge-contract-input.mjs +63 -1
- package/dist-lib/bridge-contract.cjs +19 -1
- package/dist-lib/bridge-contract.mjs +17 -1
- package/dist-lib/bundle-channel.cjs +38091 -14846
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/config.mjs +5 -3
- package/dist-lib/detox/index.cjs +1244 -4509
- package/dist-lib/detox/jest-preset.cjs +1 -3
- package/dist-lib/detox/jest-transform.cjs +4 -0
- package/dist-lib/dev-bundle-resolution.cjs +28 -24
- package/dist-lib/expo-swift-bundle.cjs +35049 -13125
- package/dist-lib/expo-swift-metadata.cjs +1 -1
- package/dist-lib/expo-swift-metadata.mjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +45112 -63143
- package/dist-lib/host/fetch-proxy-handler.cjs +3544 -11
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1909 -2029
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +2 -2
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +380 -522
- package/dist-lib/native-app-identity-project.cjs +39 -252
- package/dist-lib/native-app-identity-project.mjs +1174 -11
- package/dist-lib/native-app-identity.cjs +8 -3
- package/dist-lib/native-app-identity.mjs +8 -3
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +2 -244
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/public-origins-lib-esm.json +290 -0
- package/dist-lib/public-origins-lib-static.json +1 -0
- package/dist-lib/public-origins-lib.json +1852 -0
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +14 -253
- package/dist-lib/sdk.cjs +83 -16
- package/dist-lib/sdk.mjs +81 -15
- package/dist-lib/skills.cjs +50546 -75098
- package/dist-lib/swift-compile.cjs +25897 -1070
- package/dist-lib/swift-compile.mjs +25866 -1033
- package/dist-lib/swift-package.cjs +79 -1
- package/dist-lib/swift-package.mjs +75 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift-toolchain.cjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +34273 -12349
- package/dist-lib/vite.cjs +373 -298
- package/dist-lib/worklet-executable.cjs +1 -1
- package/dist-lib/worklet-executable.mjs +1 -1
- package/dist-types/packages/peach-compat/src/engine-config.d.ts +2 -0
- package/dist-types/packages/peach-compat/src/stubs/form-sheet-spring.d.ts +9 -0
- package/dist-types/packages/peach-compat/src/stubs/native-evaluation-lease.d.ts +47 -0
- package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +113 -0
- package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-gesture-handler.d.ts +154 -0
- package/dist-types/packages/peach-compat/src/stubs/screen-transition-math.d.ts +756 -0
- package/dist-types/packages/peach-compat/src/stubs/transition-scalar.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/billing/plans.d.ts +64 -0
- package/dist-types/packages/peach-engine/src/browser-page-target.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/bundle-platform-url.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/capture/browser-accessibility-host.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/capture/browser-composite.d.ts +55 -0
- package/dist-types/packages/peach-engine/src/capture/browserAccessibilityContract.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/capture/nativeScreenCaptureContract.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/cli-companion.d.ts +36 -0
- package/dist-types/packages/peach-engine/src/components/native-ui/webview-frame-bridge.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/config.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/android-stretch-effect.d.ts +57 -0
- package/dist-types/packages/peach-engine/src/engine/animated-driven-style.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/engine/animated-value.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/animated.d.ts +195 -0
- package/dist-types/packages/peach-engine/src/engine/animation-clockContract.d.ts +15 -0
- package/dist-types/packages/peach-engine/src/engine/animation-graph.d.ts +148 -0
- package/dist-types/packages/peach-engine/src/engine/app-catalog-wire.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/app-font-registry.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/engine/attributed-paragraph-paint.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/engine/attributed-paragraph.d.ts +123 -0
- package/dist-types/packages/peach-engine/src/engine/audioContract.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +93 -0
- package/dist-types/packages/peach-engine/src/engine/canvaskit-renderer.d.ts +216 -0
- package/dist-types/packages/peach-engine/src/engine/config-plugin-fonts.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/engine/config-plugin-splash.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/engine/cull-visibility.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/engine/damage-rect.d.ts +19 -0
- package/dist-types/packages/peach-engine/src/engine/engine-resource.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/expo-manifest.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/fiber-debug-metadata.d.ts +30 -0
- package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +139 -0
- package/dist-types/packages/peach-engine/src/engine/generated/sf-pro-font.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/engine/host-composite.d.ts +100 -0
- package/dist-types/packages/peach-engine/src/engine/hosted-semantics.d.ts +49 -0
- package/dist-types/packages/peach-engine/src/engine/image-audit.d.ts +70 -0
- package/dist-types/packages/peach-engine/src/engine/image-loader.d.ts +350 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-info.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-outline.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-visibility.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/engine/ios-fast-scroll.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/engine/layout-sab.d.ts +43 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass-rect.d.ts +23 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass-shaders.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +283 -0
- package/dist-types/packages/peach-engine/src/engine/live-object-counts.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/lottie-runtime.d.ts +32 -0
- package/dist-types/packages/peach-engine/src/engine/lottie-types.d.ts +138 -0
- package/dist-types/packages/peach-engine/src/engine/memory-counts.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/engine/metalDirectContract.d.ts +108 -0
- package/dist-types/packages/peach-engine/src/engine/metalShaderContract.d.ts +217 -0
- package/dist-types/packages/peach-engine/src/engine/native-animation-driver.d.ts +112 -0
- package/dist-types/packages/peach-engine/src/engine/native-animation-graph.d.ts +62 -0
- package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +133 -0
- package/dist-types/packages/peach-engine/src/engine/native-resources.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/engine/nativeReanimatedContract.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/engine/nativeReplayContract.d.ts +64 -0
- package/dist-types/packages/peach-engine/src/engine/node.d.ts +589 -0
- package/dist-types/packages/peach-engine/src/engine/paint-boundary-types.d.ts +112 -0
- package/dist-types/packages/peach-engine/src/engine/paint-boundary.d.ts +57 -0
- package/dist-types/packages/peach-engine/src/engine/portalContract.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/engine/portals.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/engine/render-damage.d.ts +107 -0
- package/dist-types/packages/peach-engine/src/engine/riveContract.d.ts +420 -0
- package/dist-types/packages/peach-engine/src/engine/rn-spring.d.ts +51 -0
- package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +379 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-pan-contacts.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +75 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-range.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-velocity.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/scroll.d.ts +320 -0
- package/dist-types/packages/peach-engine/src/engine/signal.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/engine/snapshot-cache-policy.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/svg-geometry.d.ts +41 -0
- package/dist-types/packages/peach-engine/src/engine/text-attachment-paragraphs.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/text-decoration.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/engine/text-line-break.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/engine/text-paint-receipt.d.ts +98 -0
- package/dist-types/packages/peach-engine/src/engine/text-paragraph.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/engine/text-paragraphContract.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/engine/text-transform.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/engine/types.d.ts +657 -0
- package/dist-types/packages/peach-engine/src/engine/visible-frame.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/engine/webrtcContract.d.ts +74 -0
- package/dist-types/packages/peach-engine/src/graphite-stats-fields.d.ts +184 -0
- package/dist-types/packages/peach-engine/src/guest-import-meta.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/guest-module-overrides.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/ios/app-card-types.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/ios/apps/canvas-map-data.d.ts +177 -0
- package/dist-types/packages/peach-engine/src/ios/aux-home-scene.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/ios/chrome-metrics.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/ios/constants.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/ios/duo-housing.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/ios/home/types.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/ios/home-app-catalog.d.ts +43 -0
- package/dist-types/packages/peach-engine/src/ios/photo-store.d.ts +73 -0
- package/dist-types/packages/peach-engine/src/ios/photoLibraryContract.d.ts +166 -0
- package/dist-types/packages/peach-engine/src/ios/shell-controller-types.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/ios/shell-transition-debug.d.ts +18 -0
- package/dist-types/packages/peach-engine/src/metro-asset-path.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/metro-fingerprint-registry-client.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +38 -0
- package/dist-types/packages/peach-engine/src/native-preview-bundle.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/observability/types.d.ts +74 -0
- package/dist-types/packages/peach-engine/src/peach-warm-manifest.d.ts +32 -0
- package/dist-types/packages/peach-engine/src/permissions/app-settings-client.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/permissions/system-permission-types.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/platform/android-back-panel.d.ts +131 -0
- package/dist-types/packages/peach-engine/src/platform/android-gesture-exclusion.d.ts +28 -0
- package/dist-types/packages/peach-engine/src/platform/android-predictive-back.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/platform/system-bars-state.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/playwright-sim-host.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/preview/bundle-layout.d.ts +8 -0
- package/dist-types/packages/peach-engine/src/preview/bundle-variantContract.d.ts +24 -0
- package/dist-types/packages/peach-engine/src/preview/capture-bundle.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/preview/compress-node.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/preview/compress.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/preview/presigned-upload.d.ts +60 -0
- package/dist-types/packages/peach-engine/src/preview/trace.d.ts +144 -0
- package/dist-types/packages/peach-engine/src/preview/upload-protocol.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/profiler/animation-recording-loader.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/profiler/profile-trace.d.ts +4 -0
- package/dist-types/packages/peach-engine/src/react-bridge.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/react-native/AppState.d.ts +45 -0
- package/dist-types/packages/peach-engine/src/react-native/Appearance.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/react-native/framework-colors-data.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/react-native/host-services.d.ts +42 -0
- package/dist-types/packages/peach-engine/src/react-native/layout-animation.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/react-native/platform-colors.d.ts +17 -0
- package/dist-types/packages/peach-engine/src/remote-stream/client-config.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +58 -0
- package/dist-types/packages/peach-engine/src/remote-stream/scene-recording.d.ts +45 -0
- package/dist-types/packages/peach-engine/src/render-worker/animated-drive-output.d.ts +35 -0
- package/dist-types/packages/peach-engine/src/render-worker/app-load.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/aux-surface-types.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-shared.d.ts +42 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-webgpu.d.ts +434 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-worker-init.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-gpu.d.ts +202 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1945 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-runtime/scroll-drag-resample.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/render-worker/css-keyframes-drive.d.ts +36 -0
- package/dist-types/packages/peach-engine/src/render-worker/edit-menu-geometry.d.ts +8 -0
- package/dist-types/packages/peach-engine/src/render-worker/engine-resource-relay.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/render-worker/expo-widgetContract.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/gesture-seam-protocol.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/render-worker/graph-linked-value.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler-contract.d.ts +49 -0
- package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/render-worker/host-service-protocol.d.ts +756 -0
- package/dist-types/packages/peach-engine/src/render-worker/image-lifecycle-event.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/image-pixel-contract.d.ts +48 -0
- package/dist-types/packages/peach-engine/src/render-worker/live-frame-mirror.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/render-worker/map-command-channel.d.ts +189 -0
- package/dist-types/packages/peach-engine/src/render-worker/mapNativeContract.d.ts +101 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-dynamic-synchronizable.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-menu-gesture.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-ui-commandContract.d.ts +23 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-ui-protocol.d.ts +1087 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-widgetContract.d.ts +100 -0
- package/dist-types/packages/peach-engine/src/render-worker/nativeAnimMirrorContract.d.ts +174 -0
- package/dist-types/packages/peach-engine/src/render-worker/nativeSyncReplyContract.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/render-worker/one-native-contentContract.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/render-worker/pointerSampleContract.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +880 -0
- package/dist-types/packages/peach-engine/src/render-worker/reanimated-css-contract.d.ts +63 -0
- package/dist-types/packages/peach-engine/src/render-worker/reanimated-readiness.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/render-worker/resilient-frame-clock.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/retained-app-load.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/render-worker/screen-edge-swipe-commit-protocol.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/render-worker/screen-form-sheet-commit-protocol.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror-tenant.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +164 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-event-registry.d.ts +119 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-gesture-regions.d.ts +41 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-protocol.d.ts +603 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-scene-schema.d.ts +101 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-inline-sources.d.ts +13 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/render-worker/test-bridge-protocol.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/render-worker/text-inputContract.d.ts +93 -0
- package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +102 -0
- package/dist-types/packages/peach-engine/src/render-worker/webgpu-frame-transaction.d.ts +292 -0
- package/dist-types/packages/peach-engine/src/render-worker/webgpu-readback-scheduler.d.ts +107 -0
- package/dist-types/packages/peach-engine/src/render-worker/webview-capture-protocol.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/worker-input-runtime.d.ts +211 -0
- package/dist-types/packages/peach-engine/src/render-worker/worker-storage.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/render-worker/worklet-runtime.d.ts +987 -0
- package/dist-types/packages/peach-engine/src/render-worker/worklet-sab.d.ts +24 -0
- package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +84 -0
- package/dist-types/packages/peach-engine/src/rolldown-production-fingerprint.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/screenshots/timeline-assets.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/screenshots/tokens.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/settings/devices.d.ts +70 -0
- package/dist-types/packages/peach-engine/src/settings/duo-fold-bus.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/settings/interface-rotation.d.ts +30 -0
- package/dist-types/packages/peach-engine/src/settings/react-native-configuration.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/settings/scene-geometryContract.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/settings/store.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/shell-events.d.ts +203 -0
- package/dist-types/packages/peach-engine/src/shell-intent.d.ts +68 -0
- package/dist-types/packages/peach-engine/src/sootsim-event.d.ts +35 -0
- package/dist-types/packages/peach-engine/src/top-overlay-state.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/web-authentication-automation-host.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/webAuthenticationContract.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/webview-automation-host.d.ts +180 -0
- package/dist-types/packages/peach-engine/src/wireframe-mode.d.ts +16 -0
- package/dist-types/packages/peach-globals/src/frameBreakdownContract.d.ts +16 -0
- package/dist-types/packages/peach-globals/src/index.d.ts +3311 -0
- package/dist-types/packages/peach-globals/src/nativeSurfaceContract.d.ts +76 -0
- package/dist-types/packages/peach-globals/src/pointerSourceEventContract.d.ts +8 -0
- package/dist-types/packages/peach-globals/src/profileTrace.d.ts +11 -0
- package/dist-types/packages/peach-globals/src/profilerContract.d.ts +223 -0
- package/dist-types/packages/peach-kit/src/capabilities.d.ts +721 -0
- package/dist-types/packages/peach-kit/src/internal.d.ts +4 -0
- package/dist-types/packages/peach-kit/src/materials/types.d.ts +27 -0
- package/dist-types/packages/peach-kit/src/materials/uikit-blur-material.d.ts +14 -0
- package/dist-types/packages/peach-kit/src/navigation-types.d.ts +11 -0
- package/dist-types/packages/peach-kit/src/react-bridge.d.ts +53 -0
- package/dist-types/packages/peach-kit/src/runtime.d.ts +26 -0
- package/dist-types/packages/peach-kit/src/ui/hosting-safe-area.d.ts +24 -0
- package/dist-types/packages/peach-kit/src/ui/popover-placement.d.ts +53 -0
- package/dist-types/packages/peach-kit/src/ui/presentationContract.d.ts +17 -0
- package/kotlin/ComposeSources/PeachComposeHost.kt +1 -1
- package/kotlin/JniSources/com/facebook/jni/HybridData.kt +0 -2
- package/kotlin/JniSources/dev/peach/jni/NativeBindings.kt +0 -2
- package/kotlin/JniTransportSources/dev/peach/jni/integration/JniTransport.kt +0 -2
- package/kotlin/README.md +6 -0
- package/package.json +22 -2
- package/runtime-companion.json +1 -0
- package/skills/contrast/SKILL.md +1 -0
- package/src/assetCatalogContract.ts +21 -0
- package/src/bridge-contract-input.ts +84 -0
- package/src/bridge-contract.ts +35 -3
- package/src/browser-launch-policy.ts +1 -0
- package/src/bundle-channel.mjs +4 -2
- package/src/cli-runtime.ts +55 -0
- package/src/crash-fingerprint.ts +26 -0
- package/src/dev-bundle-resolution.ts +50 -23
- package/src/device-catalog.ts +1159 -0
- package/src/host/bridge-host.ts +3 -26
- package/src/host/browser-pointer.ts +71 -0
- package/src/host/dev-server-package-versions.ts +23 -0
- package/src/host/fetch-proxy-handler.ts +17 -4
- package/src/installed-package-versions.ts +142 -38
- package/src/kotlin-host.ts +1 -1
- package/src/metro-plugin.ts +4 -4
- package/src/metro-project-root.ts +68 -0
- package/src/nitro-adapter.lock.json +26 -0
- package/src/nitro-adapter.ts +103 -0
- package/src/nitro-bundle.ts +24 -10
- package/src/nitro-compile.ts +33 -51
- package/src/nitro-source.ts +177 -96
- package/src/nitroAdapterContract.ts +217 -0
- package/src/nitroContract.ts +24 -11
- package/src/process-group.ts +41 -34
- package/src/react-bridge-importers.ts +28 -0
- package/src/reactNativeConfigurationContract.ts +36 -0
- package/src/runtime-assets.ts +7 -2
- package/src/runtime-delivery.ts +2 -0
- package/src/runtimePlatformContract.ts +70 -0
- package/src/screenshots/frame-compose.ts +42 -43
- package/src/screenshots/org-deck.ts +9 -4
- package/src/screenshots/preset-names.ts +29 -0
- package/src/screenshots/registry.ts +5 -5
- package/src/screenshots/schema.ts +1 -1
- package/src/screenshots/screenshotContract.ts +971 -0
- package/src/settings-flags.ts +107 -0
- package/src/settingsContract.ts +609 -0
- package/src/storageSnapshotContract.ts +344 -0
- package/src/stub-pattern-matcher.ts +550 -0
- package/src/swift-compile.ts +908 -40
- package/src/swift-compiler-digest.ts +13 -1
- package/src/swift-distribution.lock.json +49 -22
- package/src/swift-host.ts +167 -52
- package/src/swift-objc-compile.ts +54 -24
- package/src/swift-objc-export.ts +532 -0
- package/src/swift-objc-import.ts +769 -0
- package/src/swift-objc-metadata.ts +285 -10
- package/src/swift-objc-sdk.ts +13970 -158
- package/src/swift-objc-standin.ts +137 -1
- package/src/swift-package.ts +94 -0
- package/src/swift-packages.ts +5 -5
- package/src/swift-submit.ts +6 -0
- package/src/swiftContract.ts +99 -0
- package/src/target-matcher.ts +6 -1
- package/src/vite-plugin.ts +14 -40
- package/src/worker-system-chunks.ts +1 -1
- package/src/workerChunkContract.ts +5 -0
- package/src/worklets-babel.ts +24 -5
- package/src/xcode-project.ts +36 -7
- package/src/xcode-target-members.ts +10 -3
- package/cli/drivers/playwright-sim-host.ts +0 -825
- package/kotlin/fixtures/counter/Counter.d.kt.ts +0 -17
- package/kotlin/fixtures/counter/Counter.kt +0 -51
- package/kotlin/fixtures/counter/CounterApp.native.tsx +0 -61
- package/kotlin/fixtures/counter/CounterApp.tsx +0 -3
- package/kotlin/fixtures/counter/CounterScreen.d.kt.ts +0 -8
- package/kotlin/fixtures/counter/CounterScreen.kt +0 -56
- package/kotlin/fixtures/counter/app/_layout.tsx +0 -4
- package/kotlin/fixtures/counter/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/counter/app/routes.d.ts +0 -18
- package/kotlin/fixtures/counter/package.json +0 -20
- package/kotlin/fixtures/counter/tsconfig.json +0 -19
- package/kotlin/fixtures/counter/vite.config.ts +0 -20
- package/kotlin/fixtures/headless-counter/Headless.kt +0 -234
- package/kotlin/fixtures/import-animation/Animation.d.kt.ts +0 -7
- package/kotlin/fixtures/import-animation/Animation.kt +0 -80
- package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +0 -13
- package/kotlin/fixtures/import-animation/README.md +0 -24
- package/kotlin/fixtures/import-animation/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-animation/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-animation/app/routes.d.ts +0 -18
- package/kotlin/fixtures/import-animation/package.json +0 -23
- package/kotlin/fixtures/import-animation/tsconfig.json +0 -20
- package/kotlin/fixtures/import-animation/vite.config.ts +0 -20
- package/kotlin/fixtures/import-drawing/Drawing.d.kt.ts +0 -7
- package/kotlin/fixtures/import-drawing/Drawing.kt +0 -101
- package/kotlin/fixtures/import-drawing/ImportDrawing.native.tsx +0 -18
- package/kotlin/fixtures/import-drawing/README.md +0 -34
- package/kotlin/fixtures/import-drawing/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-drawing/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-drawing/package.json +0 -23
- package/kotlin/fixtures/import-drawing/tsconfig.json +0 -20
- package/kotlin/fixtures/import-drawing/vite.config.ts +0 -20
- package/kotlin/fixtures/import-editor/Editor.d.kt.ts +0 -7
- package/kotlin/fixtures/import-editor/Editor.kt +0 -59
- package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +0 -23
- package/kotlin/fixtures/import-editor/README.md +0 -27
- package/kotlin/fixtures/import-editor/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-editor/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-editor/package.json +0 -23
- package/kotlin/fixtures/import-editor/tsconfig.json +0 -20
- package/kotlin/fixtures/import-editor/vite.config.ts +0 -20
- package/kotlin/fixtures/import-effects/Effects.d.kt.ts +0 -7
- package/kotlin/fixtures/import-effects/Effects.kt +0 -87
- package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +0 -13
- package/kotlin/fixtures/import-effects/README.md +0 -19
- package/kotlin/fixtures/import-effects/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-effects/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-effects/package.json +0 -23
- package/kotlin/fixtures/import-effects/tsconfig.json +0 -20
- package/kotlin/fixtures/import-effects/vite.config.ts +0 -20
- package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +0 -13
- package/kotlin/fixtures/import-layout/Layout.d.kt.ts +0 -7
- package/kotlin/fixtures/import-layout/Layout.kt +0 -72
- package/kotlin/fixtures/import-layout/README.md +0 -24
- package/kotlin/fixtures/import-layout/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-layout/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-layout/package.json +0 -23
- package/kotlin/fixtures/import-layout/tsconfig.json +0 -20
- package/kotlin/fixtures/import-layout/vite.config.ts +0 -20
- package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +0 -18
- package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +0 -7
- package/kotlin/fixtures/import-navigation/Navigation.kt +0 -104
- package/kotlin/fixtures/import-navigation/README.md +0 -31
- package/kotlin/fixtures/import-navigation/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-navigation/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-navigation/package.json +0 -23
- package/kotlin/fixtures/import-navigation/tsconfig.json +0 -20
- package/kotlin/fixtures/import-navigation/vite.config.ts +0 -20
- package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +0 -29
- package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +0 -7
- package/kotlin/fixtures/import-overlays/Overlays.kt +0 -93
- package/kotlin/fixtures/import-overlays/README.md +0 -34
- package/kotlin/fixtures/import-overlays/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-overlays/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-overlays/package.json +0 -23
- package/kotlin/fixtures/import-overlays/tsconfig.json +0 -20
- package/kotlin/fixtures/import-overlays/vite.config.ts +0 -20
- package/kotlin/fixtures/import-resources/ImportResources.native.tsx +0 -18
- package/kotlin/fixtures/import-resources/README.md +0 -26
- package/kotlin/fixtures/import-resources/Resources.d.kt.ts +0 -6
- package/kotlin/fixtures/import-resources/Resources.kt +0 -72
- package/kotlin/fixtures/import-resources/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-resources/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-resources/package.json +0 -23
- package/kotlin/fixtures/import-resources/tsconfig.json +0 -20
- package/kotlin/fixtures/import-resources/vite.config.ts +0 -20
- package/kotlin/fixtures/import-scroll/ImportNested.native.tsx +0 -10
- package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +0 -13
- package/kotlin/fixtures/import-scroll/Nested.d.kt.ts +0 -4
- package/kotlin/fixtures/import-scroll/Nested.kt +0 -64
- package/kotlin/fixtures/import-scroll/README.md +0 -38
- package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +0 -7
- package/kotlin/fixtures/import-scroll/Scroll.kt +0 -91
- package/kotlin/fixtures/import-scroll/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-scroll/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-scroll/app/nested+spa.tsx +0 -1
- package/kotlin/fixtures/import-scroll/package.json +0 -23
- package/kotlin/fixtures/import-scroll/tsconfig.json +0 -20
- package/kotlin/fixtures/import-scroll/vite.config.ts +0 -20
- package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +0 -44
- package/kotlin/fixtures/import-selection/README.md +0 -32
- package/kotlin/fixtures/import-selection/Selection.d.kt.ts +0 -8
- package/kotlin/fixtures/import-selection/Selection.kt +0 -78
- package/kotlin/fixtures/import-selection/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-selection/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-selection/package.json +0 -23
- package/kotlin/fixtures/import-selection/tsconfig.json +0 -20
- package/kotlin/fixtures/import-selection/vite.config.ts +0 -20
- package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +0 -13
- package/kotlin/fixtures/import-surfaces/README.md +0 -22
- package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +0 -7
- package/kotlin/fixtures/import-surfaces/Surfaces.kt +0 -64
- package/kotlin/fixtures/import-surfaces/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-surfaces/package.json +0 -23
- package/kotlin/fixtures/import-surfaces/tsconfig.json +0 -20
- package/kotlin/fixtures/import-surfaces/vite.config.ts +0 -20
- package/kotlin/fixtures/import-values/ImportValues.native.tsx +0 -61
- package/kotlin/fixtures/import-values/README.md +0 -28
- package/kotlin/fixtures/import-values/Values.d.kt.ts +0 -15
- package/kotlin/fixtures/import-values/Values.kt +0 -84
- package/kotlin/fixtures/import-values/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-values/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-values/package.json +0 -23
- package/kotlin/fixtures/import-values/tsconfig.json +0 -20
- package/kotlin/fixtures/import-values/vite.config.ts +0 -20
- package/kotlin/fixtures/kotlin-app/app/build.gradle.kts +0 -30
- package/kotlin/fixtures/kotlin-app/app/src/main/AndroidManifest.xml +0 -13
- package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/MainActivity.kt +0 -60
- package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/ProbeApplication.kt +0 -18
- package/kotlin/fixtures/kotlin-app/build.gradle.kts +0 -5
- package/kotlin/fixtures/kotlin-app/gradle.properties +0 -4
- package/kotlin/fixtures/kotlin-app/settings.gradle.kts +0 -4
- package/kotlin/fixtures/kotlin-app-variants/Anim.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +0 -38
- package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +0 -36
- package/kotlin/fixtures/kotlin-app-variants/Bitmaps.kt +0 -50
- package/kotlin/fixtures/kotlin-app-variants/Browse.kt +0 -73
- package/kotlin/fixtures/kotlin-app-variants/Colors.kt +0 -41
- package/kotlin/fixtures/kotlin-app-variants/Controls.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/Drag.kt +0 -56
- package/kotlin/fixtures/kotlin-app-variants/Draw.kt +0 -74
- package/kotlin/fixtures/kotlin-app-variants/Drawables.kt +0 -53
- package/kotlin/fixtures/kotlin-app-variants/Focus.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/Form.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/Icons.kt +0 -59
- package/kotlin/fixtures/kotlin-app-variants/Ime.kt +0 -53
- package/kotlin/fixtures/kotlin-app-variants/Lists.kt +0 -57
- package/kotlin/fixtures/kotlin-app-variants/Nav.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/Note.kt +0 -40
- package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +0 -56
- package/kotlin/fixtures/kotlin-app-variants/Pan.kt +0 -38
- package/kotlin/fixtures/kotlin-app-variants/Pickers.kt +0 -44
- package/kotlin/fixtures/kotlin-app-variants/Press.kt +0 -43
- package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +0 -63
- package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +0 -43
- package/kotlin/fixtures/kotlin-app-variants/Strings.kt +0 -49
- package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/TextWidth.kt +0 -45
- package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +0 -50
- package/kotlin/fixtures/kotlin-app-variants/Transition.kt +0 -69
- package/kotlin/fixtures/kotlin-app-variants/ViewConfig.kt +0 -22
- package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +0 -67
- package/kotlin/fixtures/runtime-state/RuntimeState.kt +0 -200
- package/kotlin/fork/README.md +0 -97
- package/kotlin/fork/build.sh +0 -176
- package/kotlin/fork/compose-worker-globals.patch +0 -1247
- package/kotlin/fork/fork.json +0 -46
- package/kotlin/fork/publish.ts +0 -99
- package/kotlin/fork/skia-android-shaping.patch +0 -189
- package/kotlin/fork/skiko-local.init.gradle +0 -10
- package/kotlin/fork/skiko-worker-clock.patch +0 -122
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# Imported Compose overlays
|
|
2
|
-
|
|
3
|
-
This fixture imports a public composable into React Native and reports dialog
|
|
4
|
-
and menu decisions to React. Compose retains its decision count when React
|
|
5
|
-
changes the title prop.
|
|
6
|
-
|
|
7
|
-
Run One here with `bunx one dev --port 8081`, then open that port with
|
|
8
|
-
`peach open 8081 --device pixel-8`. Generate Android with
|
|
9
|
-
`bunx one prebuild --platform android`; send Gradle builds through `bun remote`.
|
|
10
|
-
|
|
11
|
-
Open the dialog and choose Keep. Update the React title, reopen the dialog and
|
|
12
|
-
choose Discard. Open the menu and choose Second. Reopen the menu and dismiss it
|
|
13
|
-
with Android Back, then open the dialog and dismiss it with Back. The final
|
|
14
|
-
state is `Updated overlays|dialog-dismissed|5|false|false`; React receives
|
|
15
|
-
`[["kept",1],["confirmed",2],["Second",3],["menu-dismissed",4],["dialog-dismissed",5]]`.
|
|
16
|
-
Native popup windows hide the React footer, so callbacks are checked after close.
|
|
17
|
-
|
|
18
|
-
RAN 2026-10-11: Android debug and Kotlin/Wasm builds passed. Fresh One Android,
|
|
19
|
-
then Peach, then Contrast's native bundle producer matched all twelve states
|
|
20
|
-
and five callbacks. Peach and Contrast reported no preview errors; Contrast
|
|
21
|
-
compiled `Overlays.kt` and produced a complete bundle graph. These runs used
|
|
22
|
-
One `2.0.0-0.canary.1791724440037` and one complete shell, engine and tenant
|
|
23
|
-
runtime build. Runtime pairs must stay together: newly bundled CanvasKit
|
|
24
|
-
loaders reject older paired Wasm, and mixing ordinary CanvasKit versions also
|
|
25
|
-
prevented captures.
|
|
26
|
-
|
|
27
|
-
The imported host measures the root separately from popup layers, constrains
|
|
28
|
-
popups to the laid-out view bounds, and gives imported views a navigation
|
|
29
|
-
dispatcher that receives hardware Back. Dialog opening previously failed its
|
|
30
|
-
minimum constraints; menu opening rejected an infinite scroll height; Back
|
|
31
|
-
previously left the app instead of dismissing its menu. The retained probe
|
|
32
|
-
reproduces those failures and verifies the repaired behavior. This establishes
|
|
33
|
-
import and interaction behavior, without grading pixels or the signed-in
|
|
34
|
-
editor. Captures, hashes and receipts are retained in task `t-mv3ww8ql-120u0`.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportOverlays.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-overlays-fixture",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"targets": [
|
|
6
|
-
"native"
|
|
7
|
-
],
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"@react-navigation/core": "catalog:",
|
|
10
|
-
"@react-navigation/native": "catalog:",
|
|
11
|
-
"one": "catalog:",
|
|
12
|
-
"react": "catalog:",
|
|
13
|
-
"react-native": "catalog:",
|
|
14
|
-
"react-native-reanimated": "catalog:",
|
|
15
|
-
"react-native-screens": "catalog:",
|
|
16
|
-
"react-native-worklets": "catalog:"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@react-native-community/template": "catalog:",
|
|
20
|
-
"peachsim": "workspace:*",
|
|
21
|
-
"vite": "catalog:"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"paths": {
|
|
4
|
-
"~/*": ["./*"]
|
|
5
|
-
},
|
|
6
|
-
"strict": true,
|
|
7
|
-
"allowArbitraryExtensions": true,
|
|
8
|
-
"rootDir": ".",
|
|
9
|
-
"module": "Preserve",
|
|
10
|
-
// allows react-native style imports without path extensions, for compat with platform-specific files
|
|
11
|
-
"moduleResolution": "Bundler",
|
|
12
|
-
"preserveSymlinks": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"jsx": "react-jsx",
|
|
15
|
-
"noImplicitAny": false,
|
|
16
|
-
"types": ["node", "react", "vite/client"],
|
|
17
|
-
"lib": ["dom", "esnext"]
|
|
18
|
-
},
|
|
19
|
-
"exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { one } from 'one/vite'
|
|
2
|
-
import { peachPlugin } from 'peachsim/vite'
|
|
3
|
-
export default {
|
|
4
|
-
root: import.meta.dirname,
|
|
5
|
-
plugins: [
|
|
6
|
-
one({
|
|
7
|
-
web: { defaultRenderMode: 'spa' },
|
|
8
|
-
native: {
|
|
9
|
-
bundler: 'vite',
|
|
10
|
-
app: {
|
|
11
|
-
name: 'KotlinOverlays',
|
|
12
|
-
scheme: 'kotlinoverlays',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlinoverlays' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { Text, View, type ViewStyle } from 'react-native'
|
|
3
|
-
import { Resources } from './Resources.kt'
|
|
4
|
-
|
|
5
|
-
export default function Index() {
|
|
6
|
-
const [step, setStep] = useState(0)
|
|
7
|
-
const resourceProps = {
|
|
8
|
-
title: `Resources step ${step}`,
|
|
9
|
-
onStep: setStep,
|
|
10
|
-
style: { width: '100%', height: 600 } satisfies ViewStyle,
|
|
11
|
-
}
|
|
12
|
-
return (
|
|
13
|
-
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
14
|
-
<Resources {...resourceProps} />
|
|
15
|
-
<Text testID="resources-react-step">React step: {step}</Text>
|
|
16
|
-
</View>
|
|
17
|
-
)
|
|
18
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Imported Compose vector resources
|
|
2
|
-
|
|
3
|
-
RAN: six real input states pass One Android, Peach Android and a signed-in
|
|
4
|
-
Contrast project import: initial, toggled, large, tinted, disabled and reset.
|
|
5
|
-
Five static material icon themes remain visible. The current vector changes
|
|
6
|
-
FavoriteBorder to Favorite, grows from 24dp to 64dp, changes its exact tint and
|
|
7
|
-
resets. Compose and React counts agree; disabled input leaves count three.
|
|
8
|
-
Each host checks changed pixels, static icon identity, disabled identity and
|
|
9
|
-
reset identity. Five intentionally wrong receipts are rejected.
|
|
10
|
-
|
|
11
|
-
Evidence: [https://r2.sootsim.com/kotlin-evidence/import-resources/b782beba46c47baf6810f55d814eecaecd76d52927e8b5ad21520b2086761c71/proof.json](https://r2.sootsim.com/kotlin-evidence/import-resources/b782beba46c47baf6810f55d814eecaecd76d52927e8b5ad21520b2086761c71/proof.json).
|
|
12
|
-
|
|
13
|
-
The receipt binds the Kotlin and React sources, compiled artifacts, installed
|
|
14
|
-
APK, lossless WebP captures and semantic trees. Contrast uses the accepted
|
|
15
|
-
Peach runtime and loads one preview document with no browser or network errors.
|
|
16
|
-
|
|
17
|
-
One version: `2.0.0-0.canary.1791785147152`, release source
|
|
18
|
-
`06994b00402fcf95a9c9e8a895a9551baddbe800`. This canary provides generic icon
|
|
19
|
-
dependency discovery and conditional generated helpers. Its whole-family
|
|
20
|
-
adoption on main and public compile-catalog delivery remain separate work.
|
|
21
|
-
Re-prebuild with that adopting version before running the native fixture.
|
|
22
|
-
|
|
23
|
-
This grades material-icons-core vector selection, size, density and tint.
|
|
24
|
-
Fonts, app drawable packaging, bitmaps, strings, locale changes and cross-host
|
|
25
|
-
or full-frame pixel fidelity remain ungraded. Native density is 2.625; browser
|
|
26
|
-
captures use density 3. Build Android through the remote Linux builder.
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlinresources
|
|
2
|
-
|
|
3
|
-
import androidx.compose.foundation.layout.Arrangement
|
|
4
|
-
import androidx.compose.foundation.layout.Column
|
|
5
|
-
import androidx.compose.foundation.layout.Row
|
|
6
|
-
import androidx.compose.foundation.layout.padding
|
|
7
|
-
import androidx.compose.foundation.layout.size
|
|
8
|
-
import androidx.compose.material.icons.Icons
|
|
9
|
-
import androidx.compose.material.icons.filled.Add
|
|
10
|
-
import androidx.compose.material.icons.filled.Favorite
|
|
11
|
-
import androidx.compose.material.icons.filled.FavoriteBorder
|
|
12
|
-
import androidx.compose.material.icons.outlined.Settings
|
|
13
|
-
import androidx.compose.material.icons.rounded.Home
|
|
14
|
-
import androidx.compose.material.icons.sharp.Delete
|
|
15
|
-
import androidx.compose.material.icons.twotone.Star
|
|
16
|
-
import androidx.compose.material3.Button
|
|
17
|
-
import androidx.compose.material3.Icon
|
|
18
|
-
import androidx.compose.material3.MaterialTheme
|
|
19
|
-
import androidx.compose.material3.Text
|
|
20
|
-
import androidx.compose.material3.lightColorScheme
|
|
21
|
-
import androidx.compose.runtime.Composable
|
|
22
|
-
import androidx.compose.runtime.getValue
|
|
23
|
-
import androidx.compose.runtime.mutableIntStateOf
|
|
24
|
-
import androidx.compose.runtime.mutableStateOf
|
|
25
|
-
import androidx.compose.runtime.remember
|
|
26
|
-
import androidx.compose.runtime.setValue
|
|
27
|
-
import androidx.compose.ui.Modifier
|
|
28
|
-
import androidx.compose.ui.graphics.Color
|
|
29
|
-
import androidx.compose.ui.graphics.toArgb
|
|
30
|
-
import androidx.compose.ui.layout.onGloballyPositioned
|
|
31
|
-
import androidx.compose.ui.platform.testTag
|
|
32
|
-
import androidx.compose.ui.unit.dp
|
|
33
|
-
|
|
34
|
-
@Composable
|
|
35
|
-
fun Resources(title: String, onStep: ((Int) -> Unit)? = null) {
|
|
36
|
-
var count by remember { mutableIntStateOf(0) }
|
|
37
|
-
var selected by remember { mutableStateOf(false) }
|
|
38
|
-
var large by remember { mutableStateOf(false) }
|
|
39
|
-
var accent by remember { mutableStateOf(false) }
|
|
40
|
-
var width by remember { mutableIntStateOf(0) }
|
|
41
|
-
var height by remember { mutableIntStateOf(0) }
|
|
42
|
-
val size = if (large) 64 else 24
|
|
43
|
-
val tint = if (accent) Color(0xFFE91E63) else Color(0xFF6750A4)
|
|
44
|
-
MaterialTheme(colorScheme = lightColorScheme()) {
|
|
45
|
-
Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
46
|
-
Text(title, Modifier.testTag("resources-title"))
|
|
47
|
-
Text("Count: $count", Modifier.testTag("resources-count"))
|
|
48
|
-
Text("selected=${if (selected) 1 else 0};size=$size;tint=${tint.toArgb()};pixels=$width,$height", Modifier.testTag("resources-state"))
|
|
49
|
-
Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
|
|
50
|
-
Icon(Icons.Filled.Add, "Add resource", Modifier.testTag("resources-add"))
|
|
51
|
-
Icon(Icons.Outlined.Settings, "Settings resource", Modifier.testTag("resources-settings"))
|
|
52
|
-
Icon(Icons.Rounded.Home, "Home resource", Modifier.testTag("resources-home"))
|
|
53
|
-
Icon(Icons.Sharp.Delete, "Delete resource", Modifier.testTag("resources-delete"))
|
|
54
|
-
Icon(Icons.TwoTone.Star, "Star resource", Modifier.testTag("resources-star"))
|
|
55
|
-
}
|
|
56
|
-
Icon(
|
|
57
|
-
if (selected) Icons.Filled.Favorite else Icons.Filled.FavoriteBorder,
|
|
58
|
-
"Current resource",
|
|
59
|
-
Modifier.size(size.dp).testTag("resources-current").onGloballyPositioned {
|
|
60
|
-
width = it.size.width
|
|
61
|
-
height = it.size.height
|
|
62
|
-
},
|
|
63
|
-
tint = tint,
|
|
64
|
-
)
|
|
65
|
-
Button(onClick = { selected = !selected; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("resources-toggle")) { Text("Toggle resource") }
|
|
66
|
-
Button(onClick = { large = !large; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("resources-resize")) { Text("Resize resource") }
|
|
67
|
-
Button(onClick = { accent = !accent; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("resources-tint")) { Text("Tint resource") }
|
|
68
|
-
Button(onClick = { count += 1000; onStep?.invoke(count) }, enabled = false, modifier = Modifier.testTag("resources-disabled")) { Text("Disabled resource") }
|
|
69
|
-
Button(onClick = { selected = false; large = false; accent = false; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("resources-reset")) { Text("Reset resources") }
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportResources.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-resources-fixture",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"targets": [
|
|
6
|
-
"native"
|
|
7
|
-
],
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"@react-navigation/core": "catalog:",
|
|
10
|
-
"@react-navigation/native": "catalog:",
|
|
11
|
-
"one": "catalog:",
|
|
12
|
-
"react": "catalog:",
|
|
13
|
-
"react-native": "catalog:",
|
|
14
|
-
"react-native-reanimated": "catalog:",
|
|
15
|
-
"react-native-screens": "catalog:",
|
|
16
|
-
"react-native-worklets": "catalog:"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@react-native-community/template": "catalog:",
|
|
20
|
-
"peachsim": "workspace:*",
|
|
21
|
-
"vite": "catalog:"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"paths": {
|
|
4
|
-
"~/*": ["./*"]
|
|
5
|
-
},
|
|
6
|
-
"strict": true,
|
|
7
|
-
"allowArbitraryExtensions": true,
|
|
8
|
-
"rootDir": ".",
|
|
9
|
-
"module": "Preserve",
|
|
10
|
-
// allows react-native style imports without path extensions, for compat with platform-specific files
|
|
11
|
-
"moduleResolution": "Bundler",
|
|
12
|
-
"preserveSymlinks": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"jsx": "react-jsx",
|
|
15
|
-
"noImplicitAny": false,
|
|
16
|
-
"types": ["node", "react", "vite/client"],
|
|
17
|
-
"lib": ["dom", "esnext"]
|
|
18
|
-
},
|
|
19
|
-
"exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { one } from 'one/vite'
|
|
2
|
-
import { peachPlugin } from 'peachsim/vite'
|
|
3
|
-
export default {
|
|
4
|
-
root: import.meta.dirname,
|
|
5
|
-
plugins: [
|
|
6
|
-
one({
|
|
7
|
-
web: { defaultRenderMode: 'spa' },
|
|
8
|
-
native: {
|
|
9
|
-
bundler: 'vite',
|
|
10
|
-
app: {
|
|
11
|
-
name: 'KotlinResources',
|
|
12
|
-
scheme: 'kotlinresources',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlinresources' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { Text, View } from 'react-native'
|
|
3
|
-
import { Scroll } from './Scroll.kt'
|
|
4
|
-
|
|
5
|
-
export default function Index() {
|
|
6
|
-
const [step, setStep] = useState(0)
|
|
7
|
-
return (
|
|
8
|
-
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
9
|
-
<Scroll title={`Scroll step ${step}`} onStep={setStep} />
|
|
10
|
-
<Text testID="scroll-react-step">React step: {step}</Text>
|
|
11
|
-
</View>
|
|
12
|
-
)
|
|
13
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlinapp
|
|
2
|
-
|
|
3
|
-
import androidx.compose.foundation.background
|
|
4
|
-
import androidx.compose.foundation.horizontalScroll
|
|
5
|
-
import androidx.compose.foundation.layout.Arrangement
|
|
6
|
-
import androidx.compose.foundation.layout.Box
|
|
7
|
-
import androidx.compose.foundation.layout.Column
|
|
8
|
-
import androidx.compose.foundation.layout.Row
|
|
9
|
-
import androidx.compose.foundation.layout.fillMaxSize
|
|
10
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
11
|
-
import androidx.compose.foundation.layout.height
|
|
12
|
-
import androidx.compose.foundation.layout.padding
|
|
13
|
-
import androidx.compose.foundation.layout.safeDrawingPadding
|
|
14
|
-
import androidx.compose.foundation.layout.size
|
|
15
|
-
import androidx.compose.foundation.rememberScrollState
|
|
16
|
-
import androidx.compose.foundation.verticalScroll
|
|
17
|
-
import androidx.compose.material3.Text
|
|
18
|
-
import androidx.compose.runtime.Composable
|
|
19
|
-
import androidx.compose.runtime.getValue
|
|
20
|
-
import androidx.compose.runtime.mutableFloatStateOf
|
|
21
|
-
import androidx.compose.runtime.remember
|
|
22
|
-
import androidx.compose.runtime.setValue
|
|
23
|
-
import androidx.compose.ui.Alignment
|
|
24
|
-
import androidx.compose.ui.Modifier
|
|
25
|
-
import androidx.compose.ui.geometry.Offset
|
|
26
|
-
import androidx.compose.ui.graphics.Color
|
|
27
|
-
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
|
28
|
-
import androidx.compose.ui.input.nestedscroll.NestedScrollSource
|
|
29
|
-
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|
30
|
-
import androidx.compose.ui.platform.LocalDensity
|
|
31
|
-
import androidx.compose.ui.unit.dp
|
|
32
|
-
import kotlin.math.roundToInt
|
|
33
|
-
|
|
34
|
-
// a header a nested scroll connection collapses before a verticalScroll
|
|
35
|
-
// column moves, and a horizontalScroll row inside that column
|
|
36
|
-
@Composable
|
|
37
|
-
fun Nested() {
|
|
38
|
-
val maxHeader = with(LocalDensity.current) { 160.dp.toPx() }
|
|
39
|
-
var header by remember { mutableFloatStateOf(maxHeader) }
|
|
40
|
-
val column = rememberScrollState()
|
|
41
|
-
val row = rememberScrollState()
|
|
42
|
-
val connection = remember {
|
|
43
|
-
object : NestedScrollConnection {
|
|
44
|
-
override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
|
|
45
|
-
if (available.y >= 0) return Offset.Zero
|
|
46
|
-
val next = (header + available.y).coerceAtLeast(0f)
|
|
47
|
-
val used = next - header
|
|
48
|
-
header = next
|
|
49
|
-
return Offset(0f, used)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
val colors = listOf(Color(0xFF3F51B5), Color(0xFFE91E63), Color(0xFF009688), Color(0xFFFF9800))
|
|
54
|
-
Column(Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().nestedScroll(connection)) {
|
|
55
|
-
Text("Nested: header ${header.roundToInt()} column ${column.value} row ${row.value}", Modifier.padding(16.dp))
|
|
56
|
-
Box(Modifier.fillMaxWidth().height(with(LocalDensity.current) { header.toDp() }).background(Color(0xFF673AB7)))
|
|
57
|
-
Column(Modifier.fillMaxWidth().weight(1f).verticalScroll(column).padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
58
|
-
Row(Modifier.horizontalScroll(row), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
59
|
-
repeat(12) { i -> Box(Modifier.size(96.dp).background(colors[i % 4]), contentAlignment = Alignment.Center) { Text("H$i", color = Color.White) } }
|
|
60
|
-
}
|
|
61
|
-
repeat(20) { i -> Box(Modifier.fillMaxWidth().height(64.dp).background(colors[(i + 2) % 4]), contentAlignment = Alignment.Center) { Text("V$i", color = Color.White) } }
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Imported Compose scrolling
|
|
2
|
-
|
|
3
|
-
Run One in this fixture, then open its Android bundle in Peach on Pixel 8.
|
|
4
|
-
Build the native Android target on a remote builder. Import the same files in
|
|
5
|
-
Contrast with catalog versions materialized.
|
|
6
|
-
|
|
7
|
-
Open `/nested` for the shared pure/imported nested-scroll fixture. Its upward
|
|
8
|
-
drag collapses the 160 dp header before moving the vertical column, and a
|
|
9
|
-
horizontal drag moves the row inside that column. The text reports physical
|
|
10
|
-
header, column and row offsets.
|
|
11
|
-
|
|
12
|
-
RAN, 2026-10-13: One Android API 37, Peach and a signed-in Contrast import
|
|
13
|
-
match `420/0/0`, `0/84/0` and `0/84/504` after the same 24 delivered native
|
|
14
|
-
MotionEvent samples. The [nested functional receipt](https://r2.sootsim.com/kotlin-evidence/import-nested/e7c3e61f0841e5dd99eae4b1a80f692d5eeec8056fee3d0dd48014f05cc55478/proof.json)
|
|
15
|
-
binds the unchanged host, source, APK, compiled artifacts, input history and
|
|
16
|
-
captures. Five saved-data controls reject changed offsets, missing samples,
|
|
17
|
-
wrong engine/source identities and slow-animation settings. These bounded
|
|
18
|
-
drags establish settled state, without fling, presentation timing or pixel
|
|
19
|
-
fidelity. Contrast preview shell appearance and production delivery remain
|
|
20
|
-
outside this receipt.
|
|
21
|
-
|
|
22
|
-
Tap `scroll-step` to scroll all five containers through their official state
|
|
23
|
-
APIs. The plain containers move to 180 and 80 physical pixels. LazyColumn,
|
|
24
|
-
LazyRow and LazyVerticalGrid move to index/offset pairs 5/8, 4/4 and 8/6.
|
|
25
|
-
The callback updates React and the imported title while Compose retains count.
|
|
26
|
-
The disabled action must preserve every value. The second enabled tap resets
|
|
27
|
-
every scroll state to zero and advances count to two. Capture all four states,
|
|
28
|
-
including visible indexed content. This fixture claims state and scroll-to
|
|
29
|
-
execution, without drag/fling timing or full-frame pixel fidelity.
|
|
30
|
-
|
|
31
|
-
RAN, 2026-10-11: fresh One Android API 37, Peach and Contrast Android import
|
|
32
|
-
runs pass the four states with identical offsets and visible item indices.
|
|
33
|
-
The [functional receipt](https://r2.sootsim.com/kotlin-evidence/import-scroll/916c4e8107ef1d5972d87c74dc24d331616d0edab675d9792e06905041b92171/proof.json)
|
|
34
|
-
binds the Kotlin source, compiler, native APK, captures and executed probes.
|
|
35
|
-
All 50 published objects pass SHA256 readback; a wrong offset and a disabled
|
|
36
|
-
callback change reject the saved verdict. Contrast uses the repository's
|
|
37
|
-
`CONTRAST_TEST_STABLE_WATCH=1` setup to preload its known dependencies before
|
|
38
|
-
navigation. Required CI delivery remains separate from this functional proof.
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlinscroll
|
|
2
|
-
|
|
3
|
-
import androidx.compose.foundation.background
|
|
4
|
-
import androidx.compose.foundation.horizontalScroll
|
|
5
|
-
import androidx.compose.foundation.layout.Arrangement
|
|
6
|
-
import androidx.compose.foundation.layout.Column
|
|
7
|
-
import androidx.compose.foundation.layout.Row
|
|
8
|
-
import androidx.compose.foundation.layout.fillMaxSize
|
|
9
|
-
import androidx.compose.foundation.layout.padding
|
|
10
|
-
import androidx.compose.foundation.layout.size
|
|
11
|
-
import androidx.compose.foundation.lazy.LazyColumn
|
|
12
|
-
import androidx.compose.foundation.lazy.LazyRow
|
|
13
|
-
import androidx.compose.foundation.lazy.rememberLazyListState
|
|
14
|
-
import androidx.compose.foundation.lazy.grid.GridCells
|
|
15
|
-
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
|
16
|
-
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
|
|
17
|
-
import androidx.compose.foundation.rememberScrollState
|
|
18
|
-
import androidx.compose.foundation.verticalScroll
|
|
19
|
-
import androidx.compose.material3.Button
|
|
20
|
-
import androidx.compose.material3.MaterialTheme
|
|
21
|
-
import androidx.compose.material3.Surface
|
|
22
|
-
import androidx.compose.material3.Text
|
|
23
|
-
import androidx.compose.material3.lightColorScheme
|
|
24
|
-
import androidx.compose.runtime.Composable
|
|
25
|
-
import androidx.compose.runtime.getValue
|
|
26
|
-
import androidx.compose.runtime.mutableStateOf
|
|
27
|
-
import androidx.compose.runtime.remember
|
|
28
|
-
import androidx.compose.runtime.rememberCoroutineScope
|
|
29
|
-
import androidx.compose.runtime.setValue
|
|
30
|
-
import androidx.compose.ui.Modifier
|
|
31
|
-
import androidx.compose.ui.graphics.Color
|
|
32
|
-
import androidx.compose.ui.platform.testTag
|
|
33
|
-
import androidx.compose.ui.unit.dp
|
|
34
|
-
import kotlinx.coroutines.launch
|
|
35
|
-
|
|
36
|
-
@Composable
|
|
37
|
-
fun Scroll(title: String, onStep: ((Int) -> Unit)? = null) {
|
|
38
|
-
var count by remember { mutableStateOf(0) }
|
|
39
|
-
val vertical = rememberScrollState()
|
|
40
|
-
val horizontal = rememberScrollState()
|
|
41
|
-
val column = rememberLazyListState()
|
|
42
|
-
val row = rememberLazyListState()
|
|
43
|
-
val grid = rememberLazyGridState()
|
|
44
|
-
val scope = rememberCoroutineScope()
|
|
45
|
-
MaterialTheme(colorScheme = lightColorScheme()) {
|
|
46
|
-
Surface(Modifier.fillMaxSize()) {
|
|
47
|
-
Column(Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
48
|
-
Text(title, Modifier.testTag("scroll-title"))
|
|
49
|
-
Text("Count: $count", Modifier.testTag("scroll-count"))
|
|
50
|
-
Column(Modifier.size(280.dp, 64.dp).verticalScroll(vertical).background(Color(0xFFEADDFF))) {
|
|
51
|
-
repeat(20) { Text("Vertical $it", Modifier.size(280.dp, 32.dp)) }
|
|
52
|
-
}
|
|
53
|
-
Row(Modifier.size(280.dp, 48.dp).horizontalScroll(horizontal).background(Color(0xFFE8DEF8))) {
|
|
54
|
-
repeat(20) { Text("Horizontal $it", Modifier.size(100.dp, 48.dp)) }
|
|
55
|
-
}
|
|
56
|
-
LazyColumn(Modifier.size(280.dp, 64.dp).background(Color(0xFFEADDFF)), state = column) {
|
|
57
|
-
items(30) { Text("Column $it", Modifier.size(280.dp, 32.dp)) }
|
|
58
|
-
}
|
|
59
|
-
LazyRow(Modifier.size(280.dp, 48.dp).background(Color(0xFFE8DEF8)), state = row) {
|
|
60
|
-
items(30) { Text("Row $it", Modifier.size(100.dp, 48.dp)) }
|
|
61
|
-
}
|
|
62
|
-
LazyVerticalGrid(columns = GridCells.Fixed(2), modifier = Modifier.size(280.dp, 64.dp).background(Color(0xFFEADDFF)), state = grid) {
|
|
63
|
-
items(30) { Text("Grid $it", Modifier.size(140.dp, 32.dp)) }
|
|
64
|
-
}
|
|
65
|
-
Button(
|
|
66
|
-
onClick = {
|
|
67
|
-
scope.launch {
|
|
68
|
-
val next = count + 1
|
|
69
|
-
val moved = next % 2 == 1
|
|
70
|
-
vertical.scrollTo(if (moved) 180 else 0)
|
|
71
|
-
horizontal.scrollTo(if (moved) 80 else 0)
|
|
72
|
-
column.scrollToItem(if (moved) 5 else 0, if (moved) 8 else 0)
|
|
73
|
-
row.scrollToItem(if (moved) 4 else 0, if (moved) 4 else 0)
|
|
74
|
-
grid.scrollToItem(if (moved) 8 else 0, if (moved) 6 else 0)
|
|
75
|
-
count = next
|
|
76
|
-
onStep?.invoke(next)
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
modifier = Modifier.testTag("scroll-step"),
|
|
80
|
-
) { Text("Next scroll step") }
|
|
81
|
-
Button(onClick = { count += 1000; onStep?.invoke(count) }, enabled = false, modifier = Modifier.testTag("scroll-disabled")) {
|
|
82
|
-
Text("Disabled scroll step")
|
|
83
|
-
}
|
|
84
|
-
Text(
|
|
85
|
-
"vertical=${vertical.value};horizontal=${horizontal.value};column=${column.firstVisibleItemIndex},${column.firstVisibleItemScrollOffset};row=${row.firstVisibleItemIndex},${row.firstVisibleItemScrollOffset};grid=${grid.firstVisibleItemIndex},${grid.firstVisibleItemScrollOffset}",
|
|
86
|
-
Modifier.testTag("scroll-geometry"),
|
|
87
|
-
)
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportScroll.native'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportNested.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-scroll-fixture",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"targets": [
|
|
6
|
-
"native"
|
|
7
|
-
],
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"@react-navigation/core": "catalog:",
|
|
10
|
-
"@react-navigation/native": "catalog:",
|
|
11
|
-
"one": "catalog:",
|
|
12
|
-
"react": "catalog:",
|
|
13
|
-
"react-native": "catalog:",
|
|
14
|
-
"react-native-reanimated": "catalog:",
|
|
15
|
-
"react-native-screens": "catalog:",
|
|
16
|
-
"react-native-worklets": "catalog:"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@react-native-community/template": "catalog:",
|
|
20
|
-
"peachsim": "workspace:*",
|
|
21
|
-
"vite": "catalog:"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"paths": {
|
|
4
|
-
"~/*": ["./*"]
|
|
5
|
-
},
|
|
6
|
-
"strict": true,
|
|
7
|
-
"allowArbitraryExtensions": true,
|
|
8
|
-
"rootDir": ".",
|
|
9
|
-
"module": "Preserve",
|
|
10
|
-
// allows react-native style imports without path extensions, for compat with platform-specific files
|
|
11
|
-
"moduleResolution": "Bundler",
|
|
12
|
-
"preserveSymlinks": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"jsx": "react-jsx",
|
|
15
|
-
"noImplicitAny": false,
|
|
16
|
-
"types": ["node", "react", "vite/client"],
|
|
17
|
-
"lib": ["dom", "esnext"]
|
|
18
|
-
},
|
|
19
|
-
"exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { one } from 'one/vite'
|
|
2
|
-
import { peachPlugin } from 'peachsim/vite'
|
|
3
|
-
export default {
|
|
4
|
-
root: import.meta.dirname,
|
|
5
|
-
plugins: [
|
|
6
|
-
one({
|
|
7
|
-
web: { defaultRenderMode: 'spa' },
|
|
8
|
-
native: {
|
|
9
|
-
bundler: 'vite',
|
|
10
|
-
app: {
|
|
11
|
-
name: 'KotlinScroll',
|
|
12
|
-
scheme: 'kotlinscroll',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlinscroll' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|