Commit Graph
100 Commits
Author SHA1 Message Date
Varun c99a2c6854 fix: resolve block-scoped variable usage before declaration 2026-04-23 14:53:33 +05:30
Varun 23333c51d5 fix: restore gallery grid selection UI and enable starting selection 2026-04-23 14:48:06 +05:30
Varun 661967e919 fix: pre-create /app/data directory in Dockerfile for nextjs user permissions 2026-04-08 20:48:37 +05:30
Varun d2fb4be2b3 feat: workflow node details, dark mode controls, asset preview fixes
- Show full condition details on IF/Switch nodes with person thumbnails
- Show album name and tag on action nodes
- Add dark mode support for React Flow controls via colorMode
- Center images in lightbox preview
- Fix leaflet marker icons for both Webpack and Turbopack bundlers
2026-04-08 20:00:57 +05:30
Varun 6c310eb07c feat: improve previous imports list with status borders and pill badges 2026-04-08 19:30:11 +05:30
Varun 0ede3927f8 feat: people card redesign - quick hide button, dropdown menu, grey border 2026-04-08 13:34:31 +05:30
Varun 36ea092ae9 refactor: remove unused Managed API Keys section from settings 2026-04-08 11:28:12 +05:30
Varun 792e501ab8 feat: combine schedule and webhook into single triggers popover 2026-04-08 11:18:32 +05:30
Varun e47e99ccfc feat: import API key, people card redesign, birthday popover, autocomplete portal
- Add import_api_key setting with auto-generate endpoint and settings UI
- Import job runner uses import API key when available, falls back to session
- Show ApiKeyGate empty state in both workflow and import pages when key missing
- Replace workflow API key warning popover with full gate overlay
- Redesign person cards: square avatar, hover action toolbar, cleaner layout
- Birthday field now uses popover with calendar + natural language input
- Fix autocomplete dropdown clipping inside overflow-hidden cards via portal
- People grid column slider persisted to localStorage (min 3, max 20)
2026-04-08 09:53:09 +05:30
Varun 6a5b2b442a feat: asset delete in preview, workflow api key auto-generate, UI polish
Add delete with confirm dialog to asset lightbox (always visible, handles
deletion internally with local state update). Force dark theme on asset
info panel and fix text color inheritance. Add edge-to-edge image display
in lightbox by removing slide padding. Show open-in-immich link on hover
only. Add workflow page title breadcrumb. Add one-click workflow API key
generation that creates the key in Immich and saves it automatically.
2026-04-08 09:22:55 +05:30
Varun e0dd64a95e feat: sidebar beta badge for workflows, settings and profile improvements
Add beta badge to Workflows in the sidebar. Include settings page
improvements, workflow detail updates, profile info and sidebar
nav refinements, and validate-api-key endpoint.
2026-04-08 08:48:28 +05:30
Varun 937f64a57e fix: sidebar redesign and api key validation
Signed-off-by: Varun <varun@skcript.com>
2026-04-07 23:31:03 +05:30
Varun 15f90121a1 feat: redesign import-shared page and support password-protected links
Redesign import-shared with sticky import bar, dense gallery grid,
progress bar, and cleaner landing state. Add password-protected
shared link support - detects 401 "Password required" from Immich
and shows a password input. Also reduce asset grid spacing and
replace "Open in Immich" text with a link icon.
2026-04-07 23:12:34 +05:30
Varun 2ff863b296 feat: redesign analytics exif page with sectioned layout and bar charts
Reorganize the exif analytics page into labeled sections (Camera & Gear,
Location, Technical, Storage) with icon headers. Replace donut charts
with horizontal bar charts for multi-category EXIF distributions.
Improve heatmap with emerald color scale, day labels, and legend.
Add polished stat cards with icons and skeleton loading states.
2026-04-07 22:55:07 +05:30
Varun 6dff749479 feat: redesign workflow list with enriched data
- API returns node counts, total runs, and last run status per workflow
- List view with status icon, trigger badges, stats, and last run info
- Human-readable schedule labels (Every 6h, Every 30m)
- Last run shows status icon, asset count, and relative time
- Actions appear on hover for cleaner default state
- Improved empty state
2026-04-07 21:14:56 +05:30
Varun d0a7894a25 feat: per-user settings, workflow API key, cron scheduler, and engine logging
- Add ownerId to settings table for per-user key-value storage
- Add settings KV API endpoint scoped by user
- Add workflow API key config in settings page
- Action executor uses per-user workflow API key, falls back to session auth
- Bootstrap cron scheduler on server start via instrumentation hook
- Re-register/unregister cron on workflow enable/disable/delete
- Downgrade node-cron to v3 for Turbopack compatibility
- Add structured console logs to workflow engine for all steps
- Enabled toggle saves immediately to server
- Schedule popover saves immediately to server
- Use react-hot-toast instead of shadcn toast in workflow editor
2026-04-07 20:38:59 +05:30
Varun 4b6ec60cb9 merge: sync with prerelease branch
Resolved package.json conflicts, keeping @xyflow/react and node-cron
while adopting newer versions from prerelease for other dependencies.
2026-04-07 20:05:53 +05:30
Varun e5ae85e1d5 fix: toast fix
Signed-off-by: Varun <varun@skcript.com>
2026-04-07 20:03:22 +05:30
Varun c7a7ea3023 feat: add smart auto-albums with visual workflow editor
- Visual node-based workflow editor using React Flow
- Asset triggers: new asset, asset updated, all assets (with lookback buffer)
- Logic nodes: if/switch with combinable conditions (person, location, date, camera, EXIF, favorites, album membership)
- Action nodes: create album, add/remove from album, favorite, unfavorite, archive, tag
- Workflow-level triggers: manual run, cron schedule, webhook
- Debug mode: dry run with step-by-step logs and asset previews
- Run history with per-node asset tracking
- Run detail page with annotated read-only graph
- Processed asset tracking to prevent duplicate processing
- Multi-person picker with face thumbnails
- Album picker dropdown for actions
- JSON import/export for workflow sharing
- Workflow list page with create, delete, enable/disable
2026-04-07 19:20:43 +05:30
Varun e814793190 merge: resolve conflicts with prerelease branch 2026-04-06 20:18:11 +05:30
Varun 54eeb73b66 feat: hide and edit people option in the asset dialog
Signed-off-by: Varun <varun@skcript.com>
2026-04-06 20:13:16 +05:30
Varun a2916b6ee7 feat: added orphan assets and new info panel for the asset dialog
Signed-off-by: Varun <varun@skcript.com>
2026-04-06 19:55:38 +05:30
Varun 11e88526c7 fix: copy button in share assets fix
Signed-off-by: Varun <varun@skcript.com>
2026-04-06 19:16:04 +05:30
Varun da3f865450 feat: api key fix and the import status and history dialog
Signed-off-by: Varun <varun@skcript.com>
2026-04-06 09:42:42 +05:30
VarunandClaude Sonnet 4.6 550199d4f1 fix: make migrations and job queue work in Docker standalone build
- Move instrumentation.ts to src/ so Next.js picks it up (required when using src/ layout)
- Enable experimental.instrumentationHook in next.config.mjs (required in Next.js 14)
- Switch Dockerfile deps stage from npm to bun to match lockfile
- Explicitly copy @libsql and libsql into standalone runner — Next.js file tracing
  misses dynamically required native modules (require(`@libsql/${target}`))

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 21:51:00 +05:30
VarunandClaude Sonnet 4.6 5169ae3ebd fix: copy migration files into Docker runner image for standalone output
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 21:13:17 +05:30
Varun 37a168cf2f chore: gitignore docs/plans 2026-04-03 21:10:44 +05:30
Varun 48e5f009f0 feat: merge album details and destination into single card 2026-04-03 21:08:58 +05:30
VarunandClaude Sonnet 4.6 52aff37697 refactor: remove import dialog, destination selection is now inline
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 21:05:32 +05:30
VarunandClaude Sonnet 4.6 9844cf5d6f feat: add inline destination card for album selection on import-shared screen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 21:04:03 +05:30
VarunandClaude Sonnet 4.6 4732688fa2 refactor: wire import button directly to handleImportAll, fetch albums on sharedData load
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 21:02:42 +05:30
Varun eb6c042930 docs: add import destination inline implementation plan 2026-04-03 20:59:07 +05:30
Varun f11788de0a docs: add import destination inline design 2026-04-03 20:57:41 +05:30
VarunandClaude Sonnet 4.6 440b50340f fix: reset stuck items on resume, validate platform, move ensurePowerToolsTag to setup, safe JSON.parse
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 20:26:56 +05:30
Varun a640fe6555 fix: stale closure on albumName, remove unused items destructure, remove dead importSharedUploadAll 2026-04-03 20:22:56 +05:30
VarunandClaude Sonnet 4.6 06536e2699 feat: migrate import-shared to job queue with live progress polling
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 20:21:07 +05:30
Varun ae9fd45f0a fix: add asset id validation, type getImportJob, document resumePendingJobs limitation 2026-04-03 20:19:20 +05:30
Varun 93a4cabb01 feat: add import-jobs route constants and client handler 2026-04-03 20:17:25 +05:30
Varun 61e2dad029 feat: add GET /api/import-jobs/[jobId] polling endpoint with auto-resume 2026-04-03 20:17:14 +05:30
Varun bcd17ae72d feat: add POST /api/import-jobs endpoint to create and enqueue import jobs 2026-04-03 20:17:03 +05:30
Varun 87732eba7c feat: reset stuck import jobs to pending on startup 2026-04-03 20:16:47 +05:30
Varun 86beffc88e fix: scope skip update to jobId, use DB WHERE for pending items, SQL-increment skippedCount 2026-04-03 20:15:51 +05:30
VarunandClaude Sonnet 4.6 0de78ad200 feat: add import job worker runner with concurrency and db tracking
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 20:14:08 +05:30
Varun 8dbef1e1b1 fix: add Content-Type header to ensurePowerToolsTag POST request 2026-04-03 20:12:53 +05:30
VarunandClaude Sonnet 4.6 4e867f7691 feat: add immich shared-link import processor
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 20:11:19 +05:30
Varun fbcff5f380 feat: add import processor interface and registry 2026-04-03 20:09:28 +05:30
Varun 619b2e1785 feat: add migration for import_jobs and import_job_items 2026-04-03 20:08:41 +05:30
Varun 53a6e820a9 feat: add import_jobs and import_job_items schema tables 2026-04-03 20:07:22 +05:30
Varun d44adc6a24 docs: add import queue implementation plan 2026-04-03 20:05:35 +05:30
VarunandClaude Sonnet 4.6 060e410099 chore: remove unused db:push script
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 19:35:06 +05:30
VarunandClaude Sonnet 4.6 eafb44a4e9 refactor: migrate direct fetch calls to API handler pattern
Replace raw fetch() in settings, share-key, and import-shared with
centralized API handlers via src/lib/api.ts. Also auto-create the data/
directory on startup so the SQLite db path is always valid.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 19:34:09 +05:30
Varun 362f6d861b Merge branch 'feat/db-and-apikeys' of github.com:immich-power-tools/immich-power-tools into feat/db-and-apikeys 2026-04-03 19:10:06 +05:30
Varun Raj 38cf14b93d refactor: simplify asset mapping in MissingLocationAssets component
- Removed the additional tags for assets in the MissingLocationAssets component, returning only the sorted assets.
- Updated AssetGrid to include Immich link tags for each asset, utilizing the exImmichUrl from the configuration context.
- Enhanced the dependency array for the asset mapping effect to include exImmichUrl for proper updates.
2025-10-29 23:19:20 +05:30
Varun Raj 6a041ff012 feat: enhance asset deletion functionality with trash option
- Updated the deleteAssets function to accept an options parameter for forced deletion.
- Introduced a new handleTrash function to move selected assets to trash instead of permanent deletion.
- Added a confirmation dialog for moving assets to trash, improving user experience and providing recovery options.
- Updated the UI to reflect the new trash functionality with appropriate button and alert dialog integration.
2025-10-29 23:13:02 +05:30
Varun Raj 65d6c90707 feat: add new analytics endpoints and charts for enhanced data visualization
- Introduced new API routes for people names, geo photos, and album photos statistics.
- Updated analytics handler to include functions for fetching new statistics.
- Added new chart components for visualizing people names, geo photos, and album photos data in the Exif data analytics page.
- Modified asset deletion function to accept an options parameter for forced deletion.
2025-10-29 23:10:55 +05:30
Varun Raj c0d51998b6 feat: enhance bulk duplicate finder with auto-selection and keyboard shortcuts
- Added functionality to auto-select assets based on criteria: lowest quality and smallest size.
- Implemented keyboard shortcut (Escape) to unselect all assets.
- Updated UI to include an auto-select dropdown in the floating bar for better user experience.
- Enhanced toast notifications to inform users about the auto-selection results.
2025-10-29 23:03:49 +05:30
Varun Raj ea1142801b feat: enhance bulk duplicate management with asset deletion functionality
- Added a floating bar to display selected assets information in discard mode.
- Implemented logic to calculate and display the count and total size of selected assets.
- Introduced a delete confirmation dialog for removing selected assets, including success and error feedback via toast notifications.
- Updated the state management to handle asset deletion and clean up empty duplicate records.
2025-10-29 22:56:10 +05:30
Varun Raj afb2fb09d4 feat: implement selection mode for managing duplicate assets
- Added a `selectionMode` prop to `DuplicateAssetRecord`, `DuplicateAssetItem`, and `VirtualizedDuplicateList` components to toggle between "keep" and "discard" modes.
- Updated UI elements to reflect the current selection mode, including button states and labels.
- Enhanced the logic for keeping or deleting selected assets based on the selected mode in the `BulkDuplicatePage` component.
- Improved user experience by providing clear visual feedback for asset selection actions.
2025-10-29 22:52:18 +05:30
Varun Raj 6259481d3e feat: enhance person merging functionality with name filtering
- Updated the `listSimilarFaces` API to accept a name parameter for filtering results.
- Modified the `PersonMergeDropdown` component to include a new select input for choosing between "nameless", "tagged", and "all" options.
- Adjusted the API handler to filter similar faces based on the selected name criteria.
- Improved the UI layout for the threshold and name selection inputs.
2025-10-29 22:35:38 +05:30
Varun Raj 2dba053b86 refactor: update album selection logic and add merge functionality
- Changed the `onSelect` prop in `AlbumThumbnail` to accept the entire album object instead of just the album ID.
- Introduced new API routes for merging albums and added the corresponding handler.
- Removed the `useAlbumSelection` hook and integrated selection logic directly in the `AlbumList` component.
- Added a `MergeAlbumDialog` component for merging albums.
- Updated the album list page to handle album merging and selection state more effectively.
2025-10-29 22:09:07 +05:30
Varun Raj 0349646953 feat: moved from google maps to open street maps for heatmaps
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-27 08:30:42 +05:30
Varun Raj 21e950ff78 fix: build fixes
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 18:21:59 +05:30
Varun Raj 5c77473126 Merge branch 'prerelease' of https://github.com/varun-raj/immich-power-tools into feat-august-release 2025-08-23 18:10:40 +05:30
Varun Raj ed411ae68e fix: data table fixes
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 18:07:10 +05:30
Varun Raj c64959f6d6 fix: design and performance fixes in album list
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 17:41:45 +05:30
Varun Raj 53fa52cfd7 fix: selection is unified across the tool
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 17:24:00 +05:30
Varun Raj 0ea429578e fix: share link album sort fix
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 16:57:48 +05:30
Varun Raj dcac170d7b fix: share link to show assets which are not in any of the album
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 16:57:06 +05:30
Varun Raj f1e0130232 fix: unified asset grid across the tool
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 16:50:01 +05:30
Varun Raj d443da7df2 feat: manage duplicates in bulk
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 16:34:44 +05:30
Varun Raj 2746fe0938 Merge branch 'prerelease' of https://github.com/varun-raj/immich-power-tools into feat-august-release 2025-08-23 15:43:03 +05:30
Varun Raj cd804d04ec feat: added empty videos option
Signed-off-by: Varun Raj <varun@skcript.com>
2025-08-23 15:42:38 +05:30
Varun Raj 9589be8821 fix: table view for albums
Signed-off-by: Varun Raj <varun@skcript.com>
2025-07-29 10:30:11 +05:30
Varun Raj cf59b4fa3f feat: album multi select using select
Signed-off-by: Varun Raj <varun@skcript.com>
2025-07-29 10:01:59 +05:30
Varun Raj 263212c8b9 fix: album creation flow
Signed-off-by: Varun Raj <varun@skcript.com>
2025-07-27 18:04:35 +05:30
Varun Raj aef4e6ee86 feat: better ux for tagging people in album 2025-07-27 17:30:23 +05:30
Varun Raj 7c6b75ebd9 feat: select and tag face from album images 2025-07-27 12:47:53 +05:30
Varun Raj b9d7e54c8a feat: remember the last location used 2025-07-27 11:44:35 +05:30
Varun Raj 3cad04255a feat: select all unknown people in album details 2025-07-27 11:11:00 +05:30
Varun Raj 8dab4ced5b refactor: improve AlbumPeople component to categorize known and unknown individuals
- Introduced useMemo to separate known and unknown people based on their names.
- Enhanced rendering logic to display known and unknown people distinctly.
- Updated UI elements for better layout and usability, including search input and person rendering.
- Adjusted padding and spacing for a more consistent design across the component.
2025-07-27 10:56:54 +05:30
Varun Raj e8b1076603 Merge branch 'main' of https://github.com/varun-raj/immich-power-tools into feat-cleanup 2025-07-27 10:42:16 +05:30
Varun Raj 177fecffaf fix: updated db schema based on new immich schema
Signed-off-by: Varun Raj <varun@skcript.com>
2025-07-27 10:39:20 +05:30
Varun Raj 917f694db7 refactor: enhance AlbumImages and AssetOffsetDialog components for improved asset management
- Integrated PhotoSelectionContext into AlbumImages for better state management of selected assets.
- Replaced local asset state with context-driven updates, allowing for seamless asset fetching and selection.
- Added image gallery functionality using react-grid-gallery and yet-another-react-lightbox for enhanced user experience.
- Updated AssetOffsetDialog to include timezone options for date adjustments, improving flexibility in asset date management.
- Refactored UI elements for better layout and usability across both components.
2025-07-21 09:40:27 +05:30
Varun Raj e9fe68e08a fix: updates according to the new api
Signed-off-by: Varun Raj <varun@skcript.com>
2025-05-23 17:12:58 +05:30
Varun Raj f7ae586ed1 feat: made lat and long into single input field 2025-04-27 17:02:05 +05:30
Varun Raj b0075082e2 feat: added image gallery to album assets 2025-04-27 15:24:55 +05:30
Varun Raj 094a2a6e57 refactor: enhance FindInput and AssetGrid components for better media handling
- Updated FindInput to accept value and onChange props for improved state management.
- Modified AssetGrid to support video assets by integrating Video plugin in Lightbox and adding isVideo property to asset objects.
- Enhanced LazyGridImage to display video duration and a play icon for video assets.
- Introduced humanizeDuration helper function to format video duration for better user experience.
- Updated search API to include download URL for video assets, ensuring consistent asset handling.
2025-04-27 13:56:35 +05:30
Varun Raj a583c8250c refactor: integrate PhotoSelectionContext for asset management in FindPage
- Replaced local state management for selected asset IDs and assets with PhotoSelectionContext to streamline state handling.
- Updated asset fetching and selection logic to utilize context state, improving consistency across components.
- Enhanced user feedback with toast notifications for album actions and error handling.
- Wrapped the main content in PhotoSelectionContext.Provider to ensure context availability throughout the component.
2025-04-27 13:15:06 +05:30
Varun Raj 0f77c32f2f refactor: migrate from PotentialAlbumContext to PhotoSelectionContext
- Replaced instances of PotentialAlbumContext with PhotoSelectionContext across multiple components to unify state management for photo selection.
- Updated context usage in AlbumSelectorDialog, PotentialAlbumsAssets, PotentialAlbumsDates, and MissingLocation components.
- Enhanced loading and error handling in asset fetching functions.
- Improved user feedback by updating UI elements to reflect the number of selected assets.
- Removed unused PotentialAlbumContext and related files to streamline the codebase.
2025-04-27 13:08:20 +05:30
Varun Raj d7d64585ff fix: minor fixes
Signed-off-by: Varun Raj <varun@skcript.com>
2025-02-06 20:26:50 +05:30
Varun Raj e51da37518 feat: added filters in geo heatmap
Signed-off-by: Varun Raj <varun@skcript.com>
2025-02-01 16:45:14 +05:30
Varun Raj 506c5a408e feat: option filter people based on visibility
Signed-off-by: Varun Raj <varun@skcript.com>
2025-02-01 09:46:50 +05:30
Varun Raj 0c37a08542 fix: conflicts resolved
Signed-off-by: Varun Raj <varun@skcript.com>
2025-01-26 18:05:33 +05:30
Varun Raj f17356252d feat: minimum assets filter in potential albums list
Signed-off-by: Varun Raj <varun@skcript.com>
2025-01-26 17:32:14 +05:30
Varun Raj 0715257048 feat: open street man integrated
Signed-off-by: Varun Raj <varun@skcript.com>
2025-01-26 16:46:22 +05:30
Varun Raj bc92e50507 Merge branch 'main' of https://github.com/varun-raj/immich-power-tools into pre-release 2025-01-26 16:41:36 +05:30
Varun Raj 44f64dc71e Merge branch 'main' of https://github.com/varun-raj/immich-power-tools into pre-release 2025-01-19 11:50:24 +05:30
Varun Raj e7687b9b2b fix: minor condition fix
Signed-off-by: Varun Raj <varun@skcript.com>
2025-01-19 11:18:37 +05:30
Varun Raj 18274a3449 fix: conflicts resolved
Signed-off-by: Varun Raj <varun@skcript.com>
2025-01-19 11:17:16 +05:30
Varun Raj 59fb16bc21 fix: removed unused components
Signed-off-by: Varun Raj <varun@skcript.com>
2025-01-19 11:13:00 +05:30