immich/web
Timon 1fcc2b704b
feat(server)!: add isOwned filter to albums API (#28213)
* feat(server)!: add owned filter to albums API

BREAKING CHANGE: GET /albums with no parameters now returns all accessible albums (owned + shared-with-me) instead of only owned albums.

* document tri-state matrix

* web impl

* collapse to single method and handover branching to sql

* dedupe

* verify that owned, shared, and notShared counts are mapped independently from their respective queries

* refactor(server): add select:['id'] overload to albumRepository.getAll

Avoid fetching full album rows (with albumUsers/sharedLinks subqueries) in map.service where only album IDs are needed.

* focus relevant test filters

* fmt

* Revert "verify that owned, shared, and notShared counts are mapped independently from their respective queries"

This reverts commit 47aab458192c766de4662aada5a6841b091d2a80.

* sync sql

* Revert "document tri-state matrix"

This reverts commit a5b2355d0c6a084f2c021d517bf5ee80123d108c.

* address review comments

* inline shared condition and return as ternary

* sync sql

* use [...albums].sort

Array.toSorted() is not supported in Chrome 109

* use isShared and isOwned nomenclature

* fix e2e tests

* add params to sql query
2026-05-07 12:13:07 -04:00
..
bin chore: build sdk while server is starting (#22083) 2025-09-16 12:48:31 -04:00
src feat(server)!: add isOwned filter to albums API (#28213) 2026-05-07 12:13:07 -04:00
static fix: allow bots to access /s/ urls (#27579) 2026-04-07 09:22:53 -05:00
tests chore(web): sort imports (#27922) 2026-04-21 14:51:38 -04:00
.browserslistrc chore: bump browserlists version and load tscompat browserlist from file (#19212) 2025-06-16 10:03:46 -05:00
.dockerignore feat(web)!: SPA (#5069) 2023-11-17 22:13:36 -06:00
.gitignore Add ablum feature to web (#352) 2022-07-15 23:18:17 -05:00
.npmrc Add web interface with admin functionality (#167) 2022-05-21 02:23:55 -05:00
.nvmrc chore(deps): update node.js to v24.15.0 (#28006) 2026-04-21 09:47:32 +00:00
.prettierignore chore(web): fix weblate conflicts (#10071) 2024-06-10 13:59:54 +01:00
.prettierrc chore(web): sort imports (#27922) 2026-04-21 14:51:38 -04:00
eslint.config.js chore: tailwind linting (#28165) 2026-05-01 00:18:03 -04:00
mise.toml chore: update task commands in web/mise.toml to use pnpm (#26345) 2026-02-19 16:10:55 -05:00
package.json feat(web): custom video player controls (#26183) 2026-05-01 17:26:30 +00:00
README.md fix(web): Updated web README.md (#12899) 2024-09-25 12:59:35 +00:00
svelte.config.js chore: silence svelte state referenced locally warning (#28263) 2026-05-06 17:22:39 +02:00
tsconfig.json chore(deps): update dependency typescript to v6 (#27577) 2026-04-07 17:15:55 +02:00
vite.config.ts chore(web): sort imports (#27922) 2026-04-21 14:51:38 -04:00

Immich web project

This project uses the SvelteKit web framework. Please refer to the SvelteKit docs for information on getting started as a contributor to this project. In particular, it will help you navigate the project's code if you understand the basics of SvelteKit routing.

When developing locally, you will run a SvelteKit Node.js server. When this project is deployed to production, it is built as a SPA and deployed as part of the server project.