Repository navigation
Web UI frontend: Vue 3 SPA, Docker build stage and CI job - #520
Merged
Merged
Conversation
Vue 3 + Vite + TypeScript single-page app in web/ (dashboard, duplicate groups, group detail with override actions, runs, action log, config hints), served by the FastAPI app of the daemon. Adds a node build stage to the Dockerfile and a lint/type-check/build CI job. Originally #519, replayed onto master after the backend was squash-merged in #518. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces #519. Same frontend changes, replayed onto master after the backend was squash-merged in #518. #519's branch had backend history that conflicted with the squash.
Second part of the web UI (
dedup.markusressel.de), stacked on #518. Until #518 is merged, the diff also contains its commits. Review only the commits from "Add Vue 3 web UI" on.What
web/, with vue-router and no component library (about 40 KB gzipped JS in total).duplicates_target_directory.node:24-bookworm-slimbuild stage runsnpm ci && npm run build; onlyweb/distis copied into the Python image (PY_IMAGE_DEDUP_WEB_STATIC_DIRECTORY=/app/web/dist). The rest of the Dockerfile is unchanged. Image size is 443 MB (was 433 MB).Web UI (lint, type-check, build)job intests.yml(npm ci,eslint,vue-tsc+vite build). Dependabot now also updates npm (weekly, one grouped PR). Codespell skipspackage-lock.json.web/package.jsonand the lockfile is committed.AGENTS.mddocuments the frontend commands (npm --prefix web run devproxies/apito the daemon on:8080).TODO.mdweb UI items are ticked.Verified
npm run lintandnpm run buildpass.poetry run pytestpasses (66 tests).tests/images/with dry run on. The SPA is served on 8080 with client-side routes and the live dashboard updates during a run. Groups, group detail, run, action log and config pages were checked in headless Chrome at desktop and phone width. A keeper chosen in the UI was executed assimulatedand no file was touched.more-exif-data), or bybigger-file-sizeover the grayscale variant when the EXIF counts tie, although the original file is bigger (4.7 MB vs 2.8 MB).Found along the way (not fixed here, added to TODO.md)
On ES 7, documents are nested under
_docin_source. After a daemon restart,cleanup_databasetherefore fails withKeyError: 'path'for every entry, files get indexed again, and the same file is returned several times as a duplicate candidate. The state recording in #518 ignores these repeated entries.🤖 Generated with Claude Code