Skip to content

Make embedded Console a frontend using GUI-independent text-command processor - #2419

Merged
PeramatoG merged 2 commits into
mainfrom
codex/implement-front-500-embedded-console-frontend
Oct 1, 2026
Merged

PeramatoG merged 2 commits into
mainfrom
codex/implement-front-500-embedded-console-frontend

Conversation

@PeramatoG

Copy link
Copy Markdown
Owner

Motivation

  • Separate reusable command orchestration from the wxWidgets Console so the Console becomes a presentation-only frontend over the existing GUI-independent Command/text infrastructure.
  • Preserve all existing Console-visible semantics (clear, fixture/truss selection, position/rotation semantics, relative/local transforms, ordered multi-command behavior, selection propagation, Undo/rollback semantics, and diagnostics) while moving execution ordering and stop logic into Core.
  • Introduce a small, focused consumer-driven execution seam in core/command/ without creating a registry/dispatch framework or adding CLI mutation/IPC features.

Description

  • Add a GUI-independent text-command processor that parses and executes one Console input line and returns structured results: core/command/command_text_processor.h and core/command/command_text_processor.cpp implement ProcessCommandLine() and LineExecutionResult with ordered ExecutionRecord items, per-step selectionAfter snapshots, parser diagnostics, aggregate MutationSummary, and stop status.
  • Reduce ConsolePanel::ProcessCommand() to frontend responsibilities by invoking the new processor once per entered line and mapping returned structured results to presentation and targeted table/viewer refresh (no semantic execution is done in consolepanel.cpp).
  • Keep the existing command executors, adapters, and transaction boundary unchanged (the processor calls the existing selection::ExecuteClear, text::ExecuteSelection, and transform::Execute services and continues to use GuiProjectMutationHost through the neutral ProjectMutationHost).
  • Build-system and wiring changes: add and expose perastage_command_text_processor in core/CMakeLists.txt, update gui/CMakeLists.txt to link the new processor target, add processor test and policy guard entries in tests/CMakeLists.txt.
  • Tests and architecture guards: add tests/command_text_processor_test.cpp exercising ordered selection/transform sequences, clear, parser diagnostics, validation and execution error behavior, transaction/publication observations, and add tests/check_command_text_processor_boundary.sh to prevent GUI/app/viewer/ConfigManager coupling or Console regaining direct executor ownership.
  • Documentation and release notes: update docs/developer/architecture.md to describe the new Console→parser→processor→Core→results boundary and add a short entry to docs/release-notes-draft.md describing the internal Console frontend migration.

Testing

  • Unit/integration tests compiled and executed locally for the affected production sources: CommandTextProcessor test, CommandSelection, CommandTransform, and ConsoleCommandParser tests all passed when run against the changed code.
  • Repository and architecture checks passed: tests/check_perastage_tree_modules.sh, tests/check_no_configmanager_get_in_gui.sh, python3 tests/check_source_file_size.py, python3 tests/check_repository_hygiene.py, tests/check_command_text_parser_boundary.sh, and the new tests/check_command_text_processor_boundary.sh all passed locally.
  • Policy and formatting checks passed: git diff --check and other repository checks ran clean locally.
  • Note: full CMake configure/build of the GUI application could not complete in this environment because wxWidgets development libraries are not available locally; hosted CI remains authoritative for multi-platform Debug/Release verification across Windows, Linux and macOS.

Codex Task

@PeramatoG
PeramatoG merged commit efa56b4 into main Oct 1, 2026
4 checks passed
@PeramatoG
PeramatoG deleted the codex/implement-front-500-embedded-console-frontend branch October 2, 2026 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant