From 8e2e6cdfae706020ab648fed1b17e9fa8d8bf19d Mon Sep 17 00:00:00 2001 From: ildyria Date: Wed, 11 Jun 2025 18:05:53 +0200 Subject: [PATCH 1/6] version 6.6.6 --- docs/releases.md | 81 ++++++++++++++++++- src/components/widgets/Announcement.astro | 4 +- src/components/widgets/Footer.astro | 2 +- src/content/post/2025-06-11-version-6-6-6.mdx | 61 ++++++++++++++ src/navigation.js | 1 + src/pages/get-supporter-edition.astro | 67 +++++++++------ 6 files changed, 188 insertions(+), 28 deletions(-) create mode 100644 src/content/post/2025-06-11-version-6-6-6.mdx diff --git a/docs/releases.md b/docs/releases.md index 143a9539..06842147 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -30,6 +30,84 @@ ## Version 6 +### v6.6.6 😈 + +Released on Jun 11, 2025 + +#### Spicy change: Photo and Album relationships, Colour palette extraction and more! + +Evil number, spicy changes. This release brings a big turn in the way photos and albums are related to each other. +Before version 6.6.6, a photo could only be in one album at a time. This was a willing decision aimed at simplifying the way +photos were accessed and rights were handled. As a result, duplicates would effectively be duplicated rows in the database, which in itself, does not pose a problem of storage. +However, as I was implementing one of the coming feature: a *Timelines* page, it became clear that this was not going to be usable. +Duplicates would be displayed successively in such page and it would be impossible to distinguish them. This became the main reason for this change. + +While doing this change, it also became clear that legacy ids for albums could no longer be presered. +As a result, we dropped the legacy ids for albums and photos. This means that the remnants of API v1 are now completely gone. + +This release also brings the support of two new languages: Arabic and Dutch. The later is still in early steps as we are still using the Left-to-Right (LTR) layout, +but we are planning to also add Persian (fa) and with it a full Right-to-Left (RTL) display. + +We also added a registration page, which you can enabled/disable in your settings. + +Finally for the great supporters of Lychee we added two new feature: + +- The ability to create user-groups. This functionality is currently hidden behind a feature flag, but we are planning to make it available soon. + This will allow you to create groups of users and share albums with those groups, simplifying the sharing process. +- The extraction of the dominant colour palette from photos (you will need to enable it in your settings). + + +#### Most notable changes + +`SE` refers to functionalities that are aimed at the Supporter Edition. + +* `new` #3387 : Dutch translations by @ildyria. +* `new` #3396 : Arabic support by @ildyria. +* `new` #3388 : Support space in search terms by @ildyria. + > You can now search for terms with spaces, to do so, you will need to use quotes around the search term. +* `new` #3383 : Add option to disable slideshow by @ildyria. + > One of our user requested the ability to disable the slideshow mode in the photo view. + > Well here it is! Available as an option in the settings page. +* `new` #3384 : Add registration page by @ildyria. + > Registration is disabled by default, but you can enable it in the User Management section of the settings page. +* `new` #3379 : Add option to override the album visibility for smart and tag albums by @ildyria. + > By default, smart albums and tag albums are respecting the access rights of the user to select the pictures. + > One of our user requested the ability to override this visibility constraint. This option is now available in the settings page. +* `SE` #3406 : Add User-groups by @ildyria. + > User Groups are coming, as they do not provide value for the moment, they are hidden behind a feature flag. +* `SE` #3409 : Add color extraction from pictures. by @ildyria. + > This option is available in the image processing section of the settings page. + > It allows you to extract the 5 dominant colours from photos. We provide two different engines for this: + > + > - Slower: `league` does a full sampling and use ciede2000DeltaE for colour distance calculation. + > - Faster: `farzai` uses spot sampling and k-mean distance. +* `new` #3359 : Refactoring photo-album relation by @ildyria. + > As explained in the introduction, this is a big change which allows a photo to be in multiple albums at the same time instead of being duplicated. + > We are looking forward to the possibilities this opens up for the future. +* `new` #3375 : Drop legacy id by @ildyria. + > Not a big change, but this may impact some of the users who relied on old sharing links. + +#### Other boring changes + +`klo` refers to *Keep the Light On*. In other words, basic software updates. + +* `klo` #3374 : Remove "unjustified" photo layout option from code by @ildyria. + > Long overdue change, unjustified layout had been removed already in version 5. This is cleaning legacy code. +* `klo` #3355 : Remove dependency on parent-id and directly extract from the url by @ildyria. + > Necessary for the change of the photo-album relationship. +* `fixes` #3386 : Fix 500 when the imagick config file does not exists by @ildyria. + > Version 6.6.5 introduced a check to see whether imagick was properly configured to support pdf. + > This check was not working on windows servers as the imagick config file was not present and resulted in a 500 crash. + > We fixed it. +* `klo` #3390 : Add copilot instructions by @ildyria. + > While we are not active AI users, we provide some guidelines for contributors who feel like vibe coding on Lychee. +* `new` #3389 : Compact left menu by @ildyria. + > As we add more and more functionalities, the left menu was getting a bit crowded. This reduces the spacing to avoid having scroll bar. +* `klo` #3356 : Refactoring LiveMetrics to avoid photo.album_id requirement. by @ildyria. + > Necessary for the change of the photo-album relationship. +* `klo` #3426 : Minor documentation improvements by @ildyria. + + ### v6.6.5 Released on May 27, 2025 @@ -56,8 +134,7 @@ This small release fixes an indexing bug in the timeline view mode and adds a fe - An annimation when switching images in the photo view. - A proper login page instead of a modal. - -`klo` refers to *Keep the Light On*. In other words, basic software updates. +#### Most notable changes * `new` #3351 : Add go home link on error page by @ildyria > When directly accessing a photo or album without permission or which does not exists, we customized the error page diff --git a/src/components/widgets/Announcement.astro b/src/components/widgets/Announcement.astro index 22072dee..9c37612a 100644 --- a/src/components/widgets/Announcement.astro +++ b/src/components/widgets/Announcement.astro @@ -10,8 +10,8 @@ >NEW Lychee 6.6.5 is now available! »Lychee 6.6.6 is now available! » {SITE?.name} -
+
{ secondaryLinks.map(({ text, href }, index) => ( <> diff --git a/src/content/post/2025-06-11-version-6-6-6.mdx b/src/content/post/2025-06-11-version-6-6-6.mdx new file mode 100644 index 00000000..de3bd203 --- /dev/null +++ b/src/content/post/2025-06-11-version-6-6-6.mdx @@ -0,0 +1,61 @@ +--- +publishDate: 2025-06-11T17:00:00Z +author: ildyria +title: 'Version 6.6.6 and what is next?' +excerpt: Why is version 6.6.6 special? What is next on the roadmap for Lychee? +image: https://images.unsplash.com/photo-1660262848906-319f55766d2b?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D +category: Release Notes +tags: + - lychee + - blabla + - Supporter Edition + - v6 +--- + +Five days ago, we looked back on what we have accomplished over the past six months. + +#### What is special about version 6.6.6? + +Today, we are happy to announce the release of Lychee [version 6.6.6](https://github.com/LycheeOrg/Lychee/releases/tag/v6.6.6). An ill-fated version number which marks a brutal change in the way Lychee binds photos to albums. +We are moving from "*a photo can only be in a single album*" to "*a photo can be in multiple albums*". + +To "*render unto Caesar*", [Matthias Nagel](https://github.com/nagmat84) was the first to suggest it, and I was not convinced that it was a good idea. +It has always been a feature that I thought was not needed, and I was afraid that it would complicate the codebase. +Now having worked on creating a timeline view, I can see how useful it is to have a photo in multiple albums: it avoids duplication. + +While invisible to the user, this architecture change has a big impact. By having the relation a photo has a unique album, +it makes it possible to do a file mapping between the photos/albums in Lychee and the files/folders on the backend. +While this is not implemented, it could be seen in the the future to be made possible as this has been a long-standing complaint from some of our users. +By moving to a many-to-many relation between photos and albums, this mapping is no longer an "easy" task, but we believe the benefits outweigh the drawbacks. + +#### Improved way of working with stacked pull requests + +Having so many changes in the codebase in parallel makes it hard to keep track of what is going on, what needs to be reviewed, etc. +To make it easier on our reviewers, we use [stacked pull requests](https://www.stacking.dev/). The idea being that each pull request builds on top of a previous one. +This way the changes are smaller and thus easier to review. + +The first drawback of this approach is that if you use the stragegy squash-and-merge, you are facing some issues. + +- While the CI guarantees that if you merge from bottom to top into the main branch, you will not have any issues. + It quickly goes sideway as conflicts between commits are bound to happen and need to be resolved. + The easy way to avoid this is to collapse the stack into a single commit once all the PR are approved before merging into main. +- The second issue is that because of squash-and-merge, you will need to rebase to ensure a nice linear stack and propagate changes up. + A review on the bottom with change requests will impact the PR above it. There are no easy solution to this but some git wizardy. + I will admit that `git reset --soft xxx` has become one of my best friend. + +And finally, the last drawback of this approach is the growing number of PR waiting to be merged. In itself it is not to annoying but GitHub +does not provide a good visual overview of the state of the stack. For this reason, to increase the visibility of the changes, we have created +a new [new page](https://pr.lycheeorg.dev/) to list all the open pull requests in a stack and their status. +Of course as per open-source tradition, the source code is available on [GitHub](https://github.com/LycheeOrg/Lychee-Pull-Requests). + +A stack is automatically recognized by following the branch naming-convention `feature-name/pr-name`: all the pull requests that start with the same `feature-name/` are part of the same stack. +With this, we hope to make it easier for our reviewers to keep track of the changes and for our users to see what is coming next. + +#### A bit of help, please? + +If you speak Spanish, we would love to take a bit of your time to help us double check the Spanish translation of Lychee. +The pull request is available on [GitHub: #3398](https://github.com/LycheeOrg/Lychee/pull/3398), just add comments to the lines that need to be changed and we will take care of the rest. + +As always, this release would not have been possible without the help of our supporters and hard work of our reviewers. +If you would like to help or join us, we are always looking for more contributors. +Please reach out to us on our [Discord](https://discord.gg/JMPvuRQcTf). \ No newline at end of file diff --git a/src/navigation.js b/src/navigation.js index d36e9da2..72a33260 100644 --- a/src/navigation.js +++ b/src/navigation.js @@ -66,6 +66,7 @@ export const footerData = { { text: 'License', href: getPermalink('/license') }, { text: 'Release Notes', href: getPermalink('/docs/releases.html') }, { text: 'Privacy Policy', href: getPermalink('/privacy-policy') }, + { text: 'Pull Request Dashboard', href: 'https://pr.lycheeorg.dev/' }, ], socialLinks: [ { ariaLabel: 'RSS', icon: 'tabler:rss', href: getAsset('/rss.xml') }, diff --git a/src/pages/get-supporter-edition.astro b/src/pages/get-supporter-edition.astro index 6ed9526c..e38b20b3 100644 --- a/src/pages/get-supporter-edition.astro +++ b/src/pages/get-supporter-edition.astro @@ -129,7 +129,7 @@ const metadata = { tagline="the essentials and a few more" products={['Free', 'Lychee SE']} extra="* This table is summary of Lychee's functionalities and does not represent the large amount of configurations available.
\ - ** A lot of default values are still in English. Any pull requests with translation to your own language would help.
\ + ** Some languages are still untranslated. Any translations provided via weblate will be appreciated.
\ *** This option is not available on SE as they are already hidden." specs={[ { @@ -213,6 +213,11 @@ const metadata = { available: [false, true], isV6: true, }, + { + feature: 'Color palette extraction', + available: [false, true], + isV6: true, + }, { feature: 'Album management', @@ -289,6 +294,34 @@ const metadata = { available: [false, true], isV6: true, }, + + { + feature: 'Timeline', + isHeader: true, + isV6: true, + isSoon: true, + }, + { + feature: 'Standalone page', + available: [true, true], + }, + { + feature: 'Direct date access', + available: [true, true], + }, + { + feature: 'With access control', + available: [true, true], + }, + { + feature: 'Custom granularity', + available: [false, true], + }, + { + feature: 'Custom format', + available: [false, true], + }, + { feature: 'User management', isHeader: true, @@ -297,6 +330,11 @@ const metadata = { feature: 'Login with WebAuthn and Oauth', available: [true, true], }, + { + feature: 'Registration page', + available: [true, true], + isV6: true, + }, { feature: 'Access rights management per album', available: [true, true], @@ -320,38 +358,20 @@ const metadata = { available: [false, true], isV6: true, }, - { - feature: 'User groups', - available: [false, true], - isV6: true, - isSoon: true, - }, { - feature: 'Timeline', + feature: 'User groups', isHeader: true, isV6: true, - isSoon: true, - }, - { - feature: 'Standalone page', - available: [true, true], - }, - { - feature: 'Direct date access', - available: [true, true], }, { - feature: 'With access control', - available: [true, true], - }, - { - feature: 'Custom granularity', + feature: 'Support group admin', available: [false, true], }, { - feature: 'Custom format', + feature: 'Support group sharing', available: [false, true], + isSoon: true, }, @@ -386,6 +406,7 @@ const metadata = { { feature: 'Personal favourites', available: [false, true], + isV6: true, }, { From 775c6ee16b325147b590e031a591ae5b98cdb164 Mon Sep 17 00:00:00 2001 From: ildyria Date: Wed, 11 Jun 2025 18:07:41 +0200 Subject: [PATCH 2/6] fix navigation --- src/navigation.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/navigation.js b/src/navigation.js index 72a33260..06442621 100644 --- a/src/navigation.js +++ b/src/navigation.js @@ -10,8 +10,8 @@ export const headerData = { href: getBlogPermalink(), }, { - text: 'Lychee Version 6 is Live!', - href: getPermalink('2024-10-26-v6', 'post'), + text: 'Version 6.6.6 and what is next?', + href: getPermalink('2025-06-11-version-6-6-6', 'post'), }, { text: 'Current developments', From d76937d166613aad59a908cbebab90f41f2668fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 11 Jun 2025 18:09:33 +0200 Subject: [PATCH 3/6] Update src/content/post/2025-06-11-version-6-6-6.mdx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/content/post/2025-06-11-version-6-6-6.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/post/2025-06-11-version-6-6-6.mdx b/src/content/post/2025-06-11-version-6-6-6.mdx index de3bd203..9c9c06c2 100644 --- a/src/content/post/2025-06-11-version-6-6-6.mdx +++ b/src/content/post/2025-06-11-version-6-6-6.mdx @@ -34,7 +34,7 @@ Having so many changes in the codebase in parallel makes it hard to keep track o To make it easier on our reviewers, we use [stacked pull requests](https://www.stacking.dev/). The idea being that each pull request builds on top of a previous one. This way the changes are smaller and thus easier to review. -The first drawback of this approach is that if you use the stragegy squash-and-merge, you are facing some issues. +The first drawback of this approach is that if you use the strategy squash-and-merge, you are facing some issues. - While the CI guarantees that if you merge from bottom to top into the main branch, you will not have any issues. It quickly goes sideway as conflicts between commits are bound to happen and need to be resolved. From fb6a67c64fca8743e244cb4cb17c31abb319c84f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 11 Jun 2025 18:09:39 +0200 Subject: [PATCH 4/6] Update docs/releases.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/releases.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/releases.md b/docs/releases.md index 06842147..4b11012d 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -42,7 +42,7 @@ photos were accessed and rights were handled. As a result, duplicates would effe However, as I was implementing one of the coming feature: a *Timelines* page, it became clear that this was not going to be usable. Duplicates would be displayed successively in such page and it would be impossible to distinguish them. This became the main reason for this change. -While doing this change, it also became clear that legacy ids for albums could no longer be presered. +While doing this change, it also became clear that legacy ids for albums could no longer be preserved. As a result, we dropped the legacy ids for albums and photos. This means that the remnants of API v1 are now completely gone. This release also brings the support of two new languages: Arabic and Dutch. The later is still in early steps as we are still using the Left-to-Right (LTR) layout, From dd6ed78ba3e07501b69af702d54885091eff977c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 11 Jun 2025 18:09:45 +0200 Subject: [PATCH 5/6] Update src/content/post/2025-06-11-version-6-6-6.mdx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/content/post/2025-06-11-version-6-6-6.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/post/2025-06-11-version-6-6-6.mdx b/src/content/post/2025-06-11-version-6-6-6.mdx index 9c9c06c2..6e99561c 100644 --- a/src/content/post/2025-06-11-version-6-6-6.mdx +++ b/src/content/post/2025-06-11-version-6-6-6.mdx @@ -25,7 +25,7 @@ Now having worked on creating a timeline view, I can see how useful it is to hav While invisible to the user, this architecture change has a big impact. By having the relation a photo has a unique album, it makes it possible to do a file mapping between the photos/albums in Lychee and the files/folders on the backend. -While this is not implemented, it could be seen in the the future to be made possible as this has been a long-standing complaint from some of our users. +While this is not implemented, it could be seen in the future to be made possible as this has been a long-standing complaint from some of our users. By moving to a many-to-many relation between photos and albums, this mapping is no longer an "easy" task, but we believe the benefits outweigh the drawbacks. #### Improved way of working with stacked pull requests From 7b95a076fa94ba8c914b93c43f654316e71ab13b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 11 Jun 2025 22:45:18 +0200 Subject: [PATCH 6/6] Apply suggestions from code review Co-authored-by: Martin Stone <1611702+d7415@users.noreply.github.com> --- docs/releases.md | 14 +++++++------- src/content/post/2025-06-11-version-6-6-6.mdx | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/releases.md b/docs/releases.md index 4b11012d..a1db35d7 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -45,12 +45,12 @@ Duplicates would be displayed successively in such page and it would be impossib While doing this change, it also became clear that legacy ids for albums could no longer be preserved. As a result, we dropped the legacy ids for albums and photos. This means that the remnants of API v1 are now completely gone. -This release also brings the support of two new languages: Arabic and Dutch. The later is still in early steps as we are still using the Left-to-Right (LTR) layout, +This release also brings the support of two new languages: Arabic and Dutch. The former is still in early steps as we are still using the Left-to-Right (LTR) layout, but we are planning to also add Persian (fa) and with it a full Right-to-Left (RTL) display. -We also added a registration page, which you can enabled/disable in your settings. +We also added a registration page, which you can enable/disable in your settings. -Finally for the great supporters of Lychee we added two new feature: +Finally for the great supporters of Lychee we added two new features: - The ability to create user-groups. This functionality is currently hidden behind a feature flag, but we are planning to make it available soon. This will allow you to create groups of users and share albums with those groups, simplifying the sharing process. @@ -66,20 +66,20 @@ Finally for the great supporters of Lychee we added two new feature: * `new` #3388 : Support space in search terms by @ildyria. > You can now search for terms with spaces, to do so, you will need to use quotes around the search term. * `new` #3383 : Add option to disable slideshow by @ildyria. - > One of our user requested the ability to disable the slideshow mode in the photo view. + > One of our users requested the ability to disable the slideshow mode in the photo view. > Well here it is! Available as an option in the settings page. * `new` #3384 : Add registration page by @ildyria. > Registration is disabled by default, but you can enable it in the User Management section of the settings page. * `new` #3379 : Add option to override the album visibility for smart and tag albums by @ildyria. > By default, smart albums and tag albums are respecting the access rights of the user to select the pictures. - > One of our user requested the ability to override this visibility constraint. This option is now available in the settings page. + > One of our users requested the ability to override this visibility constraint. This option is now available in the settings page. * `SE` #3406 : Add User-groups by @ildyria. - > User Groups are coming, as they do not provide value for the moment, they are hidden behind a feature flag. + > User Groups are coming. As they do not provide value for the moment, they are hidden behind a feature flag. * `SE` #3409 : Add color extraction from pictures. by @ildyria. > This option is available in the image processing section of the settings page. > It allows you to extract the 5 dominant colours from photos. We provide two different engines for this: > - > - Slower: `league` does a full sampling and use ciede2000DeltaE for colour distance calculation. + > - Slower: `league` does a full sampling and uses ciede2000DeltaE for colour distance calculation. > - Faster: `farzai` uses spot sampling and k-mean distance. * `new` #3359 : Refactoring photo-album relation by @ildyria. > As explained in the introduction, this is a big change which allows a photo to be in multiple albums at the same time instead of being duplicated. diff --git a/src/content/post/2025-06-11-version-6-6-6.mdx b/src/content/post/2025-06-11-version-6-6-6.mdx index 6e99561c..71703897 100644 --- a/src/content/post/2025-06-11-version-6-6-6.mdx +++ b/src/content/post/2025-06-11-version-6-6-6.mdx @@ -25,7 +25,7 @@ Now having worked on creating a timeline view, I can see how useful it is to hav While invisible to the user, this architecture change has a big impact. By having the relation a photo has a unique album, it makes it possible to do a file mapping between the photos/albums in Lychee and the files/folders on the backend. -While this is not implemented, it could be seen in the future to be made possible as this has been a long-standing complaint from some of our users. +While this is not currently implemented, it could be in the future as this has been a long-standing complaint from some of our users. By moving to a many-to-many relation between photos and albums, this mapping is no longer an "easy" task, but we believe the benefits outweigh the drawbacks. #### Improved way of working with stacked pull requests @@ -40,10 +40,10 @@ The first drawback of this approach is that if you use the strategy squash-and-m It quickly goes sideway as conflicts between commits are bound to happen and need to be resolved. The easy way to avoid this is to collapse the stack into a single commit once all the PR are approved before merging into main. - The second issue is that because of squash-and-merge, you will need to rebase to ensure a nice linear stack and propagate changes up. - A review on the bottom with change requests will impact the PR above it. There are no easy solution to this but some git wizardy. - I will admit that `git reset --soft xxx` has become one of my best friend. + A review on the bottom with change requests will impact the PR above it. There are no easy solution to this but some git wizardry. + I will admit that `git reset --soft xxx` has become one of my best friends. -And finally, the last drawback of this approach is the growing number of PR waiting to be merged. In itself it is not to annoying but GitHub +And finally, the last drawback of this approach is the growing number of PRs waiting to be merged. In itself it is not too annoying but GitHub does not provide a good visual overview of the state of the stack. For this reason, to increase the visibility of the changes, we have created a new [new page](https://pr.lycheeorg.dev/) to list all the open pull requests in a stack and their status. Of course as per open-source tradition, the source code is available on [GitHub](https://github.com/LycheeOrg/Lychee-Pull-Requests).