Oskar Kapala
ce2b99948d
chore: drop Unity no-LLM PoC-1 (superseded by native OpenXR coexistence spec)
2026-06-10 15:36:03 +02:00
Oskar Kapala
cc3d066854
feat(vr-poc): Phase 1 scaffold — native OpenXR passthrough + quad panel
...
NDK/C++ NativeActivity, arm64-v8a, Gradle 8.12 + AGP 8.7.3 + CMake 3.22.1.
Implementacja (main.cpp):
- EGL headless PBuffer context (wymagany przez OpenXR GLES binding)
- xrCreateInstance z XR_FB_passthrough + XR_KHR_opengl_es_enable
- xrCreateSession → XrGraphicsBindingOpenGLESAndroidKHR
- XR_FB_passthrough: xrCreatePassthroughFB / xrCreatePassthroughLayerFB
(dynamiczne PFN, graceful fallback gdy extension niedostępna)
- Quad swapchain 512×256 — statyczny ciemnoniebieski panel 80×40 cm,
1 m przed użytkownikiem (przygotowany pod stb_truetype w fazie 5)
- Pętla klatek: xrWaitFrame / xrBeginFrame / [passthrough + quad] / xrEndFrame
- environmentBlendMode = OPAQUE (passthrough przez warstwę FB_passthrough)
Brakujące pliki SDK (nie w git, lista w vr-poc/README.md):
- libs/arm64-v8a/libopenxr_loader.so — z Meta OpenXR Mobile SDK
- ovr_sdk/OpenXR/Include/openxr/*.h — nagłówki OpenXR
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 15:33:27 +02:00
Oskar Kapala
eaf49270c2
chore: remove unity-quest, untrack pycache
2026-06-10 15:32:58 +02:00
Oskar Kapala
169fc7760f
chore: gitignore models/builds
2026-06-10 15:22:07 +02:00
Oskar Kapala
1cbcd19191
docs: native OpenXR coexistence PoC spec
2026-06-10 15:18:58 +02:00
Oskar Kapala
77c18e8b84
fix(tts): Linux audio — pw-play/paplay first, warn on nonzero exit
...
Na Linuksie wybiera pierwszy dostępny odtwarzacz w kolejności:
pw-play → paplay → aplay (wykrywa przez shutil.which).
Gdy żaden nie istnieje: "[TTS: brak odtwarzacza audio]".
Gdy odtwarzacz zwróci kod != 0: wypisuje ostrzeżenie ze stderr
(wcześniej aplay milczał bez śladu przy cichej awarii).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 14:01:30 +02:00
oskar
d0f9f2ef42
feat(ondevice): Unity URP project (unity-quest)
2026-06-10 11:54:49 +02:00
Oskar Kapala
7fb90cfa41
chore: .gitignore (Unity+Python), untrack __pycache__
2026-06-10 11:43:52 +02:00
Oskar Kapala
921a85d30b
Add export subcommand and Unity PoC-1 scaffold (ONDEVICE §4)
...
Python (ipin_vr/export.py):
- generate_bank(): levels 1–2 enumerated exhaustively (120/720 combos),
level 3 random with dedup; all deduplicated per-level
- run_export(): CLI --per-level / --out / --seed flags per ONDEVICE §4.1
- cli.py routes "export" subcommand before session args (backward-compat)
- 14 new tests: format, dedup for all 3 levels, space caps (L1=120, L2=720),
seed determinism, file output
Unity scaffold (ondevice/Scripts/):
- CommandBank.cs: loads commands.json from StreamingAssets (WebRequest on Android)
- TtsManager.cs: sherpa-onnx integration with [SHERPA] stubs, StreamingAssets→
persistentDataPath copy, defensive Speak() with onDone callback
- SessionController.cs: passthrough flow §6, level switching, busy guard on Next
- ondevice/README.md: full manual Editor steps §5 (Unity setup, Meta XR SDK,
sherpa-onnx install, scene wiring, font, build, metrics)
pytest: 37/37 passed
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 16:11:53 +02:00
Oskar Kapala
691c8ea360
Implement Stage 1: command generator, CLI, TTS and LLM clients
...
- lexicon.py: exact forms from docs/LEXICON.md (Polish diacritics preserved)
- generator.py: Clause/Command dataclasses, render(), random_command(level 1-3)
- llm.py: OpenAI-compatible client via urllib, JSON-only contract, fallback to random
- tts.py: Piper via subprocess, defensive (prints [TTS off: reason] on any failure)
- cli.py: argparse interface per SPEC §9
- tests/test_generator.py: 23 tests covering all genders, locations, level-3 joining,
capitalisation; all pass
DoD verified: pytest 23/23, python -m ipin_vr --level 3 --count 6 --no-audio OK.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 15:03:50 +02:00
Oskar Kapala
ad397ae1bd
docs: spec, lexicon, roadmap
2026-06-09 14:57:13 +02:00
Oskar Kapala
b287617930
first commit
2026-06-09 13:56:12 +02:00