Skip to content

runkids/aisets

v0.0.1 Maintenance

This release keeps dependencies and maintenance posture current for teams operating this tool.

Published 19d Media Servers
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai-canvas ai-tools asset-audit asset-management computer-vision developer-tools
+14 more
duplicate-detection go image-assets image-library image-optimization llm local-ai local-first ocr react semantic-search sqlite visual-workspace vite

Summary

AI summary

Broad release touches ui, image-tools, canvas, and i18n.

Full changelog

Changelog

  • d4faef97cfdb651297429370a22ed239f27dd7f7 ci: stop publishing homebrew formula
  • 7608e8be889953fd8e4470b94d52666b706e3f65 fix: isolate heic cgo decoder for release builds
  • 9a2ba9ed40273bd72d1c227c82ebf4312e8d1e86 ci: allow release workflow generated archive
  • 1d186564cb890262f8b9d310136e26adc51e1947 chore: update CI workflows, simplify README, fix i18n contract test
  • 867e27b428ce833c1850d5239e31ed423e8df9d1 refactor(server): split canvas_chat_handler.go into 12 focused files
  • 421bc8095a4d39081c53dbd036200135ff83b5f9 feat: add AI canvas staging demo
  • fd777d55d43814af8752c889243d8a875c2cedb1 Fix canvas photo staging workflow
  • 8a26036befd048be5d3b907aa006ff025b860d15 fix: project canvas tool state across AI loops
  • b5ccb451c03d5e1a786322d6aa6568485b04836f fix(ui): soften purple tones in canvas search batch controls
  • 219ccf7b9b8d9609e585687f2987478997841626 feat: require confirmation for uncertain canvas search
  • c0cc7a2574ee60eaab57786278a2a11e1c5e361a feat(canvas): redesign search panel with dual-mode interaction
  • dac9512802cb757a1517a668b8a6d4c6728277ce fix(ui): tighten canvas chat metadata layout
  • bd5600c773c5a2a14d6f5b2936c76d6b8b16ee39 fix(ui): reduce canvas overlay controls from 44px to 40px
  • 6458c1e26ac5df8c63f77e9166766dd88fbcadec fix: enable clearing empty canvas sessions
  • 3aeb9286a38a9e9ca814c9a164a302757c9c382a feat: show canvas chat activity status
  • 1fed4c4cfe650f960fa601f9bec827a0faa8a821 feat: harden canvas AI tool execution
  • 25cd5deea345a6ba5393e410eb1163e6dc9d5e43 fix(ui): improve dark mode contrast on canvas overlay panels
  • 2a5590b7bfec98548ca7ac4073c3309d7587aa8e feat(canvas): enhance sessions, composer, and card interactions
  • a09cca5116c67839e4e522cc168853f702b0a8f6 feat(canvas): add manipulation fallback parser for non-contract LLM outputs
  • 5e79d14a4d449a563dad9c486bff1f3f16db7ea9 docs: capture canvas manipulation and cursor conventions
  • 9ea1d3be567b644577c29ab79454bea53660e78f feat(canvas): add skill-gated tool use harness
  • 703688999c1173e3ccdafec01c4f36a1a0b147a5 docs: capture canvas card motion rule
  • 65cc5da0e0a9e61aba06fa2bf20832cf7d13aa8c fix: keep canvas busy while applying actions
  • 6af092967146f3b2d9a32dcbf900e06d99bcedc5 fix(ai-canvas): support uploaded image workflows
  • e67b9d713ceaa71729ff2824316812cbcd5dab20 perf: compact canvas vlm loop prompts
  • 5fb5825343e1439f01c2f1baa264c6d38a030504 fix(i18n): fill missing locale translations
  • a3207e0e6881316c85418a9b30129a68ea9f667f feat: support canvas image transforms
  • 261d09221781f2f42014956b5b15d17c739fd212 feat: add @all mention, scrollable image list, and refine cursor sizing
  • b4cce4dd9e02f0a119f01dbcb88e2b32ecfa269e fix(ui): restore white stroke on idle AI cursor for visibility
  • 12fce44b278840a5928089bf8d988391201be4bc feat: improve AI cursor with per-tool icons and comment discipline
  • 39e9df99e5a941802a2238c42ce48e7a33552dd2 feat: enhance canvas chat workflow
  • 4940b3b7b44b39e7da07f0b839e76fc064686483 feat: persist canvas sessions to DB with save/load UI
  • f90dd835f15aefbdd218de2b3f00b6a3b4c38153 perf: smooth AI canvas zooming
  • a81a2c0b5ac141269c3f7d9969c76e9d898096fd fix: refine AI canvas image workflow
  • 2c437094260d8b67d54f6fa5005ca5c12996474b feat: add AI canvas shortcuts
  • d193b7658811d8a08123138c556035731ef01f4d fix: improve AI canvas interactions
  • 7169b1e1c1ac0f71f20f79e4f56b1d73203e58b5 feat(ui): redesign canvas image cards with context menu
  • bf22476d5eb157acc2b0ef8938f1c10936edec9e feat: support AI canvas image uploads
  • d6f10b3d15e24d90b76519f8b2f183bb8d649e30 feat: improve canvas capture and embedding calibration
  • eb0c80b40ffdfcc2b0bcad5c72652bc5a9218a8e fix(ui): restore calibration apply icon import
  • 7eed82f4759037c97a8ea7cf5c1e91e361db927f Merge branch 'codex/embedding-04'
  • 872d9009b5ae26cfef918bb9625ac0ad3f4a3325 fix(ui): show embedding calibration feedback
  • 0fbcb2d4b0502f7105e9932e5eea28c98970dcb3 fix(ui): clarify embedding calibration dialogs
  • 19453c951cdce84b8ac5d9e986ef2ec1fbf14244 fix(ui): show embedding calibration feedback
  • ffee23d74e9b4eb345b0f0f4198db17e9dc37d5d Merge branch 'main' into codex/embedding-04
  • 730183363cfe8524414fb21b2c097deb6eef6cfe fix(ai-canvas): stabilize floating canvas overlays
  • 69a26dbb2ff60d9589f30a0140c6af650c0fc128 feat: add embedding calibration controls
  • 5417a67ac59c01eb5e498992ec01690d21721437 refactor(ui): split AI canvas view
  • 9b92e4a83d14646ee96c8ed1d9439f54e5cdf6d4 feat: add canvas multi-select and Rust-backed screenshot capture
  • 59bdba3c15e47792fff1264825498ec2c3c59f19 docs: capture canvas debugging lessons
  • eb858bf419c45ad42b25f6716f16ebbe73891982 fix: remove canvas active check badge
  • ae34209646a32eac6502a699d26c92347e10c16e fix: update canvas active image state
  • e923656183ae0b87586942e01cbf5c90b3b06859 fix: toggle AI canvas search shortcut
  • 1bf759997fbe117baf2bfd6c0e33784d90e0ce02 feat: improve AI canvas chat controls
  • 9c950b060585b1781db6862e4f8a363b0941482f feat: add AI canvas layout actions
  • 8aa3f1eb3e1cb1332b6ec5b07e427b2c7e8d4a2f fix(ui): polish AI canvas annotations
  • f33c70c5cc5088d5fe8d17ee6405aa60bae93b0d feat(ui): refine AI canvas composer
  • cab42b89bd68029d4b1be1f51f5d5c3f80b85bae feat(ui): refine canvas interactions
  • 1122b77c59eb30558348de7a2134056c09d9eab2 fix(ui): improve ai canvas interactions
  • e2e895647e6f8e68fca6d4a6f7568c4a5181791b feat(api): add POST /api/assets/ocr-text endpoint
  • 44843f56c0db36d009bd8477d080aa4dd2c68a7e refactor(canvas): extract AI chat system to useCanvasChat hook
  • 7e9cc92bbc71634fc4959b36821c3a3187b8a889 refactor(canvas): extract drag/selection to useCanvasDrag hook
  • 2f86b6bb6523ba85bf3c62206c8d78ff3ba31fbc refactor(canvas): extract proposal execution to useProposalExecution hook
  • 733aca846ee1c8bbad02e685275a728217c9d33a refactor(canvas): extract 8 card components to canvasCards.tsx
  • 8d2d85999f8d329c34d688aad0708f91a2c7deca refactor(canvas): extract utility functions to canvasUtils.tsx
  • 00e71d90c8ff84b6e3df0b5bea0dba37a3ecaa3c feat(canvas): add all file operation tools for AI
  • 2b46a94dcdddf0bfabe99ba09317a9bc1868cfc2 fix(canvas): clean tool_call markup from textBody, sort spans
  • 0cb38757399e990da5dfaec6ae674e52cb0a8006 fix(canvas): parse Gemma <|tool_call>call{...}<tool_call|> format
  • b66151b52e3d986c63544775a9ba56e02312983d feat(canvas): parse <tool_call> format from local LLMs
  • e91de8974730658fde09bf6481fad6ac822e3f9d fix(canvas): improve system prompt for local LLM tool usage
  • 6c939669f5b748be8610d0419f7dd7a6c58ea0c0 fix(canvas): debug panel scroll via data-ai-canvas-scroll attr
  • f41fb9a8dfc37d19fc47534c29abd3007d5dc481 feat(canvas): resizable composer + debug panel gesture blocking
  • e637465e20f043700f21c107c9e3d83b650d25bf feat(canvas): add debug panel (Ctrl+Shift+D)
  • 0800ebb8d27b3b267d83fc4a29941c0a61cfd6c4 chore(canvas): remove debug console.log, lint fixes
  • 923175af0635e4c805b8884d2bf57f87f5191803 feat(canvas): text-only responses go to chat history, not cards
  • 63e78d1123b29ec0b1e18f82d480a6b628b9037a fix(canvas): fetch search results by individual filename, not joined
  • 60a860b329450f2e0d09a5cc2c65fa6004c4dbc8 fix(canvas): search results use IDs not queries, richer backend data
  • 82a5ff6fa5e19837e16eb1f725037a15f9e6934f feat(canvas): multi-turn tool loop + collapsed bar AI status
  • f8ae0692bc68f29f94aa9860dbd982ce4fb61501 feat(ui): AI canvas chat UX fixes and new capabilities
  • 9a40a02ba4dd3f46ca7b47bf4b384cb153001a13 feat(ui): mouse cursor icon, markdown render, chat UX polish
  • f484d45a7230b83865920eef811f228c8cf174a9 feat(ui): always-visible AI cursor + scrollable chat history
  • 42a07ce9cad83bf8c5a16b6d059f9354ea2210e3 fix(ui): Enter sends message, Shift+Enter for newline
  • 619241469ee3f7572a4061c4e614df54ecbf909d fix(ui): show proposal bar above input, never block text entry
  • 93ded98a967123c8075c37108bbe45e566bba007 fix(server): context-aware AI behavior for region vs optimization
  • a939f79c2821f7774bcf80e2b466b82c1d5c4afe fix(server): accept float64 coordinates in canvas snapshot
  • 093e0bba9c52c11615772cb41b7ce14b654c3e15 fix(ui): send full asset key for tag mutation proposals
  • 2866bba03854fa428174b238c8df6c0f3df2a4fd feat(ui): move proposal approve/reject to composer bar
  • 85e502d3f34adfbe56b2bf70d65dc12a1da33693 fix: resolve proposal approval failures and card overlap
  • d004a61a1a768404ae9b6633d4edc29812bdfbf8 fix(server): rewrite canvas system prompt for pair behavior
  • 5617d4b0fcf76816f87697682cd8fd062a860a5c fix(ui): add confirm dialog before clearing AI canvas
  • 150e8476bd51d75382722eb601546e79bf0221e4 fix(ui): center new canvas cards in the visible viewport
  • 7feeec86867e9c0d26a64cf112fd93124874add4 feat(ui): add AI Canvas to VLM backend routing settings
  • cb47933137ed1f00390b0a66d791dd07fb3c872e feat(ui): add region selection and wire proposal execution
  • c431342c63430705212d6cccded1671a17ca1827 feat(ui): wire AI canvas to real LLM chat with cursor and proposals
  • 8963c6ff080e4dd8d6e3f9efb224ab7a7cff841a feat(server): add AI canvas chat backend with tool registry
  • feafd9f1ebc96db00078e25ff850336ac48d4a9a fix: handle language metadata search and VLM OCR arrays
  • 6219bc8347aa6a36b1975f0d9ef56b327cee07d7 feat: improve AI canvas interactions
  • 6b2ce7ba735c0a1d82950e29b92dbac46efc34f4 fix(ui): allow deleting AI canvas cards
  • 5e7893784b5f41b41329753d86ddaa0809ad4e52 Merge branch 'codex/canvas'
  • 90738706058ace3dd18d634ee31ed0d36497e70c feat(ui): add AI canvas
  • c48c53d81be3ffc61556f0fb2bb1af40a1115f5f fix(ui): explain disabled semantic embedding
  • c3bf8305c2488f3f46ca45faa052bb84d70eb096 fix(image-tools): keep semantic results during refetch
  • 43f201491c5a12842d5f7582b63059070e761e97 fix(image-tools): inline pulsing dots for semantic loading in input
  • f94bf5d719533b240455b6a5f12212ff4cf971e2 fix(image-tools): float canvas particle loading below search input
  • e65d944f03534a8edd21c2441540b7f7f3b22af2 fix(image-tools): remove border from semantic loading indicator
  • c91eb9baac185718ad9fe7f528d4e26575d8ad95 fix(image-tools): canvas particle loading in input, keep wall visible
  • aeca7225dd6c561327b1cbf0c0e3a0b138305fa5 feat(image-tools): purple AI icon, mini particle loading in input
  • 9c9540c74217d818f3eddf30d682ef7844b5952f feat(image-tools): add semantic AI search to catalog picker
  • 67b95d10a18533911e2c9d2a774d9e38b279580d feat(image-tools): apply image background setting to catalog cards
  • 1739b18b37cc593df2a8aed5e8a05270c466ed98 fix(image-tools): AVIF preview, empty states, drop hint, catalog count
  • 9efaae9e9e1a56a1199dcfd2a61061f421e96868 feat(image-tools): add empty state for right column queue
  • 5fc29d8bb62edc463eff5b29e476ee5e1076fa03 feat(image-tools): link tooltip icons to Settings → Optimization
  • 0a065725f2b930440b14465ed7fc67e0127e2ef9 feat(image-tools): add tooltip hints for quality and resize controls
  • 8c210655de00e5c351cb7acc03aa421818161129 feat(image-tools): show max queued dimension in resize placeholder
  • c7fca6a4940e37c5ae2aabbce83a15d6831f0a4b fix(image-tools): decouple drawer format selection from global settings
  • 6f2798b8f0b4453b760729e54280f95a5a1f5bc5 fix(image-tools): render-preview respects ExternalTools setting
  • e4d8f356d0f462220a88c90628703c1a4f10b6af fix(image-tools): HEIC preview support, wider drawer, queue affordance
  • 3838d73da9aac06dbd579234699f02d4e635cb0e fix(image-tools): resolve lint errors in preview drawer effects
  • a50600218139d929ff0840231a5e10ec0f7871ea fix: prevent AI OCR from generating captions
  • 221b898862b84ea4feed079a8b4ade3d1f3796a0 feat(image-tools): wire preview drawer into queue items
  • 2b0328c19a7befdffdcae9ab36849c1311c29cde fix: handle webp thumbnail fallback
  • b0dfb0bd475fde32d83fb23d29184387f09fd69a feat(image-tools): add preview drawer component
  • 792153d9c20e8153a32a8a045b1ff708672bf225 feat(image-tools): add preview drawer API functions and i18n keys
  • 0f1b71719257b7d13d81e1642efe3f324a0d52eb feat(image-tools): add EXIF metadata endpoint
  • d81307b3135763d74df96e0a968aa286d3233565 fix(image-tools): correct status code and cache-control for preview endpoints
  • 9beef9451fac8782e03d01ebfb880470498f7db8 feat(image-tools): add render-preview and preview-serve endpoints
  • e6b90fe25f7739d90501489721da20da37e73910 docs: add product tour with screenshots and update feature tables
  • 11117e2b3f3d55612773856739554b673780d374 docs: add image tools preview drawer implementation plan
  • e1928aefcb43be807784f346f77b68e8436edf46 docs: revise image tools preview drawer spec
  • 98197687ed8153af94ea4ce4aaa047ca3d62e894 fix: remove unused Badge import from ImageToolsView
  • af2f8747ab8ad9e1354a2ca77f5a745d8e004658 feat(image-tools): StatCards grid layout, hover preview, compact results
  • f1815c11ccd698f6ff0e9095171561d5f8c8e919 feat(image-tools): show thumbnail preview for uploaded files via object URL
  • 197f139fa6abf286661c49b29ca9eb53bde37c4b fix(image-tools): restore queue list in right column + fix paste + gap
  • 922f53dc213fcf808a8f6cbf28b3ade8171b61dd fix(image-tools): add pb-4 to virtualizer rows for measured vertical gap
  • e043fee3779ff03db3538b3e03be20e36564db69 fix(image-tools): increase grid gap to 16px for comfortable card spacing
  • 27b21196c4218a8dc85fa1e7ca50f7e9b15a18c7 feat(image-tools): add select all / deselect all button in catalog header
  • de8ed76e9ce0c98ba7ee6ebd1c2937bd848ad06a fix(image-tools): make entire drop zone clickable to trigger file picker
  • f66e55ca4d0874023bff42cbe71533b858b29b42 fix(image-tools): set row gap to 12px
  • 51ebe069cb16cdb9cc23111de2d2d44262b08df5 fix(image-tools): increase vertical row gap to 14px
  • 199d819f76d9e720965fe29d79568f188a85ac5c fix(image-tools): scale 0.96 for ~3px accent frame
  • 7759e6b5d7a634c80a4936122668c39c8f88d37c fix(image-tools): reduce selected scale from 0.88 to 0.94 for thinner accent frame
  • 05cd0bc67010003c42b285fb76b6422869fc88f0 fix(image-tools): Google Photos style selected state + wider grid gap
  • b69350fa62f6dd16a39a03d3221cc14e0b92d4b4 fix(image-tools): thin selected ring to 2px and increase grid gap to 8px
  • 6f3ad26a9c4808337aa8b6a79decb12de1cee06a feat(image-tools): floating action bar architecture with direct toggle
  • 6ed4686779e3d0232de902bda3cc9f3b387b3746 fix(image-tools): use inset ring for selected state instead of padding frame
  • 40cc906e1c107671e83c89076157a4988a83cc4a fix(image-tools): increase catalog grid gap from 8px to 12px for selected state breathing room
  • fbdb16fe73c7912e48fe731850cb5cc3fbaed66e feat(image-tools): redesign catalog card selected state
  • 4f2beb9630392e67e880a9c437f39532cc890cff feat(image-tools): redesign catalog cards to image-wall style
  • 89698d6e18bea8fc7158e327ca4f0fbba5cbabe0 fix(image-tools): use callback ref for wall width measurement and clarify button labels
  • bb57bf961894ea2b191594b798e4a4ff449039cd feat(image-tools): tabbed queue/results with compression bars and animations
  • 3bad34bcd103a94bae019b48b8e4ac07bd957b11 feat(image-tools): polish catalog picker with queued overlay and inline count
  • d7b792370fc2b4275f41048090a5c54d063cc9f0 feat(image-tools): add StatCards row and sticky toolbar with progress bar
  • 43943584aa0a3647c2426ecf7f0f866df9691c41 feat(image-tools): add i18n keys for redesigned tabs, stats, compression
  • 07a0afd1777463a91909ba4a0e2880a18e202a2b feat(image-tools): add resultSlideIn, countPulse, toolbarProgress keyframes
  • c15272646db9402ae42fa4cdd9095fee53a5fa38 feat: add configurable image lint rules
  • 61f52142542a7b12f9b201173a7202a28ed3b1e4 refactor(ui): consolidate feature directories
  • bf05a401c58f21cd6c8eb7e6593eced4df2a6629 fix: translation check issue
  • d674b315202156f6b8eaaf9a36413c77269434dc refactor(ui): split frontend modules
  • e4a4cc59b64045ead7afff6c1731ba7da51c7b01 fix: validate ai tag translation categories
  • 81fbae0f94caefcd658f230089b5abca170bddfb chore: add rules
  • a3c1ef32dc5519874324ffdad386da7e6fc6b368 fix: add ai translation tooltip
  • a135efa4a21c158618b3b9eb497f89e81882cb52 fix: surface ai tag translation warnings
  • 1a8ff6cecf1d4a1d100e673f197ba4d6ed7a5429 fix: preserve favorite workflow updates
  • 0ac887b112b3f8976fe22383c5a89f434bc81c63 Merge branch 'codex/favorite'
  • daaaa44e391b8919e3a6bcca387c2375711f0185 fix: reset browser cache and prompt presets
  • f88fad9a702f2ee87fa2bc1442619041693a845e fix: scope AI data to active workspace
  • 609d78b79f6ee8d744c9764349eb3d683b94a645 fix: hide rail sticky headings before scroll
  • ef8eedcf9dfb1222db460dca6e395ccf061d8180 feat: refine favorite asset actions
  • 3b297b5bb263e339ea939e0eab5d88a6bd63cccc fix(ui): improve rail sticky section headers
  • d194ebb85b4cec9c38b3bd72896a7d20667c6903 Merge branch 'codex/favorite'
  • 78742792f2af4ebf54c8b53a8ca22bbc88468af1 fix(ui): refine browse semantic search UX
  • db08550c3ba4074f962611544367891c38d7bcfa revert: restore browse display control collapse
  • d795a0cf16050099dde4d70f06d79e4fb02ae3f4 refactor: keep browse display controls expanded
  • 97263d8f38c74e7146af6f90aa1786cc14dd086e Merge branch 'codex/imgtool'
  • 10935f29b448a6ad3b92aa6f85840444638d89ee feat: add browse favorites workflow
  • 6d3ed00faf69d93a88ec3a6c4151fa7c90ab6d15 fix: improve semantic embedding accuracy
  • a1fc1421560601574de475c6d2f01a40a9bd43dd feat: add semantic asset search
  • d7efe0fa23c3fa4c6d425ffbd0137ece0871aedd feat: refine asset workflow controls
  • 7590204b3d674616eb677000ee19d1aea7cd72d6 feat: add image tools workbench
  • 39e53ae9af2858237a34440fc62b49cd63305638 feat: improve custom filter management
  • 1bb34ced5b2dc01572beca779b9d62070d1794b9 fix: keep asset drawer tabs mounted
  • b8b941a014695b5c33bce5a5b8c179731f9b50d8 fix: align AI backend selector width
  • d0d81218a6c6e746ff137c0367eab72feaf051b7 fix(ui): show restart instructions after web update
  • 40a648b19d1c8684fe1f0f41e96f0df41ae3648d feat: add AI category management
  • a5ec37bdabc6b621dc48ab429580d7931d38c1a3 fix(ui): sync browse query params
  • d391f5656265579fad61a90ddecfc6e112c86252 feat: refine semantic command palette
  • 23ddef3cf011107840f82743f5265b8700995374 fix: respect locale in catalog tag surfaces
  • e068eadd809cc10f49f901313d2a81268815b117 feat: add bulk select keyboard shortcut
  • 18038cad1679c384387ed5b704784cb8899d37bd feat: per-feature model/CLI assignment in VLM routing
  • af62dce882fba4b6a3404a3c35b3a63fff96c4a4 fix(ui): include AI activity in catalog and workspace disabled guards
  • b7b10964f7d58b6527c2d501ec4cd61355fdf826 fix(ui): use 1-minute staleTime for catalog queries and fix optimizable badge fallback
  • 99b9cfc4883cf31ea0274b27070f802904e250fa fix(ui): use state instead of ref for pinch tracking in render
  • 0662077c524d34005ecfe0e3dfcc0163abd47c43 feat(ui): replace inline ZoomableImage with click-to-open lightbox
  • 8d2f3bc446ad3dc8cddfcbd880aaf413130f17b5 refactor(ui): split AISection.tsx into focused modules
  • a1b3c098afd9ccb6b4f03cd0ce6350b4da66268d fix(server): allow agent CLI detection without saving settings first
  • f57284306c6a633430a4a6ab3d7da51b5c23ad82 feat: add semantic search to command palette with hybrid embedding and i18n backfill
  • 0b6aeeaa887dcd5f971d5d8efc0e7e6b34789e93 fix(aitag): redesign localized tag prompt for better i18n compliance
  • 3ffd018dd5532dd01a1a49b5641c317910593205 perf(ui): split tiptap/prosemirror into dedicated vendor chunk
  • 0d52decbec25f689b9a5f4eb8043bdd5f6d2ca69 feat: add embedding API handlers, frontend activity, and Settings UI
  • 6e5b51dc7d6027dcca6d2f95028f1253d9beb348 fix(agent): fix Claude/Pi CLI auth in devcontainer and improve error reporting
  • f772ff866738b9427301f1762d60951107ba2fea feat: add embedding pipeline foundation — vector math, provider image support, and split-table storage
  • c7a2ea893ecbfa83274c22196aaffe8d1bdeb1cb docs: add SQL safety and performance rules to CLAUDE.md
  • da2a90c8f5ea6c0c42de8c584897ccd730ccbc69 refactor(store): fix SQL injection, merge facet queries, and optimize DiffScans
  • 5e9f13f4238a696768292126969bd735ea5f6362 docs: rewrite README for clarity and remove Tesseract from installers
  • 59298d0451a171962a9adf37daca3ebdc0640c96 perf(store): clean up PRAGMA, folder grouping, and project stats query
  • 3fe8776bbabaafce303f6abb927cfc9419e4e0e0 perf(store): add indexes, fix ext filter, and skip redundant facets
  • 4e1ad2fb632cdce1320c910611539b7de916d695 perf(store): eliminate N+1 queries and improve write batching
  • f33b49de1f4092b5b433414cb70c48a1814ffc93 feat: surface provider/model info across AI Tag, OCR, and PreCheck
  • 6a8f2affba47adca2967f61b3d0d1bb9abd1cafd feat(ui): add search history to command palette
  • 2c4319f073e1a762a7c19ec3dc7f31bde913b012 docs: capture agent adapter and UI lessons in CLAUDE.md
  • 8421d0a4dd9f8e781e16c35dbed95a63ea7d7280 feat(ui): consolidate optimization settings into 3-tab header layout
  • 936f11af129feb9f1374efe70f07b967716b54b0 feat(ui): enable scroll-to-top button on Settings page
  • f002c10096ca91afb70bcd8f6460c09155a15a09 fix(ui): reduce gap between section title and content in AI Tag/OCR card
  • 89fe287ef6b2b8022702f7821d07e679ec5e3e04 fix(ui): tighten spacing between section titles and content in AI card
  • 067e9ae7fbcc1a8abaa7ec4b29c9c30e0b942edc fix(ui): reduce border noise in AI Tag/OCR card — single divider only
  • 6e2b268a30fae2b7941212c0abc792f4c1b43991 fix(ui): remove double border between AI Tag and OCR sections
  • e287e60c0e861dedc501210749c5316ad09d3ce9 feat(ui): merge AI Tag and OCR cards into single card with divider
  • 947fdba48782029d4e9ce1d22020fb731bef9223 fix(ui): only show Save/Reset buttons on Local LLM and Agent CLI tabs
  • efebca761fe44775a23fc48f00e5ad859a62a55f fix(ui): remove unused cn import and providerLabel after collapsible removal
  • 5fb94003ae707ad19b2499a4018a33ede05a10af fix(ui): add icons to AI tabs, rename backend to Routing/指派, flatten LLM settings
  • d4cdc9e125e4828a913759b80f17f2f2ec09b3ca feat(ui): consolidate AI settings into 4-tab header layout
  • c01c7342f48d8353fe82bc6d5c2477ba41b58723 fix(ui): unify danger zone button widths with left-aligned icons
  • e253c9202e8094d0463055d30e589b8980626455 fix(ui): separate tab from divide-y container to remove extra line
  • 622fcb43b5806bd422ab1a84c5d77b6dd04bfcdb feat(ui): add Esc shortcut to exit bulk select mode across all views
  • ceed1f5bd65248060dacdec182eb5647d6b57fd6 fix(ui): clean up Agent CLI tab — remove Local LLM badge, add placeholder
  • 14093751954c185e7398046657a2d6d2d646a6d4 fix(ui): use Tabs segment component for AI Local/Agent tab switch
  • 1bf111230cd9c0bdf7774d3e1b06b39055b2c978 fix(ui): remove unused Bot import and agentExpanded state
  • 62f586a9bb4cac661f27286c942419bcf6281832 feat(ui): tab-based layout for Local LLM vs Agent CLI settings
  • 919d8c29f1ffb42059b7ce70df519c1b9a407ffe fix(store): sync tags_i18n_json when mutating tags_json
  • e644cad79b2bac1eb762b9b98699a2c5dc5370ac fix(ui): push chevron to right edge in VLM backend dropdown
  • a2c8dd0c33746f4ae6f7a15b0860ae1a61ff03be fix(ui): unify VLM backend dropdown width and text color
  • 0a82f56d90a1d7e8c549af849e17266137bbadb0 feat(ui): VLMBackendSelect dropdown + per-feature VLM backend card
  • f14e7ad8ab43f51b411bd85ce7312df5d51fd021 fix(agent): pass feature-specific purpose to prepareImageForVLM via chatVLM
  • 519f8ac604c4242cd455d682d44da6c2a9c27701 refactor(agent): extract backend helpers, typed feature constants, fix guards
  • 1814ac944fa7ec2bc189a55a2713f0c06519822e feat(agent): per-feature VLM backend with multi-provider routing
  • fe2572206ed13cdef50f7930be6a572c912819a0 fix(precheck): improve AI scroll target and add sticky progress + done state
  • 12358f3bcb1212b82a78bf8ae884881fea1caf91 fix(i18n): update agent model hint example to gemini-3-pro
  • d6dcf4b1297ed38f87ed121243850164bd9740d7 fix(i18n): rename zh-TW agentAdapter from 配接器 to CLI
  • dea84bf1e743e1b2a46c6948d13a97c1f76131d0 fix(i18n): update agent model hint with latest model examples
  • 84a4d61fe73f1b63834f21a94244d20cab5acf2d fix(i18n): rename agent section heading to "Agent CLI"
  • 663654ff153236a8bcca375be4f9e19facaf4560 fix(agent): empty agent model uses CLI default instead of invalid ID
  • a8fdf092ee8048580c19feb7f09b46df34908520 fix(ui): move VLM backend switch above prompts card
  • df0ba5302fe40b59da693e76f5dea996f005d6c9 feat(ui): add VLM backend switch to toggle Local LLM vs Agent
  • 59eb977b0480cb681fa188f66bfcc76a00215b0e feat(agent): route precheck AI through chatVLM for agent adapter support
  • a20ed79b4f7e02cdfea1d77226d37d20698b3e35 fix(agent): catalog enrichment must use resolveVLMProvider for query keys
  • ff6b18b3661627438960e768740726e8838825ec style(agent): apply gofmt alignment fixes
  • 282d62d5f0156569adf350dfd11addea759c091f feat(agent): agent adapter system for CLI-based VLM analysis
  • a0cb5350b9b0d82b8367ca3a20eb42192930b066 refactor(llm): deduplicate LLM response sanitization and locale injection
  • 17d1bbceef8a2bbce482f7e7c91f4edabd03970f fix(precheck): skip already-analyzed files when re-running AI analysis
  • 13b1b10462e12e35efe6a183abe2fef0086bbb53 feat(precheck): integrate precheck prompt into prompt preset system
  • 3ef94baab348729874ffceb162c0a4ffde4d1c78 fix(i18n): add missing common.ok key to all 5 locales
  • 4d0a4c7061fdb79199948b652b7af52946ea833f fix(precheck): include match paths in AI prompt findings
  • 9f34d8f3c3beb0a4d25ad36f8bf451c5ac017e6b refactor(agent): consolidate duplicated adapter and chat provider code
  • e895a03283ca54721edba651cbb3e210ef8e302b fix(precheck): inject deterministic findings into AI prompt and auto-scroll
  • 5a290bed863c0371bbfc3bb590ef929a3895b7a7 feat(agent): route optimize-advice and duplicate-explain through chatVLM
  • 84777ebd9094f5d8bf426176433882f77e3704c6 feat(agent): add ChatProvider for AI tag and OCR via CLI adapters
  • c97afca6b1a558de7c88165642344183e126aa28 fix(settings): add toast for system prompt and auto-locale toggles
  • 26e1d3156800e346c2083ecdae40a070757440f0 fix(settings): add reset button and use md size for system prompt actions
  • d6b9fdbdaa0ccc051a43ac4bf86929e410e6c819 fix(settings): style manage prompts as nav link with chevron arrow
  • 6618516ddcfa81c4ee8b428ae10d5fa2a5802c5d feat(settings): embed system prompt editor and remove system tab from prompts
  • 8ab86430e6f54a73a57673ae8b7ed14400171c72 feat(settings): add system prompt toggle and prompts locale card
  • 4ccdd263db32174be34cf6aa5d92d50ace801bfa feat(agent): add agent adapter interface, auto-detection, and settings UI
  • ad71f535c43f64fbbd297c951708ad0d53acded9 feat(settings): add Prompts & Locale card with global auto-locale toggle
  • 6a2ebd584098049045618a890f2a7b3ba8c4d57e feat(precheck): locale-aware AI response, match truncation, and completion toast
  • 6c6e5a1d36cb94e301230f995acf29467de2e52c feat(settings): add llmPrecheckPrompt to frontend settings types
  • 651f853b1345c6c1e91f19facac73019f2966aec feat(precheck): add AI analysis UI with streaming, verdict upgrade, and card section
  • a115082a597608eb2eb0bdcf1b8810cd9bb35229 feat: add agent
  • 935d8fd7ab74fcbed692bdea51f7fa4ed2f8edcc feat(i18n): add precheck AI analysis keys to all 5 locales
  • 1b71a225169c2f44495a95fc9f77b87f043398df fix(browse): hide reference count for non-applicable project types
  • 15eed70ce894ffb946a726bc5045b57c06f8f886 feat(precheck): add handlePreCheckAI NDJSON handler and LLMPrecheckPrompt setting
  • b88c9a88f312b1164ceb57ccb6f588cf5f329ea1 feat(precheck): add AI response JSON parser with tests
  • 1a5ccde55066997427cb613516fe33a147778397 feat(precheck): add AI result types and VLM prompt constant
  • 7dbfbf1853a6cff9f3660c214599e730e7259195 feat(aitag): multilingual tag search and i18n tag tooltip
  • 30876238600f695f90d2133cdca41563253f2fbc feat(tags): add Tags view and unify bulk-select button to 3-state cycle
  • 2e4f4e117fc21453170671e47c155388eded353e fix(aitag): truncate VLM response to first complete JSON object
  • 68bd7a29e989b25289cb8330470f8979d4205c78 fix(aitag): sanitize VLM JSON before parsing (trailing/missing commas)
  • d2f3f29e572dc0d0946d5e3e91458446d6e653c5 fix(aitag): tolerate VLM returning malformed i18n fields and fix AVIF probe format
  • 6896f0145520bbb6af5bd1520f7436f9f32d96eb feat(heic): full HEIC/HEIF support with goheif decoder and system tool fallback
  • e936b5528e654a03337d3a9638bda593f5ff3377 feat(prompts): make AI Tag i18n translations a toggleable {{translations}} system variable
  • c2373b62c8379efce81a7b0b42fc30029abbbbb0 fix(i18n): add missing EXIF keys to all 5 locales with correct nesting
  • 2af4d8662841b1088c3a5d416c3d828846837cf4 fix(scanner): add HEIC/HEIF to imageExts so scanner collects them
  • 2831ed68f41e3efe5fb124d38d940dbedd0313a3 feat(exif): add HEIC/HEIF support to EXIF extraction
  • f3335f943a0aadd5e54f936441ea7926f12bf481 Merge branch 'feat/ai-i18n-drawer-buttons'
  • 05a3a560d8c2c33dbe06ea74a525f13c0484650c feat(ai): add multilingual tag/description and per-asset AI actions in drawer
  • 06c6e1ef76b1b2d9d8ae82f677bf8dcc7750190e feat: add EXIF metadata extraction (#33)
  • 1d06ebae632814dacc4dcc8b82e3c20505a6be8a feat(ui): add Has GPS toggle to BrowseView FilterRail
  • 7345ebfdac286ee3551d38e32bafb00c1fefc233 feat(i18n): add EXIF metadata keys to all 5 locales
  • 911f38f8bbab6d1bae0df6df2ed857ed7ea86afe feat(ui): add EXIF metadata section to AssetDrawer
  • 7ad428a682d01a9ed002c5bdfbce6a7a099628ec feat(lint): add exif-gps-privacy advisory rule for code projects
  • f8171e54185299a0be8e6d370b256e46b0e8ba9e feat(api): add EXIF enrichment, hasGPS filter, and facets to catalog
  • b1c2a22271e4a59c247bc84697c2ebb9db4a2128 feat(config): add exif_data table, store functions, and scan recording
  • 89261f9599075ef5cc66306751cee8aa0e2535da feat(scanner): extract EXIF during ScanPhaseMetadata with cache support
  • 9bd6faeb1f0a8c11c35961c680cfaaa8f9c357a3 feat(imageproc): add ExtractEXIF with imgtools-first and goexif fallback
  • 607a16e9c3fd52fc36d1da4c8e0c7ff71ec6a500 feat(imgtools): add exif subcommand for EXIF metadata extraction
  • 261dd249390193eff9fdfa74c6714b83ec0d8cf6 fix(aitag): tolerate LLM returning category as array instead of string
  • 6d28adf20db8fee3950308e6b5a6ad391ed5f873 feat(ui): extract AiActionButton and AiResultPanel shared components
  • b2b1816dfa8c5be7f11cd0931de1248542907269 fix(prompts): add LLMSystemPromptEnabled to SettingsUpdate so toggle persists
  • 9ef3026b5d22bc97f285e3cc3a344154f5bee789 feat(prompts): add enable/disable toggle for system prompt
  • 650d66cffe5b16d0baa53340576c616cbec5ae05 fix(prompts): send system prompt as separate system role message
  • 3177778e2a4966f4255bdced35aeaafbcd6877a0 fix(sql): split OR inside EXISTS into separate EXISTS for near-duplicate queries
  • 2d43acd9fa72162b9925a0648d28db5cfe075792 fix(prompts): remove language built-in variable from system presets
  • 49c15aa0cfbd1e103b8998c27afa53065cc8a1a1 revert(i18n): restore translated newPresetName for all locales
  • 72dae8264359afb2bdc559408e0a87cccb27cca6 fix(i18n): use English for new preset default name across all locales
  • 9640152c30cdcb3d0bce857070690c8138b1e4f1 fix(i18n): use universal copy for system prompt description
  • cd07efc03d44f8eba6bde03bb88be7aca538efe4 feat(prompts): add system empty state with CTA and info notice banner
  • 3bd553f36fa38beebd3dd82372597e282e6b421e Merge branch 'worktree-feat-aitag-enrich'
  • 556708ec3d0471c300023580c489fedce67c3c9f feat(ai): add face detection, scene type, and location inference to AI Tag
  • d2ed09063c0836479201f1bdb26581c4fb191b52 feat(prompts): add global system prompt that prepends to all AI operations
  • 601b1a4b97762f5475d37725f35a04fe9e06e3dc feat(prompts): add system preset UI tab with i18n support
  • 80e05809b7b5440c596a95a2382df414e41ac425 feat(prompts): prepend system prompt to all AI handler prompts
  • 992185763d9438a48a30bc3f1911ffc64b231bae feat(prompts): sync system preset default to LLMSystemPrompt setting
  • 2602248d3617a0d4806bff6dd7ece760b4993abd feat(prompts): add LLMSystemPrompt field and allow system preset type
  • f37d5d37071fb3e09c741b9a6c6622943ffbe0ba Merge branch 'worktree-feat-ai-duplicate-explain'
  • 84390afa97d90fdbb2becef85ec7bc8ec134bf4e fix(ai): make AI tag filter, facet, and enrichment cross-model
  • 70114fec876e6f8b0e913ce15f885719b24d0200 feat(ui): add AI explain button to AssetDrawer Similar tab
  • ebc45f6a059175b72de54ea2a857ead341446594 feat(i18n): add duplicate explanation keys to all 5 locales
  • a7c6d90ccec85f22fb3c008e20aac79ea204cf18 feat(ui): add DuplicateExplanation API type and duplicate prompt preset
  • f84f0dd7465dba7d8bfe9bebc977770e40889d50 feat(ai): add duplicate-explain endpoint with prompt preset migration
  • 93f9829e88a9355259ad27dc9eaafca65a8c7bca feat(ai): inject file metadata and lint context into optimize prompt
  • c93f95a45590a764e8cc41b29a60e3ce5594acd1 feat(imgtools): add visual-sample subcommand and imgtools-first VisualSample
  • 13d8eeff55e09b4e04c334aee386ca2c437e689c fix(ui): sync handleSave ref via useEffect to satisfy React compiler
  • 25745a9ac6ac60f7f5823a92e645b7be200d7b50 fix(ui): use ref for handleSave to prevent stale closure in useEffect
  • 9615a31cae4bf473495966a25d3a230465c89aca fix: address review findings from simplify pass
  • fbb16f7eb469746300034d61246269bb70123a12 feat(ui): add keyboard shortcut badges to prompt editor buttons
  • cbc19cc8aafd3cf1c14873adf067ec6d2b8fcf1e feat(ui): add Cmd+S save and Cmd+C copy shortcuts in prompt editor
  • f3533f2ab80edd08a6b0c6b724f8a225a03cf700 fix(ui): always use Textarea for text-type prompt variables
  • 2980219518d1b28fb66cb0bfe7e8b10dc9f1eab9 fix(ui): use Textarea for multi-line text variables in prompt editor
  • 558e75b9b9b42ea44fa25f104155424b662019d1 feat(ai): add template variables to optimize prompt preset
  • f4c2ceb311539656fecb254d1923647bdeb56aa3 fix(config): widen prompt_presets CHECK constraint to include optimize type
  • 148c2039f4cf79d902c361c39b2888ef50448877 fix(config): use write pool for optimize preset migration check
  • 0067cb73354c5f86a56c410c18ace4ab7e542e26 fix(ui): use lazy initializer for Date.now() in useState
  • d84bd09f8e15661d6d6dc9b4c5c37ca12de2c131 feat(ai): add on-demand AI compression advice with customizable prompts
  • 7bc4bae908eb6e9a436b58fe4bca312273a2ccb5 fix(ui): rename settings section theme→appearance, default on entry
  • 34a014a37deecc8df02d7e2335cbea95387d841f feat(ai): add batch AI Tag/OCR from Browse selection toolbar
  • fda73b6d46547a46af2158795f53a8e8aa75c3b4 feat(ai): normalize all VLM images via Rust imgtools before sending to provider
  • 11c2923aa81138a3799a85f2735256703191c7a6 feat(ai): add oMLX provider, API key, timeout, collapsible settings, and fix model-scoped filters
  • c6444f2dc5e67b0f099a458dd8a4e5a035a1a64c fix(ai): increase VLM timeout, collect per-item errors in activity UI
  • 45a11ef57b404c73cc40f5ba0c1b01334c4a4c70 feat(ai): use resvg for SVG rasterization in VLM image preparation
  • bab0dbac37a96ad3a3436468fe410ca1c76c931c feat(ai): add configurable LLM concurrency for AI tag and VLM OCR
  • 6bd1bf16d1b49f6ad705cd71bd508512a18ff906 feat(ai): track token usage, persist last run result, add settings shortcut
  • 042be7b5f2b0488833e2f05e6100daec33ad6067 fix(lint): remove unused filteredWithoutCustom variable
  • 81ce931ade287805ab21acb1ada18b0c2c9e9618 feat(ai): add AI fields to custom asset filters with operator descriptions
  • d61e1521617cd4ff80284093efad5425fcaa2c5e fix(lint): resolve eslint errors from previous commit
  • ad4abe9e0cf137bcffc0a55d64e32b4a019b755b feat(ai): add VLM OCR filters, custom OCR prompt, AssetDrawerAI, and code cleanup
  • 090ba5d07b92fc174638022d79852d6df4eb487e feat(ui): add prompt editor guide explaining required JSON fields
  • 5e2bc6d5ae1ac83dd60a8af1e57b967e76b4655a fix(ui): show default prompt in AI tag prompt editor
  • e864b2186c78ca6b58713f7306369a43c81b7fcf feat(ui): add prompt editor, AI category strategy chips, and languages display
  • ba3adc440f6595bcd3407d24589d3dc3275479cc feat(optimize): match strategies by AI tag category
  • 3849313f7f7c6271f5a39a4e4acefa4caa176546 feat(aitag): expand categories to 12, remove prompt_version cache key, add custom prompt setting
  • 257cd72d0ec9751e3ac446f759541faccbd5dbcf docs: add #25 AI Content-Aware Compression design spec
  • 516ec0276e66ede3fe0ffcf45f4daa401280f724 fix(i18n): clarify OCR cache clear includes AI OCR results
  • aaa7021d923d31121ce67bdefe089e6450557291 fix(ui): remove unused variables and clean up VLM-OCR wiring
  • 0b7cae9edff02a71bee9c6caa1d8e261f3b68964 feat(ui): wire VLM-OCR activity, AI OCR card, topbar indicator, and i18n
  • 78dbf452e98f55a24e96e6bedb0c8ea5055282f4 feat(ui): add VLM-OCR activity state machine
  • ef3fe28c43b1e34f0d36e01b1b062db212009381 feat(ui): add VLM-OCR frontend types, API function, and mutation hook
  • 490ae5354e77ba92aacba0bf87221a1f94213c85 feat(catalog): prefer VLM OCR results over Tesseract in enrichment
  • df110597c9985912d2697cba152d89e2ef4436ab feat(vlm-ocr): add VLM-OCR NDJSON handler and route
  • 3121336535c2fe00f73bcb96bed1466624c6146e feat(aitag): bump prompt to v2 with language detection and add languages_json column
  • df136dbf2606a36547b6028705f3ca81918547a4 docs: add #20 VLM-OCR Upgrade implementation plan
  • 2805dfc748d2bafb6de9d750a367f5bdf3968c42 docs: add #20 VLM-OCR Upgrade design spec
  • f6f0294c57de96d9f143895980d6782072590656 feat(settings): replace AI provider Select with enable/disable Switch
  • 4904134d03a0a85cc93003dba2def481b0f31e8f Merge branch 'worktree-feat+llm-provider' — LLM provider architecture + AI auto-tagging
  • bcbc1509587bb35063718854c5342b50b12a23c2 feat: AI tag activity UI, hybrid MIME fix, OCR/AI cache clear, and icon refresh
  • 9dd118af99f1ee2f849dbb4ea2b133231ec20560 chore: lint formatting fixes and devcontainer port-collision guard
  • 2bede1fcb08c1607bff2775a29f1e3ce747727a2 fix(ui): handle empty-string value in Select to prevent Radix crash
  • b119dedc8853ab7e7b752792b13e3f5f37eba46d fix(devcontainer): write .env file for reliable Docker Compose vars
  • 0237ed19387ded6c9edb3b1204c1fbdd107926dd fix(devcontainer): use absolute PROJECT_ROOT for volume mount
  • 088227576f127390c5a001157d72125ad871054f fix(devcontainer): use dynamic ports in start-dev.sh help text
  • 90d6eb7cceb8a5fa4a75bb93959a9d70bebfb02d fix(devcontainer): pass PORT flag to all devc-* Makefile targets
  • bc1196cfd260d385c03f80aff2f52c44b2f1a0e5 fix(devcontainer): read AISETS_PORT/AISETS_UI_PORT in ui script
  • 4600dbd2ea62a8dfc576500515c9146ece107120 fix(devcontainer): set COMPOSE_PROJECT_NAME with --port to isolate stacks
  • 17439be9e1dd35a6b9efd6061f4bb3c0517d0a29 feat(devcontainer): add --port flag for parallel worktree containers
  • 48394997c8717cd3ec7bf691c7acd08ed192bd19 feat: support AISETS_PORT and AISETS_UI_PORT env vars for worktree devcontainer
  • b87c4f4a4af76581299a9fe979861f034e8cbd7e feat(config): read AISETS_LLM_ENDPOINT env var for default endpoint
  • 093bb67118322a54f2e66c8525dccde7e61776a5 refactor: simplify AI tagging code after review
  • af1e763d7e83eec8e002e133cb74b3650eddbe2b feat(i18n): add AI tagging translations for all 5 locales
  • 238d8902fd047931549b5dc7c7fe1e87f8de2ed3 feat(ui): add AI tab to AssetDrawer showing category, tags, description
  • 70bba25bdd0cefb7258215a68d7d39a18a5e6dd0 feat(ui): add AI Tagging button and Category facet in Browse
  • dcafb93f5d363620514eef714bd3ba09ed3d3ef9 feat(ui): add AI tagging types, API, and NDJSON streaming mutation
  • 81cc1dd8f833bf2fee2c36556e3a2385d5336912 feat(server): add NDJSON AI tagging handler with cache and dedup
  • b715a2ef7f600f84d7cf7a61f8740f803c0671d7 feat(catalog): integrate AI tags into item queries, search, and facets
  • fe66ad8e4952510c5d4d6fac07a1318e5742f58b feat(config): add ai_tags table and CRUD for AI tagging results
  • c23e25f1566a6d4a4c80f83f68894c73e6452242 feat(aitag): add types, prompt, and constants for AI auto-tagging
  • 4325e4e5a074047d46c595ed17b990f4bc57ce88 feat(ui): add AI settings section with provider/model/status controls
  • 1787f81a51beeb79b984a24f79725f33c17f7198 feat(ui): add LLM types, API hooks, and AI settings scaffolding
  • 01b85da70495ef0a76a4aa539b213b58b421613c feat(server): add LLM provider init, health/models endpoints, runtime status
  • e3f82b20788e6152c807200badb41c225cea7dbc feat(config): persist LLM provider settings in AppSettings JSON blob
  • ae13f6174dd11b8290beb5f8dae7c215e3dc64eb feat(llm): implement OpenAI-compatible provider for LM Studio
  • 3b5f1a43edc90f9c01d50c819f438f76dc2b171e feat(llm): implement Ollama provider with httptest coverage
  • 0843120133b125819ff8cde8be413a362be2a9a8 feat(llm): add Provider interface and shared types
  • 79209358284b79385c334c4799212ba0c8a6264b fix: record accurate scan duration and lock workspace switch during scan
  • ecc751f98312bb223201d63f018c90dd243c5b83 fix: align optimize filters with server totals
  • 90c77ae3e2d560de1bf9f466d2a241002951d51e fix(ui): show contextual suggestion for SVG operation_unsupported rows
  • 528e2f7c428acb2f2778b5e32ae6549a74ccb9c8 refactor(test): split server_test.go into focused test files
  • e637f01df411be5af17f94332115746c6e97b24d fix: preserve analysis during fast rescans
  • 4143ee4d8ebc3a4ad6a303371fe7eb2ce53e2279 refactor(ui): extract shared ScanProgressContent component
  • d802ab4934c889ba23a89b7729537483f0eb05ee fix(i18n): translate remaining English strings in scan profile and analysis labels
  • f313250280002282947ef347f6a142d30472a2b0 feat: add scan-on-open guard, project add result handling, and scan status polling
  • 4b25db9bd33390d6a3986d604d66087d54ebe7a9 fix(ui): improve scan status polling and topbar dropdown lifecycle
  • a0be91b2355da9b9915cf79e1bc9b258439d6a99 feat(ui): add closable prop to Modal and lock DirectoryPicker during add
  • 6610120ccdf5386a2d3af44eb6b52b3b39dff5c5 fix(devcontainer): make ui script work without project args
  • 617e2212648b7e6abd7b0bf5e243a7529c94e469 refactor: rename remaining asset-studio references to aisets
  • 3564ddcfa93746f17ec90eaba6a12f8da1b449fc refactor: rename Go module from asset-studio to aisets
  • c9139902012710441d447dbc5a8466917a1d9ebd feat(ui): improve empty states, scan progress reconnect, and settings UX
  • 2b05a8ac708aee98ffb3a3b80fbd3f8416113b1f refactor(ui): simplify NavSidebar footer to show only identity and last scan
  • b446aa73b52e3792ffcef549ec71032d9d16343b fix(ui): prevent image clipping in compare panels and variant cards
  • 489a95bf5b657cb5008c12dd47805e195bc7859a feat(i18n): add optimized-variant translations and document batch/detail parity rule
  • a7aac4ea86514a87160ea39335b07c3eabb28c96 feat(ui): show optimized variant cards in asset drawer header
  • df433795f3d8908a04a97c9c031c36f90c3fe20d feat(ui): show optimized status in Browse and Optimize views
  • 129292203d8f814c2c471f42c31215851b460554 feat: detect and persist existing optimization variants during scan
  • 2e6a4bc2424044767b277d0bdc6a498d86e4e9bb fix: avoid decoding gif frames during metadata probe
  • 22141b9b6131e1fe66929ce7d903fbe68292f0d3 fix: invalidate asset cache by content hash
  • 032b3f12a92100c750ec8283f11173447aed5b5c feat: rename project from Asset Studio to Aisets
  • 905ec99d6beef20f6871e4ef6e53b955c533e04a feat: restore OptimizeView loading state across navigation and add copy-filename button
  • 8d900214c7fe3b52b119221b073b32b4f3f3010f fix: optimize apply error handling, selection UI, and target-exists detection
  • e58385ee8926db092f44e551c998dc00793303cd feat: optimize view decomposition, severity facets, format overrides, and UI polish
  • 6ca18cc2943a94eb752ba084a49ba698e64c2707 feat(ui): redesign optimization settings for beginner-friendliness and cursor-following tooltips
  • d308d30dff58d4593a028e816f9abe0e3c971c22 feat(i18n): optimization settings translations and CJK trailing-period cleanup
  • e5ce8775089933004dbe554adb11200206a5d789 feat(ui): optimization settings cards for strategies, thresholds, and external tools
  • cf11666aff00791548a4111160b56e503ae46703 feat: configurable optimization strategies, external tool detection, and strategy-based planner
  • 3708b8f55cb3d61d4fea7dff684b89f7ec5296ee feat: optimize flow blocked-item filtering, activity stage tracking, and batch type unification
  • 07d3c244187ff8db6dc542ca8c321fd20e7d6e89 feat: batch copy-to-path action and DirectoryPicker mode awareness
  • 5284c446d0af1b0d9959e664cb6f05b1a5cd8946 feat: optimization activity tracking, cost-based ordering, and tool timeout
  • 8db2620d4a599fa79d6780f6d5d3ccbf70c1f8a9 refactor(imgtools): rewrite animated WebP encoder with delta-frame compression
  • 875b471590a41309f60cf4ddd226f90fd32c3bfa fix(ui): add surface wrapper to image preview popover
  • 70c081917c9c9fd1ed38dee15fe12a6f3271f24f style(ui): refine toast tone backgrounds with color-mix blending
  • 739583d01dc586884fa22c28b8e8ec5c084ea975 feat: optimization settings (workers, AVIF speed), animated WebP encoding, and brand assets
  • e135c7d158bb03698c3ebb1c38c1348e7333327c feat: streaming estimation, quality from settings, and animated GIF guard
  • e6fc2181317a827a671eaba189c2fd4761bf898c feat: imageproc→imgtools integration, optimize rules by format, and devcontainer auto-setup
  • be9dbc28a09b564046b914aacdc8f251fa5e0109 feat(imgtools): add probe, dhash, visual-distance, and thumbnail commands
  • 597c2beb2af13fc6e2e40e1233601013d999c354 feat: route all image operations through Rust imgtools
  • cd926c7ee6364ef3d4d4d5fb0506bcd2f3092987 feat: add Rust image CLI (asset-studio-imgtools) with Go embed support
  • 05aac63e00434cdb1dd206712a88f81e8bc9cf26 feat: optimize view split, GIF→WebP fallback, cache toast, and help popover scroll
  • a2a392f76a565ed42575058f942f5b474230785c feat: scan history view, duplicate group members, OCR dedup, and simplify fixes
  • 8833e4fa2ea59a4099d274cfb8046fb14c9379e5 feat: redesign lint view, OCR content-hash dedup, and exclude pattern improvements
  • c9eeed3944058a05529635a1fa0405587679e139 feat: support intent-scoped exclude patterns
  • 174819accaf085e6b7a95e47d9c44a9206fedd37 feat(ui): improve ProjectSwitcher trigger layout and contextual avatar
  • e951476d375b049656be5d0eabe2f92392f9e067 feat(ui): redesign sidebar footer, add StatCard animation, and add composite index
  • f9960312653a4b25de0d89f7d093cf5e037cf6e6 feat(duplicates): server-side cross-filter facets, project scope, and near-duplicate filtering
  • 84e0f0052fde87ec12365599ce4c024c54a7e505 docs: add virtual scroll, server-side filtering, and lazy load rules
  • 6f8c63bab5f3fe845c5c90d884d8154b83ce80c3 feat(i18n): rewrite status help in plain language, rename notApplicable to asset pack
  • 2886803afeaaf8309e79f8888e55eefdbb226a59 feat(ui): redesign status help as Radix Popover with semantic color dots
  • d28ae60166734f0618e7d76bce0beadb20746e95 feat(ui): server-side filtering, virtual scroll, and scan intent across views
  • c704cc636e0f3d468447401643bc681fd4815522 feat(ui): extend scan intent, appScope stats, and API params for filtering
  • c402b0ce74173a81ed51d7c48464de5376452624 feat(backend): add server-side filtering and facets for duplicates API
  • 8aa143f275f834d4d5e3d64946c512126f5fcd9c feat(scan-intent): enforce scan-time intent snapshots and polish directory picker UX
  • 800e98d4f10aa3bef0749763da930db539278ff4 feat(scan-intent): add project scan intent system with precheck UX polish
  • 1419107b1964532992f978f09e6adb9862caf3dd feat(precheck): acquisition-grade redesign with unified StatCard system
  • d27bf05b9c4483a677b9256cad26b45ff32e4ad3 feat(duplicates): add FilterRail sidebar matching BrowseView layout
  • f4640730ab94424430c36836781bcb28ce71cbce feat(ui): add SPA-level OCR activity with topbar status, remove standalone UnusedView
  • 515b109482b85c1b9c547a323ab6b5c034f82713 feat(duplicates): shared ComparePanel with 4 modes, widen drawer to 800px
  • 2405fcce0d24478a598b5cdbc618fab81a01959b refactor(ui): extract Range primitive, align Checkbox to active tokens
  • 9a1d57e6a3ccaeab75a63f40f374478425d39c9f feat(imageproc): add VisualDistance and IsVisualMatch for near-duplicate filtering
  • e9fe2f085866082b63d7d9b424139d42fb5b30e1 fix(duplicates): reset selection when switching tabs
  • 0f6707ac1a6bd31e40f27a20eb360081d0ef7678 feat(duplicates): make group header row clickable in bulk mode
  • 961c735519b5fba4a46c49c9e704b6c32661e7a8 fix(duplicates): require bulk mode for tile selection
  • 98e3e96060909b8c5eca9c5d708229b59f3b3ee3 feat(duplicates): click tile to select, auto-enter bulk mode
  • c781c635413b475e6a77fa40ede8ba705b0bbf47 fix(duplicates): derive extension options from visible groups only
  • 05650906aceb448d6b4cffd0dd03f90abdba8d61 fix(duplicates): use md (32px) height for extension filter Select
  • a99fc08484922ef4845e7955259ff1515a28b33c fix(duplicates): constrain extension filter Select width
  • e4927d3c85cdec18761239bdaf637e123b8d8101 fix(duplicates): use sentinel value for extension filter Select
  • 6f96a8ccaa8ad7d12cee40c1aeaca638d1002510 feat(duplicates): redesign page with selection, batch merge, stats, and search
  • 8e39d168df2bdeb9059389b727240c420c0ce646 refactor: batch catalog data loading
  • e3087ef981616e79abe5b25434f89837ef6e2038 feat(ui): redesign Toast with CVA variants and per-tone colors
  • 6b202171017cf82482142648399b4567238a98a2 fix(references): require path boundary in suffix matching
  • 6fa5af3bf5609dd9e0438b767f763531db0d84f1 fix(ui): improve asset drawer layout and zoomable image behavior
  • b94ca2bc2c0ed4b8ee5d2a5e09fb63f442c076db refactor(settings): split into section components with per-section reset
  • 6b589eaa9df5bf9e8b56a717f519b47fddf9c229 fix: show complete optimize totals
  • 29b2afa9a346e0be702110afab677bc3b2cfaebe feat: add optimization thresholds
  • d78e65b080fa3bc918249a0f6eea75b991a179cd feat: support project icons
  • f726e111899a0f62ef54c2fedf79c011163edf8c refactor(config): split catalog_queries.go into cohesive domain files
  • 823724d87c1f3d9206d5d671ee19d4e00ca2e650 feat(optimize): use server-side query instead of client-side filtering
  • eed0704278b97998ce3eaae896f4738cff9db6a2 feat(ui): show notice when near-duplicates auto-skipped for large catalogs
  • e5754bacd765373ff3c815dd3ba4446bc5734a2e perf(scanner): auto-skip near-duplicates for catalogs with 10K+ assets
  • fa7853162e8bfcab088c620e147f41bfcadf7eef fix(catalog): include optimization count in paginated list items
  • 62fa460b629ff884357a701b86ed56aa3c604ab1 fix(server): auto-rescan when analysis settings exceed last scan scope
  • 70974684f16665a3df8159127ecabf22b48e2e7b fix(drawer): add open-in-editor with absolute paths and fix reference scanning
  • 4c3ab6fb9f31f273c935edec4d14eb8fdeb9ade5 style(drawer): optimize asset drawer UX with preview-first layout
  • 53bcbca1fbcee66f834141211f7fd000287f3190 feat(ui): migrate views to server-side pagination and infinite scroll
  • b449c9ef7d32baf33a00dd441fa585366c00f82a feat(ui): add paginated API client, infinite scroll hook, and data layer
  • 25c32c97f9ec7a6a890e0c72f302607e8d928628 feat(backend): add scan profiles, catalog pagination, and detail endpoints
  • 6888cddd677123f83665af3a5edd5b2a05afee1f style(settings): split scanning section into grouped cards and improve UI consistency
  • 91aa03b15d4720882a3555a1eecd069da15ebd2d style(settings): redesign workspace and projects tabs with card-based layout
  • 92f07f20844e95c4eb2fae3ca6795030b5bb5ac7 style(browse): improve action bar button visibility and remove red delete trigger
  • be395a79f0990fb74380710a972e9fa40b2a9327 feat(browse): wire batch export ZIP download
  • a078c3a8e677633f631432e34eaa95d6d055db0a feat(server): add POST /api/actions/batch/export ZIP endpoint
  • 2bc20ba3e54a1af6498e435ead2d0a1259e056f3 feat(browse): wire batch move and rename with preview modal flow
  • 68ddff48e2b4dbdb0c8cc4c3e0f38510bfec30f9 feat(ui): add BatchPreviewModal and RenameRuleModal components
  • bbfa92181ca666e4964f42ba9bc231b38e8f4a8d feat(server): add batch move/rename HTTP handlers and routes
  • 8c0bdec72b1d30826b884f525c5a07282ddd5bb4 feat(actions): add BatchRenamePreview with rule-based name transformation
  • 0383c1786098b44868455cbc2876c01c6e599e0d feat: add BatchMovePreview and BatchApply for bulk asset moves
  • fbb13ffc87120ae534da0acfe6836f359251345f feat(ui): wire batch delete with confirmation modal, remove git rm
  • db32ed23c02e6f66378b795fca0c5f40ed342ebe feat: add batch delete HTTP handler and route
  • abd5209465003f7d0f393e3f2a52779551b37614 feat: add BatchDelete action for bulk asset removal
  • 2083140d0fd92c277de3f420ff27cc220d302414 fix: stabilize asset drawer duplicate actions
  • bc470924289dc30bdbdcc8a0b0f3eaa2f9e2bc9c fix: exclude test references from scans
  • 1ebf87981e3fa7b28dc0b151d1f3081411fbc811 fix(ui): improve overlay layering and preview controls
  • 95b1e92f49292bb338664dc8d38412a5e2e1ade3 feat(ui): redesign AssetDrawer into tabbed detail panel with comparison tools
  • 57d722389aa1ad5da4a08884e7e82c00eb171bc1 feat: add OCR asset discovery
  • fd0463841c46a6f378af97bafa2eebb377e0558c refactor(ui): extract shared button class constants in SettingsView
  • 78117d7eb7c04b5552119b62e33fdd192674af03 docs: slim DESIGN.md to pure reference, move rules to skill
  • e784ea80de50c3922a98842adf86a5143b96763f docs: optimize design-system skill — better triggering, explain WHY, cascade docs
  • 5c68b3c7ffd435e8cb59a1701279a7c9440c4a57 feat: extract UI design rules into auto-triggered skill, slim CLAUDE.md
  • 75d9849b43513a253c0a5f6af5475af5d6ffe3b8 docs: rewrite DESIGN.md and CLAUDE.md for post-migration styling architecture
  • a8016247cb6dad483d7ba90513c2f51ee64e9669 refactor(ui): delete _components.scss and _layout.scss, slim globals
  • 5c4474d2c11a509a580ec0d87325d45414c0daba refactor(ui): migrate remaining SCSS class references to Tailwind
  • 46d1b9091ddb5e9731b52d6795285c7f3fb0f797 fix(ui): refine transient and input states
  • 86714b315daa650354015f23b136adc451eb851d fix(ui): improve control contrast
  • 1a34985a5bdb65a697cf55a13ac016e1995734a5 feat: refresh dashboard chrome layout
  • 91e1789a4b5dd37ffb587ca2c921a2d13e80e717 fix(ui): use w-[320px] for topbar search, remove w-full from TextInputButton CVA
  • 0dabd3be122aa5aa6ed3b27b18059ced34d8dd5c feat: stream scan progress
  • b82e26dae7d59fa0379c5f6d6a2352aa0bcc9e89 refactor(ui): migrate AppTopbar, NavSidebar, AssetDrawer, AssetCard to Tailwind
  • 3297d7d0945785b4b4e4bd15b4ec172a3758425d refactor(ui): migrate OptimizeView, DuplicatesView, UnusedView to Tailwind
  • 023767d6449bda371849c29ecadc8c77fc4e9d49 feat: add custom asset filters
  • eac8f7b1fe25263d6f1abc54d9fa7733acb0bdfd fix(ui): correct BrowseView scroll padding after SCSS migration
  • 974940c56cc82b989d1203bed6137a56c66bd52f refactor(ui): migrate Browse views and FilterRail to Tailwind
  • b54afe6b8e49e87766fd410785cf96fbc10f154c refactor(ui): migrate PreCheckView, LintView to Tailwind
  • 455ebdb2d8b3ec545ad8804b5ea5388a9688b539 refactor(ui): migrate DashboardView, CommandPalette to Tailwind
  • 8f8ab5580fc34a4d940e60298eabe81ff21be991 refactor(ui): migrate SettingsView, ProjectsView, ProjectSwitcher to Tailwind
  • 08abb28e99caaae500553c431c3dc4efe6595fe3 feat(ui): add shared keycap component
  • 9300b50b0bceaf16a48f4f3b0a7683c77d16c587 feat: make ui command persistent
  • 778c789a39f6a9f7094df95736bd392cc2b0bfdf feat: sort projects by import date
  • a2f89d7533fb3c9c9bd475f3a6f70e89e0379f38 feat: add workspace management
  • 052a2fd12b22ad6584ba1d22ecf9ab9eb828c901 refactor: improve codebase structure
  • 1699ab33ddb02eb55796e2dbd60d93ae7c9bd3c6 fix: align project switcher menu states
  • 974914017848ccc27876ff28c55dff26c198e264 feat: add scan history diff
  • 60a5635fb39b76d9dfea4d78717b378d2ff49d2d feat(cli): add automation commands
  • 646bbec23074fa5539faae15668a1554bfa61d15 fix(precheck): match uncached exact duplicates
  • 98028fdab3588c5048d807d7c8b5a78f6d3cdc5d fix(ui): keep registered projects in browse filter
  • 383006c520cf8ccd01ea40a3edd974d059c61309 test: remove unused config home setup
  • eadd3e8a08e621ce6333944cb4b1fb22775d1cd4 refactor(ui): migrate SegmentedControl, ImagePreview, ScrollToTop to CVA and remove SCSS
  • ba0914c4548b5184c8a272026a5b5a738b0aaacb refactor(ui): migrate Notice, Toast, AssetThumbnail, StackedBar to CVA
  • 81c71a6e69f56730fc25b857259666b154cf0449 refactor(ui): migrate Card, StatCard, EmptyState, IconWell to CVA
  • 1652992bcbabd37f57b01cde7af2e9b24e6afcc1 refactor(ui): replace Tabs with Radix Tabs primitive
  • fd31a316be2c2b2bd75619bbd9336b0565c08aaf refactor(ui): replace DropdownMenu with Radix DropdownMenu primitive
  • 671fa4924395b494e61cf587aef2b2db0508097f refactor(ui): replace Select with Radix Select primitive
  • 55173f4d0786e42d238962149e67ebcb3a7f4126 refactor(ui): replace Modal/ConfirmDialog/PromptDialog with Radix Dialog
  • 775808faa1b811da78225f5843f0c05ee020925f refactor(ui): replace Tooltip with Radix primitive, remove SCSS
  • 7b734cd7980e736ab5be605f089b4fbf436103b8 refactor(ui): migrate TextInput and TextInputButton to CVA pattern
  • f29789c656532eabde2c6bf047d81afa26fd3af8 refactor(ui): migrate Button and IconButton to CVA pattern
  • f79b5fd4e71d27de65aef127247eff2ecf0fdadf refactor(ui): migrate Badge to CVA pattern
  • 9a49631b074c255ed533fa33f8dcd4099b88748c feat(ui): initialize shadcn/ui with custom token mapping
  • 5b4ef762807f2cffa843743c0f38b9ce531c41c4 chore: enable pnpm husky pre-commit hooks
  • 80a7fd557710669862bd6923217a17c0d08b98e9 feat(ui): add path alias and tailwind-merge for shadcn migration
  • 43fccde8e3c91e9e07b837b403be71d3e0350428 feat: init commit
  • 744926ce471265ffb46b3b528d6483251990a4cd Initial commit

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track runkids/aisets

Get notified when new releases ship.

Sign up free

About runkids/aisets

All releases →

Related context

Earlier breaking changes

  • v0.0.12 Renamed `Gemini` coding agent integration to Antigravity 2.0 throughout settings, backend detection, and configuration validation.

Beta — feedback welcome: [email protected]