-
528b7004e3
fix(frontend): open original only when tapping the preview image
master
v3.0.0
H1K0
2026-07-06 22:36:16 +03:00
-
41c4667eb4
feat(frontend): enlarge viewer prev/next into full-height tap zones
H1K0
2026-07-06 22:35:47 +03:00
-
c3ed36f178
fix(frontend): fit PWA icons into maskable safe zone
H1K0
2026-07-03 19:50:57 +03:00
-
93e55e8e37
fix(frontend): show content date in local time, not UTC
H1K0
2026-07-03 18:41:17 +03:00
-
3f12b60261
fix(frontend): generate API types before svelte-check
H1K0
2026-07-03 18:22:48 +03:00
-
6d13fa425a
fix(backend): swap db name in URL-style test DSN
H1K0
2026-07-03 18:13:40 +03:00
-
a0a987d561
ci(project): run the test suite before deploying
H1K0
2026-07-03 10:57:16 +03:00
-
3e04da3926
docs(project): clarify API path vs product version in openapi
H1K0
2026-07-03 10:30:55 +03:00
-
87d3c27b65
style: apply prettier and gofmt
H1K0
2026-07-03 10:13:56 +03:00
-
36546c46c9
fix(frontend): clear svelte-check a11y and reactivity warnings
H1K0
2026-07-03 10:13:43 +03:00
-
ac27ea3176
chore(project): license the project under AGPL-3.0
H1K0
2026-07-03 10:13:29 +03:00
-
eb3cf72969
feat(frontend): richer pool multi-select and clearer date label
H1K0
2026-07-03 08:50:21 +03:00
-
4b6db84afc
feat: per-pool automatic file sorting
H1K0
2026-07-03 08:36:12 +03:00
-
28f5b5d150
docs(project): sync docs with code and bump to 3.0.0
H1K0
2026-07-03 08:35:16 +03:00
-
4883820f25
test(backend): encode the JPEG test fixture so it decodes
H1K0
2026-07-03 08:34:59 +03:00
-
a6a46af12e
feat(backend): graceful shutdown on SIGTERM/SIGINT
H1K0
2026-07-03 08:12:10 +03:00
-
bf7fa49a16
feat(frontend): support nested objects in the metadata editor
H1K0
2026-07-03 00:09:11 +03:00
-
76d9c35363
feat(frontend): show and edit file metadata
H1K0
2026-06-23 00:37:41 +03:00
-
71cf79eeaa
fix(backend): preserve omitted fields on file update
H1K0
2026-06-23 00:37:31 +03:00
-
a16accf443
feat(frontend): show keep-to-other distance in the duplicates view
H1K0
2026-06-22 22:42:14 +03:00
-
78b5e86dd6
feat(backend): report stored pairwise distances in the duplicates response
H1K0
2026-06-22 22:42:14 +03:00
-
281358ff04
feat(frontend): open cluster files in the full viewer for comparison
H1K0
2026-06-22 22:26:08 +03:00
-
d8cccbb9e0
fix(frontend): resolve duplicate actions in place without a full reload
H1K0
2026-06-22 22:20:39 +03:00
-
d7bfe6b596
feat(frontend): enlarge cluster images in a preview lightbox
H1K0
2026-06-22 22:13:38 +03:00
-
e5a731eb29
perf(frontend): lazy-load thumbnails via IntersectionObserver
H1K0
2026-06-22 22:10:12 +03:00
-
6fe6e4cd55
chore(project): lower duplicate hash threshold to 4 in example env
H1K0
2026-06-22 22:09:04 +03:00
-
6834b916cd
feat(frontend): replace file content from the viewer
H1K0
2026-06-17 17:33:22 +03:00
-
745fe38e63
chore(project): drop the docs/reference Flask snapshot
H1K0
2026-06-17 17:20:49 +03:00
-
43c5c12fb9
feat(frontend): add selected pool files to another pool
H1K0
2026-06-17 17:19:02 +03:00
-
c9b7f0701b
feat(frontend): keyboard control for the add-to-pool dialog
H1K0
2026-06-17 17:15:12 +03:00
-
b8d08925a2
feat(backend): take video thumbnails from the middle frame
H1K0
2026-06-16 15:14:04 +03:00
-
dc40729646
fix(frontend): shift-select in gesture direction, not grid order
H1K0
2026-06-16 14:54:32 +03:00
-
432b2d5b1e
feat(backend): audit event for pool file reordering
H1K0
2026-06-16 14:04:41 +03:00
-
47d9cae15b
feat(backend): progress bar for the dedup CLI
H1K0
2026-06-16 13:27:14 +03:00
-
595eb5e06a
docs(project): document DUPLICATE_HASH_THRESHOLD in .env.example
H1K0
2026-06-16 13:21:23 +03:00
-
19bdd3faa9
build(project): add one-shot dedup compose service
H1K0
2026-06-16 13:20:27 +03:00
-
16e68236a0
build(project): ship the dedup CLI in the runtime image
H1K0
2026-06-16 13:13:53 +03:00
-
dcbe640fae
feat(frontend): duplicates view, field-by-field merge dialog, api module
H1K0
2026-06-16 13:08:46 +03:00
-
96a903aaff
docs(project): document duplicate detection endpoints
H1K0
2026-06-16 12:48:21 +03:00
-
6e3e6a4194
feat(backend): dedup CLI (hash backfill + pairs rescan)
H1K0
2026-06-16 12:46:40 +03:00
-
9216a8687f
feat(backend): duplicate pairs, dismissals, and merge resolution
H1K0
2026-06-16 12:42:37 +03:00
-
88849cc16b
feat(backend): perceptual hashing for images and video
H1K0
2026-06-16 12:20:52 +03:00
-
58cea88f52
fix(project): drop external dockerfile frontend directive
H1K0
2026-06-16 12:15:23 +03:00
-
b25085bcd7
feat(backend): set application_name on database connections
H1K0
2026-06-16 10:51:37 +03:00
-
cf6c312e04
fix(frontend): don't treat empty 2xx bodies as request failures
H1K0
2026-06-16 10:43:23 +03:00
-
da4ce37aff
fix(frontend): use opaque background icons for PWA install
H1K0
2026-06-16 10:39:41 +03:00
-
70d12615b8
feat(frontend): keyboard navigation for tag and category grids
H1K0
2026-06-15 23:36:36 +03:00
-
97d6daaa13
fix(frontend): stop trimming the file grid while scrolling
H1K0
2026-06-15 23:27:19 +03:00
-
95db88388b
feat(frontend): add MIME filter controls to FilterBar
H1K0
2026-06-15 22:52:12 +03:00
-
a864ca4f7b
feat(frontend): review-status filter, badge, and review toggles
H1K0
2026-06-15 21:17:11 +03:00
-
5bb53d7f9d
docs(project): document review status (filter token + bulk/review)
H1K0
2026-06-15 21:17:02 +03:00
-
48e901cac1
feat(backend): per-file review status with DSL filter and bulk endpoint
H1K0
2026-06-15 21:16:47 +03:00
-
4d11beb296
feat(backend): import server-folder files oldest-first by mtime
H1K0
2026-06-15 18:16:24 +03:00
-
57192a49f9
fix(backend): apply auto-tag rule to existing files on creation
H1K0
2026-06-15 18:09:31 +03:00
-
9937984a5a
feat(backend): reject non-positive token TTLs at config load
H1K0
2026-06-15 17:56:25 +03:00
-
6fba04cd00
docs(project): document the content-token endpoint and CONTENT_TOKEN_TTL
H1K0
2026-06-15 17:53:30 +03:00
-
35b1b2e6d5
feat(frontend): use a content token for the open-original link
H1K0
2026-06-15 17:53:20 +03:00
-
98de298e5b
feat(backend): file-scoped content tokens for media URLs
H1K0
2026-06-15 17:53:10 +03:00
-
b470782e97
docs(project): add README with reverse-proxy and quick-start guide
H1K0
2026-06-15 14:52:09 +03:00
-
5a05bb86e1
build(project): publish app on loopback and segment Docker networks
H1K0
2026-06-15 14:51:57 +03:00
-
99668ec0d8
feat(backend): trust reverse-proxy X-Forwarded-For for the client IP
H1K0
2026-06-15 14:51:44 +03:00
-
88e07f0723
build(project): install vips-tools for image thumbnailing
H1K0
2026-06-12 01:25:55 +03:00
-
384386a34e
feat(backend): generate thumbnails/previews via vipsthumbnail
H1K0
2026-06-12 01:25:55 +03:00
-
e694f17be9
docs(project): document THUMB_MAX_PIXELS and THUMB_CONCURRENCY
H1K0
2026-06-12 01:07:30 +03:00
-
2d2a42d523
fix(backend): bound thumbnail generation and decode larger images
H1K0
2026-06-12 01:07:30 +03:00
-
a371045b41
fix(frontend): keep auth tokens in sync across browser tabs
H1K0
2026-06-12 00:13:13 +03:00
-
da867406e2
fix(frontend): let a tag be created/edited without a colour
H1K0
2026-06-11 23:31:59 +03:00
-
21c7aa31ea
fix(backend): store an empty tag colour as NULL
H1K0
2026-06-11 23:31:59 +03:00
-
4def59c86d
feat(frontend): log a pool view when the pool page opens
H1K0
2026-06-11 23:20:46 +03:00
-
d345839634
docs(project): document the pool view endpoint
H1K0
2026-06-11 23:20:46 +03:00
-
7d0ea4e388
feat(backend): record pool views to activity.pool_views
H1K0
2026-06-11 23:20:46 +03:00
-
38572b1c80
feat(frontend): add "add to pool" button on the file viewer
H1K0
2026-06-11 21:58:01 +03:00
-
fedfa8df3a
feat(frontend): tie-break category-name tag sort by tag name
H1K0
2026-06-11 21:47:55 +03:00
-
cb1588ecc0
feat(backend): sort tags by category then tag name
H1K0
2026-06-11 21:47:42 +03:00
-
73ae8a046f
feat(backend): record tag usage in filters to activity.tag_uses
H1K0
2026-06-11 21:40:13 +03:00
-
6a3bb9ff51
feat(frontend): stage Escape in the tag editors to clear, then exit
H1K0
2026-06-11 21:27:06 +03:00
-
ca3bca59e7
docs(project): document the import progress NDJSON stream
H1K0
2026-06-11 21:15:50 +03:00
-
c8bd8512ce
feat(frontend): show import progress bar and per-file status
H1K0
2026-06-11 21:15:50 +03:00
-
129cc59793
feat(backend): stream folder-import progress as NDJSON
H1K0
2026-06-11 21:15:40 +03:00
-
5571dfa46d
chore(project): install exiftool in the runtime image
H1K0
2026-06-11 20:55:33 +03:00
-
52c62b5c8d
feat(backend): extract rich numeric metadata via exiftool
H1K0
2026-06-11 20:55:23 +03:00
-
0b0f797fae
chore(project): name the app container tfm
H1K0
2026-06-11 20:34:30 +03:00
-
48ea1fe720
fix(frontend): make the grid actually follow keyboard focus
H1K0
2026-06-11 20:19:08 +03:00
-
af9f4c77db
fix(frontend): let Escape leave the tag search field in the viewer
H1K0
2026-06-11 18:47:34 +03:00
-
76dcb8721a
fix(backend): serve original content with byte-range support
H1K0
2026-06-11 18:40:49 +03:00
-
cefa33c00d
feat(frontend): focus the returned file when leaving the viewer
H1K0
2026-06-11 18:33:30 +03:00
-
6e5c4dc623
feat(frontend): admin "Import from server" panel in Settings
H1K0
2026-06-11 18:23:22 +03:00
-
1b04d67e20
feat(backend): drain import folder and keep mtime on server-side import
H1K0
2026-06-11 18:19:59 +03:00
-
bce79867e4
fix(frontend): scroll the grid to follow the keyboard focus
H1K0
2026-06-11 18:01:35 +03:00
-
e39cda9ec4
feat(frontend): keyboard range-select with Shift+Space / Shift+x
H1K0
2026-06-11 17:59:16 +03:00
-
94d100675e
feat(frontend): make keyboard shortcuts layout-independent
H1K0
2026-06-11 17:55:39 +03:00
-
19ec96c544
feat(frontend): focus the page search box with / on the list sections
H1K0
2026-06-11 17:43:24 +03:00
-
49e68cc263
feat(frontend): keyboard nav for the bulk tag editor
H1K0
2026-06-11 17:42:02 +03:00
-
3a0dbc9ba7
feat(frontend): keyboard nav for the viewer, tag editor and filter
H1K0
2026-06-11 17:40:03 +03:00
-
9a20cc1c84
feat(frontend): keyboard roving-focus and bulk-action keys on the file grid
H1K0
2026-06-11 17:30:13 +03:00
-
49de9fe42b
feat(frontend): global keyboard navigation and shortcuts help overlay
H1K0
2026-06-11 17:24:39 +03:00
-
2b39af8c1c
feat(frontend): cache Tags/Categories/Pools lists across section switches
H1K0
2026-06-11 17:20:48 +03:00
-
05af819b3e
feat(frontend): cap the Files grid at ~4 viewports with edge windowing
H1K0
2026-06-11 17:03:43 +03:00
-
e93240ff79
feat(frontend): restore the Files grid and scroll on return via section cache
H1K0
2026-06-11 16:56:33 +03:00
-
370dfd95bc
feat(frontend): remember each section's last list URL in the navbar
H1K0
2026-06-11 16:53:00 +03:00