feat(import-progress): track and expose Immich import progress

This change introduces a cross-language import progress API for Immich
imports and exposes a new query command to report live progress. A
new ImportProgress model captures active state, totals, and bytes
downloaded, allowing consuming code to display import status to users.

- Adds ImportProgress data type and progress tracking during import
- Exposes get_immich_import_progress command in Android and Rust
- Updates permissions and schemas to include allow-get-immich-import-progress
This commit is contained in:
2026-08-21 21:34:01 +02:00
parent 8e5a53ade8
commit 789b58398a
20 changed files with 218 additions and 21 deletions
File diff suppressed because one or more lines are too long
+14 -2
View File
@@ -2193,10 +2193,10 @@
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
},
{
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`",
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`",
"type": "string",
"const": "wallpaper:default",
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`"
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`"
},
{
"description": "Enables the connect_immich command without any pre-configured scope.",
@@ -2252,6 +2252,12 @@
"const": "wallpaper:allow-get-immich-connection",
"markdownDescription": "Enables the get_immich_connection command without any pre-configured scope."
},
{
"description": "Enables the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:allow-get-immich-import-progress",
"markdownDescription": "Enables the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Enables the get_state command without any pre-configured scope.",
"type": "string",
@@ -2348,6 +2354,12 @@
"const": "wallpaper:deny-get-immich-connection",
"markdownDescription": "Denies the get_immich_connection command without any pre-configured scope."
},
{
"description": "Denies the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:deny-get-immich-import-progress",
"markdownDescription": "Denies the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Denies the get_state command without any pre-configured scope.",
"type": "string",
+14 -2
View File
@@ -2193,10 +2193,10 @@
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
},
{
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`",
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`",
"type": "string",
"const": "wallpaper:default",
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`"
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`"
},
{
"description": "Enables the connect_immich command without any pre-configured scope.",
@@ -2252,6 +2252,12 @@
"const": "wallpaper:allow-get-immich-connection",
"markdownDescription": "Enables the get_immich_connection command without any pre-configured scope."
},
{
"description": "Enables the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:allow-get-immich-import-progress",
"markdownDescription": "Enables the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Enables the get_state command without any pre-configured scope.",
"type": "string",
@@ -2348,6 +2354,12 @@
"const": "wallpaper:deny-get-immich-connection",
"markdownDescription": "Denies the get_immich_connection command without any pre-configured scope."
},
{
"description": "Denies the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:deny-get-immich-import-progress",
"markdownDescription": "Denies the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Denies the get_state command without any pre-configured scope.",
"type": "string",
+14 -2
View File
@@ -2193,10 +2193,10 @@
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
},
{
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`",
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`",
"type": "string",
"const": "wallpaper:default",
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`"
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`"
},
{
"description": "Enables the connect_immich command without any pre-configured scope.",
@@ -2252,6 +2252,12 @@
"const": "wallpaper:allow-get-immich-connection",
"markdownDescription": "Enables the get_immich_connection command without any pre-configured scope."
},
{
"description": "Enables the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:allow-get-immich-import-progress",
"markdownDescription": "Enables the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Enables the get_state command without any pre-configured scope.",
"type": "string",
@@ -2348,6 +2354,12 @@
"const": "wallpaper:deny-get-immich-connection",
"markdownDescription": "Denies the get_immich_connection command without any pre-configured scope."
},
{
"description": "Denies the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:deny-get-immich-import-progress",
"markdownDescription": "Denies the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Denies the get_state command without any pre-configured scope.",
"type": "string",
+14 -2
View File
@@ -2193,10 +2193,10 @@
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
},
{
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`",
"description": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`",
"type": "string",
"const": "wallpaper:default",
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`"
"markdownDescription": "Allow the LockScreenWallpaper app to manage its wallpaper collection\n#### This default permission set includes:\n\n- `allow-get-state`\n- `allow-get-gallery`\n- `allow-select-images`\n- `allow-delete-image`\n- `allow-get-image-ids`\n- `allow-delete-images`\n- `allow-set-image-crop`\n- `allow-set-setting`\n- `allow-set-interval`\n- `allow-next-wallpaper`\n- `allow-get-immich-connection`\n- `allow-connect-immich`\n- `allow-disconnect-immich`\n- `allow-get-immich-albums`\n- `allow-get-immich-assets`\n- `allow-import-immich-assets`\n- `allow-get-immich-import-progress`"
},
{
"description": "Enables the connect_immich command without any pre-configured scope.",
@@ -2252,6 +2252,12 @@
"const": "wallpaper:allow-get-immich-connection",
"markdownDescription": "Enables the get_immich_connection command without any pre-configured scope."
},
{
"description": "Enables the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:allow-get-immich-import-progress",
"markdownDescription": "Enables the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Enables the get_state command without any pre-configured scope.",
"type": "string",
@@ -2348,6 +2354,12 @@
"const": "wallpaper:deny-get-immich-connection",
"markdownDescription": "Denies the get_immich_connection command without any pre-configured scope."
},
{
"description": "Denies the get_immich_import_progress command without any pre-configured scope.",
"type": "string",
"const": "wallpaper:deny-get-immich-import-progress",
"markdownDescription": "Denies the get_immich_import_progress command without any pre-configured scope."
},
{
"description": "Denies the get_state command without any pre-configured scope.",
"type": "string",