diff --git a/.gitignore b/.gitignore index 6427ad9..5458dae 100644 --- a/.gitignore +++ b/.gitignore @@ -38,12 +38,14 @@ !/workflow/README.md !/workflow/build_suite.py !/workflow/build_catalogue.py +!/workflow/edit_recipe.py !/workflow/verify_collection.py !/workflow/catalogue.css !/workflow/selection.example.json !/workflow/evaluation-template.json !/tests/ !/tests/test_workflow.py +!/tests/test_edit_recipe.py !/tests/test_review.py !/tests/test_review_import.py diff --git a/AGENTS.md b/AGENTS.md index 7d536ca..2ebe434 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -28,6 +28,7 @@ You are authorized to make any changes to RapidRAW and its MCP integration that - Reuse verified model assets through the companion editor's model cache, on the same volume as the workspaces for clone savings. Keep isolated workspaces, but use independent filesystem clones for large local fixture and source copies where supported. Do not use hard links for editable photographs or replace review assets with symlinks. - Reuse a build target for the same toolchain and configuration. Prefer non-incremental builds without debug symbols for validation; opt into larger development caches only when needed. - Keep accepted edits, recipes, original sources, review decisions, and reproducibility manifests. Prune only known rebuildable caches after confirming no active writer; completed experiments should be archived with checksum verification before local removal. +- Keep the ignored workspace organised by kind (shoots, styles, experiments, publication, records, archive, cache, scratch); never leave loose files at its root. Start each new run with the workspace's scaffold helper so it has a dated folder and a README stating its purpose and status. Take finished experiments offline with the review CLI's `archive` command before removing their media, and move folders that review datasets use with `relocate`, so decisions and asset revisions survive. - Put archive and retention records in the ignored workspace. Keep current review references usable and verify them after any storage migration. ## Product manager review of public-facing material diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c75aba..9af4621 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,19 @@ ### Editing guidance - Rewrite `photo-edit-master` around concrete editing decisions: lessons from master photographers and darkroom printing, an eight-step workflow with starting ranges for crop, light shaping, colour and finish, a subject and inverted-environment mask pair, and common failures. Candidates are now checked twice before delivery: technical defects to fix, then artistic questions to answer for the photograph. -- Rewrite the wildlife reference with picture types, standard moves, difficult light, cleanup and documentary honesty, including how to choose a depth-based or AI subject selection and what each tends to miss. +- Rewrite the wildlife reference with picture types, standard moves, difficult light, cleanup and documentary honesty, including how to choose a depth-based or AI subject selection and what each tends to miss, and how to keep subject and environment masks on one shared edge to avoid halos. +- Add a four-frame wildlife style comparison and guidance for keeping the subject's support visible, preserving bright light sources, correcting smooth flare ghosts, and checking mask edges at full size. +- Guide style learning from returned human edits and blind comparisons, keeping one current personal profile with separate evidence for each round. + +### Review application + +- Add append-only variant publishing: `review/cli.py add-variant` and `add-variants` and the `POST /api/datasets/:id/variants` endpoints add a revision without replacing an existing version, so earlier decisions and the images already reviewed stay intact. Re-using a variant ID is refused. +- Add `review/cli.py relocate` to rewrite media paths after folders move, saving a state backup and carrying feedback across when the reviewed bytes are unchanged. Add `archive` and `unarchive` to take a finished collection's media offline without clearing its decisions or asset revisions. +- Add pinned notes to Photo reviewer: pin a note to a point on the photograph, with its position and zoom, and return to it later. Pins save with the version's feedback and are validated by the server, which accepts only known pin fields. **Pin center** or `P` pins the center of the view from the keyboard. + +### Editing workflow + +- Add `workflow/edit_recipe.py`, a declarative recipe format and executor for RapidRAW MCP sessions: ordered steps with tracked revisions, named mask references, recipes that extend and override a parent recipe, revision guards taken from the engine's tool schemas instead of a hardcoded list, parameters checked before a run starts, a client that reports errors instead of hanging, and a helper that renders the edit beside a global-only copy through the engine's non-mutating `render_compare`. ### Workspace and documentation diff --git a/README.md b/README.md index 8beccfd..91eb3c1 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ The skill uses selective reading: a shared workflow plus the reference relevant ## One workspace for review and personal style -The [local review application](review/README.md) brings edit comparisons, style exploration, denoise review, and detail inspection into one extensible workspace. Agents publish rendered candidates; photographers compare them and save feedback and selections for the next iteration. Start it from this repository with Python 3.10+ on macOS or Linux: +The [local review application](review/README.md) brings edit comparisons, style exploration, denoise review, and detail inspection into one extensible workspace. Agents publish rendered candidates, and later revisions beside them without replacing earlier versions; photographers compare them, pin notes to exact points on a photograph, and save feedback and selections for the next iteration. Start it from this repository with Python 3.10+ on macOS or Linux: ```sh python3 review/server.py --workspace .local/review --media-root . --port 8765 diff --git a/docs/continuing-edits.md b/docs/continuing-edits.md index f3f423d..50bebe0 100644 --- a/docs/continuing-edits.md +++ b/docs/continuing-edits.md @@ -20,6 +20,6 @@ Load the core editing guidance, the applicable genre, and the execution referenc Review an overview after a meaningful group of edits. Inspect changed local corrections at matched native detail and check their relationship to the whole image. Use multi-view diagnostics to resolve a specific uncertainty. Keep the accepted reference and inspect the actual exported file before delivery. -Publish candidates through the [shared review app](../review/README.md). Inspect rendered files directly for photographic decisions; operate the browser when interaction, feedback, alignment, or display behavior needs checking. Showing an existing comparison does not itself require another interface audit. +Publish candidates through the [shared review app](../review/README.md), adding each revision as a new variant so earlier versions and the decisions made on them stay reviewable, and read any pinned notes on the previous version (`feedback-export` lists them under each variant's `pins`) before revising. Inspect rendered files directly for photographic decisions; operate the browser when interaction, feedback, alignment, or display behavior needs checking. Showing an existing comparison does not itself require another interface audit. For RapidRAW response formats, selected schema reads, and connection recovery, follow the companion's [MCP guide](https://github.com/sheldonxxxx/RapidRAW/blob/main/mcp/README.md). This workflow does not prescribe a smaller preview size, fewer necessary detail checks, a particular model, or additional agents. diff --git a/docs/ecosystem.md b/docs/ecosystem.md index adf39f1..55f40e6 100644 --- a/docs/ecosystem.md +++ b/docs/ecosystem.md @@ -25,7 +25,7 @@ The shared boundary is **an intention, rendered files, provenance, and feedback* 1. **Read the photograph.** Photo Edit Master identifies the strongest quality, chooses a direction, and names relationships to protect. 2. **Prepare only when needed.** For native Insta360 input, the toolkit supplies an appropriate Studio or SDK route. Ordinary photographs can go straight to their editor. 3. **Render a candidate.** RapidRAW or another editor performs the edit. Keep the original and the editor's editable state or processing recipe. -4. **Publish a review case.** Register a browser-readable baseline and candidates through the [Lightweft manifest, CLI, or API](../review/README.md). Use stable case and variant IDs; mark changed framing honestly. +4. **Publish a review case.** Register a browser-readable baseline and candidates through the [Lightweft manifest, CLI, or API](../review/README.md). Use stable case and variant IDs; mark changed framing honestly. Publish each revision beside earlier versions with `add-variant` or `add-variants`, which never replace a published version, and read the reviewer's pinned notes (`feedback-export` lists them under each variant's `pins`) before the next pass. 5. **Refine from feedback.** The photographer compares results, chooses a direction, and leaves notes. The agent reads that feedback and makes the next edit in its owning tool. 6. **Deliver from the processing tool.** Export the final photograph and verify dimensions, colour, and relevant metadata. Review selections are feedback, not final-image exports. diff --git a/review/README.md b/review/README.md index 8484e81..92e02e5 100644 --- a/review/README.md +++ b/review/README.md @@ -114,6 +114,21 @@ Select **Personal style study** in the collection selector, or open