Skip to content

feat: recently added assets page#28272

Open
benbeckford wants to merge 19 commits into
mainfrom
feat/recently-added-page
Open

feat: recently added assets page#28272
benbeckford wants to merge 19 commits into
mainfrom
feat/recently-added-page

Conversation

@benbeckford
Copy link
Copy Markdown
Collaborator

@benbeckford benbeckford commented May 6, 2026

Description

Adds a page to view assets in the order they were uploaded to Immich rather than sorting by when the photo/video was taken. The /recently-added page is accessible through a new "Recently added" section in the Explore tab on web, and through the Search tab on mobile.

How Has This Been Tested?

  • Check that all assets in /recently-added are ordered by createdAt
  • Check that assets in /photos are still ordered by localDateTime
  • Existing web & server tests

Screenshots (if appropriate)

Web

image image

Mobile

image image

API Changes

  • GET /timeline/buckets and GET /timeline/bucket accept an optional orderBy parameter to specify how assets should be grouped and sorted, local for date taken (default) or created for date uploaded
  • GET /timeline/bucket returns createdAt, an array of upload dates per each asset in the bucket
  • SyncAssetV1 and SyncAssetV2 include a createdBy property

Checklist:

  • I have carefully read CONTRIBUTING.md
  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation if applicable
  • I have no unrelated changes in the PR.
  • I have confirmed that any new dependencies are strictly necessary.
  • I have written tests for new code (if applicable)
  • I have followed naming conventions/patterns in the surrounding code
  • All code in src/services/ uses repositories implementations for database calls, filesystem operations, etc.
  • All code in src/repositories/ is pretty basic/simple and does not have any immich specific logic (that belongs in src/services/)

Please describe to which degree, if any, an LLM was used in creating this pull request.

None.

return withBoundingBox(withBoundingCircle, bbox);
})
.where(truncatedDate(), '=', timeBucket.replace(/^[+-]/, ''))
.where(truncatedDate(options.orderingDate), '=', timeBucket.replace(/^[+-]/, ''))
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this replaced?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise we would always be grouping assets into buckets by localDateTime. If I getBucket on the recently added page I should see assets with a matching createdBy in that bucket to match how getBuckets is grouping them.

Copy link
Copy Markdown
Member

@danieldietzler danieldietzler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks pretty good already, great job!

Comment thread server/src/dtos/time-bucket.dto.ts Outdated
Comment thread web/src/lib/managers/timeline-manager/timeline-month.svelte.ts Outdated
@benbeckford benbeckford marked this pull request as ready for review May 8, 2026 04:12
Copy link
Copy Markdown
Member

@jrasm91 jrasm91 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice

Comment thread open-api/typescript-sdk/src/fetch-client.ts Outdated
Comment thread server/src/dtos/time-bucket.dto.ts Outdated
Copy link
Copy Markdown
Member

@shenlong-tanwen shenlong-tanwen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The mobile changes looks really good to me

Comment thread mobile/lib/presentation/pages/search/drift_search.page.dart Outdated
Comment thread mobile/lib/infrastructure/entities/merged_asset.drift Outdated
Copy link
Copy Markdown
Member

@shenlong-tanwen shenlong-tanwen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The mobile changes LGTM!

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

📱 Android release APK (universal)0ea970e7b400228e37e1f0618a450367292d24d2

Download: https://github.com/immich-app/immich/actions/runs/25694859400/artifacts/6929137109

QR code QR code

Installs as a separate app (applicationId app.alextran.immich.pr28272), so it coexists with the Play Store version and any other PR builds.

Copy link
Copy Markdown
Member

@danieldietzler danieldietzler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks good to me!

Comment thread server/src/dtos/time-bucket.dto.ts Outdated
Comment thread web/src/lib/utils/timeline-util.ts Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants