High performance self-hosted photo and video management solution.
560 matches across 14 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | misc/release/pump-version.sh | 1 | #!/usr/bin/env bash |
| LOW | docker/docker-compose.rootless.yml | 1 | # |
| LOW | docker/docker-compose.dev.yml | 1 | # |
| LOW | docker/docker-compose.dev.yml | 181 | # ports: |
| LOW | docker/docker-compose.yml | 1 | # |
| LOW | docker/docker-compose.prod.yml | 1 | # |
| LOW | web/src/lib/utils/container-utils.ts | 1 | // Coordinate spaces used throughout the viewer: |
| LOW | web/src/lib/components/AdaptiveImage.svelte | 1 | <script module lang="ts"> |
| LOW | server/src/services/album.service.spec.ts | 1341 | await expect(sut.removeAssets(AuthFactory.create(owner), album.id, { ids: [asset1.id] })).resolves.toEqual([ |
| LOW | server/src/services/album.service.spec.ts | 1361 | // // ), |
| LOW | mobile/analysis_options.yaml | 1 | # This file configures the analyzer, which statically analyzes Dart code to |
| LOW | mobile/flutter_native_splash.yaml | 1 | flutter_native_splash: |
| LOW | mobile/flutter_native_splash.yaml | 21 | image: assets/immich-splash.png |
| LOW | mobile/flutter_native_splash.yaml | 41 | |
| LOW | mobile/flutter_native_splash.yaml | 61 | # The branding property allows you to specify an image used as branding in the splash screen. |
| LOW | mobile/flutter_native_splash.yaml | 81 | #color_ios: "#42a5f5" |
| LOW | mobile/flutter_native_splash.yaml | 101 | |
| LOW | mobile/flutter_native_splash.yaml | 121 | # Valid parameters can be found here: |
| LOW | mobile/openapi/README.md | 41 | import 'package:openapi/api.dart'; |
| LOW | mobile/openapi/lib/auth/authentication.dart | 1 | // |
| LOW | mobile/openapi/lib/model/o_auth_callback_dto.dart | 21 | /// OAuth code verifier (PKCE) |
| LOW | mobile/openapi/lib/model/maintenance_login_dto.dart | 1 | // |
| LOW | mobile/openapi/lib/model/people_update.dart | 21 | /// |
| LOW | mobile/openapi/lib/model/server_stats_response_dto.dart | 21 | required this.videos, |
| LOW | mobile/openapi/lib/model/statistics_search_dto.dart | 61 | /// |
| LOW | mobile/openapi/lib/model/statistics_search_dto.dart | 81 | |
| LOW | mobile/openapi/lib/model/statistics_search_dto.dart | 101 | /// |
| LOW | mobile/openapi/lib/model/statistics_search_dto.dart | 141 | /// Please note: This property should have been non-nullable! Since the specification file |
| LOW | mobile/openapi/lib/model/statistics_search_dto.dart | 161 | List<String>? tagIds; |
| LOW | mobile/openapi/lib/model/statistics_search_dto.dart | 181 | /// Filter by trash date (after) |
| LOW | mobile/openapi/lib/model/statistics_search_dto.dart | 201 | /// does not include a default value (using the "default:" property), however, the generated |
| LOW | …/openapi/lib/model/person_statistics_response_dto.dart | 1 | // |
| LOW | …/openapi/lib/model/asset_bulk_upload_check_result.dart | 21 | }); |
| LOW | mobile/openapi/lib/model/video_container.dart | 1 | // |
| LOW | mobile/openapi/lib/model/user_admin_update_dto.dart | 41 | /// does not include a default value (using the "default:" property), however, the generated |
| LOW | mobile/openapi/lib/model/user_admin_update_dto.dart | 61 | /// Consider adding a "default:" property in the specification file to hide this note. |
| LOW | …bile/openapi/lib/model/email_notifications_update.dart | 21 | /// Whether to receive email notifications for album invites |
| LOW | mobile/openapi/lib/model/memory_response_dto.dart | 41 | /// does not include a default value (using the "default:" property), however, the generated |
| LOW | mobile/openapi/lib/model/memory_response_dto.dart | 61 | |
| LOW | mobile/openapi/lib/model/asset_media_size.dart | 1 | // |
| LOW | mobile/openapi/lib/model/person_update_dto.dart | 21 | this.name, |
| LOW | mobile/openapi/lib/model/person_update_dto.dart | 41 | /// Please note: This property should have been non-nullable! Since the specification file |
| LOW | mobile/openapi/lib/model/places_response_dto.dart | 21 | }); |
| LOW | mobile/openapi/lib/model/system_config_user_dto.dart | 1 | // |
| LOW | …ile/openapi/lib/model/user_preferences_update_dto.dart | 41 | /// source code must fall back to having a nullable type. |
| LOW | …ile/openapi/lib/model/user_preferences_update_dto.dart | 61 | |
| LOW | …ile/openapi/lib/model/user_preferences_update_dto.dart | 81 | /// source code must fall back to having a nullable type. |
| LOW | …ile/openapi/lib/model/user_preferences_update_dto.dart | 101 | |
| LOW | mobile/openapi/lib/model/asset_reject_reason.dart | 1 | // |
| LOW | mobile/openapi/lib/model/asset_edit_action.dart | 1 | // |
| LOW | mobile/openapi/lib/model/sync_asset_face_v2.dart | 41 | /// Minimum value: -9007199254740991 |
| LOW | mobile/openapi/lib/model/shared_link_type.dart | 1 | // |
| LOW | mobile/openapi/lib/model/on_this_day_dto.dart | 1 | // |
| LOW | mobile/openapi/lib/model/album_user_role.dart | 1 | // |
| LOW | mobile/openapi/lib/model/sync_asset_exif_v1.dart | 61 | /// Maximum value: 9007199254740991 |
| LOW | mobile/openapi/lib/model/metadata_search_dto.dart | 61 | List<String> albumIds; |
| LOW | mobile/openapi/lib/model/metadata_search_dto.dart | 81 | /// does not include a default value (using the "default:" property), however, the generated |
| LOW | mobile/openapi/lib/model/metadata_search_dto.dart | 101 | /// Consider adding a "default:" property in the specification file to hide this note. |
| LOW | mobile/openapi/lib/model/metadata_search_dto.dart | 121 | String? id; |
| LOW | mobile/openapi/lib/model/metadata_search_dto.dart | 141 | /// Filter by motion photo status |
| 368 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …agers/timeline-manager/timeline-manager.svelte.spec.ts | 20 | function deriveLocalDateTimeFromFileCreatedAt(arg: TimelineAsset): TimelineAsset { |
| LOW | …ers/timeline-manager/internal/search-support.svelte.ts | 39 | export function findTimelineMonthForAsset(timelineManager: TimelineManager, id: string) { |
| LOW | …ers/timeline-manager/internal/search-support.svelte.ts | 158 | export function findClosestTimelineMonthForDate(months: TimelineMonth[], targetYearMonth: TimelineYearMonth) { |
| LOW | …meline-manager/internal/intersection-support.svelte.ts | 31 | function calculateViewportProximity(regionTop: number, regionBottom: number, windowTop: number, windowBottom: number) { |
| LOW | …meline-manager/internal/intersection-support.svelte.ts | 43 | export function updateTimelineMonthViewportProximity(timelineManager: TimelineManager, month: TimelineMonth) { |
| LOW | web/src/lib/modals/timezone-utils.ts | 53 | export function getModernOffsetForZoneAndDate( |
| LOW | web/src/lib/utils/container-utils.ts | 98 | export function mapNormalizedRectToContent( |
| LOW | web/src/lib/utils/layout-utils.ts | 30 | export function getJustifiedLayoutFromAssets( |
| LOW | web/src/lib/utils/actions.ts | 70 | export function updateStackedAssetInTimeline(timelineManager: TimelineManager, { stack, toDeleteIds }: StackResponse) { |
| LOW | web/src/lib/utils/actions.ts | 94 | export function updateUnstackedAssetInTimeline(timelineManager: TimelineManager, assets: TimelineAsset[]) { |
| LOW | web/src/lib/utils/maintenance.ts | 14 | export function maintenanceShouldRedirect(maintenanceMode: boolean, currentUrl: URL | Location) { |
| LOW | …hared-components/search-bar/SearchPeopleSection.svelte | 25 | function orderBySelectedPeopleFirst(people: PersonResponseDto[]) { |
| LOW | …)/search/[[photos=photos]]/[[assetId=id]]/+page.svelte | 170 | function getHumanReadableSearchKey(key: keyof SearchTerms): string { |
| LOW | server/src/utils/file.ts | 11 | export function getFileNameWithoutExtension(path: string): string { |
| LOW | server/src/utils/file.ts | 19 | export function getLivePhotoMotionFilename(stillName: string, motionName: string) { |
| LOW | server/src/utils/database-backups.ts | 1 | export function isValidDatabaseBackupName(filename: string) { |
| LOW | server/src/utils/database-backups.ts | 5 | export function isValidDatabaseRoutineBackupName(filename: string) { |
| LOW | server/src/utils/database-backups.ts | 12 | export function isFailedDatabaseBackupName(filename: string) { |
| LOW | server/src/utils/database-backups.ts | 16 | export function findDatabaseBackupVersion(filename: string) { |
| LOW | server/src/utils/maintenance.ts | 9 | export async function createMaintenanceLoginUrl( |
| LOW | server/src/utils/maintenance.ts | 27 | export function generateMaintenanceSecret(): string { |
| LOW | server/src/dtos/editing.dto.ts | 67 | function getExpectedKeysByActionMessage(): string { |
| LOW | server/src/dtos/editing.dto.ts | 75 | function isParametersValidForAction(edit: z.infer<typeof AssetEditActionItemSchema>): boolean { |
| LOW | packages/sdk/src/fetch-client.ts | 3288 | export function unlinkAllOAuthAccountsAdmin(opts?: Oazapfts.RequestOpts) { |
| LOW | packages/sdk/src/fetch-client.ts | 3418 | export function getNotificationTemplateAdmin({ name, templateDto }: { |
| LOW | packages/sdk/src/fetch-client.ts | 3539 | export function updateUserPreferencesAdmin({ id, userPreferencesUpdateDto }: { |
| LOW | packages/sdk/src/fetch-client.ts | 6136 | export function getStorageTemplateOptions(opts?: Oazapfts.RequestOpts) { |
| LOW | packages/plugin-core/src/index.d.ts | 15 | export function assetMissingTimeZoneFilter(): I32; |
| LOW | machine-learning/test_main.py | 51 | def test_sets_default_worker_timeout(self, monkeypatch: MonkeyPatch) -> None: |
| LOW | machine-learning/test_main.py | 57 | def test_sets_rocm_default_worker_timeout(self, monkeypatch: MonkeyPatch) -> None: |
| LOW | machine-learning/test_main.py | 63 | def test_worker_timeout_env_override(self, monkeypatch: MonkeyPatch) -> None: |
| LOW | machine-learning/test_main.py | 69 | def test_sets_default_cache_dir(self) -> None: |
| LOW | machine-learning/test_main.py | 74 | def test_sets_cache_dir_kwarg(self) -> None: |
| LOW | machine-learning/test_main.py | 80 | def test_sets_default_model_format(self, mocker: MockerFixture) -> None: |
| LOW | machine-learning/test_main.py | 88 | def test_sets_default_model_format_to_armnn_if_available(self, path: mock.Mock, mocker: MockerFixture) -> None: |
| LOW | machine-learning/test_main.py | 97 | def test_sets_model_format_kwarg(self, mocker: MockerFixture) -> None: |
| LOW | machine-learning/test_main.py | 105 | def test_sets_default_model_format_to_rknn_if_available(self, mocker: MockerFixture) -> None: |
| LOW | machine-learning/test_main.py | 113 | def test_casts_cache_dir_string_to_path(self) -> None: |
| LOW | machine-learning/test_main.py | 225 | def test_sets_cuda_provider_if_available(self, providers: list[str]) -> None: |
| LOW | machine-learning/test_main.py | 232 | def test_sets_openvino_provider_if_available(self, providers: list[str], ov_device_ids: list[str]) -> None: |
| LOW | machine-learning/test_main.py | 238 | def test_sets_providers_in_correct_order(self, providers: list[str]) -> None: |
| LOW | machine-learning/test_main.py | 244 | def test_ignores_unsupported_providers(self, providers: list[str]) -> None: |
| LOW | machine-learning/test_main.py | 366 | def test_sets_provider_options_kwarg(self) -> None: |
| LOW | machine-learning/test_main.py | 375 | def test_sets_default_sess_options_if_cpu(self) -> None: |
| LOW | machine-learning/test_main.py | 383 | def test_sets_default_sess_options_if_openvino_cpu(self, ov_device_ids: list[str]) -> None: |
| LOW | machine-learning/test_main.py | 392 | def test_sets_default_sess_options_if_openvino_gpu(self, ov_device_ids: list[str]) -> None: |
| LOW | machine-learning/test_main.py | 399 | def test_sets_default_sess_options_does_not_set_threads_if_non_cpu_and_default_threads(self) -> None: |
| LOW | machine-learning/test_main.py | 405 | def test_sets_default_sess_options_sets_threads_if_non_cpu_and_set_threads(self, mocker: MockerFixture) -> None: |
| LOW | machine-learning/test_main.py | 415 | def test_uses_arena_if_enabled(self, mocker: MockerFixture) -> None: |
| LOW | machine-learning/test_main.py | 425 | def test_does_not_use_arena_if_disabled(self, mocker: MockerFixture) -> None: |
| LOW | machine-learning/test_main.py | 435 | def test_sets_sess_options_kwarg(self) -> None: |
| LOW | machine-learning/test_main.py | 1136 | async def test_raises_exception_if_invalid_model_type(self) -> None: |
| LOW | machine-learning/test_main.py | 1143 | async def test_raises_exception_if_unknown_model_name(self) -> None: |
| LOW | machine-learning/test_main.py | 1149 | async def test_preloads_clip_models(self, monkeypatch: MonkeyPatch, mock_get_model: mock.Mock) -> None: |
| LOW | machine-learning/test_main.py | 126 | def test_clear_cache_warns_if_path_does_not_exist( |
| LOW | machine-learning/test_main.py | 137 | def test_clear_cache_raises_exception_if_vulnerable_to_symlink_attack( |
| LOW | machine-learning/test_main.py | 148 | def test_clear_cache_replaces_file_with_dir_if_path_is_file( |
| LOW | machine-learning/test_main.py | 172 | def test_download_downloads_armnn_if_preferred_format(self, snapshot_download: mock.Mock) -> None: |
| LOW | machine-learning/test_main.py | 183 | def test_download_downloads_rknn_if_preferred_format(self, snapshot_download: mock.Mock) -> None: |
| LOW | machine-learning/test_main.py | 194 | def test_throws_exception_if_model_path_does_not_exist( |
| 37 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | docs/docs/features/command-line-interface.md | 40 | docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich-instance/api -e IMMICH_API_KEY=your-api |
| HIGH | docs/docs/features/command-line-interface.md | 48 | docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich-instance/api -e IMMICH_API_KEY=your-api |
| HIGH | docs/docs/guides/python-file-upload.md | 10 | API_KEY = 'YOUR_API_KEY' # replace with a valid api key |
| HIGH | mobile/openapi/README.md | 44 | //defaultApiClient.getAuthentication<ApiKeyAuth>('cookie').apiKey = 'YOUR_API_KEY'; |
| HIGH | mobile/openapi/README.md | 48 | //defaultApiClient.getAuthentication<ApiKeyAuth>('api_key').apiKey = 'YOUR_API_KEY'; |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | mobile/test/modules/utils/openapi_patching_test.dart | 0 | { "download": { "archivesize": 4294967296, "includeembeddedvideos": false } } |
| HIGH | mobile/test/modules/utils/openapi_patching_test.dart | 0 | { "download": { "archivesize": 4294967296, "includeembeddedvideos": false } } |
| HIGH | mobile/test/modules/utils/openapi_patching_test.dart | 0 | { "download": { "archivesize": 4294967296, "includeembeddedvideos": false } } |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | server/src/repositories/oauth.repository.ts | 231 | return None(); |
| HIGH | server/src/repositories/oauth.repository.ts | 244 | return None(); |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | machine-learning/test_main.py | 1112 | mock_lock_cls.return_value.__aenter__.return_value.cas.assert_called_with(mock.ANY, ttl=100) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | server/src/services/storage-template.service.ts | 351 | * In case of migrating duplicate filename to a new path, we need to check if it is already migrated |
| LOW | server/src/services/library.service.ts | 251 | // We need to check if the library still exists as it could have been deleted after the scan was queued |
| LOW | mobile/lib/widgets/settings/free_up_space_settings.dart | 406 | // Step 1: Select Cutoff Date |
| LOW | mobile/lib/widgets/settings/free_up_space_settings.dart | 500 | // Step 2: Scan Assets |
| LOW | mobile/lib/widgets/settings/free_up_space_settings.dart | 605 | // Step 3: Delete Assets |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | server/src/services/notification-admin.service.ts | 70 | displayName: 'John Doe', |
| LOW | server/src/services/notification-admin.service.ts | 87 | recipientName: 'Jane Doe', |
| LOW | server/src/services/notification-admin.service.ts | 102 | albumName: "John Doe's Favorites", |
| LOW | server/src/services/notification-admin.service.ts | 103 | senderName: 'John Doe', |
| LOW | server/src/services/notification-admin.service.ts | 104 | recipientName: 'Jane Doe', |
| LOW | …t/domain/repositories/sync_stream_repository_test.dart | 16 | email: 'test@test.com', |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | deployment/modules/cloudflare/docs/.terraform.lock.hcl | 1 | # This file is maintained automatically by "tofu init". |
| MEDIUM | …nt/modules/cloudflare/docs-release/.terraform.lock.hcl | 1 | # This file is maintained automatically by "tofu init". |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | machine-learning/immich_ml/models/base.py | 1 | |
| LOW | machine-learning/immich_ml/sessions/ort.py | 1 | |
| LOW | machine-learning/immich_ml/sessions/ann/__init__.py | 1 | |
| LOW | machine-learning/immich_ml/sessions/ann/loader.py | 1 | |
| LOW | machine-learning/immich_ml/sessions/rknn/__init__.py | 1 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | mobile/flutter_native_splash.yaml | 28 | # To position the branding image at the bottom of the screen you can use bottom, bottomRight, |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | …esentation/widgets/asset_viewer/asset_viewer.page.dart | 141 | // Changing the page at the end of a scroll should be more robust, and allow |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | mobile/lib/widgets/common/feature_check.dart | 8 | /// Example usage: |
| LOW | …s/photo_view/src/core/photo_view_gesture_detector.dart | 238 | /// Usage example: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | machine-learning/immich_ml/sessions/ort.py | 77 | |
| LOW | machine-learning/immich_ml/sessions/rknn/rknnpool.py | 17 |