Commit Graph
458 Commits
Author SHA1 Message Date
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 Raj ManoharanandGitHub 7a3a8713f1 Merge pull request #248 from immich-power-tools/feat/upgrade-nextjs
Feat/upgrade nextjs
2026-04-07 19:19:56 +05:30
sai80082 fa98a2595b fix: update Dockerfile and bun.lock 2026-04-07 19:13:37 +05:30
sai80082 a9f6e92a97 fix: update AssetGrid to remove tags and add link to open in Immich directly in photo album 2026-04-07 00:25:15 +05:30
sai80082 2dd783f949 Merge branch 'prerelease' into feat/upgrade-nextjs 2026-04-07 00:20:50 +05:30
sai80082 aefc94b89e fix: replace leaflet-defaulticon-compatibility with direct icon imports for Turbopack compatibility 2026-04-07 00:15:45 +05:30
sai80082 6569aa4427 fix: replace react-grid-gallery with react-photo-album for React 19 compatibility 2026-04-07 00:12:03 +05:30
Varun Raj ManoharanandGitHub 02d6caac4a Merge pull request #247 from immich-power-tools/feat/orphan-finder
Orphan finder & enhanced lightbox with asset info panel
2026-04-06 20:19:16 +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 Raj ManoharanandGitHub 836fe7a373 Merge pull request #242 from immich-power-tools/feat/db-and-apikeys
Feat/db and apikeys
2026-04-06 19:42:15 +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
sai80082 4f7e770cf3 chore: update ESLint configuration and dependencies, remove experimental instrumentationHook from Next.js config, and adjust package scripts
- Added ESLint configuration file with Next.js and Remotion settings.
- Removed experimental instrumentationHook from next.config.mjs.
- Updated package.json scripts to use ESLint directly and enabled turbopack for development.
- Bumped various dependencies including Next.js, React, and Radix UI components.
- Changed searchTimer initialization to use undefined for better clarity in multiple components.
2026-04-06 17:32:46 +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