From cb1201e6909150e3d291910ef8ed646ba7b2e819 Mon Sep 17 00:00:00 2001 From: Mert <101130780+mertalev@users.noreply.github.com> Date: Sat, 16 Dec 2023 11:50:46 -0500 Subject: [PATCH] chore(web): update job dashboard (#5745) * rename clip encoding to smart search * update job subtitles * update api * update smart search job title and subtitle * fix `getJobName` * change smart search icon * formatting * wording * update reference to clip * formatting * update reference to Encode CLIP --- cli/src/api/open-api/api.ts | 26 +++++++++--------- docs/docs/FAQ.md | 2 +- mobile/openapi/doc/AllJobStatusResponseDto.md | Bin 1136 -> 1135 bytes mobile/openapi/doc/SystemConfigJobDto.md | Bin 1179 -> 1178 bytes .../model/all_job_status_response_dto.dart | Bin 6481 -> 6469 bytes mobile/openapi/lib/model/job_name.dart | Bin 3965 -> 3960 bytes .../lib/model/system_config_job_dto.dart | Bin 6439 -> 6427 bytes .../all_job_status_response_dto_test.dart | Bin 1902 -> 1900 bytes .../test/system_config_job_dto_test.dart | Bin 1911 -> 1909 bytes server/immich-openapi-specs.json | 18 ++++++------ server/src/domain/job/job.constants.ts | 6 ++-- server/src/domain/job/job.dto.ts | 2 +- server/src/domain/job/job.service.spec.ts | 10 +++---- server/src/domain/job/job.service.ts | 2 +- .../domain/smart-info/smart-info.service.ts | 8 +++--- .../dto/system-config-job.dto.ts | 2 +- .../system-config/system-config.core.ts | 2 +- .../system-config.service.spec.ts | 2 +- web/src/api/api.ts | 2 +- web/src/api/open-api/api.ts | 26 +++++++++--------- .../admin-page/jobs/jobs-panel.svelte | 21 +++++++------- .../settings/job-settings/job-settings.svelte | 2 +- 22 files changed, 66 insertions(+), 65 deletions(-) diff --git a/cli/src/api/open-api/api.ts b/cli/src/api/open-api/api.ts index 04bbc4258..2ce8d3ec5 100644 --- a/cli/src/api/open-api/api.ts +++ b/cli/src/api/open-api/api.ts @@ -355,12 +355,6 @@ export interface AllJobStatusResponseDto { * @memberof AllJobStatusResponseDto */ 'backgroundTask': JobStatusDto; - /** - * - * @type {JobStatusDto} - * @memberof AllJobStatusResponseDto - */ - 'clipEncoding': JobStatusDto; /** * * @type {JobStatusDto} @@ -403,6 +397,12 @@ export interface AllJobStatusResponseDto { * @memberof AllJobStatusResponseDto */ 'sidecar': JobStatusDto; + /** + * + * @type {JobStatusDto} + * @memberof AllJobStatusResponseDto + */ + 'smartSearch': JobStatusDto; /** * * @type {JobStatusDto} @@ -2017,7 +2017,7 @@ export const JobName = { VideoConversion: 'videoConversion', ObjectTagging: 'objectTagging', RecognizeFaces: 'recognizeFaces', - ClipEncoding: 'clipEncoding', + SmartSearch: 'smartSearch', BackgroundTask: 'backgroundTask', StorageTemplateMigration: 'storageTemplateMigration', Migration: 'migration', @@ -3785,12 +3785,6 @@ export interface SystemConfigJobDto { * @memberof SystemConfigJobDto */ 'backgroundTask': JobSettingsDto; - /** - * - * @type {JobSettingsDto} - * @memberof SystemConfigJobDto - */ - 'clipEncoding': JobSettingsDto; /** * * @type {JobSettingsDto} @@ -3833,6 +3827,12 @@ export interface SystemConfigJobDto { * @memberof SystemConfigJobDto */ 'sidecar': JobSettingsDto; + /** + * + * @type {JobSettingsDto} + * @memberof SystemConfigJobDto + */ + 'smartSearch': JobSettingsDto; /** * * @type {JobSettingsDto} diff --git a/docs/docs/FAQ.md b/docs/docs/FAQ.md index 27906660e..39696e6f9 100644 --- a/docs/docs/FAQ.md +++ b/docs/docs/FAQ.md @@ -26,7 +26,7 @@ Immich optionally uses machine learning for several features. However, it can be ### How can I lower Immich's CPU usage? -The initial backup is the most intensive due to the number of jobs running. The most CPU-intensive ones are transcoding and machine learning jobs (Tag Images, Encode CLIP, Recognize Faces), and to a lesser extent thumbnail generation. Here are some ways to lower their CPU usage: +The initial backup is the most intensive due to the number of jobs running. The most CPU-intensive ones are transcoding and machine learning jobs (Tag Images, Smart Search, Recognize Faces), and to a lesser extent thumbnail generation. Here are some ways to lower their CPU usage: - Lower the job concurrency for these jobs to 1. - Under Settings > Transcoding Settings > Threads, set the number of threads to a low number like 1 or 2. diff --git a/mobile/openapi/doc/AllJobStatusResponseDto.md b/mobile/openapi/doc/AllJobStatusResponseDto.md index 71b50efbe0ffc3a93ac3311b29bd7c832e08a810..7b54ead21ec994ae219f4ec799a254d53a83f9d0 100644 GIT binary patch delta 31 ncmeys@t$LYBID*b#>I?Wxrs$3!KsNw$r+OsnG82E7cc?V!Z delta 34 qcmbQmIh%8X0wYgyPG*5?UUGg)W?uT_d`8pF3XJ<1H_J0uGXem}j|&k1 diff --git a/mobile/openapi/lib/model/all_job_status_response_dto.dart b/mobile/openapi/lib/model/all_job_status_response_dto.dart index 4d3008a3bcf276e0efcb5a1ec2fc2684588aefa4..138d1cd79f98302ad10a6f26c255ea4682c83f69 100644 GIT binary patch delta 243 zcmca;bku0WNyf=98E>%WCKi$;Mn? zH%D^2GRh-VsmChVDwJeo7V9CY-rUF2!?Zb`{~{yQWqSlvp{$1jBAX2a&DbYbNi+)~ U8Kc9c00ioj9a$tMi%8l603{7o8vpQR0((HJDVL?I2dJ+l`GiV zDj@SWTe501Zti8{Lo>CL{m$ejj$=~DYHd}Jd6V5Zw*r-jPuAi3s)Q_|9;;xhP?C{Z vtcNVRS%^D?ar0E38YWa%#`DXg2yABNzt6Z?RnUwbMR; diff --git a/mobile/openapi/lib/model/job_name.dart b/mobile/openapi/lib/model/job_name.dart index c1008d079103c6bde1d4fd724b821d79b70777ca..bc88c2efd85088fb20d190f523f5d2dcf7ef447e 100644 GIT binary patch delta 97 zcmew>_d{+&0W({1ZemeM@Z@|JQ7$kmHL)l;WAk)obtZ0z6hz<@t2(;|l7PCELQ!f- XX;GenSALRTVs5G)lH_J--Xtaf-)|!x delta 118 zcmew%_g8L10ke8?PG*5?UUGg)W?s62t%6s6l3!wOs$RTC5sK92sm$t3JjjYSA7@o( a*FqLiw^ArdEh#O^gPVdZyIG7ki3tD{>?(=? diff --git a/mobile/openapi/lib/model/system_config_job_dto.dart b/mobile/openapi/lib/model/system_config_job_dto.dart index d7ff7ea6fbc5dfedac037ec776400acd9b6b58e4..c8da684ae5b1a15c3b057196ac90b81c424b546d 100644 GIT binary patch delta 227 zcmZ2(G}~yyF2>2X7;muVCKin!Jf=?&N&t8(d(K)Wo9XjLk+YGK`xmS!EbS z5P}M}whF}%UGZ$9o2RnzF-|_nehNw3ahy83MCnt#d=U15_v>7&*jNy+8oS(pAqWTT>|P*)V5?A) zky)&VEV@~cJA`rb6rOx0PPp*o`}`^>j^6y0?=9nIbwMt66yeF565W%JON0ObMi5;+ diff --git a/mobile/openapi/test/all_job_status_response_dto_test.dart b/mobile/openapi/test/all_job_status_response_dto_test.dart index 4f6d964cbe20e199a61e0b9e359240c90318ef45..fdbafc544d75d626b106fd51c01240b789ea4d69 100644 GIT binary patch delta 47 tcmaFI_l9pnF4N`*Od`x&xrs$3!KsNw$r+O;vMM2S1(~fje`c*_1OTmY5j_9^ delta 45 scmaFE_l|EvE)!>RPG*5?UUGiQb%7 delta 51 vcmey$_nmJ;5))5yPG*5?UUGg)W?uT_hfIp70(V$!HYYJDF>n6PTE_?g3$PP| diff --git a/server/immich-openapi-specs.json b/server/immich-openapi-specs.json index 4de277f2b..24c730676 100644 --- a/server/immich-openapi-specs.json +++ b/server/immich-openapi-specs.json @@ -6470,9 +6470,6 @@ "backgroundTask": { "$ref": "#/components/schemas/JobStatusDto" }, - "clipEncoding": { - "$ref": "#/components/schemas/JobStatusDto" - }, "library": { "$ref": "#/components/schemas/JobStatusDto" }, @@ -6494,6 +6491,9 @@ "sidecar": { "$ref": "#/components/schemas/JobStatusDto" }, + "smartSearch": { + "$ref": "#/components/schemas/JobStatusDto" + }, "storageTemplateMigration": { "$ref": "#/components/schemas/JobStatusDto" }, @@ -6509,7 +6509,7 @@ "metadataExtraction", "videoConversion", "objectTagging", - "clipEncoding", + "smartSearch", "storageTemplateMigration", "migration", "backgroundTask", @@ -7821,7 +7821,7 @@ "videoConversion", "objectTagging", "recognizeFaces", - "clipEncoding", + "smartSearch", "backgroundTask", "storageTemplateMigration", "migration", @@ -9182,9 +9182,6 @@ "backgroundTask": { "$ref": "#/components/schemas/JobSettingsDto" }, - "clipEncoding": { - "$ref": "#/components/schemas/JobSettingsDto" - }, "library": { "$ref": "#/components/schemas/JobSettingsDto" }, @@ -9206,6 +9203,9 @@ "sidecar": { "$ref": "#/components/schemas/JobSettingsDto" }, + "smartSearch": { + "$ref": "#/components/schemas/JobSettingsDto" + }, "storageTemplateMigration": { "$ref": "#/components/schemas/JobSettingsDto" }, @@ -9221,7 +9221,7 @@ "metadataExtraction", "videoConversion", "objectTagging", - "clipEncoding", + "smartSearch", "storageTemplateMigration", "migration", "backgroundTask", diff --git a/server/src/domain/job/job.constants.ts b/server/src/domain/job/job.constants.ts index 287d22db6..50c4fbc51 100644 --- a/server/src/domain/job/job.constants.ts +++ b/server/src/domain/job/job.constants.ts @@ -4,7 +4,7 @@ export enum QueueName { VIDEO_CONVERSION = 'videoConversion', OBJECT_TAGGING = 'objectTagging', RECOGNIZE_FACES = 'recognizeFaces', - CLIP_ENCODING = 'clipEncoding', + SMART_SEARCH = 'smartSearch', BACKGROUND_TASK = 'backgroundTask', STORAGE_TEMPLATE_MIGRATION = 'storageTemplateMigration', MIGRATION = 'migration', @@ -135,8 +135,8 @@ export const JOBS_TO_QUEUE: Record = { [JobName.RECOGNIZE_FACES]: QueueName.RECOGNIZE_FACES, // clip - [JobName.QUEUE_ENCODE_CLIP]: QueueName.CLIP_ENCODING, - [JobName.ENCODE_CLIP]: QueueName.CLIP_ENCODING, + [JobName.QUEUE_ENCODE_CLIP]: QueueName.SMART_SEARCH, + [JobName.ENCODE_CLIP]: QueueName.SMART_SEARCH, // XMP sidecars [JobName.QUEUE_SIDECAR]: QueueName.SIDECAR, diff --git a/server/src/domain/job/job.dto.ts b/server/src/domain/job/job.dto.ts index ec4cf7bb6..cdbb3fa8e 100644 --- a/server/src/domain/job/job.dto.ts +++ b/server/src/domain/job/job.dto.ts @@ -63,7 +63,7 @@ export class AllJobStatusResponseDto implements Record [QueueName.OBJECT_TAGGING]!: JobStatusDto; @ApiProperty({ type: JobStatusDto }) - [QueueName.CLIP_ENCODING]!: JobStatusDto; + [QueueName.SMART_SEARCH]!: JobStatusDto; @ApiProperty({ type: JobStatusDto }) [QueueName.STORAGE_TEMPLATE_MIGRATION]!: JobStatusDto; diff --git a/server/src/domain/job/job.service.spec.ts b/server/src/domain/job/job.service.spec.ts index c37f1ad21..0ce36cb89 100644 --- a/server/src/domain/job/job.service.spec.ts +++ b/server/src/domain/job/job.service.spec.ts @@ -97,7 +97,7 @@ describe(JobService.name, () => { await expect(sut.getAllJobsStatus()).resolves.toEqual({ [QueueName.BACKGROUND_TASK]: expectedJobStatus, - [QueueName.CLIP_ENCODING]: expectedJobStatus, + [QueueName.SMART_SEARCH]: expectedJobStatus, [QueueName.METADATA_EXTRACTION]: expectedJobStatus, [QueueName.OBJECT_TAGGING]: expectedJobStatus, [QueueName.SEARCH]: expectedJobStatus, @@ -171,7 +171,7 @@ describe(JobService.name, () => { it('should handle a start clip encoding command', async () => { jobMock.getQueueStatus.mockResolvedValue({ isActive: false, isPaused: false }); - await sut.handleCommand(QueueName.CLIP_ENCODING, { command: JobCommand.START, force: false }); + await sut.handleCommand(QueueName.SMART_SEARCH, { command: JobCommand.START, force: false }); expect(jobMock.queue).toHaveBeenCalledWith({ name: JobName.QUEUE_ENCODE_CLIP, data: { force: false } }); }); @@ -232,7 +232,7 @@ describe(JobService.name, () => { SystemConfigCore.create(newSystemConfigRepositoryMock(false)).config$.next({ job: { [QueueName.BACKGROUND_TASK]: { concurrency: 10 }, - [QueueName.CLIP_ENCODING]: { concurrency: 10 }, + [QueueName.SMART_SEARCH]: { concurrency: 10 }, [QueueName.METADATA_EXTRACTION]: { concurrency: 10 }, [QueueName.OBJECT_TAGGING]: { concurrency: 10 }, [QueueName.RECOGNIZE_FACES]: { concurrency: 10 }, @@ -247,7 +247,7 @@ describe(JobService.name, () => { } as SystemConfig); expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.BACKGROUND_TASK, 10); - expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.CLIP_ENCODING, 10); + expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.SMART_SEARCH, 10); expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.METADATA_EXTRACTION, 10); expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.OBJECT_TAGGING, 10); expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.RECOGNIZE_FACES, 10); @@ -367,7 +367,7 @@ describe(JobService.name, () => { const featureTests: Array<{ queue: QueueName; feature: FeatureFlag; configKey: SystemConfigKey }> = [ { - queue: QueueName.CLIP_ENCODING, + queue: QueueName.SMART_SEARCH, feature: FeatureFlag.CLIP_ENCODE, configKey: SystemConfigKey.MACHINE_LEARNING_CLIP_ENABLED, }, diff --git a/server/src/domain/job/job.service.ts b/server/src/domain/job/job.service.ts index 0e266c4c4..37b2f0733 100644 --- a/server/src/domain/job/job.service.ts +++ b/server/src/domain/job/job.service.ts @@ -98,7 +98,7 @@ export class JobService { await this.configCore.requireFeature(FeatureFlag.TAG_IMAGE); return this.jobRepository.queue({ name: JobName.QUEUE_OBJECT_TAGGING, data: { force } }); - case QueueName.CLIP_ENCODING: + case QueueName.SMART_SEARCH: await this.configCore.requireFeature(FeatureFlag.CLIP_ENCODE); return this.jobRepository.queue({ name: JobName.QUEUE_ENCODE_CLIP, data: { force } }); diff --git a/server/src/domain/smart-info/smart-info.service.ts b/server/src/domain/smart-info/smart-info.service.ts index 88208dec9..2a73ecf6e 100644 --- a/server/src/domain/smart-info/smart-info.service.ts +++ b/server/src/domain/smart-info/smart-info.service.ts @@ -29,13 +29,13 @@ export class SmartInfoService { } async init() { - await this.jobRepository.pause(QueueName.CLIP_ENCODING); + await this.jobRepository.pause(QueueName.SMART_SEARCH); - let { isActive } = await this.jobRepository.getQueueStatus(QueueName.CLIP_ENCODING); + let { isActive } = await this.jobRepository.getQueueStatus(QueueName.SMART_SEARCH); while (isActive) { this.logger.verbose('Waiting for CLIP encoding queue to stop...'); await setTimeout(1000).then(async () => { - ({ isActive } = await this.jobRepository.getQueueStatus(QueueName.CLIP_ENCODING)); + ({ isActive } = await this.jobRepository.getQueueStatus(QueueName.SMART_SEARCH)); }); } @@ -43,7 +43,7 @@ export class SmartInfoService { await this.repository.init(machineLearning.clip.modelName); - await this.jobRepository.resume(QueueName.CLIP_ENCODING); + await this.jobRepository.resume(QueueName.SMART_SEARCH); } async handleQueueObjectTagging({ force }: IBaseJob) { diff --git a/server/src/domain/system-config/dto/system-config-job.dto.ts b/server/src/domain/system-config/dto/system-config-job.dto.ts index e3d19418f..98e382028 100644 --- a/server/src/domain/system-config/dto/system-config-job.dto.ts +++ b/server/src/domain/system-config/dto/system-config-job.dto.ts @@ -39,7 +39,7 @@ export class SystemConfigJobDto implements Record { @ValidateNested() @IsObject() @Type(() => JobSettingsDto) - [QueueName.CLIP_ENCODING]!: JobSettingsDto; + [QueueName.SMART_SEARCH]!: JobSettingsDto; @ApiProperty({ type: JobSettingsDto }) @ValidateNested() diff --git a/server/src/domain/system-config/system-config.core.ts b/server/src/domain/system-config/system-config.core.ts index 2eeb80538..b4b6afc7e 100644 --- a/server/src/domain/system-config/system-config.core.ts +++ b/server/src/domain/system-config/system-config.core.ts @@ -47,7 +47,7 @@ export const defaults = Object.freeze({ }, job: { [QueueName.BACKGROUND_TASK]: { concurrency: 5 }, - [QueueName.CLIP_ENCODING]: { concurrency: 2 }, + [QueueName.SMART_SEARCH]: { concurrency: 2 }, [QueueName.METADATA_EXTRACTION]: { concurrency: 5 }, [QueueName.OBJECT_TAGGING]: { concurrency: 2 }, [QueueName.RECOGNIZE_FACES]: { concurrency: 2 }, diff --git a/server/src/domain/system-config/system-config.service.spec.ts b/server/src/domain/system-config/system-config.service.spec.ts index 4ab1880d6..3951083c1 100644 --- a/server/src/domain/system-config/system-config.service.spec.ts +++ b/server/src/domain/system-config/system-config.service.spec.ts @@ -27,7 +27,7 @@ const updates: SystemConfigEntity[] = [ const updatedConfig = Object.freeze({ job: { [QueueName.BACKGROUND_TASK]: { concurrency: 5 }, - [QueueName.CLIP_ENCODING]: { concurrency: 2 }, + [QueueName.SMART_SEARCH]: { concurrency: 2 }, [QueueName.METADATA_EXTRACTION]: { concurrency: 5 }, [QueueName.OBJECT_TAGGING]: { concurrency: 2 }, [QueueName.RECOGNIZE_FACES]: { concurrency: 2 }, diff --git a/web/src/api/api.ts b/web/src/api/api.ts index aecf28e12..a3ff5dbf1 100644 --- a/web/src/api/api.ts +++ b/web/src/api/api.ts @@ -136,7 +136,7 @@ class ImmichApi { [JobName.MetadataExtraction]: 'Extract Metadata', [JobName.Sidecar]: 'Sidecar Metadata', [JobName.ObjectTagging]: 'Tag Objects', - [JobName.ClipEncoding]: 'Encode Clip', + [JobName.SmartSearch]: 'Smart Search', [JobName.RecognizeFaces]: 'Recognize Faces', [JobName.VideoConversion]: 'Transcode Videos', [JobName.StorageTemplateMigration]: 'Storage Template Migration', diff --git a/web/src/api/open-api/api.ts b/web/src/api/open-api/api.ts index 04bbc4258..2ce8d3ec5 100644 --- a/web/src/api/open-api/api.ts +++ b/web/src/api/open-api/api.ts @@ -355,12 +355,6 @@ export interface AllJobStatusResponseDto { * @memberof AllJobStatusResponseDto */ 'backgroundTask': JobStatusDto; - /** - * - * @type {JobStatusDto} - * @memberof AllJobStatusResponseDto - */ - 'clipEncoding': JobStatusDto; /** * * @type {JobStatusDto} @@ -403,6 +397,12 @@ export interface AllJobStatusResponseDto { * @memberof AllJobStatusResponseDto */ 'sidecar': JobStatusDto; + /** + * + * @type {JobStatusDto} + * @memberof AllJobStatusResponseDto + */ + 'smartSearch': JobStatusDto; /** * * @type {JobStatusDto} @@ -2017,7 +2017,7 @@ export const JobName = { VideoConversion: 'videoConversion', ObjectTagging: 'objectTagging', RecognizeFaces: 'recognizeFaces', - ClipEncoding: 'clipEncoding', + SmartSearch: 'smartSearch', BackgroundTask: 'backgroundTask', StorageTemplateMigration: 'storageTemplateMigration', Migration: 'migration', @@ -3785,12 +3785,6 @@ export interface SystemConfigJobDto { * @memberof SystemConfigJobDto */ 'backgroundTask': JobSettingsDto; - /** - * - * @type {JobSettingsDto} - * @memberof SystemConfigJobDto - */ - 'clipEncoding': JobSettingsDto; /** * * @type {JobSettingsDto} @@ -3833,6 +3827,12 @@ export interface SystemConfigJobDto { * @memberof SystemConfigJobDto */ 'sidecar': JobSettingsDto; + /** + * + * @type {JobSettingsDto} + * @memberof SystemConfigJobDto + */ + 'smartSearch': JobSettingsDto; /** * * @type {JobSettingsDto} diff --git a/web/src/lib/components/admin-page/jobs/jobs-panel.svelte b/web/src/lib/components/admin-page/jobs/jobs-panel.svelte index 350ff3b21..e2c909af6 100644 --- a/web/src/lib/components/admin-page/jobs/jobs-panel.svelte +++ b/web/src/lib/components/admin-page/jobs/jobs-panel.svelte @@ -12,10 +12,10 @@ mdiFileJpgBox, mdiFileXmlBox, mdiFolderMove, + mdiImageSearch, mdiLibraryShelves, mdiTable, mdiTagMultiple, - mdiVectorCircle, mdiVideo, } from '@mdi/js'; import ConfirmDialogue from '../../shared-components/confirm-dialogue.svelte'; @@ -56,12 +56,12 @@ [JobName.ThumbnailGeneration]: { icon: mdiFileJpgBox, title: api.getJobName(JobName.ThumbnailGeneration), - subtitle: 'Regenerate JPEG and WebP thumbnails', + subtitle: 'Generate large, small and blurred thumbnails for each asset, as well as thumbnails for each person', }, [JobName.MetadataExtraction]: { icon: mdiTable, title: api.getJobName(JobName.MetadataExtraction), - subtitle: 'Extract metadata information i.e. GPS, resolution...etc', + subtitle: 'Extract metadata information from each asset, such as GPS and resolution', }, [JobName.Library]: { icon: mdiLibraryShelves, @@ -81,26 +81,27 @@ [JobName.ObjectTagging]: { icon: mdiTagMultiple, title: api.getJobName(JobName.ObjectTagging), - subtitle: 'Run machine learning to tag objects\nNote that some assets may not have any objects detected', + subtitle: + 'Run machine learning on assets to tag objects\nNote that some assets may not have any objects detected', disabled: !$featureFlags.tagImage, }, - [JobName.ClipEncoding]: { - icon: mdiVectorCircle, - title: api.getJobName(JobName.ClipEncoding), - subtitle: 'Run machine learning to generate clip embeddings', + [JobName.SmartSearch]: { + icon: mdiImageSearch, + title: api.getJobName(JobName.SmartSearch), + subtitle: 'Run machine learning on assets to support smart search', disabled: !$featureFlags.clipEncode, }, [JobName.RecognizeFaces]: { icon: mdiFaceRecognition, title: api.getJobName(JobName.RecognizeFaces), - subtitle: 'Run machine learning to recognize faces', + subtitle: 'Run machine learning on assets to recognize faces', handleCommand: handleFaceCommand, disabled: !$featureFlags.facialRecognition, }, [JobName.VideoConversion]: { icon: mdiVideo, title: api.getJobName(JobName.VideoConversion), - subtitle: 'Transcode videos not in the desired format', + subtitle: 'Transcode videos for wider compatibility with browsers and devices', }, [JobName.StorageTemplateMigration]: { icon: mdiFolderMove, diff --git a/web/src/lib/components/admin-page/settings/job-settings/job-settings.svelte b/web/src/lib/components/admin-page/settings/job-settings/job-settings.svelte index f102e791d..96a379139 100644 --- a/web/src/lib/components/admin-page/settings/job-settings/job-settings.svelte +++ b/web/src/lib/components/admin-page/settings/job-settings/job-settings.svelte @@ -23,7 +23,7 @@ JobName.Library, JobName.Sidecar, JobName.ObjectTagging, - JobName.ClipEncoding, + JobName.SmartSearch, JobName.RecognizeFaces, JobName.VideoConversion, JobName.StorageTemplateMigration,