Contributing
For the general Lichtblick extension development workflow, see the Local Development guide. This extension uses yarn:
yarn install # Install dependencies
yarn build # Build extension
yarn test # Run tests
yarn lint # Lint with auto-fix
yarn lint:ci # Lint without auto-fix (CI mode)
yarn local-install # Build and install into local Lichtblick
yarn package # Create .foxe distribution file
Coding conventions
- Language: TypeScript with strict settings
- Formatting: Prettier (2-space indent, 100-char line width, semicolons, LF line endings)
- Linting: ESLint with
@lichtblickconfigs - Imports: Use path aliases (
@utils/,@features/,@converters,@assets/,@/)
Commit messages
Follow the Conventional Commits standard:
<type>(<scope>): <description>
Types: feat, fix, docs, style, refactor, test, chore, ci
Commits are validated by commitlint via the Husky commit-msg hook.
Testing
- Framework: Jest + ts-jest,
jsdomenvironment - Test files:
tests/**/*.spec.ts - Add or update tests alongside changes to converters, features, or utilities
Adding a new feature
- Create feature module in
src/features/<name>/withbuild<Name>Entity()and optionallybuild<Name>Metadata() - Add entity prefix in
src/config/entityPrefixes.ts - Add color/rendering constants in
src/config/constants.ts - Wire into GroundTruth converter in
src/converters/groundTruth/sceneUpdateConverter.ts - Add panel setting if the feature needs a visibility toggle
- Add tests in
tests/<name>.spec.ts
Release process
- Audit dependencies:
yarn audit --summary - Bump version in
package.json - Commit and push
- Tag:
git tag -s -a v<version> -m "Release v<version>" - Push tag:
git push origin v<version>
The GitHub Actions workflow builds the .foxe file and creates a release automatically.