3e73967c7b
UI overhaul to a darktable tone-and-manner and a set of features adapted from
darktable's proven patterns (reimplemented in our Electron/TS stack; no GPL code).
Design reskin:
- Dark neutral-gray palette + amber accent, flat/squared corners, no card shadows,
compact darktable-style top bar (logo + pipe-separated view tabs), denser 15px base
- Done via design tokens (Tailwind slate/brand/radius/shadow remap) — minimal churn
Metadata & collections (Phase A/B):
- exifr now captures GPS + camera; asset table ALTER-migrated (gpsLat/gpsLon/camera,
metaVersion backfill on re-index)
- Collection facet bar (year timeline / camera / color-label) filters the grid
Map & relation finder (Phase C):
- Leaflet + online OSM map tab; geotagged photos as markers
- relationService: related photos by place (GPS<1km) + time (+/-2d) + CLIP similarity
Easy mode (Phase D):
- easyMode setting (menu / onboarding); scales the whole UI (rem) + bigger thumbnails
+ large icon nav with plain labels (4050 accessibility)
Library usability:
- Video thumbnails (representative frame capture in the inference worker)
- Media filter (All / Photos / Videos) to separate them
- Clearer culling labels ("Good shots" / "To cull") + explanation tooltip
- Multi-select tiles -> Export selected to a folder (copy, best-cut extraction) and
Delete to Recycle Bin (shell.trashItem) behind a confirm dialog
- ONNX Runtime wasm bundled locally (offline) via copy-ort-wasm + asarUnpack
Docs: DARKTABLE_REVIEW (feasibility + roadmap A->D). All typecheck/tests/build green;
boot smoke verified each phase.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
/** @type {import('tailwindcss').Config} */
|
|
export default {
|
|
darkMode: 'class',
|
|
content: ['./src/renderer/**/*.{html,ts,tsx}'],
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
// darktable 톤: 앰버(주황) 강조
|
|
brand: {
|
|
DEFAULT: '#d98c3f',
|
|
dark: '#b9742e'
|
|
},
|
|
// 'slate' 스케일을 어두운 중성 회색 램프로 재정의 → 앱 크롬 전체 reskin
|
|
// (컴포넌트는 그대로 두고 토큰만 교체)
|
|
slate: {
|
|
50: '#f1f1f0',
|
|
100: '#e6e5e3',
|
|
200: '#d4d3d0',
|
|
300: '#aeadab',
|
|
400: '#8a8987',
|
|
500: '#6f6e6c',
|
|
600: '#454442',
|
|
700: '#2d2c2b',
|
|
800: '#232221',
|
|
900: '#1a1918'
|
|
}
|
|
},
|
|
// darktable처럼 각진(거의 평평한) 모서리
|
|
borderRadius: {
|
|
none: '0',
|
|
sm: '2px',
|
|
DEFAULT: '2px',
|
|
md: '3px',
|
|
lg: '3px',
|
|
xl: '4px',
|
|
'2xl': '5px',
|
|
'3xl': '6px',
|
|
full: '9999px'
|
|
},
|
|
// 플랫한 그림자 (카드 느낌 제거)
|
|
boxShadow: {
|
|
sm: 'none',
|
|
DEFAULT: '0 1px 2px rgba(0,0,0,0.35)',
|
|
md: '0 2px 6px rgba(0,0,0,0.4)',
|
|
lg: '0 8px 24px rgba(0,0,0,0.5)'
|
|
}
|
|
}
|
|
},
|
|
plugins: []
|
|
}
|