Fourteen commits since v0.13.0. See CHANGELOG.md for the full list. Two additions: `npm run doctor`, which runs the config doctor from a terminal — including inside the shipped image — and exits with the worst finding, so it can gate a deployment script; and a Playwright spec that loads all fourteen admin routes against a production build. One change, invisible on screen: the admin panel got a form-field layer (#533). Five fixes: grid.gap on both axes (#513), the dashboard status badge (#539), the journal editor's unsaved-changes guard (#538), essay paragraph markup (#537), and aria-pressed on the panel's switches and pickers.
89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# Contributing to Immich Folio
|
|
|
|
Thanks for your interest in contributing! 🎉
|
|
|
|
## Ways to contribute
|
|
|
|
- **Bug reports** — [Open a bug report issue](https://github.com/ralksta/immich-folio/issues/new?template=bug_report.md)
|
|
- **Feature requests** — [Open a feature request](https://github.com/ralksta/immich-folio/issues/new?template=feature_request.md)
|
|
- **Pull requests** — see below
|
|
- **Discussions** — [Ask questions or share ideas](https://github.com/ralksta/immich-folio/discussions)
|
|
|
|
## Branches
|
|
|
|
**Open pull requests against `dev`, not `main`.**
|
|
|
|
`dev` is where everything is integrated. `main` only ever moves through a
|
|
release: it is fast-forwarded from `dev`, tagged, and the tag triggers the
|
|
Docker image publish. A PR against `main` would put unreleased code into the
|
|
branch that is supposed to match the published image — so please branch off
|
|
`dev` and target it.
|
|
|
|
CI runs on pull requests to either branch, so a PR against `dev` is checked
|
|
exactly the same way.
|
|
|
|
If you opened a PR against `main` by accident, no need to redo the work — you
|
|
can change the target branch on the PR page under **Edit** next to the title.
|
|
|
|
## Development setup
|
|
|
|
```bash
|
|
# 1. Clone and switch to the integration branch
|
|
git clone https://github.com/ralksta/immich-folio.git
|
|
cd immich-folio
|
|
git checkout dev
|
|
|
|
# 2. Install
|
|
npm install
|
|
|
|
# 3. Configure
|
|
cp .env.local.example .env.local
|
|
cp content/gallery.yaml.example content/gallery.yaml
|
|
# Edit .env.local or set IMMICH_API_URL + IMMICH_API_KEY
|
|
|
|
# 4. Run
|
|
npm run dev # http://localhost:3000
|
|
npm run build # production build check
|
|
npm run doctor # check the configuration if something looks wrong
|
|
```
|
|
|
|
## Before submitting a PR
|
|
|
|
```bash
|
|
npx tsc --noEmit # must be 0 errors
|
|
npx vitest run # all tests must pass
|
|
npm run build # build must succeed
|
|
```
|
|
|
|
## Code style
|
|
|
|
- **TypeScript** — strict mode, no `any` without justification
|
|
- **Components** — Server Components by default; use `'use client'` only when necessary
|
|
- **CSS** — vanilla CSS variables, no Tailwind, no CSS-in-JS
|
|
- **Naming** — descriptive names, no abbreviations in public APIs
|
|
|
|
## Commit messages
|
|
|
|
Use [Conventional Commits](https://www.conventionalcommits.org/):
|
|
|
|
```
|
|
feat: add new hero style
|
|
fix: correct image aspect ratio on mobile
|
|
security: escape HTML in map popups
|
|
docs: update theming guide
|
|
chore: bump next to 15.x
|
|
```
|
|
|
|
## Pull Request checklist
|
|
|
|
- [ ] Targets `dev`
|
|
- [ ] `npx tsc --noEmit` passes
|
|
- [ ] `npx vitest run` passes
|
|
- [ ] `npm run build` passes
|
|
- [ ] No secrets in the diff
|
|
- [ ] Documentation updated if needed
|
|
|
|
## License
|
|
|
|
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
|