Extract document-session save-version helper

This commit is contained in:
2026-06-15 22:13:13 +02:00
parent 02552c9a12
commit aaf55dd797
4 changed files with 62 additions and 9 deletions

View File

@@ -18,6 +18,12 @@ agent or engineer to remove them without reconstructing context from chat.
## Recent Reductions ## Recent Reductions
- 2026-06-15: `DEBT-0042` was narrowed again. The retained Save Version
execution in `src/legacy_document_session_services.cpp` now routes through a
focused helper instead of living inline in
`LegacyDocumentVersionSaveServices::save_document_version()`; the remaining
document-session bridge debt stays concentrated in close prompts, save
dialogs, overwrite prompts, and keyboard/dialog cleanup.
- 2026-06-15: `DEBT-0040` was narrowed again. The retained close-unsaved - 2026-06-15: `DEBT-0040` was narrowed again. The retained close-unsaved
prompt wiring in `src/legacy_document_session_services.cpp` now routes prompt wiring in `src/legacy_document_session_services.cpp` now routes
through a focused helper instead of living inline in through a focused helper instead of living inline in

View File

@@ -1420,6 +1420,10 @@ The retained close-unsaved prompt wiring in
helper, so the remaining document-session bridge debt is further concentrated helper, so the remaining document-session bridge debt is further concentrated
on save-before-workflow prompts, save-version routing, app document field on save-before-workflow prompts, save-version routing, app document field
mutation, and keyboard/dialog cleanup. mutation, and keyboard/dialog cleanup.
The retained Save Version execution in `src/legacy_document_session_services.*`
now also routes through a focused helper, so the remaining document-session
bridge debt is further concentrated on close prompts, save dialogs,
overwrite prompts, and keyboard/dialog cleanup.
`App::dialog_newdoc` now routes accepted new-document plans through the `App::dialog_newdoc` now routes accepted new-document plans through the
app-core new-document executor and `src/legacy_document_session_services.*`, app-core new-document executor and `src/legacy_document_session_services.*`,
preserving target overwrite prompts, legacy canvas resize/layer setup, history preserving target overwrite prompts, legacy canvas resize/layer setup, history

View File

@@ -1524,6 +1524,42 @@ Completed Task Log:
| --- | --- | ---: | --- | --- | | --- | --- | ---: | --- | --- |
| 2026-06-15 | ADP-040 | no score movement | `powershell -ExecutionPolicy Bypass -File scripts\\automation\\quiet-validate.ps1 -BuildTargets pano_cli,pp_app_core_document_session_tests -TestRegex "pp_app_core_document_session|pano_cli_plan_document_session_prompt"` | `be8dee8d` | | 2026-06-15 | ADP-040 | no score movement | `powershell -ExecutionPolicy Bypass -File scripts\\automation\\quiet-validate.ps1 -BuildTargets pano_cli,pp_app_core_document_session_tests -TestRegex "pp_app_core_document_session|pano_cli_plan_document_session_prompt"` | `be8dee8d` |
### ADP-041 - Extract Document-Session Save-Version Helper
Status: Done
Score: no score movement
Debt: `DEBT-0042`
Scope: `src/legacy_document_session_services.cpp` only
Closeout: `be8dee8d`
Goal:
Reduce the inline retained Save Version execution surface by extracting the
version-save body from `LegacyDocumentVersionSaveServices::save_document_version()`
into a focused helper while preserving current behavior.
Done Checks:
- The retained Save Version execution no longer lives inline in
`LegacyDocumentVersionSaveServices::save_document_version()`.
- The retained version-save path now routes through a focused helper in
`src/legacy_document_session_services.cpp`.
- `DEBT-0042` and the roadmap note the reduced remaining document-session
bridge surface.
Validation:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\\automation\\quiet-validate.ps1 -BuildTargets pano_cli,pp_app_core_document_session_tests -TestRegex "pp_app_core_document_session|pano_cli_plan_document_session_prompt"
```
Completed Task Log:
| Date | Task | Score | Validation | Commit |
| --- | --- | ---: | --- | --- |
| 2026-06-15 | ADP-041 | no score movement | `powershell -ExecutionPolicy Bypass -File scripts\\automation\\quiet-validate.ps1 -BuildTargets pano_cli,pp_app_core_document_session_tests -TestRegex "pp_app_core_document_session|pano_cli_plan_document_session_prompt"` | `be8dee8d` |
### RND-001 - Make Pure Equirectangular Export The Primary Success Path ### RND-001 - Make Pure Equirectangular Export The Primary Success Path
Status: Done Status: Done

View File

@@ -252,6 +252,8 @@ private:
std::shared_ptr<NodeDialogSave> dialog_; std::shared_ptr<NodeDialogSave> dialog_;
}; };
void save_document_version(App& app, const pp::app::DocumentVersionTarget& target);
class LegacyDocumentVersionSaveServices final : public pp::app::DocumentVersionSaveServices { class LegacyDocumentVersionSaveServices final : public pp::app::DocumentVersionSaveServices {
public: public:
explicit LegacyDocumentVersionSaveServices(App& app) noexcept explicit LegacyDocumentVersionSaveServices(App& app) noexcept
@@ -261,21 +263,26 @@ public:
void save_document_version(const pp::app::DocumentVersionTarget& target) override void save_document_version(const pp::app::DocumentVersionTarget& target) override
{ {
const auto history_status = apply_document_history(pp::app::plan_document_version_save_history(target)); save_document_version(app_, target);
if (!history_status.ok()) {
LOG("Document version history effect failed: %s", history_status.message);
}
app_.doc_name = target.name;
app_.doc_path = target.path;
app_.canvas->m_canvas->m_unsaved = true;
app_.title_update();
project_save_after_snapshot(app_, app_.doc_path);
} }
private: private:
App& app_; App& app_;
}; };
void save_document_version(App& app, const pp::app::DocumentVersionTarget& target)
{
const auto history_status = apply_document_history(pp::app::plan_document_version_save_history(target));
if (!history_status.ok()) {
LOG("Document version history effect failed: %s", history_status.message);
}
app.doc_name = target.name;
app.doc_path = target.path;
app.canvas->m_canvas->m_unsaved = true;
app.title_update();
project_save_after_snapshot(app, app.doc_path);
}
class LegacyCloseRequestServices final : public pp::app::CloseRequestServices { class LegacyCloseRequestServices final : public pp::app::CloseRequestServices {
public: public:
LegacyCloseRequestServices(App& app, bool& dialog_already_opened) noexcept LegacyCloseRequestServices(App& app, bool& dialog_already_opened) noexcept