Development and release
Repository layout
| Path | Responsibility |
|---|---|
| src/ | Published TypeScript/React Native source |
| example/ | Native Expo reference app and manual verification surface |
| doc/ | Docusaurus site |
| tests/ and src/**/tests | Unit and protocol tests |
| .github/workflows/ci.yml | Pull request lint, typecheck, tests, native export, and docs build |
| .github/workflows/deliver.yml | Manual package delivery and example-app updates |
| .github/workflows/sync-docs-to-builder.yml | Mirrors doc/docs markdown to the builder corpus |
Local checks
Run the checks that match the change:
yarn lint
yarn build
yarn test
yarn prepare
yarn doc build
Documentation changes must at least pass yarn doc build and git diff --check. Bluetooth or health changes also need protocol/service tests and physical-device verification where possible.
Version and publishing safety
The package version is stored in the root package.json. Documentation-only changes do not require a version bump. Package publishing is controlled by the manual Deliver workflow; merging a pull request is not a substitute for approving a release.
Before a release:
- Confirm the intended package version and @ovok/core peer range.
- Build the library and docs.
- Run the unit tests.
- Verify the generated package contents.
- Trigger Deliver with the exact version and an explicit publish choice.
- Verify the published package with npm view @ovok/native at the exact version.
Do not run a local release command casually: the configured release tool can create a git tag, GitHub release, and npm publication.
Documentation source of truth
The public surface is defined by src/index.tsx and the module index files. Device support is defined by SUPPORTED_DEVICES and its declarations. The example app is the reference for native configuration and provider composition. When a page claims an export or prop, verify it against those files before merging.