You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The FreeEed Viewer is this FreeEedUI web app with viewer-mode changes, shipped as a portable packaged web app (thumb drive, per-OS launcher / Windows .exe, no install, offline). The cross-cutting tracker, lifecycle, and all settled decisions live in shmsoft/FreeEed#553 (use case: shmsoft/FreeEed#550). This issue is the app-side work in this repo. The packaging/distribution (building the per-OS Viewer pack) is FreeEed release tooling — tracked on shmsoft/FreeEed#553 slice 5, not here.
Viewer mode = read-only review: search + document display + add/edit notes. No processing, no tagging/redaction authoring. It loads a finished production (created here per #61, ESI format shmsoft/FreeEed#551) and its notes sync back into the review case DB.
Same FreeEedUI codebase, viewer-mode changes (not a separate build, not the Swing app).
Packaged portable web app on a thumb drive — bundled Tomcat + Solr + JRE + viewer-mode war + index, launched by a per-OS .exe; no install, offline. (Packaging itself is FreeEed-side; this repo provides the viewer-mode app + bundle export/import.)
Search: bundled Solr (reuse the complete-pack stack; no embedded Lucene).
Viewer mode — a mode flag on the web app: read-only (disable processing + tagging/redaction authoring), expose search + display + notes. Never prompts for activation; verifies the manifest stamp offline.
Notes overlay (authoring) — add/edit notes in viewer mode, persisted as note records (schema above); production immutable.
Sync-back — "Import Viewer notes": union a returned overlay into the review case DB by noteId — idempotent, multi-source merge, manual resolution for true conflicts, import audit log.
Acceptance
Web app runs in a read-only viewer mode (search + display + notes; no processing/authoring)
Export produces a self-contained Viewer bundle (produced set + notes overlay + manifest with activation stamp + index)
User can add/edit notes, persisted as attributed/timestamped note records (production immutable)
"Import Viewer notes" unions a returned overlay into the review case DB — idempotent, multi-source, manual conflict resolution, with an audit log
Viewer mode does not prompt for registration/activation; verifies the manifest stamp offline
FreeEed Viewer — app-side implementation (FreeEedUI)
The FreeEed Viewer is this FreeEedUI web app with viewer-mode changes, shipped as a portable packaged web app (thumb drive, per-OS launcher / Windows
.exe, no install, offline). The cross-cutting tracker, lifecycle, and all settled decisions live in shmsoft/FreeEed#553 (use case: shmsoft/FreeEed#550). This issue is the app-side work in this repo. The packaging/distribution (building the per-OS Viewer pack) is FreeEed release tooling — tracked on shmsoft/FreeEed#553 slice 5, not here.Viewer mode = read-only review: search + document display + add/edit notes. No processing, no tagging/redaction authoring. It loads a finished production (created here per #61, ESI format shmsoft/FreeEed#551) and its notes sync back into the review case DB.
Settled decisions (from shmsoft/FreeEed#553)
.exe; no install, offline. (Packaging itself is FreeEed-side; this repo provides the viewer-mode app + bundle export/import.)manifest.json; viewer mode never prompts and verifies that stamp offline via the verify-onlyActivation.isValid(port the small Ed25519 verify class into FreeEedUI).noteId; true divergences flagged for manual resolution; all imports audit-logged.Notes overlay schema (foundation — build first)
A note is an attributed/timestamped record, not a single mutable field:
(noteId, bates, caseId, author, source[viewer|review], createdAt, text, supersedesId?)noteIdis stable (idempotent union + multi-source merge).supersedesId(history preserved), never mutate in place.Work items
manifest.json(schema version + caseId + producer activation stamp) + search index.noteId— idempotent, multi-source merge, manual resolution for true conflicts, import audit log.Acceptance
References