Commit Graph
343 Commits
Author SHA1 Message Date
renovate[bot] 34fe6e0246 chore(deps): pin postgres docker tag to cf78e76 (#725) 2026-08-25 19:59:06 +02:00
Jason Rasmussen b940c9b2de feat: carousel card icons (#722) 2026-08-21 16:22:46 -04:00
Zack PollardandClaude Opus 5 10e376848a chore(survey): update dependencies (#718)
* fix(survey): import Migrator from kysely/migration

kysely 0.29 moved Migrator, Migration and MigrationProvider out of the
package root and into the kysely/migration subpath export, so the
self-hosted Node entrypoint died at startup with "Migrator is not a
constructor" and served every request against an unmigrated database.
packages/sql-tools already imports from the subpath; this brings the
survey backend in line.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aAfftndexMEN2j2os6yEv

* chore(deps): update survey.immich.app dependencies to latest

Brings every dependency of the survey app and its backend up to the
newest release published on npm, and aligns the app with the TypeScript
setup the rest of the monorepo already uses.

Majors:
- vite 7 -> 8 with @sveltejs/vite-plugin-svelte 6 -> 7 (the plugin's
  peer range requires vite 8 and svelte >= 5.46.4); every other app in
  the workspace was already on this pair
- typescript ^5.9.2 -> the workspace convention of
  typescript -> npm:@typescript/typescript6 plus @typescript/native ->
  npm:typescript@7. @sveltejs/kit, svelte-check and typescript-eslint
  all cap their typescript peer below 7, so TS 6 stays the tooling
  compiler and TS 7 native is installed alongside it
- @types/node 24 -> 26
- backend: @hono/node-server 1 -> 2 (drops Node 18, removes the Vercel
  adapter; neither is used here), better-sqlite3 12 -> 13 (Node-API
  rewrite, same JS API) and @types/better-sqlite3 7 -> 9

Everything else is a minor or patch bump: @sveltejs/kit 2.70.3, svelte
5.56.9, vitest 4.1.11, eslint 10.8.1, tailwindcss 4.3.3, wrangler
4.124.0, hono 4.13.3, playwright 1.62.1, and the rest.

@cloudflare/workers-types and @sveltejs/kit were published inside pnpm's
minimumReleaseAge window, so they need an explicit exemption for
`pnpm install --frozen-lockfile` to accept the lockfile. The entries can
be dropped once those versions age out.

Only the two survey importers changed in the lockfile; the other 15
workspace projects resolve identically.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aAfftndexMEN2j2os6yEv

* chore(survey): build the Docker image on node 24

better-sqlite3 13 declares engines node >= 22 and the repo sets
engine-strict, so `pnpm install` in the image no longer resolves on
node:20-slim. node 24 matches the version .mise/config.toml pins for
CI and local development.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aAfftndexMEN2j2os6yEv

* chore(deps): keep survey deps inside pnpm's minimumReleaseAge window

@sveltejs/kit 2.70.3 and @cloudflare/workers-types 5.20260819.1 were
published within pnpm's minimum release age, so accepting them required
a minimumReleaseAgeExclude entry for `pnpm install --frozen-lockfile` to
pass. Step both back one release instead and drop the exemption, leaving
pnpm-workspace.yaml untouched. 2.70.2 is also what the other apps in the
workspace resolve to.

Also declares kysely and @immich/kysely-adapter-cloudflare on the
backend. Both are imported by backend/src but were only ever resolved
through the frontend's node_modules, so any install that did not also
include the frontend could not resolve them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aAfftndexMEN2j2os6yEv

* fix(survey): repair the Docker build

The image had not been buildable for a while. Each of these failed the
build on its own:

- `--filter survey...` matches no project; the app is survey.immich.app,
  so the frontend stage installed nothing and the build that followed
  had no node_modules
- the manifest for futo-backups-survey was still copied in, but that app
  was removed in 7d9d2d3, so COPY aborted on a missing path. Neither it
  nor the datasets manifest is needed: pnpm --filter installs fine
  without unrelated workspace manifests, so both are gone along with the
  comment that justified them
- the backend stage never received apps/survey.immich.app/shared, which
  backend/src imports, so esbuild could not resolve it
- the esbuild bundle is ESM but inlines CommonJS dependencies, and
  esbuild's ESM output replaces require with a stub that throws. ws hit
  it on `require("events")` and the server died on startup. build:node
  now restores a real require via createRequire, and the Dockerfile
  calls that script instead of repeating the flags

Adds a .dockerignore so COPY stops dragging the host's pnpm symlink farm
and stale build output into the context, and marks the backend package
as ESM, which is what it already is and what its bundle needs to avoid
being reparsed at every start.

Verified by replaying every stage's COPY and RUN outside Docker: both
builders complete, and the resulting payload boots, applies migrations,
serves the built frontend and records a survey response through
better-sqlite3.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aAfftndexMEN2j2os6yEv

* fix(lint): pin tsconfigRootDir in both eslint configs

The survey app is the only workspace project with its own flat config,
and ESLint 10 resolves a config per linted file, so a root `pnpm lint`
loads that config alongside this one. typescript-eslint records a
candidate tsconfigRootDir for every config file it is loaded from and
throws rather than guess once there is more than one, failing 215 files
across the survey app, ui.immich.app, bin and packages with "No
tsconfigRootDir was set, and multiple candidate TSConfigRootDirs are
present".

Aliasing the survey app's typescript to @typescript/typescript6 is what
surfaced it: the app used to resolve its own typescript-eslint instance
against typescript 5.9, so the two configs registered their candidates
in separate module state. Now both configs share one instance and see
each other's candidate.

Pinning tsconfigRootDir explicitly in each config is what the error
asks for and keeps each config anchored to its own directory.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aAfftndexMEN2j2os6yEv

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-08-19 16:59:51 -04:00
renovate[bot] 66825f8964 chore(deps): update dependency @cloudflare/workers-types to v5 (#713) 2026-08-18 20:25:10 +02:00
renovate[bot] 53a233eb02 fix(deps): update typescript-projects (#711) 2026-08-18 13:08:17 +02:00
renovate[bot] 405454a7b4 chore(deps): update node (#705) 2026-08-18 12:58:39 +02:00
renovate[bot] 6c3fdef4a1 chore(deps): update dependency esbuild to ^0.28.0 [security] (#702) 2026-08-18 12:48:29 +02:00
renovate[bot] f31a2dace4 fix(deps): update dependency @immich/ui to ^0.85.0 (#709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-18 12:26:17 +02:00
Zack Pollard 11c62c174d fix(survey): make the worker module work on a fresh environment (#703) 2026-08-16 12:01:56 -04:00
f4b32da07a feat: add survey app (#422)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Zack Pollard <zackpollard@Zacks-MBP.local>
2026-08-15 11:18:16 -04:00
Damon cb47e2344a feat: add Immich Dark Theme Generator to awesome.immich.app (#692)
* Add Immich Dark Theme Generator to items.json

Added new item for Immich Dark Theme Generator with description and link.

* Update items.json
2026-08-14 13:21:46 +00:00
Alex bf19430d87 chore: home page consistency (#701) 2026-08-14 09:17:10 -04:00
Jason Rasmussen d3e2afadaa feat: roadmap update (#699) 2026-08-12 02:06:48 +00:00
Jason RasmussenandAlex e98d680642 feat: features section (#681)
* feat: new homepage feature section

* update screenshots

* feat: new feature card

* facial recognition screenshot

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2026-08-11 16:08:46 -04:00
renovate[bot]andDaniel Dietzler 8082995101 chore(deps): update dependency eslint-plugin-unicorn to v73 (#697)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-11 12:10:18 +02:00
renovate[bot] 7884f7edda chore(deps): update node.js to v24.19.0 (#695) 2026-08-11 11:49:18 +02:00
renovate[bot] 2fa7fa8cd0 chore(deps): update dependency @cloudflare/vitest-pool-workers to ^0.20.0 (#694) 2026-08-11 11:48:12 +02:00
renovate[bot]andDaniel Dietzler 1f8218d3ef chore(deps): update typescript-projects (#686)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-08-05 11:31:30 +02:00
renovate[bot] a7a30791c9 chore(deps): update node.js to v24.18.1 (#685) 2026-08-04 21:02:42 +02:00
Daniel Dietzler cae357f8e4 fix: type for recap posts (#677) 2026-07-31 15:42:45 +00:00
Jason Rasmussen c01b659064 feat: recap post (#676) 2026-07-31 17:07:09 +02:00
Daniel Dietzler edf41e04cd fix: release post (#674) 2026-07-29 14:34:28 +00:00
Jason Rasmussen 0ae8001b4a chore: release v3.1.0 (#667) 2026-07-29 16:20:45 +02:00
Jason Rasmussen 7d9d2d3801 chore: remove futo-backup-survey app (#665) 2026-07-27 14:38:43 -04:00
Philipp 8cf3215bae feat: add Immich Desktop for Mac OS (#649)
Adding Immich Desktop for Mac OS

Photos and videos from your immich library,
right in the macOS Finder and in every file dialog.
2026-07-27 14:18:33 -04:00
Tobias Schottstädt 636d0d53e4 feat: add Immich Screensaver (#662)
* Update items.json

Add Immich Screensaver repository to client apps section

* feat: add Immich Screensaver

* feat: add Immich Screensaver
2026-07-27 14:14:48 -04:00
Michael Reid 7af44e4eee feat: add SynoCommunity distribution and installation guide for Immich native DSM package (#656)
* Add SynoCommunity distribution and installation guide

Add SynoCommunity to the awesome.immich.app distributions and guides
sections, with a full installation guide for the native DSM package.

* Point SynoCommunity entries to docs.synocommunity.com
2026-07-27 14:11:28 -04:00
Daniel Dietzler a8b0e63422 fix: clarify v3 migration docs (#658) 2026-07-25 15:17:29 +00:00
Daniel Dietzler b3be976b0b fix: fdroid link (#655) 2026-07-23 13:18:13 +02:00
renovate[bot]andDaniel Dietzler 1122388864 chore(deps): update dependency eslint-plugin-unicorn to v70 - abandoned (#633)
* chore(deps): update dependency eslint-plugin-unicorn to v70

* fix: linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-20 09:44:05 -04:00
Vinyas N S 4760481811 feat(ui): add loading state support to FormModal (#630) 2026-07-16 12:36:11 +02:00
renovate[bot] a91d375336 chore(deps): update dependency vitest-browser-svelte to v3 (#646)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-15 11:13:39 -04:00
TimonandJason Rasmussen 969c7e4bea feat: show maintenance status on awesome apps (#626)
* feat: show maintenance status on awesome apps

* chore: clean up

* chore: better sort order

---------

Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2026-07-15 10:59:23 -04:00
Mees Frensel 55e925d180 feat(ui): improve input styling consistency (#634) 2026-07-15 10:58:53 -04:00
Sayantan Santra 0327211b23 feat: add Immich Custom Memories (#622)
Added Immich Custom Memories to awesome.immich.app items
2026-07-15 10:54:34 -04:00
Daniel Dietzler 250bed69bd fix: migration docs should mention removed faces from people array (#627) 2026-07-15 10:09:49 -04:00
Sergey Katsubo a77d4fa93d fix(blog): typos (#625)
* Fix 2 typos in 2026-may

* Fix link to version.immich.cloud

* Use https for Discord link in futo-two-years-later

* Capitalize url to URL in 2026-june-recap

To match "URL" spelling on other pages

* Remove trailing whitespace in v3-migration

In html version, it gets translated into an extra empty line as `<p>` with `&nbsp;`

* Fix several &mdash; in 2025-october-recap

They were displayed as `&mdash;` on web

* Fix missing "to" in 2025-october-recap

Here: "in order make it possible"
2026-07-15 10:08:37 -04:00
renovate[bot]andDaniel Dietzler cb30074512 fix(deps): update dependency feed to v6 (#643)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-14 14:18:57 +02:00
renovate[bot]andDaniel Dietzler 19869213d2 chore(deps): update dependency typescript to v7 (#642)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-14 13:51:10 +02:00
renovate[bot] a307812413 chore(deps): update node (#638) 2026-07-14 12:40:31 +02:00
Brandon Wees 4ad80a6768 fix: missed app id change (#637) 2026-07-13 15:59:29 +00:00
Brandon Wees 849580b8f0 chore: remove @bwees app IDs from site associations (#636)
* chore: remove @bwees app IDs from

* Modify appIDs in apple-app-site-association

Updated appIDs list in apple-app-site-association file.
2026-07-13 10:58:36 -05:00
Brandon Wees 4509517640 fix: FUTO team ID (#635) 2026-07-13 10:55:31 -05:00
renovate[bot]andDaniel Dietzler 15475668cb chore(deps): update typescript-projects (#632)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-10 13:33:52 +02:00
Daniel Dietzler 732cac16b9 chore: clarify migration docs (#623) 2026-07-02 17:58:29 -04:00
Jason Rasmussen fdf6895012 feat: search (#618)
feat: june recap (#615)
2026-07-02 13:28:13 -04:00
Mees FrenselandJason Rasmussen b9f9cc65f8 feat(ui): add indicator to Icon (#612)
* feat(ui): add indicator to Icon

* fix: styles

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
2026-07-02 10:35:55 -04:00
Jason Rasmussen 36480c7392 feat: v3 release (#558) 2026-07-02 13:57:37 +00:00
Jason Rasmussen 87a65a7040 feat: june recap (#615) 2026-06-30 15:53:38 -04:00
renovate[bot] e112f1be49 fix(deps): update dependency @immich/ui to ^0.83.0 (#616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-30 15:25:54 -04:00