321 Commits

Author SHA1 Message Date
ilyaChuk
7f7fec2cea
feat(web): image editor - panel and cropping (#11074)
* 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>
2024-08-14 09:54:50 -05:00
Alex
593f036c0d
fix(web): fallback aperture info when there is no locale set (#11770)
* fix(web): fallback aperture info when there is no locale set

* pr feedback
2024-08-14 15:52:44 +02:00
Michel Heusschen
c2965c4408
fix(web): detail panel out of sync when reopening (#11713)
* fix(web): detail panel out of sync when reopening

* extract event handler
2024-08-12 08:10:43 -04:00
Michel Heusschen
34c4fbf730
fix(web): asset viewer dynamic size (#11697) 2024-08-11 07:59:26 -04:00
Christoph Suter
f33dbdfe9a
feat(web): add Exif-Rating (#11580)
* 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>
2024-08-09 17:45:52 +00:00
Zack Pollard
14689462f8
feat: change web asset detail map to zoom level 12.5 (#11643) 2024-08-07 23:38:02 +01:00
Michel Heusschen
dd638ac207
fix(web): slideshow on iphone (#11599)
* fix(web): slideshow on iphone

* make requestFullscreen type optional
2024-08-06 08:34:17 -05:00
renovate[bot]
82d934d09d
chore(deps): update dependency eslint to v9 (#11601)
* chore(deps): update dependency eslint to v9

* chore: migrate to eslint flat config files

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-08-05 16:13:16 -04:00
renovate[bot]
2821e0bf95
chore(deps): update typescript-eslint monorepo to v8 (major) (#11598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-08-05 19:13:00 +00:00
Jason Rasmussen
94da5942bd
feat(web): open in map view (#11592) 2024-08-05 10:25:53 -05:00
Michel Heusschen
b73f7fe16f
refactor: deduplicate MemoryType and ReactionType enums (#11479)
* refactor: deduplicate memorytype and reactiontype enums

* fix mobile
2024-07-31 12:08:31 -05:00
Michel Heusschen
281cfc95a4
refactor(web): asset viewer actions (#11449)
* refactor(web): asset viewer actions

* motion photo slot and more refactoring
2024-07-31 12:25:38 -04:00
Michel Heusschen
0237f9baa3
feat(web): more localized number formatting (#11401) 2024-07-29 10:38:27 -04:00
Michel Heusschen
909bd43e65
fix(web): slideshow settings title (#11396) 2024-07-27 10:46:19 -05:00
Michel Heusschen
950cd5d996
fix(web): use fixed position for download and upload panel (#11279) 2024-07-22 08:40:43 -04:00
pokjay
4f89195702
feat(server): country geocoding for remote locations (#10950)
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-07-18 13:27:07 +02:00
Michel Heusschen
cb40db9555
refactor(web): focus trap (#10915) 2024-07-07 20:33:07 -05:00
Ben
39221c8d1f
chore(web): translate alt text (#10922)
* 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
2024-07-07 17:29:56 -05:00
Alex
e46af5c26b
fix(web): activity status padding regression (#10734) 2024-07-01 15:06:46 -04:00
pyorot
f5164b42e0
fix(web): remove black bezels + better integrate ActivityStatus (#10667)
* 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>
2024-07-01 14:05:49 +00:00
Michel Heusschen
c58148af35
feat(web): add more translations (#10700)
* feat(web): add more translations

* formatting
2024-06-30 17:29:10 -05:00
martin
37b5d92110
fix(web): new feature photo (#9443)
* fix: new feature photo

* fix: use updatedAt
2024-06-27 20:16:26 -04:00
waclaw66
dd2c7400a6
chore(web): another missing translations (#10274)
* chore(web): another missing translations

* unused removed

* more keys

* lint fix

* test fixed

* dynamic translation fix

* fixes

* people search translation

* params fixed

* keep filter setting fix

* lint fix

* $t fixes

* Update web/src/lib/i18n/en.json

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* another missing

* activity translation

* link sharing translations

* expiration dropdown fix - didn't work localized

* notification title

* device logout

* search results

* reset to default

* unsaved change

* select from computer

* selected

* select-2

* select-3

* unmerge

* pluralize, force icu message

* Update web/src/lib/components/asset-viewer/asset-viewer.svelte

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* review fixes

* remove user

* plural fixes

* ffmpeg settings

* fixes

* error title

* plural fixes

* onboarding

* change password

* more more

* console log fix

* another

* api key desc

* map marker

* format fix

* key fix

* asset-utils

* utils

* misc

---------

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2024-06-24 09:50:01 -04:00
Ben
0fda67543d
chore(web): context menu improvements (#10475)
- 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
2024-06-20 14:15:36 -07:00
waclaw66
517a83cfa9
fix(web): comment send button (#10453) 2024-06-18 16:29:46 -07:00
Ben
b71aa4473b
feat(web): keyboard accessible context menus (#10017)
* 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>
2024-06-17 20:52:38 -07:00
Michel Heusschen
83a851b556
fix(web): play video muted when blocked by browser (#10383) 2024-06-16 08:37:25 -07:00
Daniel Dietzler
c896fe393f
refactor(web): byte unit utils (#10332)
refactor byte unit utils
2024-06-14 17:27:46 +00:00
Alex
e2a2c86a31
chore(server): optional originalMimeType in asset response payload (#10272)
* 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>
2024-06-13 09:21:47 -05:00
Michel Heusschen
a54e01ef2f
fix: load original image for gifs (#10252) 2024-06-13 05:57:46 -05:00
Michel Heusschen
f99f289f74
fix(web): small translation issues + remove unused (#10200)
* fix(web): small translation issues + remove unused

* more unused keys

* formatting

* fix(web): incorrectly used translations

* fix and remove unused translations

---------

Co-authored-by: Zack Pollard <zackpollard@ymail.com>
2024-06-12 12:13:10 +01:00
Michel Heusschen
b8e6ae65b1
fix(web): backwards asset navigation in GalleryViewer (#10132)
* fix(web): backwards asset navigation in GalleryViewer

* fix ctrl/cmd click

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-11 15:27:18 +00:00
Alex
c4c070569f
fix(web): mouse-wheel scrolling on detail panel is disabled (#10080) 2024-06-10 12:05:52 -05:00
Robert Schäfer
48eede59b9
refactor: dedicated icon for permanently delete (#10052)
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.
2024-06-09 14:25:27 -05:00
George Shao
4d862525bc
feat(web): allow ctrl-click / cmd-click on photos (#9954)
* feat(web): allow ctrl-click / cmd-click on photos

* fix: photo opening when deselected bug

* fix: consistent naming

* remove redundant code

* fix: disabled picture is clickable in "add to album" grid

* remove unnecessary code

* cleanup

* fix file permissions

* fix: album selection bug

* fix: stack slideshow bug & search gallery viewer bug

* cleanup

* fix dark mode stack slideshow bug

* cleanup

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-06-08 15:33:23 -05:00
Robert Schäfer
d8d64ecc45
fix: prevent trashing of trashed assets (#10028)
* 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
2024-06-08 15:03:39 -05:00
Min Idzelis
4b49d3a85d
feat: photo-viewer; use <img> instead of blob urls, simplify/refactor, avoid window.events (#9883)
* Photoviewer

* make copyImage/zoomToggle optional

* Add e2e test

* lint

* Accept bo0tzz suggestion

Co-authored-by: bo0tzz <git@bo0tzz.me>

* Bad merge and review comments

* unused import

---------

Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-06-07 13:22:46 -05:00
Snowknight26
7a46f80ddc
feat(web): add archive shortcut to grid (#9499)
* 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>
2024-06-06 19:23:49 -04:00
Jan108
b2761b12d1
feat(web): Option to assign people to unassigned faces (#9773)
* 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>
2024-06-05 07:26:00 +00:00
Manic-87
f446bc8caa
feat(web): translations (#9854)
* 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>
2024-06-04 15:53:00 -04:00
Michel Heusschen
d1135db8cf
refactor(web): remove events from clickOutside action (#9943) 2024-06-02 12:20:11 +00:00
Snowknight26
203cbbbfdb
fix(web): stop slideshow when pressing escape from asset viewer (#9929)
* fix(web): stop slideshow when pressing escape from asset viewer

* Fix formatting
2024-06-01 22:57:04 -04:00
Snowknight26
4e16e2520d
fix(web): exiting a slideshow will no longer hide the cursor (#9931) 2024-06-02 05:55:59 +07:00
Snowknight26
21718cc343
fix(web): set album description textarea height correctly (#9880)
* 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
2024-06-01 13:47:14 -04:00
Jason Rasmussen
69d2fcb43e
refactor: asset media endpoints (#9831)
* 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>
2024-05-31 13:44:04 -04:00
Snowknight26
416399499b
fix(web): navigate to the correct URL when unstacking from the asset viewer (#9841)
fix(web): navigate to the correct URL on unstack
2024-05-29 12:05:28 -04:00
Michel Heusschen
e459d524a4
fix(web): high resolution image on zoom (#9818)
Co-authored-by: Alex <alex.tran1502@gmail.com>
2024-05-28 07:15:50 -04:00
Snowknight26
ee3530b34c
feat: add units to exposure time display (#9803)
* feat(web): add units to exposure time display

* feat(mobile): add units to exposure time display
2024-05-28 10:05:36 +01:00
Michel Heusschen
38f4a02a14
fix(web): require button type (#9786) 2024-05-27 14:06:15 +07:00
Michel Heusschen
99f0aa868a
fix(web): detail panel asset description (#9765) 2024-05-26 08:10:01 -04:00