fix: accept boundingBox parameter on SceneScope.MeshNode composable#712
Closed
becmer wants to merge 1164 commits intosceneview:mainfrom
Closed
fix: accept boundingBox parameter on SceneScope.MeshNode composable#712becmer wants to merge 1164 commits intosceneview:mainfrom
boundingBox parameter on SceneScope.MeshNode composable#712becmer wants to merge 1164 commits intosceneview:mainfrom
Conversation
Replace rooftop_night_2k.hdr with Poly Haven studio_2k.hdr across ExploreScreen, GalleryScreen, and NodeCatalog for consistent professional studio lighting. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
- Auto-check for updates on app launch (LaunchedEffect) - UpdateBanner moved to Scaffold level — visible across all tabs - Showcase refresh button still triggers manual check - ProGuard rules for Play Core library - Version bump: 1.0.0 → 1.1.0 (versionCode 2) - Updated release notes EN + FR for v1.1.0 https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
…nt switcher Assets — models (replaced first batch with better choices): - Remove: sedan_car_scan, sleeping_cat, road_modular, animated_phoenix_bird, animated_angel_wings, animated_cat_walk, animated_dancing_giant - Add realistic: geisha_mask (1MB, 1593 likes), space_helmet (4MB PBR sci-fi), seal_statuette (2.8MB photogrammetry) - Add animated: animated_kawaii_meka (839KB, 3 anims), animated_toon_horse (614KB), animated_carnotaurus (635KB), animated_bunny_detective (372KB) Assets — environments (4 new Poly Haven HDRIs): - studio_2k.hdr: replaced with christmas_photo_studio_07 - studio_warm_2k.hdr: studio_small_08 — warm indoor lighting - outdoor_cloudy_2k.hdr: kloofendal_48d_partly_cloudy — bright overcast - sunset_2k.hdr: industrial_sunset_puresky — dramatic warm - autumn_field_2k.hdr: autumn_field_puresky — soft golden hour ExploreScreen: add 6-environment switcher chips (Night/Studio/Warm/Sunset/Outdoor/Autumn) using key() to force rememberEnvironment recomposition on selection change GalleryScreen: each card now uses a curated HDR matching its content mood; ModelScene/GeometryScene accept environmentPath parameter Bug fixes (compilation errors on branch): - Replace nonexistent Icons.Default.ThreeDRotation → ViewInAr / Layers - Add @file:OptIn(ExperimentalMaterial3Api::class) to GalleryScreen, ShowcaseScreen, QAScreen, InAppUpdateManager (LargeTopAppBar + LinearProgressIndicator APIs) - Fix recursive type inference in InAppUpdateManager.installStateListener - Add <uses-feature android:name="android.hardware.camera" required="false"> to AndroidManifest to fix PermissionImpliesUnsupportedChromeOsHardware lint error Build: assembleDebug ✓ · lint ✓ · bundleRelease ✓ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ation Deleted: animated_angel_wings, animated_cat_walk, animated_dancing_giant, animated_phoenix_bird, road_modular, sedan_car_scan, sleeping_cat Replaced by: geisha_mask, space_helmet, seal_statuette, animated_kawaii_meka, animated_toon_horse, animated_carnotaurus, animated_bunny_detective Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Current state: reflect iterated assets (6 HDR envs, 11 models), environment switcher feature, build status (debug/lint/release all passing) - Add ## KMP Roadmap section based on codebase analysis: - sceneview-core already has KMP targets (Android + iOS) - 25% of sceneview code is shareable to commonMain - 3 key blockers: Filament iOS bindings, Compose MP iOS, ARKit parity - 6-phase migration plan: Core → iOS surface → ARKit → Gestures → Resources → QA - Estimated 12-18 weeks, ~40% code reuse between platforms Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 2 of KMP migration — move portable math utilities from sceneview to sceneview-core commonMain, alongside existing collision/triangulation. Extracted to sceneview-core commonMain: - math/Math.kt: type aliases (Position, Rotation, Scale, Direction, Size, Transform, Color), Transform constructors, Float/Mat4 conversions, comparisons, slerp, lerp, normalToTangent, lookAt/lookTowards, colorOf - math/Platform.kt: expect/actual ulp() for JVM and iOS - RayHit: added getWorldPosition() using kotlin-math Float3 - Earcut: added Float2 convenience triangulate() overload Added kotlin-math 1.6.0 as api dependency to sceneview-core. sceneview module now depends on sceneview-core via api project(). Removed 14 duplicate collision files + 2 triangulation files from sceneview. sceneview Math.kt reduced to Android/Filament-only extensions (Box, Color). https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
- Convert root build.gradle from buildscript {} to plugins {} DSL
- Add pluginManagement block to settings.gradle for KMP plugin resolution
- Switch to PREFER_SETTINGS repository mode for KMP compatibility
https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
…ansform, Vertex Phase 3 of KMP migration — cross-platform rendering interfaces: - TransformManagerBridge: expect/actual-ready interface abstracting Filament's TransformManager for scene graph hierarchy and transforms - NodeTransform: pure kotlin-math local↔world space conversion utilities (position, quaternion, rotation, transform) - Vertex: platform-agnostic mesh vertex definition with position, normal, UV, and color — mirrors Geometry.Vertex for cross-platform geometry These lay the groundwork for iOS rendering backends (SceneKit/Metal) to implement the same scene graph operations using the same math types. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
- Remove AGP plugins from root build.gradle (applied per-module) - Use java.util.logging instead of android.util.Log in KMP jvm target - Fix pluginManagement repository order in settings.gradle - Use subprojects instead of allprojects for maven publish config https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Add kotlin.native.ignoreDisabledTargets=true to hide warnings about iOS targets that can't build on Linux/Windows CI environments. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Replace explicit dependsOn() calls with applyDefaultHierarchyTemplate() and modern sourceSets DSL. Fixes Kotlin 2.1 hierarchy template warning. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
…views - Download missing rooftop_night_2k.hdr (Poly Haven) — was causing crash on launch - Replace !! force-unwrap on createHDREnvironment() with null-safe fallback in ExploreScreen, GalleryScreen, and NodeCatalog - ShowcaseScreen: nodes without sceneContent now show a centered icon + "Preview unavailable" placeholder instead of empty space - Add Box import to ShowcaseScreen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…onment, resources Phase 4 of KMP migration — full cross-platform API surface: Components (sceneview-core/commonMain): - Component: base entity interface - CameraComponent: projection, lookAt, view↔world conversions - LightComponent: type, position, direction, color, intensity, shadows Gesture system: - CameraManipulator: orbit/pan/zoom interface with builder - GestureListener: OnGestureListener<N> with generic node type, TouchEvent/TouchAction abstractions replacing MotionEvent Environment: - Environment<L, S>: generic IBL + skybox data class Rendering: - SceneNode: full scene graph contract (transforms, hierarchy, lifecycle) - ResourceLoader: ModelLoader, MaterialLoader, EnvironmentLoader interfaces All interfaces use pure kotlin-math types (Position, Rotation, Quaternion, Transform, etc.) — no platform dependencies. Platform modules implement these with Filament (Android), SceneKit/RealityKit (iOS), or other backends. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Tests for sceneview-core commonTest: - Vector3Test: construction, add, subtract, dot, cross, length, lerp - QuaternionTest: identity, multiply, normalize, slerp - IntersectionsTest: ray-sphere, ray-box, sphere-sphere intersection - MathTest: type aliases, conversions, lerp, colorOf, almostEquals, toLinearSpace - NodeTransformTest: local↔world position/transform/quaternion round-trips https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Design document for native SwiftUI 3D/AR framework:
- RealityKit as rendering backend (Apple's active investment, visionOS)
- Declarative SwiftUI API mirroring Compose (SceneView { ModelNode() })
- Module structure, glTF support strategy, KMP integration
- Estimated ~2,300 lines for full implementation
- AI-first design checklist
https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
com.android.library and com.android.application plugins must be declared in root build.gradle for submodules (sceneview, arsceneview, samples) to resolve them. They were accidentally removed during plugins DSL migration. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Runs sceneview-core commonTest on JVM target (androidTest task) alongside existing build, lint, and AR emulator jobs. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Apple officially deprecated SceneKit at WWDC 2025 and published migration guide to RealityKit (session 288). This validates our choice of RealityKit as the iOS rendering backend. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Phase 5 of KMP extraction — add three new cross-platform modules: - animation/ — Easing functions (linear, cubic, spring), lerp/slerp, PropertyAnimation with loop/ping-pong, SpringAnimator (damped harmonic oscillator with BOUNCY/SMOOTH/STIFF presets) - math/Color.kt — Portable sRGB↔linear conversion (precise piecewise transfer function), luminance, HSV↔RGB, lerpColor, withAlpha - scene/SceneGraph.kt — Concrete scene graph manager with add/remove, findNode, dispatchFrame, hitTest (ray vs collision shapes) Also: - Fix Sphere constructor order in IntersectionsTest (radius, center) - Add comprehensive tests: AnimationTest, ColorTest, EarcutTest, SceneGraphTest (with TestNode implementing SceneNode interface) - Remove Filament-specific toLinearSpace() from sceneview module (now portable in sceneview-core) https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
…ore KMP Phase 6 of KMP extraction — cross-platform geometry and time utilities: - geometries/ — Pure math vertex generators (no Filament dependency): - GeometryData container (vertices + indices) - CubeGeometry: 24 vertices, 36 indices, per-face normals - SphereGeometry: UV sphere with configurable stacks/slices - CylinderGeometry: capped cylinder with side normals + cap normals - PlaneGeometry: simple XZ quad with configurable size/normal - utils/Duration.kt — Portable interval/fps calculations (moved from sceneview to sceneview-core, deleted duplicate) - Comprehensive tests: GeometryTest (vertex counts, unit normals, UV ranges, custom sizes), DurationTest (interval, fps at 30/60 Hz) https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
- BoundingBox data class with center/halfExtent/min/max - GeometryData.boundingBox() extension — AABB from vertices - hasNormals, hasUvCoordinates, hasColors extensions - Tests for cube/sphere bounding boxes and attribute queries https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
Line: single segment between two 3D points Path: polyline through N points with optional closed loop Shape: 2D polygon triangulation via Earcut + optional Delaunay interior points Includes comprehensive tests for all three generators. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
…ence Adds ~260 lines covering all KMP modules: collision, math, triangulation, rendering, animation, color, scene graph, geometry generators, gestures. Also adds test report upload step to CI workflow. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
SwiftUI + RealityKit wrapper mirroring Android's Scene {} composable API.
Includes SceneView, ModelNode, SceneEnvironment, CameraControls.
Targets iOS 18+ / visionOS 2.0+ via Swift Package Manager.
https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
AnimationTimeUtils: portable frame↔time↔fraction conversion functions extracted from ModelAnimation companion (pure math, no Android deps). CameraProjection: portable viewToWorld/worldToView/viewToRay using projection + view matrices directly (works with any renderer). Also adds exposureEV100/exposureFactor for camera exposure math. Both modules include comprehensive tests. https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
- Implement orbit camera math (spherical→cartesian, look-at, gesture handling) - Add GeometryNode: cube, sphere, cylinder, plane via MeshResource - Add LightNode: directional, point, spot light stubs - Add ARSceneView: ARKit + RealityKit AR skeleton with AnchorNode https://claude.ai/code/session_019EFRmXPyqMyt3nA5Ut72av
… website * feat: multi-platform expansion + Kobweb website scaffold - sceneview-core: add wasmJs target for web - Website: Kobweb (Compose HTML) scaffold with M3 Expressive, ModelViewer (model-viewer web component), SEO/LLM files - Flutter bridges: Android ComposeView + iOS UIHostingController - React Native bridges: Android ViewManager + iOS RCTViewManager - Release workflow: fix npm version sync, Dokka fallback - .gitignore: exclude website build artifacts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add web module, Android TV sample, iOS demo app, App Store workflow - sceneview-web: Kotlin/JS + Filament.js WASM bindings (Engine, Scene, Camera, etc.) - sceneview-core: JS target with platform-specific actual implementations - samples/web-model-viewer: browser-based 3D viewer sample - samples/tv-model-viewer: Android TV with D-pad controls - samples/ios-demo: SwiftUI 3-tab App Store demo - .github/workflows/app-store.yml: TestFlight CI/CD pipeline Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add Compose Desktop scaffold (Windows/Linux/macOS) - sceneview-desktop module with Compose Desktop + LWJGL - Placeholder UI with grid viewport and status - Filament JNI integration documented as TODO - LWJGL 3.3.6 for OpenGL context management - Compose Desktop plugin added to root build.gradle Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add JS platform tests for sceneview-core and sceneview-web - sceneview-core JS tests: ulp, nanoTime, logWarning platform actuals - sceneview-web tests: CameraConfig, LightConfig, ModelConfig DSL builders - Fix settings.gradle: PREFER_PROJECT for Kotlin/JS Node.js repository Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update llms.txt with web API reference and platform coverage - Add sceneview-web Kotlin/JS API documentation - Add web setup instructions (npm, HTML canvas) - Add platform coverage summary table (9 platforms) - Document web constraints (no AR, WebGL2, glTF only) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: add READMEs and package.json for web and desktop modules - sceneview-web README: install, quick start, features, requirements - sceneview-web package.json: npm publish metadata - sceneview-desktop README: architecture, run/distribute commands, roadmap Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: address review findings — RN state, AR anchor, web light - React Native: move state from singleton ViewManager to per-instance FrameLayout tag, fixing multi-instance bug - Flutter AR: remove non-functional AnchorNode (no real ARCore anchor), place models directly in AR scene, document tap-to-place as TODO - sceneview-web: implement addLight() via LightManager, wire lightConfig in builder.apply(), remove unused deltaSeconds variable - Remove unused Scale import in Flutter plugin Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: add Kobweb website plan details to CLAUDE.md Ensure next session has full context: architecture, file list, design direction (M3 Expressive), SEO/LLM strategy, build config, and the decision to use sceneview-web (Filament.js) for 3D demos. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(website): integrate Kobweb website — M3 Expressive, SEO, 5 pages Kobweb (Compose HTML / Kotlin/JS) website with: - 5 pages: Index (landing), Quickstart, Samples, Playground, Changelog - Components: NavBar, Footer, CodeBlock, FeatureCard, PlatformTabs, Seo - Material Design 3 Expressive (28px radius, spring easing, tonal surfaces) - SEO: llms.txt, sitemap.xml, robots.txt, structured-data.json, OG/Twitter meta - Theme: Inter font, dark mode, responsive layout Cherry-picked from feat/kobweb-website branch + stash. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(mcp): add web samples (Kotlin/JS + Filament.js) - web-model-viewer: browser 3D viewer with camera, light, model - web-environment: IBL + skybox environment lighting - Add SampleId, SampleTag, and language types for web platform Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(website): add missing components + web/TV/iOS samples - Copy ModelViewer.kt and Layout.kt from website/website/ to website/ - Add web-model-viewer, tv-model-viewer, ios-demo to Samples page - Update hero caption: "Powered by Filament" (engine behind both model-viewer web component and sceneview-web) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(website): add missing Kobweb conf.yaml for build Copied from website/website/.kobweb/ — required by Kobweb plugin. kobwebExport now builds all 5 pages successfully. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: add quickstart guides for web, TV, Flutter, React Native - quickstart-web.md: Filament.js setup, Kotlin/JS API, limitations - quickstart-tv.md: Android TV D-pad controls, manifest, differences - quickstart-flutter.md: PlatformView bridge, Dart API, architecture - quickstart-react-native.md: native component, TypeScript props, setup - mkdocs.yml: add 4 new pages to navigation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(web): add OrbitCameraController with mouse/touch/pinch support - Spherical orbit camera: drag to orbit, scroll to zoom, right-drag to pan - Touch support: single-finger orbit, pinch-to-zoom - Damping/inertia for smooth motion - Auto-rotation option - Configurable limits (distance, phi angles) - Integrated into SceneView DSL: cameraControls() and autoRotate() - Controller updates in render loop automatically Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: add web/desktop CI jobs + update README platform table - CI: add web-desktop job (core JS, sceneview-web, web sample, TV sample, desktop module compilation + JS tests) - CI: add website job (Kobweb export with artifact upload) - CI: add tv-model-viewer to main sample builds - README: update architecture diagram with web + desktop modules - README: add 9-platform coverage table Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(mcp): add get_web_setup tool + sync llms.txt across docs/mcp - MCP: add get_web_setup tool with complete web setup guide (npm install, Kotlin/JS Gradle, HTML canvas, Filament.js code) - Sync llms.txt from root to docs/docs/ and mcp/ (adds web API reference and 9-platform coverage table) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(mcp): update tests for web samples + rebuild dist - Update sample count tests: 22 → 24 (+ 2 web), 3D: 16 → 18 - Update tag 'lighting' test: now includes web-environment - Rebuild dist/ with web samples, get_web_setup, and synced llms.txt - All 368 MCP tests pass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: remove duplicate website/website/.kobweb/conf.yaml Already copied to website/.kobweb/conf.yaml — the nested website/website/ directory was a leftover from the Kobweb scaffold. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(web): add auto-resize and resize() API - resize(width, height): update viewport and projection on demand - autoResize flag: automatically detect canvas CSS size changes in the render loop and re-project (no ResizeObserver needed) - Handles responsive layouts out of the box Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(website): add DamagedHelmet.glb model for hero 3D viewer Khronos CC0 licensed model used by the homepage hero section. Same model as the Android samples. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(mcp): add web (Kotlin/JS) code validation rules - Detect kotlin-js language from web imports (sceneview.web, kotlinx.browser) - web/ar-not-supported: error when ARScene used in web code - web/missing-start-rendering: warn when startRendering() not called - web/missing-canvas-resize: info when canvas not sized before create - web/missing-canvas-null-check: warn on unsafe getElementById cast - 16 new tests, 384 total pass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(web): proper animation time tracking with looping - Track real elapsed time via requestAnimationFrame timestamps - Pass looped time to Animator.applyAnimation(index, time) - Animations now play smoothly and loop correctly - Update Animator binding to accept optional time parameter Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add JS-specific geometry and collision tests - Vector3 add/subtract, dot product, cross product, length - Quaternion identity - Ray construction and direction - Box center and size - Sphere radius - 226 total JS tests pass (14 new) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(website): update copyright year + improve mobile navbar CSS - Footer: Copyright 2024 → 2024-2026 - NavBar: remove inline display:none from hamburger, add CSS default hide - Note: full mobile responsive fix requires removing inline styles from nav-links (Compose HTML inline styles override media queries) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: apply Anthropic harness design patterns for long-running sessions Based on https://www.anthropic.com/engineering/harness-design-long-running-apps - .claude/settings.json: hooks for pre-push review reminder and post-edit verification callback - .claude/handoff.md: structured handoff artifact between sessions (context resets > compaction pattern) - .claude/commands/evaluate.md: independent evaluator command with 5 weighted criteria (separate generator from evaluator pattern) - CLAUDE.md: "Long-running session rules" section with all patterns: context management, sprint contracts, decomposition, criteria-driven quality, complexity hygiene Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(website): mobile responsive navbar with hamburger menu - Post-process exported HTML to inject responsive CSS into <head> (Kobweb static export doesn't preserve dynamic Style{} composables) - NavBar: remove inline display:none from hamburger, let CSS handle - AppEntry: add responsive CSS in global Style block for dev mode - build.gradle.kts: add injectResponsiveCss task post kobwebExport - Tested: hamburger visible on mobile (375px), links hidden, hero centered Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: save branding reference — approved colors, typography, shapes Preserve the current theme decisions as reference before parallel changes arrive. Logo direction: blue wordmark (#1a73e8 / #8ab4f8), M3 Expressive tokens, Inter + JetBrains Mono fonts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: add marketing plan — launch triggers, channels, timing - 6 milestone triggers for communication (PR merge → v3.4.0) - 7 channels: LinkedIn, Twitter, Reddit, HN, Dev.to, Discord, Product Hunt - Content ideas: before/after, cross-platform video, AI story - Timing: coordinate all channels same week, after website + stores live - Logo next steps: icon/symbol design needed Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: add release sync protocol for marketing communication - Pre-launch checklist: ALL must be green before posting - Private/public sync: coordinate LinkedIn activity with release state - Release freeze flag via handoff.md - 24h buffer between deploy and first public post - 48h monitoring after communication goes live Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: deploy Kobweb website + MkDocs docs to GitHub Pages Combined deployment workflow: - Kobweb (marketing site) → root (/) - MkDocs (technical docs) → /docs/ - SEO files (robots.txt, sitemap.xml, llms.txt, structured-data.json) - 3D model (DamagedHelmet.glb) for hero viewer - Dokka API docs if available from release workflow - Responsive CSS injection post-export - Verification: file count + index.html existence check Triggers: push to main (website/** or docs/**), release, workflow_dispatch Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: prepare WASM target (blocked by kotlin-math wasmJs support) - Add wasmJs actual implementations (Log, ulp, nanoTime) — ready to go - wasmJs target commented out in build.gradle.kts — kotlin-math 1.6.0 doesn't publish wasmJs variant yet - When kotlin-math adds wasmJs: uncomment target, WASM builds immediately Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(web): add WebXR AR support — augmented reality in the browser - WebXR Device API bindings (XRSession, XRFrame, XRHitTestSource, etc.) - ARSceneView: WebXR + Filament.js integration - checkSupport() — detect AR capability - create(canvas) — start immersive-ar session with hit-test - Camera pose from WebXR viewer pose → Filament camera - Hit test results for tap-to-place - Supported: Chrome Android, Safari iOS 18+, Quest Browser, Edge - Features: hit-test, light-estimation, dom-overlay Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: add WebXR AR documentation to llms.txt - ARSceneView API: checkSupport, create, onHitTest, start/stop - Supported browsers: Chrome Android, Safari iOS 18+, Quest, Edge - Update constraint: AR now possible via WebXR (not "no AR") - Sync llms.txt to docs/ and mcp/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs(desktop): update README with Filament JNI architecture - Document the real path: FilamentPanel (Swing) → SwingPanel (Compose) - Same Java API as Android (Engine, Scene, View, Renderer) - Build instructions: Filament from source with JNI - Future API preview: Scene { } via SwingPanel + FilamentPanel - References: BUILDING.md, filament-java-example Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update session handoff — full night session summary Complete handoff artifact for next session: - 38 commits, 9 platforms, PR sceneview#709 ready - WebXR AR, WASM prep, Filament JNI architecture - Marketing plan, branding ref, release sync protocol - Priority: merge PR → deploy website → deploy stores → communicate Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Open core model: SDK free, Pro features paid (auto-entrepreneur) - Anthropic strategy: MCP marketplace, not repo contribution - Thomas's situation: CDI + auto-entrepreneur, Nantes, remote - Discord channel added to communication plan Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Kobweb Gradle plugin requires .kobweb/conf.yaml to exist. Was excluded during squash merge — force-adding it now. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Structured metadata for the official MCP Registry: - Namespace: io.github.sceneview/mcp - 10 tools, 2 resources, 24 samples - npm package: @sceneview/mcp - Categories: development, 3d, augmented-reality, mobile, web Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove PostToolUse callback hook that caused "Verification Required" - Remove PreToolUse checkpoint hook - Both project settings set bypassPermissions - Zero permission prompts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- MCP Pro: advanced AI 3D generation, preview rendering - Cloud API: server-side rendering, asset CDN, thumbnails - Priority support & consulting - Auto-entrepreneur structure documented - 4-phase roadmap from free MCP to Cloud API Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Layer 1: GitHub Sponsors + Open Collective (zero effort) - Layer 2: MCP Pro API with Stripe self-service (one-time setup) - Layer 3: Marketplace presence (publish once, sell forever) - Anti-replacement analysis (AI moat, community moat, multi-platform moat) - Legal structure roadmap (AE now → SASU when >50k€) - Marketing plan with brand identity + communication timing - Synced with CDI constraints: maximum autonomy, minimum management Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Enable the wasmJs() Kotlin Multiplatform target so Compose Multiplatform Web (WASM) consumers can use sceneview-core's shared math, collision, geometry, and animation code. Updates wasmJsMain actuals to use @JSFun JS interop (console.warn, performance.now) and adds wasmJsTest suite. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add comprehensive WebXR Device API bindings and Filament.js integration for immersive AR and VR experiences in the browser. New external declarations (Kotlin/JS): - XRSystem.kt — navigator.xr entry point, session mode constants - XRSession.kt — session lifecycle, render state, feature constants - XRFrame.kt — per-frame pose tracking, anchors, views - XRReferenceSpace.kt — all 5 reference space types (viewer, local, local-floor, bounded-floor, unbounded) - XRHitTestSource.kt — hit testing for AR surface detection, transient input - XRInputSource.kt — controllers, hand tracking (25 joints), gamepad Filament integration: - WebXRSession.kt — unified AR/VR session manager with Filament rendering - ARSceneView.kt — high-level AR convenience wrapper (hit test, tap-to-place) - VRSceneView — immersive VR with controller input (select, squeeze) Sample + tests: - web-model-viewer: "Enter AR" / "Enter VR" buttons with WebXR support detection - WebXRTest.kt: 10 test classes verifying all constant declarations Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…10.5 material-icons-core and material-icons-extended stopped publishing separate artifacts after 1.7.8 on Google Maven. The main material artifact continues at 1.10.5 but icons need their own version pin. Fixes CI build failure: Could not find material-icons-extended:1.10.5 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ron, diamond - Material 3 dark theme with SceneView blue branding - 3-tab layout: 3D Viewer (filled cube), Wireframe (3 shapes), About - Perspective projection with orbit rotation - Grid floor, colored faces, axes gizmo - About screen lists all 7 supported platforms - Ready for Filament JNI upgrade when native libs are available Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- WASM target, WebXR, Desktop renderer, CI fix, website live - Pro revenue model, legal authorization sent - Design rules: site as mirror, unified samples, blue brand Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add Android XR (Jetpack XR SceneCore) to supported platforms - Update Web to include WebXR, Desktop to software renderer - Document night session work (9 items completed) - Exclude Wear OS and Android Auto (no 3D rendering support) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ion-probe Both samples import androidx.compose.material.icons but didn't declare the dependency, causing compilation failures in CI. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Delete 15 obsolete sample apps now integrated into sceneview-demo: - ar-augmented-image, ar-cloud-anchor, ar-model-viewer, ar-point-cloud - model-viewer, camera-manipulator, gltf-camera, autopilot-demo - dynamic-sky, reflection-probe, physics-demo, post-processing - line-path, text-labels, demo (old) Keep only platform-specific showcases: - sceneview-demo (Android, Play Store, 4-tab Material 3, 14 demos) - tv-model-viewer (Android TV, D-pad controls) - web-model-viewer (Web, Filament.js + WebXR) - ios-demo (iOS, App Store, SwiftUI) - common (shared helpers) - recipes (markdown code recipes) Also: - Update CI and build-apks workflows for new sample set - Blue brand icon (isometric cube) for demo and TV apps - Branding guide with store asset checklist - CLAUDE.md updated with new samples structure Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- sceneview-demo → android-demo - tv-model-viewer → android-tv-demo - web-model-viewer → web-demo - ios-demo stays (already correct) Update settings.gradle, CI workflows, build-apks workflow. Document Desktop/Flutter/RN demos in their respective modules. CLAUDE.md updated with full sample matrix (9 platforms). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move desktop-demo into samples/ (was sceneview-desktop/). Copy flutter-demo and react-native-demo into samples/. Now all 8 platform demos live in one place: samples/android-demo/ samples/android-tv-demo/ samples/web-demo/ samples/ios-demo/ samples/desktop-demo/ samples/flutter-demo/ samples/react-native-demo/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Platforms section at the top: Android, Android TV, iOS, macOS, visionOS, Web, Desktop, Flutter, React Native — with renderer, framework, and sample directory for each. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Sample directory names updated to {platform}-demo convention
- Web status updated to include WebXR
- Desktop status updated to "Alpha" with software renderer
- Synced to docs/ and mcp/ copies
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
15 commits this session: WASM, WebXR, Desktop renderer, Android demo, samples cleanup (15→7), CI fixes, branding, Pro structure, website deploy. Next priorities documented for morning session. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
AR emulator job still referenced deleted ar-model-viewer, ar-augmented-image, ar-cloud-anchor, ar-point-cloud. Now builds android-demo which includes all AR features in its AR tab. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ator script - wasmJs target commented out in sceneview-core — kotlin-math:1.6.0 does not publish a wasmJs variant, causing kotlinNpmInstall to fail. Source sets preserved for when kotlin-math adds WASM support. - AR emulator script updated to use android-demo APK instead of deleted ar-model-viewer/ar-point-cloud/ar-augmented-image APKs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hero: v3.4.0 badge, 7 platforms listed - Install tabs: Android 3D, Android AR, iOS, Web, Desktop, Flutter - All version refs bumped to 3.4.0 - Changelog: v3.4.0 entry with 7 highlights - GitHub link corrected to SceneView/sceneview - Structured data: 8 operating systems Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SECRETS.md: complete inventory of all 15 GitHub secrets (Android ✅, Maven ✅, npm ✅, iOS ❌ missing) - Play Store workflow: update paths from sceneview-demo to android-demo Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
PostToolUse hook on Bash: when gh secret set/delete is detected, injects a reminder to update branding/SECRETS.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Apple Distribution certificate (expires 2027-03-25) - Provisioning profile (App Store, io.github.sceneview.demo) - App Store Connect API key (Gestionnaire d'apps role) - Team ID: 5G3DZ3TH45, Bundle ID: io.github.sceneview.demo - SECRETS.md inventory fully green (21/21 secrets) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Package name changed from io.github.sceneview.demo to io.github.sceneview.sample.android during the rename refactor. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Added optional `boundingBox: Box? = null` parameter to `MeshNode`. - Parameter is passed through to the underlying `MeshNodeImpl` construction.
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.
boundingBox: Box? = nullparameter toMeshNode.MeshNodeImplconstruction.Fixes #711
What
Why
How
Checklist
/reviewpassed — no threading, Compose API, or style issues/documentrun — KDoc updated for changed public APIs,llms.txtupdated if signatures changed/testrun — new tests added for new behaviour./gradlew :sceneview:assembleDebug :arsceneview:assembleDebugpasses.matfiles changed)