* feat: loading screen, initSDK on bootstrap, fix FOUC for theme
* pulsate immich logo, don't set localstorage
* Make it spin
* Rework error handling a bit
* Cleanup
* fix test
* rename, memoize
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(web): align search filter behavior to show all camera models
* fix(mobile): align search filter behavior to clear camera model when make is set
* (mobile) correctly clear the model controller
* fix(mobile) re-add text controller to dropdown
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Squashed
* Change strategy - now pre-measure buckets offscreen, so don't need to worry about sub-bucket scroll preservation
* Reduce jank on scroll, delay DOM updates until after scroll
* css opt, log measure time
* Trickle out queue while scrolling, flush when stopped
* yay
* Cleanup cleanup...
* everybody...
* everywhere...
* Clean up cleanup!
* Everybody do their share
* CLEANUP!
* package-lock ?
* dynamic measure, todo
* Fix web test
* type lint
* fix e2e
* e2e test
* Better scrollbar
* Tuning, and more tunables
* Tunable tweaks, more tunables
* Scrollbar dots and viewport events
* lint
* Tweaked tunnables, use requestIdleCallback for garbage tasks, bug fixes
* New tunables, and don't update url by default
* Bug fixes
* Bug fix, with debug
* Fix flickr, fix graybox bug, reduced debug
* Refactor/cleanup
* Fix
* naming
* Final cleanup
* review comment
* Forgot to update this after naming change
* scrubber works, with debug
* cleanup
* Rename scrollbar to scrubber
* rename to
* left over rename and change to previous album bar
* bugfix addassets, comments
* missing destroy(), cleanup
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat: folder view poc
* fix(folder-view): ui modifications
* fix(folder-view): improves utility return types
* fix(folder-view): update getAssetsByOriginalPath
Endpoint now only returns direct children of the path instead of all images in all subfolders. Functions renamed and scoped to "folder", endpoints renamed
* fix(folder-view): improve typing
* fix(folder-view): replaces css with tailwind
* fix(folder-view): includes folders in main panel
* feat(folder-view): folder cache implementation
* fix(folder-view): can now search for absolute paths
* fix(folder-view): sets default sort to alphabetical by filename
* refactor/styling the browser view
* double click to navigate
* folder tree
* use correct side bar icon
* styling when selected
* correct open icon
* folder layout
* return assetReponseDto
* it's alive
* update new api
* more styling for folder tree
* use query params and path viewer
* use arrow up left for parent folder backward navigation
* use arrow up left for parent folder backward navigation
* encode URL
* handle long folder name
* refactor to the view controller
* remove unused code
* clear cache when logout
* cleaning up
* cleaning up web
* clean as new
* clean as new
* pr feedback + show asset name
* add tests
* add tests
* remove generated file
* lint
* revert docker-compose.dev file
* Update server/src/services/view.service.ts
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* Update server/src/services/view.service.ts
Co-authored-by: Jason Rasmussen <jason@rasm.me>
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* refactor: stacks
* mobile: get it built
* chore: feedback
* fix: sync and duplicates
* mobile: remove old stack reference
* chore: add primary asset id
* revert change to asset entity
* mobile: refactor mobile api
* mobile: sync stack info after creating stack
* mobile: update timeline after deleting stack
* server: update asset updatedAt when stack is deleted
* mobile: simplify action
* mobile: rename to match dto property
* fix: web test
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* cropping, panel
* fix presets
* types
* prettier
* fix lint
* fix aspect ratio, performance optimization
* improved tool selection, removed placeholder
* fix the mouse's exit from canvas
* fix error
* the "save" button and change tracking
* lint, format
* the mini functionality of the save button
* fix aspect ratio
* hide editor button on mobiles
* strict equality
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
* Use the dollar sign syntax for stores inside components
* unobtrusive grid lines, circles at the corners
* more correct image load, handleError
* more strict equality
* fix styles. unused and tailwind
Co-Authored-By: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
* dont store isShowEditor
* if showEditor - hide navbar & shortcuts
* crop-canvas decomposition (danger)
I could have accidentally broken something.. but I checked the work and it seems ok.
* fix lint
* fix ts
* callback function as props
* correctly disabling shortcuts
* convenient canvas borders
• you can use the mouse to go beyond the boundaries and freely change the crop.
• the circles on the corners of the canvas are not cut off.
* -the editor button for video files, -save button
* hide editor btn if panoramic || gif || live
* corners instead of circles (preview), fix lint&format
* confirm close editor without save
* vertical aspect ratios
* recovery after merge. editor's closing shortcut
* fix format
* move from canvas to html elements
* fix changes detections
* rotation
* hide detail panel if showing editor
* fix aspect ratios near min size
* fix crop area when changing image size when rotate
* fix of fix
* better layout - grouping
https://github.com/user-attachments/assets/48f15172-9666-4588-acb6-3cb5eda873a8
* hide the button
* fix i18n, format
* hide button
* hide button v2
---------
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat: add privacy step in the onboarding
* fix: remove console.log
* feat:Details the implications of enabling the map on the settings page
Added a link to the guide on customizing map styles as well
* feat: add map implication
* refactor: onboarding style
* fix: tile provider
* fix: remove long explanations
* chore: cleanup
---------
Co-authored-by: pcouy <contact@pierre-couy.dev>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* Add Exif-Rating
* Integrate star rating as own component
* Add e2e tests for rating and validation
* Rename component and async handleChangeRating
* Display rating can be enabled in app settings
* Correct i18n reference
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
* Star rating: change from slider to buttons
* Star rating for clarity
* Design updates.
* Renaming and code optimization
* chore: clean up
* chore: e2e formatting
* light mode border and default value
---------
Co-authored-by: Christoph Suter <christoph@suter-burri.ch>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat(web): Add stacking option to deduplication utilities
* Update web/src/lib/components/utilities-page/duplicates/duplicates-compare-control.svelte
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Fix prettier
* Draft for server side modifications. Endpoint for stacks (PUT,DELETE)
* Fix error
* Disable stakc button if less or more than one asset selected
* Remove unnecesarry log
* Revert to first commit
* Further Revert
* Actually Revert to Origin
* Only one stack button
* Update +page.svelte
* Fix optional arguments
* Fix Prettier
* Fix Linting
* Add stack information to asset view
* clean up
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Allow submission of null country
* Update searchAssetBuilder to handle nulls
andWhere({country:null}) produces `"exifInfo"."country" = NULL`. We want
`"exifInfo"."country" IS NULL`, so we have to treat NULL as a special
case
* Allow null country in frontend
* Make the query code a bit more straightforward
* Remove unused brackets import
* Remove log message
* Don't change whitespace for no reason
* Fix prettier style issue
* Update search.dto.ts validators per @jrasm91's recommendation
* Update api types
* Combine null country and state into one guard clause
* chore: clean up
* chore: add e2e for null/empty city, state, country search
* refactor: server returns suggestion for null values
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* duplicate page assign other shortcut keys, add 'open image' shortcut
* add shortcut info page to duplicates with own list of keys
* edit translations, add translationkeys
* format fix
* remove typo
---------
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat(web): search bar keyboard accessibility
* fix: adjust aria attributes
* fix: safari announcing the correct option count
* minor adjustments
- CircleIconButton disabled cursor
- more generic selection handler
* fix: more subtle border color in dark mode
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat: people infinite scroll
* add infinite scroll to show & hide modal
* update unit tests
* show total people count instead of currently loaded
* update personsearchdto
* chore(web): translate image alt text
* fix: capitalize translations, improve unit test
* fix: unit testing against the actual en.json file
* fix: use derived store to generate alt text
* remove black bezels + better integrate activity status
* remove justify-self-end + mr-4 → mr-3 (closer to desired spacing)
* clean up
* clean up some more
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
- ability to add custom hover colors
- migrate activity menu to ButtonContextMenu component
- onClick callbacks rather than events for menu options
- remove slots
- configurable menu option colors
- improve menu option layout
* feat(web,a11y): context menu keyboard navigation
* wip: all context menus visible
* wip: more migrations to the ButtonContextMenu, usability improvements
* wip: migrate Administration, PeopleCard
* wip: refocus the button on click, docs
* fix: more intuitive RightClickContextMenu
- configurable title
- focus management: tab keys, clicks, closing the menu
- automatically closing when an option is selected
* fix: refining the little details
- adjust the aria attributes
- intuitive escape key propagation
- extract context into its own file
* fix: dropdown options not clickable in a <Portal>
* wip: small fixes
- export selectedColor to prevent unexpected styling
- better context function naming
* chore: revert changes to list navigation, to reduce scope of the PR
* fix: remove topBorder prop
* feat: automatically select the first option on enter or space keypress
* fix: use Svelte store instead to handle selecting menu options
- better prop naming for ButtonContextMenu
* feat: hovering the mouse can change the active element
* fix: remove Portal, more predictable open/close behavior
* feat: make selected item visible using a scroll
- also: minor cleanup of the context-menu-navigation Svelte action
* feat: maintain context menu position on resize
* fix: use the whole padding class as better tailwind convention
* fix: options not announcing with screen reader for ButtonContextMenu
* fix: screen reader announcing right click context menu options
* fix: handle focus out scenario
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat(web): add cover images to individual shares
* Update wording in share modal
* Use translation function
* Add and use new translations
* Fix formatting
* Update with suggestions
* Update test language
* Update test and language file per suggestions
* Fix formatting
* Remove unused translation
* chore(web): standardize settings labels
- spelling out "max" and "min" in full
- accordions use title case
- labels for settings all use sentence case
- remove the "Enable"/"Enabled"/"ENABLED" titles for toggles, in favor
of just using the description
- change any gray labels to be immich blue, to match the look and feel
of the other settings
* chore: update user settings toggle, remove unused "enable" strings
* chore(server): optional originalMimeType in asset response payload
* lint
* Update web/src/lib/utils/asset-utils.ts
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* fix permission of shared link
* test
* test
* test
* test server
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* feat(web): select all duplicates
Allows users to select or deselect all duplicate photos when removing duplicates
* styling
* chore(web): add more translations to duplicates page
* color
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Motivation
----------
It's a follow up to #10028. I think it would be better user experience if one can tell by the icon what the delete button is about to do.
I hope I caught all the occurences where one can permanently delete assets.
How to test
-----------
1. Visit e.g. `/trash`
2. If you select some assets, the delete button in the top right corner
looks different.
* fix: prevent trashing of trashed assets
Motivation
----------
This will improve user experience by hiding a pointless action.
You can not trash a trashed asset again. It won't get any trashier than it already is.
How to test
-----------
1. Visit route `/trash`
2. Click on an asset
3. Press "Delete" on your keyboard
4. Nothing happens
5. Try to find the trash button in the top right
6. You can't find it
* refactor: follow @michelheusschen's review
See:
https://github.com/immich-app/immich/pull/10028#pullrequestreview-2105296755
* refactor: follow @michelheusschen's 2nd review
See: https://github.com/immich-app/immich/pull/10028#discussion_r1632057833
* feat(web): add archive shortcut to grid
* Fix error
* Don't unnecessarily pass parameter
* Use an existing function to close the menu
* Deduplicate type
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* added unassigned faces to people edit
* svelte fix
* fix format
* Captialized unassigned person name, removed person id from alttext, fixed problem with multiple faces per person
* Added faces to the getAssetInfo API endpoint
* Updated openApi clients
* Readded the photoeditor dependency
* fixed lint/format
* fixed photoViewer type
* changes getAssetInfo.faces to only include unassigned faces
* fix: bad merge
* title
* logic
---------
Co-authored-by: Jan108 <dasJan108@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* First test
* Added translation using Weblate (French)
* Translated using Weblate (German)
Currently translated at 100.0% (4 of 4 strings)
Translation: immich/web
Translate-URL: http://familie-mach.net/projects/immich/web/de/
* Translated using Weblate (French)
Currently translated at 100.0% (4 of 4 strings)
Translation: immich/web
Translate-URL: http://familie-mach.net/projects/immich/web/fr/
* Further testing
* Further testing
* Translated using Weblate (German)
Currently translated at 100.0% (18 of 18 strings)
Translation: immich/web
Translate-URL: http://familie-mach.net/projects/immich/web/de/
* Further work
* Update string file.
* More strings
* Automatically changed strings
* Add automatically translated german file for testing purposes
* Fix merge-face-selector component
* Make server stats strings uppercase
* Fix uppercase string
* Fix some strings in jobs-panel
* Fix lower and uppercase strings. Add a few additional string. Fix a few unnecessary replacements
* Update german test translations
* Fix typo in locales file
* Change string keys
* Extract more strings
* Extract and replace some more strings
* Update testtranslationfile
* Change translation keys
* Fix rebase errors
* Fix one more rebase error
* Remove german translation file
* Co-authored-by: Daniel Dietzler <danieldietzler@users.noreply.github.com>
* chore: clean up translations
* chore: add new line
* fix formatting
* chore: fixes
* fix: loading and tests
---------
Co-authored-by: root <root@Blacki>
Co-authored-by: admin <admin@example.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
* fix(web): set description textarea content correctly
* Deduplicate description textarea
* Add strict types to function
* Add strict types to functions
* Add default parameter values
* Add tests covering AutogrowTextarea
* Add another test and lint the files
* Add a test, fix a typo
* Implement suggestions
* Remove use of $$restProp
* refactor: asset media endpoints
* refactor: mobile upload livePhoto as separate request
* refactor: change mobile backup flow to use new asset upload endpoints
* chore: format and analyze dart code
* feat: mark motion as hidden when linked
* feat: upload video portion of live photo before image portion
* fix: incorrect assetApi calls in mobile code
* fix: download asset
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
* refactor(server): user endpoints
* feat(server): user preferences
* mobile: user preference
* wording
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* refactor(server): user endpoints
* fix repos
* fix unit tests
---------
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix: key events propagating from modal, visible close button focus
* feat: set initial focus on the text field for album creation
* chore: step back duplicated changes
* First version of video looping for the web
* Use prop for slideshow state
* refactor asset settings and add autoloop video setting
* rename variables and adjust description
* loop videos based on user settings in gallery viewer
* make asset viewer setting a stateless widget
* do not update video playback value if looping is enabled
* add some translations
* adjust description
* add missing id
* WIP
* chore: clean up
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* feat(server, web): include pictures of shared albums on map
* run prettier
* re-create api clients
* implement suggestions from code review
* shared from partner -> shared from partners
* rename to 'include shared partner assets'
* chore: fix tsc error in server and prettier in web
* fix: include assets shared via owner albums
---------
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* Add change from outline to regular icon in sidebar when page selected to more icons. Also change Favorites to single heart consistent with mobile app.
* Forgot to remove a few unused lines. Fixed.
* fix(web): allow deselecting all assets from select bar
* Change deselect logo
* select remove
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* refactor: remove isReadOnly and isExternal usages
* chore: open api
* fix: linting
* remove mobile isReadOnly dependency
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat(server): add `react-mail` as mail template engine and `nodemailer`
* feat(server): add `smtp` related configs to `SystemConfig`
* feat(web): add page for SMTP settings
* feat(server): add `react-email.adapter`
This adapter render the React-Email into HTML and plain/text email.
The output is set as the body of the email.
* feat(server): add `MailRepository` and `MailService`
Allow to use the NestJS-modules-mailer module to send SMTP emails.
This is the base transport for the `NotificationRepository`
* feat(server): register the job dispatcher and Job for async email
This allows to queue email sending jobs for the `EmailService`.
* feat(server): add `NotificationRepository` and `NotificationService`
This act as a middleware to properly route the notification to the right transport.
As POC I've only implemented a simple SMTP transport.
* feat(server): add `welcome` email template
* feat(server): add the first notification on `createUser` in `UserService`
This trigger an event for the `NotificationRepository` that once processes
by using the global config and per-user config will carry the payload to the right notification transport.
* chore: clean up
* chore: clean up web
* fix: type errors"
* fix package lock
* fix mail sending, option to ignore certs
* chore: open api
* chore: clean up
* remove unused import
* feat: email feature flag
* chore: remove unused interface
* small styling
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* refactor: search people
* fix: test
* fix: timeout
* fix: callbacks
* fix: simplify
* remove unused var
* refactor: rename file
* fix: focus when deleting last character
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* feat(web,a11y): search filter accessibility
- visible focus rings
- labels for text search
- responsive buttons / radio buttons / checkboxes
- buttons to lowercase
- add fieldsets to radio buttons and checkboxes, so the screen reader
announces the label for the group
* feat: extract inputs into reusable components, replace all checkboxes
* chore: revert changes to responsive buttons
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* rename albums_shared_users_users to album_permissions and add readonly column
* disable synchronize on the original join table
* remove unnecessary FK names
* set readonly=true as default for new album shares
* separate and implement album READ and WRITE permission
* expose albumPermissions on the API, deprecate sharedUsers
* generate openapi
* create readonly view on frontend
* ??? move slideshow button out from ellipsis menu so that non-owners can have access too
* correct sharedUsers joins
* add album permission repository
* remove a log
* fix assetCount getting reset when adding users
* fix lint
* add set permission endpoint and UI
* sort users
* remove log
* Revert "??? move slideshow button out from ellipsis menu so that non-owners can have access too"
This reverts commit 1343bfa31125f7136f81db28f7aa4c5ef0204847.
* rename stuff
* fix db schema annotations
* sql generate
* change readonly default to follow migration
* fix deprecation notice
* change readonly boolean to role enum
* fix joincolumn as primary key
* rename albumUserRepository in album service
* clean up userId and albumId
* add write access to shared link
* fix existing tests
* switch to vitest
* format and fix tests on web
* add new test
* fix one e2e test
* rename new API field to albumUsers
* capitalize serverside enum
* remove unused ReadWrite type
* missed rename from previous commit
* rename to albumUsers in album entity as well
* remove outdated Equals calls
* unnecessary relation
* rename to updateUser in album service
* minor renamery
* move sorting to backend
* rename and separate ALBUM_WRITE as ADD_ASSET and REMOVE_ASSET
* fix tests
* fix "should migrate single moving picture" test failing on European system timezone
* generated changes after merge
* lint fix
* fix correct page to open after removing user from album
* fix e2e tests and some bugs
* rename updateAlbumUser rest endpoint
* add new e2e tests for updateAlbumUser endpoint
* small optimizations
* refactor album e2e test, add new album shared with viewer
* add new test to check if viewer can see the album
* add new e2e tests for readonly share
* failing test: User delete doesn't cascade to UserAlbum entity
* fix: handle deleted users
* use lodash for sort
* add role to addUsersToAlbum endpoint
* add UI for adding editors
* lint fixes
* change role back to editor as DB default
* fix server tests
* redesign user selection modal editor selector
* style tweaks
* fix type error
* Revert "style tweaks"
This reverts commit ab604f4c8f3a6f12ab0b5fe2dd2ede723aa68775.
* Revert "redesign user selection modal editor selector"
This reverts commit e6f344856c6c05e4eb5c78f0dffb9f52498795f4.
* chore: cleanup and improve add user modal
* chore: open api
* small styling
---------
Co-authored-by: mgabor <>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Button added, config is uploaded
* Refactored to pass "npm run lint" (also verified other PR checklist Web checks)
* Auto-save on config upload
* Static input element
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Remove asest redirect pages
* Rename route paths to handle optional assetId
* Update old references to new routes
* Load and display asset from all routes that can show assetId
* Add <main> in base layout, update portals to target it
* Wire up updating navigation in response to open/close/prev/next
* Replace events with navigation functions
* Add types to param matcher
* misc cleanup
* Fix reload on /search pages
* Avoid loading bar between photos nav. Delay loading bar by 200ms for all navigations
* Update url for maps routes. Note: on page reload, next/prev is not available
* Dynamically load asset-viewer on map page
* When reloading a url with assetUrl, hide background page to prevent flash during load
* Mostly style, review comments
* Load buckets for assets on demand
* Forgot this update call
* typo
* fix test
* Fix carelessness
* Review comment
* merge main
* remove assets
* fix submodule
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
* fix(web): restore button added to trashed asset-view to restore single item
* fixed the asset-viewer menu to update upon restoration
* prettier formatting complete, testing passed
* chore: clean up
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* fix(web,a11y): remove autofocus from input field
The autofocus attribute can cause the keyboard to unexpectedly appear
for mobile users, and override any other focus management that the
application is doing programatically.
* fix: always include people filter
* remove height limit from user list for better scrolling
* move slideshow button out from menu so that non-owners can see it #8383
* fix activity covering up video player controls #6191
* prettier
---------
Co-authored-by: mgabor <>
* Add AV1 transcoding support
- AV1 encoding on CPU via SVT-AV1 (libsvtav1 in ffmpeg)
- Supports CRF and optionally capped CRF (max bitrate)
- Tested playback successfully in Chrome Win+Android, Firefox Win+Linux, Android app
* AV1: Add support for encoding threads option
* Revert previous commit; specifying params multiple times is bad
We need to specify all svtav1-params at once, so putting the thread option into getThreadOptions is not possible.
* AV1: Override VAAPI getSupportedCodecs as it does not yet support AV1 unlike nvenc, qsv, amf
* Change BaseHWConfig supported codecs to only H264/HEVC
Configs that support VP9 and/or AV1 need to override getSupportedCodecs()
* Set SVT-AV1 threads with svtav1-params, remove duplicate block in NVENCConfig
* AV1Config: Fix empty svtav1-params array being added to options
* add tests
* update api
* allow crf-based two-pass mode
* formatting
* suggest 35
---------
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
* add longer expirity for share link
* add longer expirity for web UI, add months and year option, add translation
* dart format
---------
Co-authored-by: NAGY Akos (external) <akos.nagy@frequentis.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
This is the standard behaviour and also more intuitive. As we don't require scrolling when displaying photo spheres this should not impede usability.
Also remove `mousewheelCtrlKey: false`, which is the default.
Co-authored-by: hrdl <7808331-hrdl@users.noreply.gitlab.com>