Commit graph

7 commits

Author SHA1 Message Date
Jan-Henrik Bruhn
010d8a558c Update tests for new activeStateTangibles tracking
Changes:
- Replace lastStateChangeSource with activeStateTangibles in tests
- Update tuioStore.test.ts to test array-based tracking
- Add tests for adding/removing multiple state tangibles
- Add test for duplicate prevention
- Update TUIO integration tests to use new API
- Pass fromTangible=true parameter to switchToState in tests

All 447 tests now passing.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 11:50:48 +01:00
Jan-Henrik Bruhn
f002e1660d Add TUIO protocol integration for tangible hardware detection
Implements WebSocket-based TUIO protocol support to connect physical tangibles
to presentation mode. When tangibles are placed on/removed from a touch screen,
they trigger configured actions (label filtering or state switching).

Features:
- TUIO 1.1 and 2.0 protocol support with version selection
- WebSocket connection management with real-time status
- Test connection feature in configuration dialog
- Persistent settings (WebSocket URL and protocol version)
- Multi-tangible handling: union for filters, last-wins for states
- Automatic connection in presentation mode

Implementation:
- TuioClientManager: Wrapper for tuio-client library with dual protocol support
- WebsocketTuioReceiver: Custom OSC/WebSocket transport layer
- useTuioIntegration: React hook bridging TUIO events to app stores
- TuioConnectionConfig: Settings UI with real-time tangible detection
- tuioStore: Zustand store with localStorage persistence

Technical details:
- TUIO 1.1 uses symbolId for hardware identification
- TUIO 2.0 uses token.cId for hardware identification
- Filter mode: Activates labels, union of all active tangibles
- State mode: Switches timeline state, last tangible wins
- Cleanup: Removes only labels no longer in use by any tangible
- Unknown hardware IDs are silently ignored

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 23:32:54 +01:00
Jan-Henrik Bruhn
8dcca18008 add tangible configuration interface and internal model for tangible configuration 2026-01-16 09:50:10 +01:00
Jan-Henrik Bruhn
a554aa156f fix: resolve build and type errors
Fixes TypeScript compilation errors that prevented production build:

- Fix invalid node shape type in integration test (diamond → circle)
- Export WorkspaceSettings type from main types module
- Exclude test files from production build TypeScript check

All tests (368), linting, and build now pass successfully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 09:46:44 +01:00
Jan-Henrik Bruhn
b748862865 investigate the current linting errors and fix them (vibe-kanban b099eb14) 2025-11-10 12:29:37 +01:00
Jan-Henrik Bruhn
7fa0965001 there is a __tests__ folder and a test folder. That seems confusing, is that a SotA TypeScript/REact/Vite testing pattern? (vibe-kanban c7c8b21b) 2025-11-10 12:26:34 +01:00
Jan-Henrik Bruhn
650819a083 create some first integration tests, determining where it actually makes sense. (vibe-kanban d736b771) 2025-11-10 12:22:30 +01:00