Repository navigation
Releases: nealyx/reviewops
Release list
ReviewOps v0.4.1 — reliable submission handoffs
Fixes two failures during evidence handoffs.
- Saved evidence stays visible: if a submission succeeds but the following queue refresh fails, the screen immediately shows the saved experiment and files. Decisions target that visible record. Older pending selections cannot replace it or overwrite the save message. Draft notes and historical data labels are preserved.
- Accepted filenames work with portable backups: browser, CLI, and API intake now refuse reserved device names such as
aux.txtorCON.csvbefore writing any evidence or history. The browser explains how to rename the file. Valid names such asauxiliary.txtcontinue to work.
Download reviewops-0.4.1.zip, extract it, and run python3 app.py. Python 3.9 or later; no third-party packages. This patch retains the portable summaries, revision comparisons, and offline workspace backups from v0.4.0.
Validation: 98 Python tests and 43 frontend regressions pass locally. Four save/selection regressions demonstrated the previous display mismatch. An actual browser check injected a failed queue read after saving and verified the next decision used the displayed snapshot. An accepted BOM/CRLF file preserved its exact bytes. The release ZIP matches all 40 tracked files at commit 20fc01f.
The extracted release also passed startup, import, summary-download, stale-version rejection, and backup/restore checks. Reserved-name refusal leaves the existing record and history unchanged; accepted evidence and the SQLite database survive backup/restore byte-for-byte.
All four hosted checks passed on this exact source commit: Linux and macOS, each on Python 3.9 and 3.13. Every job passed 98 Python tests, 43 frontend checks, and the example backup/restore rehearsal. All three uploaded release assets were downloaded and verified byte-for-byte against the local files.
Existing snapshots are preserved. An older workspace that already contains reserved filenames still cannot use portable archive export; see the workspace guide for preservation instructions. This patch prevents new affected submissions and does not rewrite historical evidence.
ReviewOps remains a local, single-user prototype with synthetic examples; researcher usefulness has not yet been measured.
ReviewOps v0.4.0 — portable review summaries
Download a readable record of one experiment without needing ReviewOps to inspect it.
- Portable HTML summaries: current status, expected and observed hashes, retained snapshot manifests, and recorded actions in one self-contained file. No scripts or external assets.
- Version-checked downloads: an older open page cannot silently export a newer record. Refresh after a conflict; unfinished notes are retained and excluded from the download.
- Clear review provenance: an earlier approval stays attached to its original evidence. Current integrity checks and historical expected hashes are separate; earlier file bytes are not rechecked.
- Stale-response fix: a delayed older detail response cannot re-enable actions after a version conflict. The header now wraps on 320-pixel screens.
- Updated walkthrough, design notes, pilot task, screenshot, and a saved synthetic summary.
Download reviewops-0.4.0.zip, extract it, and run python3 app.py from its folder. Python 3.9 or later; no third-party packages. On macOS, launch.command also starts the app. Existing workspaces remain compatible; follow the workspace guide to back up before moving them.
Validation: 93 Python tests and 37 frontend regressions passed locally. Browser checks covered download, stale rejection, refresh recovery, draft retention, keyboard access, and desktop/mobile layout. The extracted ZIP was checked against all 38 files at the release commit. All four Linux/macOS checks on Python 3.9/3.13 passed in the Checks workflow.
The separate reviewops-synthetic-summary.html asset shows an invented two-revision handoff, including an earlier approval and a current record awaiting review.
This remains a local, single-user prototype with synthetic examples; a researcher pilot is pending. Review saved titles, names, and notes before sharing a summary, including when its experiment records are synthetic. Summaries exclude evidence bodies and are not restorable backups or scientific validation.
ReviewOps v0.3.0 — revision comparisons and workspace backups
ReviewOps now shows what changed between evidence submissions, keeps separate unfinished review notes as you switch experiments, and provides a verified offline backup/restore workflow.
What changed
- Compare the current and preceding submissions: added, removed, changed, and unchanged files, submitted metadata, and previews tied to each snapshot.
- Keep decision drafts per experiment within the current tab. A warning identifies notes begun on older evidence. Successful saves clear only the submitted text and preserve newer typing.
- Prepare, export, inspect, and restore a stopped workspace using
workspace_archive.py. Backups preserve the database and exact evidence bytes, including damaged or missing evidence states. Restore requires a new destination and refuses to replace existing work. - Expire inactive HTTP connections and reject incomplete request bodies without changing records.
- Keep additional example workspaces separate from the default workspace so backup inventory remains unambiguous.
Run
Download and extract reviewops-0.3.0.zip, enter its folder, and run:
python3 app.py --port 8787Open http://127.0.0.1:8787/. Python 3.9 or later is sufficient; the app and backup commands have no third-party dependencies.
See the workspace guide before exporting a backup. Stop the app and all imports first; do not delete SQLite sidecars manually. Archive hashes check consistency, not authorship. Keep private evidence archives private.
Validation
- 82 Python tests and 28 frontend regressions passed locally.
- Desktop and 390-pixel browser checks covered revision comparisons, separate drafts, and stale-evidence warnings.
- The attached ZIP's 34 files were checked byte-for-byte against commit
b680e5321862ea99f38bfcde010960b0ccd1c6c6. - From the extracted release: imported the documented example, confirmed active-workspace refusal, prepared/exported/inspected/restored it, compared exact database/evidence bytes, verified no overwrite, and reopened the restored app with unchanged audit records.
- All four hosted jobs passed on this exact release commit: Linux/macOS with Python 3.9/3.13, including command-line backup/restore.
This remains a local, single-user prototype with synthetic examples and a researcher pilot pending. Draft notes survive navigation within a tab, not a page reload. File hashes do not establish scientific correctness.
ReviewOps v0.2.3 — retire research audit example
This release removes a retired research audit example, its walkthrough, fixture test, and dedicated CI import step. The generic manifest importer, synthetic examples, retained evidence, and review workflow are unchanged. Researcher pilot pending.
Download the ZIP, extract it, and run python3 app.py --port 8787 from its directory. Python 3.9 or later is sufficient; no third-party runtime packages or cloud service are required. The accompanying SHA-256 file identifies the ZIP.
Validation: all 59 remaining Python tests and 15 frontend regressions pass locally. Every ZIP payload matches the release commit. Importing the generic synthetic example from the extracted ZIP and reopening its workspace preserved one pending-review record, two verified evidence files, and its submission and snapshot.
The exact release commit's hosted checks passed both Linux jobs; the macOS jobs were queued at publication.
Existing workspace schemas are unchanged. Stop the old server before launching the update against the same data directory. No workspace records are removed by this update. Earlier release archives and Git history remain available as historical versions.
ReviewOps v0.2.2 — consistent evidence and keyboard recovery
ReviewOps is a local experiment-review prototype with retained evidence, assignments, decisions, and a traceable public audit walkthrough. This release fixes evidence consistency and keyboard navigation. Researcher pilot pending.
- Detail, queue, and audit exports now hold one database read snapshot while a separate CLI import commits a revision. Old metadata cannot be mixed with a newer evidence list or export label.
- Evidence preview text and its integrity label now come from the same opened file. Replacing a file between reads cannot show replacement text as verified. Changes beyond the displayed prefix are still detected, and oversized files are refused.
- Keyboard selection moves into the chosen experiment. Delayed responses preserve a different control the reviewer has moved to.
- Removing evidence files preserves keyboard position. Submission errors scroll into view and receive focus while keeping the draft and selected files.
Download the ZIP, extract it, and run python3 app.py --port 8787 from its directory. Python 3.9 or later is sufficient; no third-party runtime packages or cloud service are required. The SHA-256 file identifies the downloadable ZIP.
Validation: 60 Python tests and 15 frontend regressions pass from the extracted release ZIP. The exact release commit passed all four Linux/macOS and Python 3.9/3.13 hosted jobs. The keyboard, file-removal, error-recovery, restart, and evidence-preview paths were also checked in the browser. Tests cover software behavior, not researcher adoption or scientific validity.
Existing workspace schemas are unchanged. Stop the old server before launching the update against the same data directory. To back up a workspace, stop the app and copy that complete directory; the JSON audit export does not contain evidence file bodies. Consistent database reads and preview labels do not prevent later outside edits to stored files.
ReviewOps v0.2.1 — reliable previews and a public audit walkthrough
ReviewOps is a local experiment-review prototype: submit text evidence, inspect it, assign a reviewer, and retain decisions across evidence revisions. Researcher pilot pending.
This release fixes two workflow errors:
- An already-open page now previews the evidence snapshot it displays, even after another tab or CLI import submits a newer revision. Preview errors never silently substitute newer evidence.
- Saving or clearing an assignee preserves an unfinished decision note. Clearing the assignee now correctly returns the record to Unassigned.
It also adds a complete public EGRA audit handoff. The package contains an actual saved-output verification, exact source and report provenance, and four evidence files. It starts unassigned and Needs review, with no human decision recorded. The guide includes commands to recompute the check from a pinned public checkout. Contributor instructions explain the code, isolated workspaces, and meaningful regressions.
Download the ZIP, extract it, and run python3 app.py --port 8787 from its directory. Python 3.9 or later is sufficient; no third-party runtime packages or cloud service are required. The SHA-256 file identifies the downloadable ZIP.
Validation: 52 Python tests and four frontend regressions pass from the extracted release archive. The code changes passed the Linux/macOS, Python 3.9/3.13 hosted matrix; the snapshot and draft fixes were also exercised in a browser with a concurrent CLI revision. These are software checks, not measured researcher adoption or scientific validation.
Existing workspace schemas are unchanged. Evidence and history stay in the selected runtime directory. Stop the app and copy that complete directory when making a backup; the JSON audit export does not include evidence bodies.
ReviewOps v0.2.0: retained evidence revisions
ReviewOps now supports a complete local evidence handoff: submit text files, assign a reviewer, record a decision, and submit revised evidence without losing the original files or carrying an old approval into a new snapshot.
- Browser intake and JSON manifest import.
- Retained evidence snapshots with explicit decision references.
- Stale-edit protection that preserves the browser draft and attachments.
- Plain-text evidence previews and an exportable audit history.
- A synthetic walkthrough, five built-in integrity cases, and a researcher pilot guide.
Download and extract reviewops-0.2.0.zip, open its folder, and run:
python3 app.pyOpen http://127.0.0.1:8787/. Requires Python 3.9 or later; no packages, account, or model API. The attached SHA-256 file identifies the release archive.
Validation: 51 tests pass from the extracted release archive; browser checks cover intake, approval, revision, retained history, conflicting edits, invalid UTF-8, and export. The CI workflow checks Linux and macOS on Python 3.9 and 3.13.
This is a local, single-user prototype. Names are self-reported, bundled data is synthetic, and a matching hash does not establish scientific correctness. Researcher pilot results have not yet been collected. See the design boundaries.