Releases: LycheeOrg/Lychee
Version 4.6.0 RC - Refactoring of Authentication layer - Admin login changed!
Important
Once the migration is applied, should you wish to rollback, you will need to reset your admin user otherwise it will not be possible to log as admin anymore.
What's Changed
- Provide an ASCII fallback for multibyte filenames by @kamil4 in #1453
- Cleanup download tests by @nagmat84 in #1457
- Run
npm install
in post-merge hook by @qwerty287 in #1445 - Authorization tests by @nagmat84 in #1414
- Fix CI badge in readme by @d7415 in #1460
- just remove --no-suggest by @ildyria in #1463
- Use Laravel Auth facade. by @ildyria in #1403
Full Changelog: v4.5.3...v4.6.0-RC
Version 4.5.3 - New folder structure & more
This is official release making the step from 4.4.0.
IMPORTANT
- The internal representation of Albums changed with version 4.5.0; we strongly recommend that you BACK UP YOUR DATABASE BEFORE UPDATING.
- The folder structure changed for images; please check the required directory permissions.
Read more here ».
Notable Modifications (since 4.4.0)
-
New ID scheme. Albums and photos are migrated to a new ID scheme. Previously, albums and photos used time-based integer IDs. The new IDs are truly 144bit of randomness encoded in Base64 as a 24-character string; e.g., if your photo had the URL
https://my-domain.tld/r/16102925744307/16102927818284
before, it may have the URLhttps://my-domain.tld/r/GTqZfSso3nPeCnTNW4ovisgC/jM6KkmlK7X0LtVas5MjrHtTO
after the migration. This means, external links to your albums or photos will stop working. However, we implemented a redirection service. You can enable/disable the re-direction service underSettings
>More
>legacy_id_redirection
. This gives you time to migrate any external reference to the new IDs. We also generate a log entry every time the redirection service is used. This log contains the legacy and new ID as well as information where the request came from. This may help you with the migration of your external links. -
New folder structure for images:
- Deep directory structure. Instead of all images of a certain kind residing in a single, flat directory (potentially containing thousands of files), we now have two additional two-letter directory levels under each kind (e.g., images are stored as
medium/ba/d0/9a28ec995ead4877dfa1befa2d3b.jpg
). - HiDPI (
@2x
) variants now reside in their own directories. big
has been renamed tooriginal
.
Note that this only affects newly added photos; those added in the past are not moved to new locations. Also, see the note above about directory permissions.
- Deep directory structure. Instead of all images of a certain kind residing in a single, flat directory (potentially containing thousands of files), we now have two additional two-letter directory levels under each kind (e.g., images are stored as
-
Refactoring of the internal architecture and the representation of albums. While this didn't add any major new features, a number of optimizations have been put in place to speed up various operations, e.g., on installations with many hundreds of albums. Because this requires a particularly complex database migration, those with existing installations should pay attention to the note above about backing up their database.
-
Refactoring of error handling and reporting. This should result in more meaningful error messages both in the web front end and in the server logs (instead of the old cryptic "Server error or API not found" messages).
-
Refactoring of the file handling during upload/import. Instead of using temporary files and (re-)reading them many times, we now rely on file streams. This not only speeds up processing during upload/import (by around 50% in our tests), but is also an important step towards future support for the use of AWS S3 as image storage.
-
New features in the web front end :
- QR code added in the sharing menu.
- GPX tracks can be added to albums for displaying together with photos on the map.
- Drag/drop support added for albums and photos to facilitate more intuitive Move/Merge
-
ZIP compression level can now be changed and the compression can be disabled.
-
Support of Vietnamese language.
What's Changed (since 4.5.2)
- Moved unit tests for root album into separate class by @nagmat84 in #1416
- Add some tests by @qwerty287 in #1395
- move the traits to the class as it is only used once by @ildyria in #1425
- Fix test interaction with smart albums by @nagmat84 in #1428
- Fix album unit tests by @nagmat84 in #1427
- Security fix: Unsorted photos by @nagmat84 in #1430
- Improve cicd by @ildyria in #1424
- add JetBrain Open Source Community Support by @ildyria in #1442
- Make VideoHandler support optional by @kamil4 in #1439
- Update dependencies and add NPM lockfile by @qwerty287 in #1440
- Ensure consistent sorting of albums in list of shares by @nagmat84 in #1429
- Added options for ZIP compression by @nagmat84 in #1436
- Update readme.md by @ildyria in #1450
- version 4.5.3 by @ildyria in #1447
Full Changelog: v4.5.2...v4.5.3
Version 4.5.2 - Use Filestreams, Improve handling of Errors - Add QR code sharing
What's Changed
- Center search clear
X
by @qwerty287 in #1264 - Added more file to gitignore by @nagmat84 in #1282
- Fixes 1280 by @nagmat84 in #1284
- More efficient deletion (but ugly) by @nagmat84 in #1277
- Update composer.lock by @nagmat84 in #1285
- Fix rollback code for mysql by @kamil4 in #1289
- Added file extension to temporary files by @nagmat84 in #1275
- Add file ext to tmp file by @nagmat84 in #1290
- Fix version of php-exif instead of using dev by @ildyria in #1292
- Add locale variable by @qwerty287 in #1291
- Update php-exif to 0.7.5 by @kamil4 in #1296
- Use server's default timezone as default timezone by @qwerty287 in #1297
- Consistent JSON API incl. Proper Handling of Errors (2nd half of big refactoring) by @nagmat84 in #1217
- Add album tracks by @qwerty287 in #1274
- Add QR code locales by @qwerty287 in #1260
- Fix coloring in scripts by @qwerty287 in #1305
- Fix livewire search
X
by @qwerty287 in #1306 - Exception-free wrapper for Laravel's
report
method. by @nagmat84 in #1315 - Fixes #1311 by @nagmat84 in #1317
- php artisan lychee:sync failing with Unresolvable dependency resolving bool $enableCLIFormatting by @mederel in #1319
- Fixes #1323. by @nagmat84 in #1327
- Sync frontend for drag / drop by @qwerty287 in #1308
- Create CONTRIBUTING.md by @ildyria in #1331
- Make Linter happy about tests by @nagmat84 in #1332
- simplify actions by @ildyria in #1335
- Improve file handling by @nagmat84 in #1309
- Update dependencies by @qwerty287 in #1337
- Fixes #1330 by @nagmat84 in #1339
- Bump guzzlehttp/guzzle from 7.4.2 to 7.4.3 by @dependabot in #1347
- Remove executable bit from non-executable files by @nagmat84 in #1348
- Fixes #1342 by @nagmat84 in #1349
- Test samples for pending PR. by @nagmat84 in #1352
- Fix of tests for console commands for pending PR. by @nagmat84 in #1353
- Fix missing photos var and add photo title by @qwerty287 in #1360
- Remove Google Fonts by @qwerty287 in #1302
- Update PHPExif and sync frontend by @qwerty287 in #1362
- Migrate install_files scripts to PHP and add more config to
.env
by @qwerty287 in #1361 - Override
key:generete
command to fix recreating key every time by @qwerty287 in #1364 - Bump guzzlehttp/guzzle from 7.4.3 to 7.4.4 by @dependabot in #1365
- Bump guzzlehttp/guzzle from 7.4.4 to 7.4.5 by @dependabot in #1376
- Synchronize/update the list of PHP extensions by @kamil4 in #1375
- New locale strings by @kamil4 in #1377
- Extractor uses EXIFtool for all types of media, if available. by @nagmat84 in #1379
- Enable phpstan by @ildyria in #1336
- Fix GD (broken by #1336) by @kamil4 in #1386
- Restore code to fix image dimensions post-rotation by @kamil4 in #1389
- fixes #1390 by @ildyria in #1392
- Ensure a local timestamp for mov videos by @kamil4 in #1387
- Add vietnamese file by @hiensarahly in #1382
- Fix untranslatable strings by @qwerty287 in #1371
- add check about exec + diagnostics output by @ildyria in #1397
- Make migration of filesize more robust wrt. broken DB by @ildyria in #1394
- remove old workflow runs by @ildyria in #1393
- remove broken pipeline by @ildyria in #1400
- Update to php-exif 0.7.8 by @kamil4 in #1401
- Improve safety and reliability of lychee:ghostbuster by @nagmat84 in #1405
- SQLite does not return a
int
ongetCode()
but astring
. by @ildyria in #1407 - Update php-exif to 0.7.9 by @kamil4 in #1408
- Add "Clear" button to logs by @qwerty287 in #1374
- Update php-exif to 0.7.10 by @kamil4 in #1413
- Use filestreams by @nagmat84 in #1351
New Contributors
- @mederel made their first contribution in #1319
- @hiensarahly made their first contribution in #1382
Full Changelog: v4.5.1...v4.5.2
Version 4.5.1 - SQL Optimizations and fixes
What's Changed
- Add indices to speed up query for album covers by @nagmat84 in #1196
- Fixes #1192 by @nagmat84 in #1194
- add migration to enforce optimization of tables by @ildyria in #1199
- Added diagnostic for default timezone setting. by @nagmat84 in #1207
- Improved file handling by @nagmat84 in #1203
- Fix some potential null references by @nagmat84 in #1213
- Fixes #1208 by @nagmat84 in #1212
- Fix import of video files and thumbnail generation by @kamil4 in #1219
- Fixes #1221 by @nagmat84 in #1222
- Explicitly round new dimensions to integer by @kamil4 in #1235
- Move filesize to size variants by @Chostakovitch in #1239
- Belated sync of frontend for PR #1239 by @nagmat84 in #1245
- Added a console command to fix the tree by @nagmat84 in #1252
- Speed up
POST api/Album::getPositionData
by @nagmat84 in #1256 - Fix geoposition types by @nagmat84 in #1258
- Fix dead links by @qwerty287 in #1263
- Fix untranslatable strings by @qwerty287 in #1270
- Fix the path to the ImageOptimizer class by @kamil4 in #1273
- Added shortcuts via
RewriteRule
to .htaccess by @nagmat84 in #1272 - Add missing indices by @nagmat84 in #1278
Full Changelog: v4.5.0...v4.5.1
Version 4.5.0 - Refactoring of Model Architecture
Version 4.4.0 - Full support of PHP 8.0 and 8.1 - dropped 7.4
PHP 7.4 IS NOT LONGER SUPPORTED AND WILL NOT WORK. Expect error 500.
We are aware this may not be a popular decision.
Please accept the rationale of such change:
- Php supported version: we want to stay in the green zone, anything orange is ignored.
- PHP 8.0 brings lots of improvements: stronger typing, JIT... read more here
- Spatie requires in all their updated packages to be in version 8.0 (basically some of our dependencies).
What's Changed
- Fixes #1149 by @nagmat84 in #1154
- Fix diagnostics by @ildyria in #1152
- Upgrade composer and php version by @ildyria in #1145
- bump to version 4.4.0 + remove unnecessary php-intl requirement by @ildyria in #1157
- update codecov.yml by @ildyria in #1158
Full Changelog: v4.3.6...v4.4.0
Version 4.3.6 : Last version with php7.4 support!
THIS IS THE LAST VERSION OF LYCHEE WHICH SUPPORTS PHP 7.4.
fixes
#1059 : Add Cache busting.new
#1049 /fixes
#1011 : New Photos Email Notification- Send an email when new photos were added to albums that have been shared.
- Use the laravel notification system to send via SMTP,
env
settings will need to be set up. - It is set to send out emails once a week via cron, so the laravel cron job would need to be set up.
- Neither is required so if people don't want to set those up then it won't affect the operation of Lychee.
- Add admin setting to toggle the notification option, which enables a user level menu item to change their email. This is purely opt-in, so users can clear their email if they don't wish to receive the emails anymore.
- The email that gets sent out has been branded lychee, and will group the last week's worth of notifications and send them all out in one email to each user that has an email set up.
new
#1065 : Add Polish translation.new
#1071 : Avoid git rebase conflicts during development on other branchesnew
#1086 : cli sync from from server with option to delete, import via symlink, etc.new
#1097 : Make language more gender neutral.fixes
#1102 : Character limitation of table column logs.function causes server error 500 for deployments with long installation pathfixes
#1105 : Fix type issues related to thumbsfixes
#1108 : Fixes takestamps.- This should correct all instances of incorrect album min/max takestamps and as a bonus be computationally much less expensive.
fixes
#1110 :round
in php8 requires anint
orfloat
as the first argument.fixes
#1119 : No video upload when ffmpeg is missingnew
#1122 : Improved French translations.fixes
#1121 : Fix lychee:video_datafixes
#1033 : A bit of JS to prevent multiple submissions of the migration form.fixes
#1127 : The upload_processing_limit parameter only works when uploading images in the admin account. It does not work for images uploaded by other usersnew
#1142 : also support Caps on size format in diagnostics.fixes
#1146 : artisan optimize crashes with Unable to prepare routefixes
LycheeOrg/Lychee-front#270: Copy To... didn't work correctlyfixes
LycheeOrg/Lychee-front#273: Wrong support of ' (single quote) in some placesfixes
#1123: Album renaming did not work reliablynew
LycheeOrg/Lychee-front#276: Remember user preference for the visibility of the info sidebarfixes
LycheeOrg/Lychee-front#278: Fix the menu for smart and tag albums and in public mode, fix import into top-level albums view, fix empty info sidebar for albums
Full Changelog: v4.3.4...v4.3.6
Version 4.3.4
new
#972 : more versions and dependencies checkfixes
#954 : Google Motion Photonew
#988 : Added raw values of attributes to JSON APInew
#1000 : Extended search for cameramodel and date.fixes
#998 : Use Guzzle7 instead of Guzzle6fixes
#994 : Disable login with Legacy if UserAdmin existsnew
#991 : Add attribute 'filesize_raw' to entity 'Photo'new
#1016 : Refactor timestampsfixes
#1008 : null error on live photo importnew
#1041 : Enhance German Translation
Packaged version of Lychee including the vendor folder.
Install process is as follow:
- extract the zip file.
- create your database and user manually
Then you have two possibilities:
cp .env.example .env
- edit
.env
php artisan key:generate
php artisan migrate
sudo chown -R www-data:www-data .
or
sudo chown -R www-data:www-data .
and access from your browser the Lychee installation and follow the installation steps
See change log: https://lycheeorg.github.io/docs/releases.html
See how to update: https://lycheeorg.github.io/docs/update.html
See how to upgrade from version 3: https://lycheeorg.github.io/docs/upgrade.html
Version 4.3.0 - Support for PHP 8 + UI improvement on Touch devices
new
#940 : Improved support for touch devices.new
#939 : Responsive web design for small screens.fixes
#959 : Excluded '/api/Session::init' from CSRF protection (as per the API specs).fixes
#959 : Fixes .lycheeignore support.new
#942 : Add support for Portuguese language.fixes
#927 : Also copy over the password column when migrating from the very old version 3 of Lycheefixes
#932 : Public photos hiddenIt adds a new config variable public_photos_hidden, which defaults to 1 (preserving the current behavior). If set to 0, photos individually made public (rather than through an album) will be included in the results of a public search or in public tagged albums. Basically, they will no longer be treated as hidden (even though they still won't be findable through browsing; we could address that as well by making the Public smart album, well, public -- I welcome your input if we should, and if so, what to name the config variable to enabled that, other than public_public wink).
Packaged version of Lychee including the vendor folder.
Install process is as follow:
- extract the zip file.
- create your database and user manually
Then you have two possibilities:
cp .env.example .env
- edit
.env
php artisan key:generate
php artisan migrate
sudo chown -R www-data:www-data .
or
sudo chown -R www-data:www-data .
and access from your browser the Lychee installation and follow the installation steps
See change log: https://lycheeorg.github.io/docs/releases.html
See how to update: https://lycheeorg.github.io/docs/update.html
See how to upgrade from version 3: https://lycheeorg.github.io/docs/upgrade.htmlVe
Version 4.2.2 - Various fixes + minor new functionalities
fixes
#882 : Password albums were broken.fixes
#891 : Download: file not found on password protected Albumfixes
#895 : Default license displayfixes
#888 : Refactoring of the rotation codenew
#887 : Add the possibility to not display the GPS direction on the mapnew
#892 : Add--force
option to the Command Line Interface for Takedatefixes
#890 : Fix delete bug when selecting multiple sub albumsnew
#901 : Add more diagnostics checksnew
#905 : Improve Chinese translationfixes
#908 : Migration from v3 was broken since version 4.2By adding nested set tree, column
_lft
and_rgt
did not exist on first import while the code required it.new
#919 : Add the possibility to limit the number of image being processedThis will lower the memory load on the server, especially on RAM limited instances.
fixes
#925 : Some user decided to upload pictures without extension, this broke our code...fixes
#903 : Windowsmicrotime()
was a bit slow, generating collisions in the uploaded file names.The file name are now generated from the sha1 hash of the file.
new
#894 : Extend the functionality of Import from server to have the same interface as from the command line.
Packaged version of Lychee including the vendor folder.
Install process is as follow:
- extract the zip file.
- create your database and user manually
Then you have two possibilities:
cp .env.example .env
- edit
.env
php artisan key:generate
php artisan migrate
sudo chown -R www-data:www-data .
or
sudo chown -R www-data:www-data .
and access from your browser the Lychee installation and follow the installation steps
See change log: https://lycheeorg.github.io/docs/releases.html
See how to update: https://lycheeorg.github.io/docs/update.html
See how to upgrade from version 3: https://lycheeorg.github.io/docs/upgrade.htmlVe