Commit Graph
11488 Commits
Author SHA1 Message Date
Jason Rasmussen 094d65c4bc chore: add regression tests for recent stack bugs (#33020) 2026-11-06 21:36:57 +03:00
Santo Shakil 06c41fdcac fix(mobile): show memories right after the first login (#33030) 2026-11-06 21:36:57 +03:00
shenlongandshenlong-tanwen d25a353d94 chore: pump flutter to 3.47.9 (#33006)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2026-11-06 21:36:57 +03:00
Kevin Park 11eb6eaff3 feat(server): count finished jobs per queue in telemetry (#33025) 2026-11-06 21:35:53 +03:00
Jason Rasmussen 57c45dbb72 fix(web): isolate unit test storage (#33021) 2026-11-06 21:35:53 +03:00
Stellan Sun a5678e0d24 fix(mobile): prevent spam taps in memories viewer (#32869)
* fix(mobile): improve memory tap navigation

* fix(mobile): preserve memory animations and simplify tap locking
2026-11-06 21:35:53 +03:00
Santo Shakilandmertalev b3414d7595 feat(mobile): avif decoder (#32809)
* feat(mobile): avif decoder

* decode avif in the core first on android, tone-map hdr like jxl and support premultiplied alpha

* decode avif with rav1d's safe api

* use rav1d's assembly

* thread avif decodes by their tile count

* convert colour-managed avif in bands

* use the codec dependencies' simd kernels

* free avif pictures before resizing

* map avif alpha through a table

* premultiply avif while writing alpha

* drop the avif container after decoding

* use core avif decoder on ios

* fall back to imageio on ios when the core can't decode an avif

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2026-11-06 21:35:53 +03:00
Jason Rasmussen 012eef2a80 fix: add name to .github package.json (#33019)
Workspace tooling requires every workspace package to have a name.
2026-11-06 21:35:07 +03:00
Jason Rasmussen 7fb3de7bde ci: retry registry rate limit (#33018) 2026-11-06 21:35:07 +03:00
Jason Rasmussen c0170f4abf chore: add tests for admin and map page regressions (#33017) 2026-11-06 21:35:07 +03:00
Jason Rasmussen 4fdc9b69fa chore: add web workflow regression tests (#33016) 2026-11-06 21:35:07 +03:00
Jason Rasmussen 7459863a87 chore: tests for web regressions (#33015) 2026-11-06 21:35:07 +03:00
Jason Rasmussen 2196435a9e chore: never gc public queries (#33014) 2026-11-06 21:35:07 +03:00
renovate[bot] ef96d6cb84 chore(mise): update tool restic (0.19.0 → 0.19.1) (#32892)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-11-06 21:35:07 +03:00
Santo Shakil a3d2cf5b04 fix(mobile): delete leftover share files when the app starts (#32989)
* fix(mobile): delete leftover share files when the app starts

A share's downloaded file is deleted when the share sheet closes. If the
app is killed with the sheet still open, that never runs and the file
stays in the temp folder for good.

* clean up share downloads from the downloader's records

* build the share folder list with Future.wait
2026-11-06 21:35:07 +03:00
Jason Rasmussen b3d8c1bc43 refactor: sync response check (#33010) 2026-11-06 21:35:07 +03:00
Daniel Dietzler d569e28d01 fix: web import ordering (#32995) 2026-11-06 21:34:27 +03:00
renovate[bot]andDaniel Dietzler 768dbe8259 chore(deps): update node.js to v26.13.0 (#32914)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-11-06 21:33:59 +03:00
renovate[bot]andDaniel Dietzler 27ce131134 chore(npm): update node (major) (#32918)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-11-06 21:33:21 +03:00
renovate[bot] f16e6c753a chore(deps): update machine-learning (#32885)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-11-06 21:33:04 +03:00
Codex 3248d24d28 style: format browser date helper 2026-11-05 21:40:23 +03:00
Codex 197f575673 test: isolate browser preferences and normalize date input 2026-11-05 21:32:12 +03:00
Codex 3b157096fd test: align passkey environment and browser regression checks 2026-11-05 21:05:51 +03:00
Codex 062ae648d7 feat: support local Android passkeys and prepare local.7 2026-11-05 21:00:26 +03:00
Jason Rasmussen 8e77a8c6f8 refactor: web tests (#32983)
* refactor: web tests

* fix: e2e ratelimits

* fix: prefer data-testid

* chore: pr feedback
2026-11-05 20:36:37 +03:00
Jason Rasmussen 9776c0f4f4 refactor: storage medium tests (#33007) 2026-11-05 20:35:55 +03:00
Daniel Dietzler 0908d1af7b chore: kysely safe null comparison plugin (#32990) 2026-11-05 20:35:38 +03:00
renovate[bot] 08d9ef733c chore(npm): update dependency exiftool-vendored (39.0.1 → 39.1.0) (#32899)
* chore(npm): update dependency exiftool-vendored (39.0.1 → 39.1.0)

* fix: lockfile

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
# Conflicts:
#	pnpm-lock.yaml
2026-11-05 20:35:38 +03:00
renovate[bot] 6851091403 chore(mise): update tool java (21.0.2 → 21.0.13+9.0.lts) (#32891)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-11-05 20:35:17 +03:00
Santo Shakil 11e9a4b4da fix(mobile): clear the app's cookies on logout (#32965) 2026-11-05 20:35:16 +03:00
renovate[bot] 9b5e1aae5b chore(container): update image grafana/grafana (13.2.4-ubuntu → 13.3.0-ubuntu) (#32896)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-11-05 20:35:16 +03:00
Santo Shakil 7aba6c3f88 feat(mobile): delete passkeys (#32785)
* feat(mobile): delete passkeys

* fix(mobile): refresh the passkey list from the store after a delete
2026-11-05 20:35:16 +03:00
Santo Shakil f727e8edb4 feat(mobile): rename passkeys (#32784)
* feat(mobile): rename passkeys

* fix(mobile): refresh the passkey list from the store after a rename

* fix(mobile): skip the name dialog after creating a passkey
2026-11-05 20:35:16 +03:00
Santo Shakil cfa416e612 feat(mobile): list passkeys (#32783)
* feat(mobile): list passkeys

* fix(mobile): show the passkey list as the server's passkeys

* fix(mobile): reword and align the passkey list, refresh it from the store
2026-11-05 20:35:16 +03:00
Santo Shakil 22e7b20d3e feat(mobile): login with passkey (#32782)
* feat(mobile): login with passkey

* feat(mobile): use the server feature level on the login page

* refactor(mobile): share the steps after a login

* password, OAuth and passkey logins end with one finishLogin
* OAuth now also connects the websocket, like the password login

* fix(mobile): passkey login through the shared login steps

* fix(mobile): build the login response through its constructor
2026-11-05 20:35:16 +03:00
Santo Shakil 28a52948a9 feat(mobile): passkeys page with new passkey (#32781)
* feat(mobile): passkeys page with new passkey

* feat(mobile): passkeys entry under settings

* show it in settings when logged in and passkeys are on
* remove it from the profile menu

* feat(mobile): use the server feature level for passkeys

* hide passkeys below the passkeys feature level, without asking the server
* keep the server's feature level on ServerVersion

* fix(mobile): passkeys as a settings section through the store

* fix(mobile): filter the settings sections in SettingSection

* fix(mobile): remove the passkeys description and use the settings padding
2026-11-05 20:35:16 +03:00
Santo Shakil 63df351cad feat(mobile): passkey bridge for ios (#32780)
* feat(mobile): passkey bridge for ios

* fix(mobile): ios passkey bridge in one file

* merge Passkeys.swift into PasskeyHostApiImpl.swift
* set up the host api on the main engine only
* map the json with Codable structs, with base64url in the coder data strategies
* throw on a missing attestation object or an unexpected credential type
* need iOS 17.4, where a passkey registration can exclude the account's passkeys

* fix(mobile): ios passkeys from ios 16

Passkeys are on from iOS 16 again. The platform registration only takes
excludedCredentials from iOS 17.4, so that check keeps its own comment.
2026-11-05 20:35:01 +03:00
Santo Shakil f2f2093e41 feat(mobile): passkey bridge for android (#32779)
* feat(mobile): passkey bridge for android

* fix(mobile): passkey plugin on the main engine only

* register it in configureFlutterEngine and cancel its scope on detach
* pass coroutine cancellation through instead of treating it as an error
* check for Play services 23.08+ before Android 14 in isSupported
* explain why NotAllowedError counts as a cancel
* share one perform function between register and authenticate
2026-11-05 20:35:01 +03:00
renovate[bot] 99cda00260 chore(mise): update tool terragrunt (1.2.0 → 1.2.1) (#32893)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-11-05 20:34:43 +03:00
renovate[bot] a1a47d909c chore(container): update image node (24.22.1 → 24.22.2) (#32887)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-11-05 20:34:43 +03:00
Daniel Dietzler 50cb08f35d chore: migrate server import sorting back to prettier (#32994) 2026-11-05 20:34:42 +03:00
Santo Shakil 17ad3a2e8a fix(mobile): show view in timeline for photos opened from a deep link (#33001) 2026-11-05 20:34:15 +03:00
Adam Gastineau faaf0e410b chore(android): Build Flutter config before Fastlane builds (#33000) 2026-11-05 20:34:15 +03:00
Ashwani AgarwalandDaniel Dietzler 558ed71b7d feat: keyboard shortcuts for person page (#31679)
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-11-05 20:34:14 +03:00
bo0tzz 2c4d581495 fix(ml): include the error when a model fails to load (#32985) 2026-11-05 20:34:14 +03:00
Daniel Dietzler b7b361bed1 fix: asset viewer reactivity (#32978) 2026-11-05 20:34:14 +03:00
Thomas Günther 25d368790f fix(web): smoother asset viewer gradients (#32946)
* Smoother asset viewer gradients

* Use Tailwind utilities for the gradient masks
2026-11-05 20:34:14 +03:00
Codex 93f60cd2dc chore: prepare local.6 and regenerate API clients 2026-11-04 21:11:35 +03:00
Mees Frensel beb49e8005 chore(web): refactor help and support modal (#32835) 2026-11-04 20:47:09 +03:00
bo0tzz a5c8af3791 fix: revert terraform cloudflare update to v5 (#32973) 2026-11-04 20:47:09 +03:00