PR Checklist
A minimal devcontainer is supplied with this repository. All commands can be executed directly inside this container to avoid tedious installation of the environment.
The provided devcontainer isn't complete at the moment. At least all dockerized steps in the Makefile won't work (make dev, ....). Feel free to contribute!
When contributing code through a pull request, please check the following:
Web Checks
-
mise //web:lint(linting via ESLint) -
mise //web:format(formatting via Prettier) -
mise //web:check-svelte(type checking via SvelteKit) -
mise //web:check-typescript(type checking viatsc) -
mise //web:test(unit tests)
Run all web checks with mise //web:checklist
Use mise //web:lint-fix and mise //web:format-fix to automatically correct some issues.
Documentation
-
mise //docs:format(formatting via Prettier) - Update the
_redirectsfile if you have renamed a page or removed it from the documentation.
Use mise //docs:format-fix to automatically fix formatting.
Server Checks
-
mise //server:lint(linting via ESLint) -
mise //server:format(formatting via Prettier) -
mise //server:check(type checking viatsc) -
mise //server:test(unit tests)
Run all server checks with mise //server:checklist
Use mise //server:lint-fix and mise //server:format-fix to automatically correct some issues.
Mobile Checklist
-
mise //mobile:codegen(auto-generate files using build_runner) -
mise //mobile:lint(static analysis via Dart Analyzer and DCM) -
mise //mobile:format(formatting via Dart Formatter) -
mise //mobile:test(unit tests)
Run all these commands at once with mise //mobile:checklist
You can use mise //mobile:lint-fix to potentially correct some issues automatically for mise //mobile:lint.
Machine Learning Checklist
-
mise //machine-learning:lint(linting via ruff) -
mise //machine-learning:format(formatting via ruff) -
mise //machine-learning:check(type checking via mypy) -
mise //machine-learning:test(unit tests via pytest)
Run all machine learning checks with mise //machine-learning:checklist
OpenAPI
The OpenAPI client libraries need to be regenerated whenever there are changes to the immich-openapi-specs.json file. Note that you should not modify this file directly as it is auto-generated. See OpenAPI for more details.
Database Migrations
A database migration needs to be generated whenever there are changes to server/src/infra/src/entities. See Database Migration for more details.