Conversation
- Migration: convert is_starred → is_highlighted column with ratings backfill - PHP enums, models, DTOs, pipes, controllers, requests, resources updated - SmartAlbums: HighlightedAlbum replaces StarredAlbum - TypeScript types, stores, composables, Vue components all updated - 22 language translation files updated - All related test files updated Spec impact: docs/specs/4-architecture/features/013-starred-to-highlighted/
📝 WalkthroughWalkthroughRenames the "starred" concept to "highlighted" across the codebase: DB column and migrations, models/DTOs/enums, action pipes, HTTP layer (requests/resources/controller/routes), policies, frontend (Vue, services, stores, types), translations, docs, and tests. Adds migrations that migrate data and recreate indexes. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Poem
🚥 Pre-merge checks | ❌ 1❌ Failed checks (1 warning)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 14
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (13)
docs/specs/1-concepts/system.md (1)
294-294:⚠️ Potential issue | 🟡 MinorUpdate the stale "Last updated" date.
The date still reads
December 22, 2025, but this file is being modified in a PR opened on February 22, 2026. As per coding guidelines, the date must reflect the actual date of the update.📝 Proposed fix
-*Last updated: December 22, 2025* +*Last updated: February 22, 2026*docs/specs/3-reference/frontend-gallery.md (2)
47-47:⚠️ Potential issue | 🟡 MinorResidual "Star" references in context-menu docs not updated.
Lines 47 and 475 still list
Staras a photo operation / context-menu item. These should be updated toHighlightto stay consistent with the PR rename.📝 Proposed fix
- - **Photo Operations**: Star, rotate, tag, copy, move, delete + - **Photo Operations**: Highlight, rotate, tag, copy, move, delete- - **Photo Context**: Star, Rotate, Tag, Copy, Move, Delete + - **Photo Context**: Highlight, Rotate, Tag, Copy, Move, DeleteAlso applies to: 475-475
517-517:⚠️ Potential issue | 🟡 MinorStale "Last updated" date.
The file was modified in this PR but the date at the bottom still reads
December 22, 2025. As per coding guidelines, the "Last updated" line must reflect the date of the update.📝 Proposed fix
-*Last updated: December 22, 2025* +*Last updated: February 22, 2026*docs/specs/6-decisions/ADR-0003-album-computed-fields-precomputation.md (1)
5-5:⚠️ Potential issue | 🟡 MinorStale
Last updatedfield in ADR header.The file was modified in this PR but the header still reads
2025-12-28. As per coding guidelines, the "Last updated" value must reflect the date of the current update.📝 Proposed fix
-- **Last updated:** 2025-12-28 +- **Last updated:** 2026-02-22docs/specs/1-concepts/albums.md (1)
312-312:⚠️ Potential issue | 🟡 MinorStale "Last updated" date.
The file was modified in this PR but the footer still reads
December 22, 2025. As per coding guidelines, this must reflect the date of the update.📝 Proposed fix
-*Last updated: December 22, 2025* +*Last updated: February 22, 2026*resources/js/views/gallery-panels/Album.vue (1)
30-39:⚠️ Potential issue | 🔴 CriticalUpdate listener to match PhotoPanel's emitted event name.
PhotoPanel emitstoggleHighlight, but the listener is set to@toggle-star. This mismatch means the handler will never fire.✅ Fix
- `@toggle-star`="toggleHighlight" + `@toggle-highlight`="toggleHighlight"docs/specs/3-reference/frontend-architecture.md (1)
694-694:⚠️ Potential issue | 🟡 MinorStale "Last updated" date.
The file was modified in this PR but the date still reads "December 22, 2025". As per coding guidelines, this should be updated.
📝 Proposed fix
-*Last updated: December 22, 2025* +*Last updated: February 22, 2026*As per coding guidelines: "At the bottom of documentation files, add an hr line followed by 'Last updated: [date of the update]'".
docs/specs/1-concepts/photos.md (1)
24-34:⚠️ Potential issue | 🟡 MinorUpdate the “Last updated” date for this doc.
Since this file changed, the footer date should be refreshed (e.g., February 23, 2026).Suggested footer update
-*Last updated: December 22, 2025* +*Last updated: February 23, 2026*As per coding guidelines “At the bottom of documentation files, add an hr line followed by "Last updated: [date of the update]".”
app/SmartAlbums/README.md (1)
241-241:⚠️ Potential issue | 🟡 MinorUpdate the stale "Last updated" date.
The date still reads "August 14, 2025" but this file was modified in a February 2026 PR. As per coding guidelines, the footer should reflect the actual update date.
-*Last updated: August 14, 2025* +*Last updated: February 2026*docs/specs/4-architecture/knowledge-map.md (1)
154-246:⚠️ Potential issue | 🟡 MinorUpdate the “Last updated” date to reflect this change.
The document was modified, but the footer still shows January 14, 2026. Please refresh it to the current update date (e.g., February 22, 2026 or February 23, 2026).
As per coding guidelines, “At the bottom of documentation files, add an hr line followed by Last updated: [date of the update].”📝 Suggested footer update
-*Last updated: January 14, 2026* +*Last updated: February 22, 2026*docs/specs/3-reference/database-schema.md (1)
90-246:⚠️ Potential issue | 🟡 MinorRefresh the “Last updated” footer date.
This document changed but still shows January 21, 2026. Please update the footer to reflect this change.
As per coding guidelines, “At the bottom of documentation files, add an hr line followed by Last updated: [date of the update].”📝 Suggested footer update
-*Last updated: January 21, 2026* +*Last updated: February 22, 2026*resources/js/views/gallery-panels/Tag.vue (1)
9-18:⚠️ Potential issue | 🟠 MajorChange the PhotoPanel event binding from
@toggle-starto@toggle-highlight.PhotoPanel defines
toggleHighlightin its emits (line 75 of PhotoPanel.vue), nottoggle-star. The internal child components use@toggle-star, but PhotoPanel converts that to emittoggleHighlightto its parent. Tag.vue must listen to the correct emitted event.Fix
- `@toggle-star`="toggleHighlight" + `@toggle-highlight`="toggleHighlight"This same issue affects Album.vue, Search.vue, and Timeline.vue—all should change
@toggle-starto@toggle-highlightwhen binding PhotoPanel.app/Policies/PhotoPolicy.php (1)
264-274:⚠️ Potential issue | 🟡 MinorDocblock still references “star” after rename.
Update the wording to avoid confusion.✏️ Suggested docblock wording update
- * A photo is called _highlighted_ if the current user is allowed to star - * the photo. + * A photo is called _highlighted_ if the current user is allowed to highlight + * the photo. ... - * - the settings is set to allow anonymous users to star photos - * - the settings is set to allow authenticated users to star photos and the user is authenticated - * - the settings is set to allow editors to star photos and the user is an editor + * - the settings is set to allow anonymous users to highlight photos + * - the settings is set to allow authenticated users to highlight photos and the user is authenticated + * - the settings is set to allow editors to highlight photos and the user is an editorAlso applies to: 282-282
🧹 Nitpick comments (11)
lang/bg/gallery.php (1)
45-45: All key renames are structurally correct — minor translation-term inconsistency.The nine key renames (
starred → highlighted,star/unstar → highlight/unhighlight, etc.) are complete and the PHP array syntax is valid.One optional note: lines 45, 99, 153, 233, and 235 all use the
отбелязан-word root, but:
- Line 100 (
copy_highlighted_names) uses маркираните (a synonymous but different root).- Lines 154 and 234 (
unhighlight/unhighlight_all) use отметка / отметките (literally "tick/checkmark"), which is slightly different semantically.If you want full consistency, aligning these to
отбелязани/отбележиthroughout would read more uniformly. That said, all are understandable Bulgarian, so this is entirely optional.Based on learnings, ildyria does not prioritize strict localization consistency for translation files, so no action is required.
Also applies to: 99-100, 153-154, 233-236
lang/ja/all_settings.php (1)
127-127: Stale + typo inSA_random_thumbsdoc string not caught by the rename.Line 127 still reads
'stared/sorting order'—staredis a typo ofstarred, and since this PR renames the whole concept to "highlighted", the string should be updated accordingly.✏️ Suggested fix
- 'SA_random_thumbs' => 'Use random thumbs instead of stared/sorting order.', + 'SA_random_thumbs' => 'Use random thumbs instead of highlighted/sorting order.',resources/views/includes/svg.blade.php (1)
199-203: Consider adding astar-0symbol for the "no rating" state.The PR introduces a 1–5 rating system. If the UI needs to represent an unrated photo (rating = 0 / null) with a consistent icon — e.g. an empty or greyed-out star badge — there is currently no
star-0symbol. The existingstarsymbol (line 198) is a full-size star and doesn't match the mini-star badge style of the new series.resources/js/components/gallery/albumModule/PhotoThumbPanelControl.vue (1)
3-16: Consider hiding the highlighted button when there are no highlighted photos.The star rating filter (lines 17-36) is gated by
v-if="photosStore.hasRatedPhotos", but the highlighted filter button is visible whenever the user has the right permissions, even ifhighlightedPhotosCountis 0. This shows a "🏳 0" button that may confuse users when no photos are highlighted.Consider adding
&& photosStore.highlightedPhotosCount > 0to thev-ifcondition, or a similar computed check, to mirror the star filter's behavior.Suggested change
<div class="inline-flex items-center gap-0.5 pr-2 mr-2 border-r border-neutral-300 dark:border-neutral-600 h-8" - v-if="lycheeStore.is_se_enabled && (albumsStore.rootRights?.can_highlight || albumStore.album?.rights?.can_edit)" + v-if="lycheeStore.is_se_enabled && (albumsStore.rootRights?.can_highlight || albumStore.album?.rights?.can_edit) && photosStore.highlightedPhotosCount > 0" >lang/es/gallery.php (1)
45-45: Translation value retained from the oldstarredkey.
'Sembrado de estrellas'(literally "strewn with stars") was the pre-existing label and is now reused under thehighlightedkey. Consider updating this to a semantically accurate Spanish equivalent (e.g., "Destacadas") in a follow-up.lang/zh_TW/gallery.php (1)
153-154: Values still use "Star"/"Unstar" under the renamedhighlight/unhighlightkeys.
lang/zh_TW/gallery.phpwas already using English fallbacks for these entries and that hasn't changed. Consider updating these (and the correspondingmenusentries at Lines 233–236) to reflect "highlight" semantics in a follow-up translation pass.lang/de/gallery.php (1)
152-153: Inconsistency betweenphoto.actionsandmenustranslations.
photo.actions.highlight→ "Mit Stern bewerten" (Rate with a star) whilemenus.highlight→ "Favorit hinzufügen" (Add to favorites). This discrepancy is pre-existing (carried forward values) but now more visible under the unifiedhighlight/highlightedkey set. Consider aligning them in a follow-up translation pass.database/migrations/2026_02_22_100000_rename_starred_to_highlighted.php (2)
93-104: Step 2: Rating recomputation issues N+1 queries per chunk but acceptable for a one-time migration.Each row triggers a separate
UPDATE(line 100-102). For very large datasets this could be slow. A single rawUPDATE ... JOINwould be faster, but for a migration this is fine.♻️ Optional: single UPDATE with JOIN (MySQL/PostgreSQL)
For MySQL:
UPDATE photos JOIN statistics ON photos.id = statistics.photo_id SET photos.rating_avg = ROUND(statistics.rating_sum / statistics.rating_count, 4) WHERE statistics.rating_count > 0;For PostgreSQL:
UPDATE photos SET rating_avg = ROUND(statistics.rating_sum::numeric / statistics.rating_count, 4) FROM statistics WHERE photos.id = statistics.photo_id AND statistics.rating_count > 0;This would replace the entire chunk loop with a single statement.
124-135: Index names containalbum_idbut the indexes no longer includealbum_idcolumn.The index names like
photos_album_id_is_highlighted_index(line 126) are misleading sincealbum_idwas dropped in the prior migration and these indexes only coveris_highlighted(+ other columns). This was inherited from the earlier migration, but it could cause confusion for future maintainers.resources/js/composables/contextMenus/contextMenu.ts (1)
21-32:PhotoCallbackstype still usesstar/unstar— rename tohighlight/unhighlightfor consistency.The feature has been renamed throughout the stack, but the exported
PhotoCallbackstype and the property references on lines 99, 106, 199, and 206 still use the old names. This creates a mismatch between the external API name and the feature semantics.♻️ Proposed rename
export type PhotoCallbacks = { - star: () => void; - unstar: () => void; + highlight: () => void; + unhighlight: () => void; setAsCover: () => void;And update the four usages in
photoMenuandphotosMenu:- callback: photoCallbacks.unstar, + callback: photoCallbacks.unhighlight,- callback: photoCallbacks.star, + callback: photoCallbacks.highlight,Note: all call sites that pass a
PhotoCallbacksobject will need a corresponding rename.resources/js/composables/album/photoActions.ts (1)
15-28: RenamenewStarValueto match highlight semantics.
Keeps terminology consistent after the star → highlight rename.♻️ Suggested rename for clarity
- const newStarValue = !photoStore.photo.is_highlighted; - PhotoService.highlight([photoStore.photo.id], newStarValue).then(() => { + const newHighlightValue = !photoStore.photo.is_highlighted; + PhotoService.highlight([photoStore.photo.id], newHighlightValue).then(() => { // Update the current photo store - photoStore.photo!.is_highlighted = newStarValue; + photoStore.photo!.is_highlighted = newHighlightValue; // Update the photo in the album list (photosStore) to keep it in sync const photoIndex = photosStore.photos.findIndex((p) => p.id === photoStore.photo!.id); if (photoIndex !== -1) { - photosStore.photos[photoIndex].is_highlighted = newStarValue; + photosStore.photos[photoIndex].is_highlighted = newHighlightValue; }Also applies to: 102-103
ℹ️ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (125)
app/Actions/Photo/Create.phpapp/Actions/Photo/Pipes/Init/InitParentAlbum.phpapp/Actions/Photo/Pipes/Shared/SetHighlighted.phpapp/Contracts/Http/Requests/RequestAttribute.phpapp/Contracts/Models/AbstractAlbum.phpapp/DTO/ImportParam.phpapp/DTO/PhotoCreate/DuplicateDTO.phpapp/DTO/PhotoCreate/InitDTO.phpapp/DTO/PhotoCreate/StandaloneDTO.phpapp/Enum/ColumnSortingPhotoType.phpapp/Enum/ColumnSortingType.phpapp/Enum/SmartAlbumType.phpapp/Factories/AlbumFactory.phpapp/Http/Controllers/Gallery/PhotoController.phpapp/Http/Requests/Photo/SetPhotosHighlightedRequest.phpapp/Http/Requests/Traits/Authorize/AuthorizeCanHighlightPhotosTrait.phpapp/Http/Resources/Models/PhotoResource.phpapp/Http/Resources/Rights/RootAlbumRightsResource.phpapp/Jobs/RecomputeAlbumStatsJob.phpapp/Models/BaseAlbumImpl.phpapp/Models/Extensions/Thumb.phpapp/Models/Photo.phpapp/Policies/AlbumPolicy.phpapp/Policies/PhotoPolicy.phpapp/SmartAlbums/BaseSmartAlbum.phpapp/SmartAlbums/HighlightedAlbum.phpapp/SmartAlbums/README.mddatabase/factories/PhotoFactory.phpdatabase/migrations/2026_02_22_090000_drop_old_album_id_from_photos.phpdatabase/migrations/2026_02_22_100000_rename_starred_to_highlighted.phpdocs/specs/1-concepts/albums.mddocs/specs/1-concepts/photos.mddocs/specs/1-concepts/system.mddocs/specs/3-reference/api-design.mddocs/specs/3-reference/database-schema.mddocs/specs/3-reference/frontend-architecture.mddocs/specs/3-reference/frontend-gallery.mddocs/specs/4-architecture/backend-architecture.mddocs/specs/4-architecture/features/013-starred-to-highlighted/plan.mddocs/specs/4-architecture/features/013-starred-to-highlighted/spec.mddocs/specs/4-architecture/features/013-starred-to-highlighted/tasks.mddocs/specs/4-architecture/knowledge-map.mddocs/specs/6-decisions/ADR-0003-album-computed-fields-precomputation.mdlang/ar/all_settings.phplang/ar/gallery.phplang/bg/all_settings.phplang/bg/gallery.phplang/cz/all_settings.phplang/cz/gallery.phplang/de/all_settings.phplang/de/gallery.phplang/el/all_settings.phplang/el/gallery.phplang/en/all_settings.phplang/en/gallery.phplang/es/all_settings.phplang/es/gallery.phplang/fa/all_settings.phplang/fa/gallery.phplang/fr/all_settings.phplang/fr/gallery.phplang/hu/all_settings.phplang/hu/gallery.phplang/it/all_settings.phplang/it/gallery.phplang/ja/all_settings.phplang/ja/gallery.phplang/nl/all_settings.phplang/nl/gallery.phplang/no/all_settings.phplang/no/gallery.phplang/pl/all_settings.phplang/pl/gallery.phplang/pt/all_settings.phplang/pt/gallery.phplang/ru/all_settings.phplang/ru/gallery.phplang/sk/all_settings.phplang/sk/gallery.phplang/sv/all_settings.phplang/sv/gallery.phplang/vi/all_settings.phplang/vi/gallery.phplang/zh_CN/all_settings.phplang/zh_CN/gallery.phplang/zh_TW/all_settings.phplang/zh_TW/gallery.phpresources/js/components/gallery/albumModule/AlbumListItem.vueresources/js/components/gallery/albumModule/AlbumPanel.vueresources/js/components/gallery/albumModule/PhotoThumbPanelControl.vueresources/js/components/gallery/albumModule/thumbs/AlbumThumb.vueresources/js/components/gallery/albumModule/thumbs/PhotoThumb.vueresources/js/components/gallery/photoModule/Dock.vueresources/js/components/gallery/photoModule/PhotoPanel.vueresources/js/components/gallery/tagModule/TagPanel.vueresources/js/components/headers/AlbumHeader.vueresources/js/components/headers/PhotoHeader.vueresources/js/composables/album/photoActions.tsresources/js/composables/contextMenus/contextMenu.tsresources/js/config/constants.tsresources/js/lychee.d.tsresources/js/services/photo-service.tsresources/js/stores/AlbumState.tsresources/js/stores/PhotosState.tsresources/js/views/gallery-panels/Album.vueresources/js/views/gallery-panels/Search.vueresources/js/views/gallery-panels/Tag.vueresources/js/views/gallery-panels/Timeline.vueresources/views/includes/svg.blade.phproutes/api_v2.phptests/Constants/TestConstants.phptests/Feature_v2/Album/AlbumHeadEndpointTest.phptests/Feature_v2/Frame/FrameTest.phptests/Feature_v2/SmartAlbums/OverridePermissionsTest.phptests/ImageProcessing/Photo/PhotoStarTest.phptests/Precomputing/CoverSelection/Console/AlbumMutationScenariosTest.phptests/Precomputing/CoverSelection/Console/CoverDisplayPermissionTest.phptests/Precomputing/CoverSelection/Console/ExplicitCoverTest.phptests/Precomputing/CoverSelection/CoverSelectionNsfwTest.phptests/Precomputing/CoverSelection/DeepNestingPropagationTest.phptests/Precomputing/CoverSelection/RecomputeAlbumStatsJobTest.phptests/Unit/CoverageTest.phptests/Unit/Enum/SmartAlbumTypeTest.phptests/Unit/Rules/AlbumIDListRuleTest.phptests/Unit/Rules/AlbumIDRuleTest.php
💤 Files with no reviewable changes (1)
- tests/Constants/TestConstants.php
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
database/migrations/2026_02_22_100000_rename_starred_to_highlighted.php (1)
55-86:⚠️ Potential issue | 🔴 Critical
$insertis overwritten on every iteration — only the last starred photo per chunk gets a rating row (still unresolved from the previous review).The three interrelated bugs remain:
- Line 67:
$insert = [...]replaces the array each loop; only the final non-skipped photo ends up in$insert.- Line 75:
insert($insert)is called unconditionally, even when all chunk photos were skipped and$insertis still[].- Line 78:
array_column($insert, 'photo_id')is called on a flat associative array, so it always returns[]— making therating_sum/rating_countincrements no-ops on every chunk.🐛 Proposed fix
->chunk(500, function ($photos) { $insert = []; foreach ($photos as $photo) { $exists = DB::table('photo_ratings') ->where('photo_id', '=', $photo->id) ->where('user_id', '=', $photo->owner_id) ->exists(); if ($exists) { continue; } - $insert = [ + $insert[] = [ 'photo_id' => $photo->id, 'user_id' => $photo->owner_id, 'rating' => 5, ]; } + if ($insert === []) { + return; + } + // Insert the 5-star rating DB::table('photo_ratings')->insert($insert); // Update statistics aggregate $photo_ids = array_column($insert, 'photo_id'); DB::table('statistics') ->whereIn('photo_id', $photo_ids) ->increment('rating_sum', 5); DB::table('statistics') ->whereIn('photo_id', $photo_ids) ->increment('rating_count', 1); });
🧹 Nitpick comments (1)
database/migrations/2026_02_22_100000_rename_starred_to_highlighted.php (1)
98-104: Step 2 issues N individualUPDATEper row — consider a single JOIN-basedUPDATE.The inner
DB::table('photos')->where(...)->update(...)loop inside the chunk fires one round-trip per row. For a large installation this could be very slow. A set-based update avoids the N+1 pattern:♻️ Proposed refactor
- DB::table('photos') - ->join('statistics', 'photos.id', '=', 'statistics.photo_id') - ->where('statistics.rating_count', '>', 0) - ->select('photos.id', 'statistics.rating_sum', 'statistics.rating_count') - ->orderBy('photos.id') - ->chunk(500, function ($rows) { - foreach ($rows as $row) { - DB::table('photos') - ->where('id', '=', $row->id) - ->update(['rating_avg' => round($row->rating_sum / $row->rating_count, 4)]); - } - }); + // Single set-based update using a JOIN (MySQL / SQLite 3.33+ / PostgreSQL) + DB::statement(' + UPDATE photos + JOIN statistics ON photos.id = statistics.photo_id + SET photos.rating_avg = ROUND(statistics.rating_sum / statistics.rating_count, 4) + WHERE statistics.rating_count > 0 + ');Note: the exact syntax varies by driver. If the project supports multiple RDBMS, keep a driver branch or use the chunked approach but batch the UPDATEs with
upsert()/ aCASE WHENexpression.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (3)
docs/specs/3-reference/api-design.md (1)
329-329: LGTM — footer date updated to February 24, 2026.The
---separator and*Last updated: February 24, 2026*footer satisfy the project's documentation guidelines.resources/js/components/gallery/photoModule/PhotoPanel.vue (1)
33-33:⚠️ Potential issue | 🔴 Critical
@toggle-staron Dock is stale — highlight toggle from the dock won't fire.
Dock.vueemitstoggleHighlight(kebab-case:toggle-highlight), but this line still binds@toggle-star. The fix on Line 3 was applied correctly but this one was missed.Proposed fix
- `@toggle-star`="emits('toggleHighlight')" + `@toggle-highlight`="emits('toggleHighlight')"database/migrations/2026_02_22_100000_rename_starred_to_highlighted.php (1)
194-196: Add a hasColumn guard before renaming in down().
Unconditional rename at Line 194-196 can throw on partial rollbacks.
🧹 Nitpick comments (1)
resources/js/views/gallery-panels/Timeline.vue (1)
326-335: Rename thestar/unstarcallback keys tohighlight/unhighlightfor consistency.The callback bodies correctly call
PhotoService.highlight(...), but the property namesstarandunstarcreate inconsistency that could confuse future maintainers. Note thatEmptyPhotoCallbacksinresources/js/utils/Helpers.tsalso defines these same keys and will need updating.
ℹ️ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (25)
database/migrations/2026_02_22_100000_rename_starred_to_highlighted.phpdocs/specs/3-reference/api-design.mddocs/specs/4-architecture/backend-architecture.mdlang/ar/all_settings.phplang/cz/all_settings.phplang/de/all_settings.phplang/el/all_settings.phplang/en/all_settings.phplang/es/all_settings.phplang/fa/all_settings.phplang/hu/all_settings.phplang/it/all_settings.phplang/ja/all_settings.phplang/nl/all_settings.phplang/no/all_settings.phplang/pl/all_settings.phplang/pt/all_settings.phplang/ru/all_settings.phplang/sk/all_settings.phplang/sv/all_settings.phplang/vi/all_settings.phplang/zh_CN/all_settings.phplang/zh_TW/all_settings.phpresources/js/components/gallery/photoModule/PhotoPanel.vueresources/js/views/gallery-panels/Timeline.vue
🚧 Files skipped from review as they are similar to previous changes (8)
- lang/nl/all_settings.php
- docs/specs/4-architecture/backend-architecture.md
- lang/el/all_settings.php
- lang/cz/all_settings.php
- lang/vi/all_settings.php
- lang/ar/all_settings.php
- lang/es/all_settings.php
- lang/pt/all_settings.php
Codecov Report❌ Patch coverage is 🚀 New features to boost your workflow:
|
closes #4104
Summary by CodeRabbit