From 9e731b4a712d9598225676f92dd0ef5cc29f2011 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Mon, 15 Jun 2026 21:44:56 +0200 Subject: [PATCH] Extract cloud publish thread launcher --- docs/modernization/debt.md | 6 ++++++ docs/modernization/roadmap.md | 5 +++++ docs/modernization/tasks.md | 33 +++++++++++++++++++++++++++++++++ src/legacy_cloud_services.cpp | 17 +++++++++++------ 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/docs/modernization/debt.md b/docs/modernization/debt.md index 4bd46bb2..8991bf38 100644 --- a/docs/modernization/debt.md +++ b/docs/modernization/debt.md @@ -18,6 +18,12 @@ agent or engineer to remove them without reconstructing context from chat. ## Recent Reductions +- 2026-06-15: `DEBT-0038` was narrowed again. The retained cloud publish + detached-thread launch in `show_cloud_publish_prompt()` now routes through a + focused helper in `src/legacy_cloud_services.cpp` instead of living inline + in the retained prompt/setup body; the remaining cloud bridge debt stays + concentrated in retained prompt/progress lifetime, OpenGL context guarding, + and the still-retained transfer-thread execution model. - 2026-06-15: `DEBT-0038` was narrowed again. The retained cloud publish transfer-and-success body in `execute_cloud_publish_worker()` now routes through a focused helper in `src/legacy_cloud_services.cpp` instead of diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 728ea6b6..9f51bca2 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -207,6 +207,11 @@ The retained cloud publish transfer-and-success body in `src/legacy_cloud_services.cpp`, so the remaining cloud bridge debt is further concentrated on retained prompt/progress lifetime, OpenGL context guarding, and the still-retained transfer-thread execution model. +The retained cloud publish detached-thread launch in +`show_cloud_publish_prompt()` now also routes through a focused helper in +`src/legacy_cloud_services.cpp`, so the remaining cloud bridge debt is +further concentrated on retained prompt/progress lifetime, OpenGL context +guarding, and the still-retained transfer-thread execution model. Recent 2026-06-13 retained preview reductions continue to narrow DEBT-0036: `NodeStrokePreview::draw_stroke_immediate()` now also routes diff --git a/docs/modernization/tasks.md b/docs/modernization/tasks.md index ddddc7d0..10c41a80 100644 --- a/docs/modernization/tasks.md +++ b/docs/modernization/tasks.md @@ -1234,6 +1234,39 @@ Completed Task Log: | Date | Task | Score | Validation | Commit | | --- | --- | ---: | --- | --- | | 2026-06-15 | ADP-032 | no score movement | `powershell -ExecutionPolicy Bypass -File scripts\\automation\\quiet-validate.ps1 -BuildTargets pano_cli -TestRegex "pp_app_core_document_cloud"` | `07f3ca81` | + +### ADP-033 - Extract Cloud Publish Thread Launcher + +Status: Done +Score: no score movement +Debt: `DEBT-0038` +Scope: `src/legacy_cloud_services.cpp` only + +Goal: + +Reduce the inline retained cloud publish detached-thread launch surface by +extracting the launcher from `show_cloud_publish_prompt()` into a focused +helper while preserving current behavior. + +Done Checks: + +- The retained cloud publish detached-thread launch no longer lives inline in + `show_cloud_publish_prompt()`. +- The retained cloud publish detached-thread launch now routes through a + focused helper in `src/legacy_cloud_services.cpp`. +- `DEBT-0038` and the roadmap note the reduced remaining cloud bridge + surface. + +Validation: + +```powershell +powershell -ExecutionPolicy Bypass -File scripts\automation\quiet-validate.ps1 -BuildTargets pano_cli -TestRegex "pp_app_core_document_cloud" +``` + +Completed Task Log: + +| Date | Task | Score | Validation | Commit | +| --- | --- | ---: | --- | --- | | 2026-06-15 | ADP-007 | +1 legacy adapter retirement | `ctest --preset desktop-fast --build-config Debug -R "pp_app_core_app_dialog\|pp_ui_core_node_lifetime\|pp_ui_core_overlay_lifetime" --output-on-failure`; `ctest --preset desktop-fast --build-config Debug -R "pp_app_core_main_toolbar" --output-on-failure`; `MSBuild.exe out\build\windows-msvc-default\tests\pp_app_core_main_toolbar_tests.vcxproj /p:Configuration=Debug /p:Platform=x64`; `MSBuild.exe out\build\windows-msvc-default\panopainter_app.vcxproj /p:Configuration=Debug /p:Platform=x64` | `8db859cb` | ### RND-001 - Make Pure Equirectangular Export The Primary Success Path diff --git a/src/legacy_cloud_services.cpp b/src/legacy_cloud_services.cpp index 1cadae39..72be263b 100644 --- a/src/legacy_cloud_services.cpp +++ b/src/legacy_cloud_services.cpp @@ -248,12 +248,19 @@ void execute_cloud_publish_worker(App& app, bool save_before_upload) execute_cloud_publish_transfer_and_success_prompt(app, save_before_upload); } +void launch_cloud_publish_thread(App& app, bool save_before_upload) +{ + std::thread([app = &app, save_before_upload] { + execute_cloud_publish_worker(*app, save_before_upload); + }).detach(); +} + void wire_cloud_publish_prompt_buttons( const std::shared_ptr& dialog, std::function upload_thread) { dialog->btn_ok->on_click = [dialog, upload_thread](Node*) { - std::thread(upload_thread).detach(); + upload_thread(); pp::panopainter::close_legacy_dialog_node(*dialog); }; dialog->btn_cancel->on_click = [dialog](Node*) { @@ -263,13 +270,11 @@ void wire_cloud_publish_prompt_buttons( void show_cloud_publish_prompt(App& app, bool save_before_upload) { - auto upload_thread = [&app, save_before_upload] { - execute_cloud_publish_worker(app, save_before_upload); - }; - const auto prompt_plan = pp::app::plan_cloud_publish_prompt(); auto dialog = app.message_box(prompt_plan.title, prompt_plan.message, prompt_plan.show_cancel); - wire_cloud_publish_prompt_buttons(dialog, upload_thread); + wire_cloud_publish_prompt_buttons(dialog, [&app, save_before_upload] { + launch_cloud_publish_thread(app, save_before_upload); + }); } std::shared_ptr create_cloud_bulk_upload_progress(