diff --git a/.vscode/settings.json b/.vscode/settings.json index a6602550..0576fbde 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -85,5 +85,6 @@ "**/l10n": true, "**/.vscode": true, "**/patches": true - } + }, + "git.alwaysSignOff": true } diff --git a/CHANGELOG.md b/CHANGELOG.md index ec95c44f..64b4d1e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,14 +50,14 @@ You may need to clear browser cache to use location search. - **Feature**: Allow editing more EXIF fields ([#169](https://github.com/pulsejet/memories/issues/169)) - **Feature**: Alpha integration with the face recognition app ([#146](https://github.com/pulsejet/memories/issues/146)) - Fix downloading from albums ([#259](https://github.com/pulsejet/memories/issues/259)) -- Fix support for HEVC live photos ([#234](https://github.com/pulsejet/memories/issues/234)) +- Fix support for HEVC Live Photos ([#234](https://github.com/pulsejet/memories/issues/234)) - Fix native photo sharing ([#254](https://github.com/pulsejet/memories/issues/254), [#263](https://github.com/pulsejet/memories/issues/263)) - Use larger previews in viewer (please see [these docs](https://github.com/pulsejet/memories/wiki/Configuration#preview-storage-considerations)) ([#226](https://github.com/pulsejet/memories/issues/226)) ## v4.8.0, v3.8.0 (2022-11-22) - **Feature**: Support for Live Photos ([#124](https://github.com/pulsejet/memories/issues/124)) - - You need to run `occ memories:index --clear` to reindex live photos + - You need to run `occ memories:index --clear` to reindex Live Photos - Only JPEG (iOS with MOV, Google, Samsung) is supported. HEIC is not supported. - **Feature**: Timeline path now scans recursively for mounted volumes / shares inside it - **Feature**: Multiple timeline paths can be specified ([#178](https://github.com/pulsejet/memories/issues/178)) diff --git a/lib/Controller/VideoController.php b/lib/Controller/VideoController.php index 75ccac3c..58cc55e0 100644 --- a/lib/Controller/VideoController.php +++ b/lib/Controller/VideoController.php @@ -107,7 +107,7 @@ class VideoController extends ApiBase * * @NoCSRFRequired * - * Return the live video part of a live photo + * Return the live video part of a Live Photo */ public function livephoto( int $fileid, diff --git a/lib/Db/LivePhoto.php b/lib/Db/LivePhoto.php index 0af0053a..7267c7bc 100644 --- a/lib/Db/LivePhoto.php +++ b/lib/Db/LivePhoto.php @@ -18,7 +18,7 @@ class LivePhoto $this->connection = $connection; } - /** Check if a given Exif data is the video part of a live photo */ + /** Check if a given Exif data is the video part of a Live Photo */ public function isVideoPart(array &$exif) { return \array_key_exists('MIMEType', $exif) diff --git a/lib/Db/TimelineWrite.php b/lib/Db/TimelineWrite.php index 9dff2b74..623878b8 100644 --- a/lib/Db/TimelineWrite.php +++ b/lib/Db/TimelineWrite.php @@ -94,7 +94,7 @@ class TimelineWrite $prevRow = $cursor->fetch(); $cursor->closeCursor(); - // Check in live-photo table in case this is a video part of a live photo + // Check in live-photo table in case this is a video part of a Live Photo if (!$prevRow) { $query = $this->connection->getQueryBuilder(); $query->select('fileid', 'mtime') @@ -129,7 +129,7 @@ class TimelineWrite } catch (\Exception $e) { } - // Hand off if live photo video part + // Hand off if Live Photo video part if ($isvideo && $this->livePhoto->isVideoPart($exif)) { $this->livePhoto->processVideoPart($file, $exif); diff --git a/src/components/viewer/PsLivePhoto.ts b/src/components/viewer/PsLivePhoto.ts index 84d4069b..4ca87858 100644 --- a/src/components/viewer/PsLivePhoto.ts +++ b/src/components/viewer/PsLivePhoto.ts @@ -2,7 +2,7 @@ import PhotoSwipe from "photoswipe"; import * as utils from "../../services/Utils"; export function isLiveContent(content): boolean { - // Do not play live photo if the slideshow is + // Do not play Live Photo if the slideshow is // playing in full screen mode. if (document.fullscreenElement) { return false; diff --git a/src/components/viewer/Viewer.vue b/src/components/viewer/Viewer.vue index ca7dc1be..310986f2 100644 --- a/src/components/viewer/Viewer.vue +++ b/src/components/viewer/Viewer.vue @@ -573,7 +573,7 @@ export default defineComponent({ preventDragOffset: 40, }); - // Live photo support + // Live Photo support new PsLivePhoto(this.photoswipe, {}); // Image support @@ -866,10 +866,10 @@ export default defineComponent({ // Only for JPEG for now if (!this.canEdit) return; - // Prevent editing live photos + // Prevent editing Live Photos if (this.currentPhoto.liveid) { alert( - this.t("memories", "Editing is currently disabled for live photos") + this.t("memories", "Editing is currently disabled for Live Photos") ); return; } diff --git a/src/global.scss b/src/global.scss index 11b1253b..6b814124 100644 --- a/src/global.scss +++ b/src/global.scss @@ -56,7 +56,7 @@ body.has-viewer header { margin: 0 10px; // was unset } -// Live photo transitions +// Live Photo transitions :root { --livephoto-img-transition: opacity 0.4s linear, transform 0.3s ease-in-out; } diff --git a/src/services/Utils.ts b/src/services/Utils.ts index 0c769c8f..920ef656 100644 --- a/src/services/Utils.ts +++ b/src/services/Utils.ts @@ -248,7 +248,7 @@ export function getFolderRoutePath(basePath: string) { } /** - * Get URL to live photo video part + * Get URL to Live Photo video part */ export function getLivePhotoVideoUrl(p: IPhoto, transcode: boolean) { return API.Q(API.VIDEO_LIVEPHOTO(p.fileid), { @@ -259,7 +259,7 @@ export function getLivePhotoVideoUrl(p: IPhoto, transcode: boolean) { } /** - * Set up hooks to set classes on parent element for live photo + * Set up hooks to set classes on parent element for Live Photo * @param video Video element */ export function setupLivePhotoHooks(video: HTMLVideoElement) { diff --git a/src/services/dav/base.ts b/src/services/dav/base.ts index 33c58d54..f8c5d771 100644 --- a/src/services/dav/base.ts +++ b/src/services/dav/base.ts @@ -190,10 +190,10 @@ export async function* runInParallel( } /** - * Extend given list of Ids with extra files for live photos. + * Extend given list of Ids with extra files for Live Photos. * - * @param photos list of photos to search for live photos - * @returns list of file ids that contains extra file Ids for live photos if any + * @param photos list of photos to search for Live Photos + * @returns list of file ids that contains extra file Ids for Live Photos if any */ async function extendWithLivePhotos(photos: IPhoto[]) { const livePhotos = ( @@ -230,7 +230,7 @@ export async function* deletePhotos(photos: IPhoto[]) { return; } - // Extend with live photos unless this is an album + // Extend with Live Photos unless this is an album if (window.vueroute().name !== "albums") { photos = await extendWithLivePhotos(photos); } @@ -292,7 +292,7 @@ export async function* movePhotos( targetPath += "/"; } - // Also move the live photo videos + // Also move the Live Photo videos photos = await extendWithLivePhotos(photos); const fileIdsSet = new Set(photos.map((p) => p.fileid)); diff --git a/src/types.ts b/src/types.ts index 7fb7abfc..b425986a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -57,7 +57,7 @@ export type IPhoto = { w?: number; /** Height of full image */ h?: number; - /** Live photo identifier */ + /** Live Photo identifier */ liveid?: string; /** Grid display width px */