Skip to content

Commit ad0f8a0

Browse files
ildyriad7415
andauthored
Version 6.6.6 (#211)
Co-authored-by: Martin Stone <[email protected]>
1 parent 074f881 commit ad0f8a0

File tree

6 files changed

+190
-30
lines changed

6 files changed

+190
-30
lines changed

docs/releases.md

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,84 @@
3030

3131
## Version 6
3232

33+
### v6.6.6 😈
34+
35+
Released on Jun 11, 2025
36+
37+
#### Spicy change: Photo and Album relationships, Colour palette extraction and more!
38+
39+
Evil number, spicy changes. This release brings a big turn in the way photos and albums are related to each other.
40+
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
41+
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.
42+
However, as I was implementing one of the coming feature: a *Timelines* page, it became clear that this was not going to be usable.
43+
Duplicates would be displayed successively in such page and it would be impossible to distinguish them. This became the main reason for this change.
44+
45+
While doing this change, it also became clear that legacy ids for albums could no longer be preserved.
46+
As a result, we dropped the legacy ids for albums and photos. This means that the remnants of API v1 are now completely gone.
47+
48+
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,
49+
but we are planning to also add Persian (fa) and with it a full Right-to-Left (RTL) display.
50+
51+
We also added a registration page, which you can enable/disable in your settings.
52+
53+
Finally for the great supporters of Lychee we added two new features:
54+
55+
- The ability to create user-groups. This functionality is currently hidden behind a feature flag, but we are planning to make it available soon.
56+
This will allow you to create groups of users and share albums with those groups, simplifying the sharing process.
57+
- The extraction of the dominant colour palette from photos (you will need to enable it in your settings).
58+
59+
60+
#### Most notable changes
61+
62+
`SE` refers to functionalities that are aimed at the Supporter Edition.
63+
64+
* `new` #3387 : Dutch translations by @ildyria.
65+
* `new` #3396 : Arabic support by @ildyria.
66+
* `new` #3388 : Support space in search terms by @ildyria.
67+
> You can now search for terms with spaces, to do so, you will need to use quotes around the search term.
68+
* `new` #3383 : Add option to disable slideshow by @ildyria.
69+
> One of our users requested the ability to disable the slideshow mode in the photo view.
70+
> Well here it is! Available as an option in the settings page.
71+
* `new` #3384 : Add registration page by @ildyria.
72+
> Registration is disabled by default, but you can enable it in the User Management section of the settings page.
73+
* `new` #3379 : Add option to override the album visibility for smart and tag albums by @ildyria.
74+
> By default, smart albums and tag albums are respecting the access rights of the user to select the pictures.
75+
> One of our users requested the ability to override this visibility constraint. This option is now available in the settings page.
76+
* `SE` #3406 : Add User-groups by @ildyria.
77+
> User Groups are coming. As they do not provide value for the moment, they are hidden behind a feature flag.
78+
* `SE` #3409 : Add color extraction from pictures. by @ildyria.
79+
> This option is available in the image processing section of the settings page.
80+
> It allows you to extract the 5 dominant colours from photos. We provide two different engines for this:
81+
>
82+
> - Slower: `league` does a full sampling and uses ciede2000DeltaE for colour distance calculation.
83+
> - Faster: `farzai` uses spot sampling and k-mean distance.
84+
* `new` #3359 : Refactoring photo-album relation by @ildyria.
85+
> 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.
86+
> We are looking forward to the possibilities this opens up for the future.
87+
* `new` #3375 : Drop legacy id by @ildyria.
88+
> Not a big change, but this may impact some of the users who relied on old sharing links.
89+
90+
#### Other boring changes
91+
92+
`klo` refers to *Keep the Light On*. In other words, basic software updates.
93+
94+
* `klo` #3374 : Remove "unjustified" photo layout option from code by @ildyria.
95+
> Long overdue change, unjustified layout had been removed already in version 5. This is cleaning legacy code.
96+
* `klo` #3355 : Remove dependency on parent-id and directly extract from the url by @ildyria.
97+
> Necessary for the change of the photo-album relationship.
98+
* `fixes` #3386 : Fix 500 when the imagick config file does not exists by @ildyria.
99+
> Version 6.6.5 introduced a check to see whether imagick was properly configured to support pdf.
100+
> This check was not working on windows servers as the imagick config file was not present and resulted in a 500 crash.
101+
> We fixed it.
102+
* `klo` #3390 : Add copilot instructions by @ildyria.
103+
> While we are not active AI users, we provide some guidelines for contributors who feel like vibe coding on Lychee.
104+
* `new` #3389 : Compact left menu by @ildyria.
105+
> As we add more and more functionalities, the left menu was getting a bit crowded. This reduces the spacing to avoid having scroll bar.
106+
* `klo` #3356 : Refactoring LiveMetrics to avoid photo.album_id requirement. by @ildyria.
107+
> Necessary for the change of the photo-album relationship.
108+
* `klo` #3426 : Minor documentation improvements by @ildyria.
109+
110+
33111
### v6.6.5
34112

35113
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
56134
- An annimation when switching images in the photo view.
57135
- A proper login page instead of a modal.
58136

59-
60-
`klo` refers to *Keep the Light On*. In other words, basic software updates.
137+
#### Most notable changes
61138

62139
* `new` #3351 : Add go home link on error page by @ildyria
63140
> When directly accessing a photo or album without permission or which does not exists, we customized the error page

src/components/widgets/Announcement.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
>NEW</span
1111
>
1212
<a
13-
href="https://github.com/LycheeOrg/Lychee/releases/tag/v6.6.5"
14-
class="text-slate-200 hover:underline dark:text-slate-200 font-medium">Lychee 6.6.5 is now available! »</a
13+
href="https://github.com/LycheeOrg/Lychee/releases/tag/v6.6.6"
14+
class="text-slate-200 hover:underline dark:text-slate-200 font-medium">Lychee 6.6.6 is now available! »</a
1515
>
1616
<a
1717
target="_blank"

src/components/widgets/Footer.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const { socialLinks = [], secondaryLinks = [], links = [], footNote = '', theme
3434
<div class="mb-2">
3535
<a class="inline-block font-bold text-xl" href={getHomePermalink()}>{SITE?.name}</a>
3636
</div>
37-
<div class="text-sm text-muted flex gap-1">
37+
<div class="text-sm text-muted flex flex-wrap gap-1">
3838
{
3939
secondaryLinks.map(({ text, href }, index) => (
4040
<>
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
publishDate: 2025-06-11T17:00:00Z
3+
author: ildyria
4+
title: 'Version 6.6.6 and what is next?'
5+
excerpt: Why is version 6.6.6 special? What is next on the roadmap for Lychee?
6+
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
7+
category: Release Notes
8+
tags:
9+
- lychee
10+
- blabla
11+
- Supporter Edition
12+
- v6
13+
---
14+
15+
Five days ago, we looked back on what we have accomplished over the past six months.
16+
17+
#### What is special about version 6.6.6?
18+
19+
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.
20+
We are moving from "*a photo can only be in a single album*" to "*a photo can be in multiple albums*".
21+
22+
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.
23+
It has always been a feature that I thought was not needed, and I was afraid that it would complicate the codebase.
24+
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.
25+
26+
While invisible to the user, this architecture change has a big impact. By having the relation a photo has a unique album,
27+
it makes it possible to do a file mapping between the photos/albums in Lychee and the files/folders on the backend.
28+
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.
29+
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.
30+
31+
#### Improved way of working with stacked pull requests
32+
33+
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.
34+
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.
35+
This way the changes are smaller and thus easier to review.
36+
37+
The first drawback of this approach is that if you use the strategy squash-and-merge, you are facing some issues.
38+
39+
- While the CI guarantees that if you merge from bottom to top into the main branch, you will not have any issues.
40+
It quickly goes sideway as conflicts between commits are bound to happen and need to be resolved.
41+
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.
42+
- 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.
43+
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.
44+
I will admit that `git reset --soft xxx` has become one of my best friends.
45+
46+
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
47+
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
48+
a new [new page](https://pr.lycheeorg.dev/) to list all the open pull requests in a stack and their status.
49+
Of course as per open-source tradition, the source code is available on [GitHub](https://github.com/LycheeOrg/Lychee-Pull-Requests).
50+
51+
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.
52+
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.
53+
54+
#### A bit of help, please?
55+
56+
If you speak Spanish, we would love to take a bit of your time to help us double check the Spanish translation of Lychee.
57+
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.
58+
59+
As always, this release would not have been possible without the help of our supporters and hard work of our reviewers.
60+
If you would like to help or join us, we are always looking for more contributors.
61+
Please reach out to us on our [Discord](https://discord.gg/JMPvuRQcTf).

src/navigation.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ export const headerData = {
1010
href: getBlogPermalink(),
1111
},
1212
{
13-
text: 'Lychee Version 6 is Live!',
14-
href: getPermalink('2024-10-26-v6', 'post'),
13+
text: 'Version 6.6.6 and what is next?',
14+
href: getPermalink('2025-06-11-version-6-6-6', 'post'),
1515
},
1616
{
1717
text: 'Current developments',
@@ -66,6 +66,7 @@ export const footerData = {
6666
{ text: 'License', href: getPermalink('/license') },
6767
{ text: 'Release Notes', href: getPermalink('/docs/releases.html') },
6868
{ text: 'Privacy Policy', href: getPermalink('/privacy-policy') },
69+
{ text: 'Pull Request Dashboard', href: 'https://pr.lycheeorg.dev/' },
6970
],
7071
socialLinks: [
7172
{ ariaLabel: 'RSS', icon: 'tabler:rss', href: getAsset('/rss.xml') },

src/pages/get-supporter-edition.astro

Lines changed: 44 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ const metadata = {
129129
tagline="the essentials and a few more"
130130
products={['Free', 'Lychee <span class="text-sky-600 dark:text-sky-300">SE</span>']}
131131
extra="<sup>*</sup> This table is summary of Lychee's functionalities and does not represent the large amount of configurations available.<br>\
132-
<sup>**</sup> A lot of default values are still in English. Any pull requests with translation to your own language would help.<br>\
132+
<sup>**</sup> Some languages are still untranslated. Any translations provided via <a class='text-sky-600 dark:text-sky-300 underline hover:text-sky-400 dark:hover:text-sky-500' href='https://weblate.lycheeorg.dev'>weblate</a> will be appreciated.<br>\
133133
<sup>***</sup> This option is not available on <span class='text-sky-600 dark:text-sky-300'>SE</span> as they are already hidden."
134134
specs={[
135135
{
@@ -213,6 +213,11 @@ const metadata = {
213213
available: [false, true],
214214
isV6: true,
215215
},
216+
{
217+
feature: 'Color palette extraction',
218+
available: [false, true],
219+
isV6: true,
220+
},
216221

217222
{
218223
feature: 'Album management',
@@ -289,6 +294,34 @@ const metadata = {
289294
available: [false, true],
290295
isV6: true,
291296
},
297+
298+
{
299+
feature: 'Timeline',
300+
isHeader: true,
301+
isV6: true,
302+
isSoon: true,
303+
},
304+
{
305+
feature: 'Standalone page',
306+
available: [true, true],
307+
},
308+
{
309+
feature: 'Direct date access',
310+
available: [true, true],
311+
},
312+
{
313+
feature: 'With access control',
314+
available: [true, true],
315+
},
316+
{
317+
feature: 'Custom granularity',
318+
available: [false, true],
319+
},
320+
{
321+
feature: 'Custom format',
322+
available: [false, true],
323+
},
324+
292325
{
293326
feature: 'User management',
294327
isHeader: true,
@@ -297,6 +330,11 @@ const metadata = {
297330
feature: 'Login with WebAuthn and Oauth',
298331
available: [true, true],
299332
},
333+
{
334+
feature: 'Registration page',
335+
available: [true, true],
336+
isV6: true,
337+
},
300338
{
301339
feature: 'Access rights management per album',
302340
available: [true, true],
@@ -320,38 +358,20 @@ const metadata = {
320358
available: [false, true],
321359
isV6: true,
322360
},
323-
{
324-
feature: 'User groups',
325-
available: [false, true],
326-
isV6: true,
327-
isSoon: true,
328-
},
329361

330362
{
331-
feature: 'Timeline',
363+
feature: 'User groups',
332364
isHeader: true,
333365
isV6: true,
334-
isSoon: true,
335-
},
336-
{
337-
feature: 'Standalone page',
338-
available: [true, true],
339-
},
340-
{
341-
feature: 'Direct date access',
342-
available: [true, true],
343366
},
344367
{
345-
feature: 'With access control',
346-
available: [true, true],
347-
},
348-
{
349-
feature: 'Custom granularity',
368+
feature: 'Support group admin',
350369
available: [false, true],
351370
},
352371
{
353-
feature: 'Custom format',
372+
feature: 'Support group sharing',
354373
available: [false, true],
374+
isSoon: true,
355375
},
356376

357377

@@ -386,6 +406,7 @@ const metadata = {
386406
{
387407
feature: 'Personal favourites',
388408
available: [false, true],
409+
isV6: true,
389410
},
390411

391412
{

0 commit comments

Comments
 (0)