feat: recently added assets page (#28272)

* feat(server): add ordering date option to time buckets

* feat(web): add recently added page

* feat(server): recently created assets in explore data

* feat(web): recently added in explore tab

* fix: recently added assets ordering

* fix(server): failing bucket test

* feat(web): improve recently added preview

* chore: update e2e explore/timeline tests

* chore: rename and refactor timeline ordering dates

* fix(web): invalid timeline option

* feat(mobile): recently added page

* fix(server): sync tests

* fix(mobile): resync assets to get uploadedAt column

* chore: rename assetorderby enum

* chore(mobile): formatting

* minor fixes

* stylings

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Ben Beckford
2026-05-11 14:35:10 -07:00
committed by GitHub
parent 38438c8d9a
commit e142e3aca7
66 changed files with 14174 additions and 56 deletions
+52
View File
@@ -13322,6 +13322,15 @@
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "orderBy",
"required": false,
"in": "query",
"description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Immich)",
"schema": {
"$ref": "#/components/schemas/AssetOrderBy"
}
},
{
"name": "personId",
"required": false,
@@ -13512,6 +13521,15 @@
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "orderBy",
"required": false,
"in": "query",
"description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Immich)",
"schema": {
"$ref": "#/components/schemas/AssetOrderBy"
}
},
{
"name": "personId",
"required": false,
@@ -16557,6 +16575,14 @@
],
"type": "string"
},
"AssetOrderBy": {
"description": "Asset sorting property",
"enum": [
"takenAt",
"createdAt"
],
"type": "string"
},
"AssetRejectReason": {
"description": "Rejection reason if rejected",
"enum": [
@@ -22914,6 +22940,14 @@
"description": "Checksum",
"type": "string"
},
"createdAt": {
"description": "Uploaded to Immich at",
"example": "2024-01-01T00:00:00.000Z",
"format": "date-time",
"nullable": true,
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"type": "string"
},
"deletedAt": {
"description": "Deleted at",
"example": "2024-01-01T00:00:00.000Z",
@@ -23014,6 +23048,7 @@
},
"required": [
"checksum",
"createdAt",
"deletedAt",
"duration",
"fileCreatedAt",
@@ -23041,6 +23076,14 @@
"description": "Checksum",
"type": "string"
},
"createdAt": {
"description": "Uploaded to Immich at",
"example": "2024-01-01T00:00:00.000Z",
"format": "date-time",
"nullable": true,
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"type": "string"
},
"deletedAt": {
"description": "Deleted at",
"example": "2024-01-01T00:00:00.000Z",
@@ -23143,6 +23186,7 @@
},
"required": [
"checksum",
"createdAt",
"deletedAt",
"duration",
"fileCreatedAt",
@@ -24991,6 +25035,13 @@
},
"type": "array"
},
"createdAt": {
"description": "Array of UTC timestamps when each asset was originally uploaded to Immich",
"items": {
"type": "string"
},
"type": "array"
},
"duration": {
"description": "Array of video/gif durations in milliseconds (null for static images)",
"items": {
@@ -25121,6 +25172,7 @@
"required": [
"city",
"country",
"createdAt",
"duration",
"fileCreatedAt",
"id",