Skip to content

gui - #1

Merged
ahmelkholy merged 5 commits into
AIMORA-dev:devfrom
ahmelkholy:main
Sep 1, 2026
Merged

gui#1
ahmelkholy merged 5 commits into
AIMORA-dev:devfrom
ahmelkholy:main

Conversation

@ahmelkholy

Copy link
Copy Markdown
Member

No description provided.

Copilot AI lite review requested due to automatic review settings September 1, 2026 16:47
@ahmelkholy
ahmelkholy merged commit 6ec7328 into AIMORA-dev:dev Sep 1, 2026
1 of 6 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR transitions the repository from the retired Node/TypeScript scaffold to a native C++20 / Qt 6.11.2 desktop application foundation, adding the initial GUI shell (menus, docks, workspace persistence, themes) and a bounded, authenticated local protocol client with lifecycle management and test coverage.

Changes:

  • Introduces the GUI030 Qt Widgets shell: drawing-first main window, stable menu families, optional dock panels, workspace save/restore/reset, and appearance modes with committed theme fixtures.
  • Adds the GUI040 protocol surface: framed control/binary codec, strict request/response envelopes, authenticated QLocalSocket client, and QProcess-managed service lifecycle with restart behavior.
  • Replaces prior Node-based checks with CMake/CTest, contract verification scripts, and native CI (build + tests + clang-tidy + sanitizers).

Reviewed changes

Copilot reviewed 71 out of 74 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/shell_tests.cpp Qt shell coverage: menus, panels, persistence, and rendering smoke assertions
tests/protocol_tests.cpp Protocol/client/process integration tests (mock service, auth, lifecycle, restart)
tests/mock_service.cpp Mock service executable for protocol/lifecycle tests
tests/foundation_tests.cpp Baseline unit tests for new foundation packages (core/canvas/commands/themes/protocol config)
tests/fixtures/theme-light.json Committed light theme token fixture
tests/fixtures/theme-dark.json Committed dark theme token fixture
tests/CMakeLists.txt Adds native test executables + CTest integration and env config
test/structure.test.mjs Removes Node scaffold test
README.md Updates repo description to native desktop architecture and build/test instructions
protocol/src/index.ts Removes retired TypeScript protocol stub
protocol/package.json Removes retired TypeScript package manifest
packages/themes/src/theme_system.cpp Theme tokens, palette + stylesheet application, persistence, controller
packages/themes/src/theme_mode.cpp Theme mode string conversions and parsing
packages/themes/include/aimora/studio/themes/theme_system.hpp Theme system public API (tokens/settings/controller)
packages/themes/include/aimora/studio/themes/theme_mode.hpp Theme mode enum + conversion API
packages/themes/CMakeLists.txt Adds StudioThemes library target
packages/shell/src/workspace_settings.cpp Workspace geometry/state persistence + corruption recovery
packages/shell/src/studio_panels.cpp Dock panels (project/inspector/command) + view menu bindings
packages/shell/src/studio_menus.cpp Stable menu families + theme selection + reset workspace + about
packages/shell/src/studio_main_window.cpp Main window composition, workspace restore/defaults, about dialog
packages/shell/src/studio_dock_widget.cpp Dock widget wrapper with pin behavior + panel state exposure
packages/shell/src/drawing_workspace.cpp Central drawing surface placeholder rendering consuming theme tokens
packages/shell/include/aimora/studio/shell/studio_shell.hpp Shell public API (main window, docks, workspace settings)
packages/shell/CMakeLists.txt Adds StudioShell library target
packages/protocol/src/service_process.cpp Service process lifecycle manager (token, endpoint, timers, restart)
packages/protocol/src/service_message.cpp Strict request/response envelope encode/parse
packages/protocol/src/service_client.cpp Authenticated local socket client + request tracking + frame handling
packages/protocol/src/generated/service_protocol.cpp Generated protocol bindings implementation
packages/protocol/src/frame_codec.cpp AMR1 frame codec + control/binary payload helpers
packages/protocol/src/client_configuration.cpp Client limits/config validation
packages/protocol/include/aimora/studio/protocol/service_process.hpp Service process public API
packages/protocol/include/aimora/studio/protocol/service_message.hpp Request/response envelope public API
packages/protocol/include/aimora/studio/protocol/service_client.hpp Service client public API
packages/protocol/include/aimora/studio/protocol/generated/service_protocol.hpp Generated protocol binding header
packages/protocol/include/aimora/studio/protocol/frame_codec.hpp Frame codec public API
packages/protocol/include/aimora/studio/protocol/client_configuration.hpp Client configuration + limits public API
packages/protocol/CMakeLists.txt Adds StudioProtocol library target
packages/inspector/src/panel_state.cpp Panel state validation/visibility helpers
packages/inspector/include/aimora/studio/inspector/panel_state.hpp Inspector panel state types
packages/inspector/CMakeLists.txt Adds StudioInspector library target
packages/core/src/application_info.cpp Product identity/version/architecture helpers
packages/core/include/aimora/studio/core/application_info.hpp ApplicationInfo public API
packages/core/CMakeLists.txt Adds StudioCore library target
packages/commands/src/command_registry.cpp Deterministic command registry + validation
packages/commands/include/aimora/studio/commands/command_registry.hpp Command registry public API
packages/commands/CMakeLists.txt Adds StudioCommands library target
packages/canvas/src/viewport_state.cpp Viewport state validation + visible rect projection
packages/canvas/include/aimora/studio/canvas/viewport_state.hpp ViewportState public API
packages/canvas/CMakeLists.txt Adds StudioCanvas library target
package.json Removes retired workspace package.json
docs/GUI040.md Documents protocol/lifecycle packet scope and smoke journey
dependencies/third-party.toml Adds third-party inventory (Qt, CI actions, tooling)
dependencies/qt-lock.json Adds pinned Qt/toolchain policy lock
CONTRIBUTING.md Updates contribution rules for native architecture and contracts
CMakePresets.json Adds dev/release/quality/sanitizers presets
CMakeLists.txt New top-level CMake project + Qt pin + package wiring
cmake/version.hpp.in Generates build-time version/identity header
cmake/VerifyThemeFixtures.cmake Contract: theme fixtures exist and have required schema/token count
cmake/VerifySourceTree.cmake Contract: required paths exist; forbidden retired tech absent
cmake/VerifyServiceProtocol.cmake Contract: required protocol files exist; schema SHA present; forbidden tokens absent
cmake/VerifyFormatting.cmake Contract: formatting invariants (no tabs/trailing ws, 100-col limit, newline)
cmake/AIMORATargetDefaults.cmake Shared target defaults (warnings/sanitizers/static analysis)
cmake/AIMORAStudioConfig.cmake.in Install/export config for consumers
cmake/AIMORAStaticAnalysis.cmake clang-tidy wiring for quality preset
cmake/AIMORASanitizers.cmake ASan/UBSan wiring for sanitizers preset
cmake/AIMORAInstall.cmake Install/export + CPack packaging basics
cmake/AIMORACompilerWarnings.cmake Cross-compiler warnings and Werror option
ARCHITECTURE.md Documents frozen native architecture and boundaries
apps/studio/main.cpp Application entrypoint + CLI + shell/service smoke journeys
apps/studio/CMakeLists.txt App target and aimora_studio_smoke custom target
.gitignore Updates ignore patterns for native build/test artifacts
.github/workflows/ci.yml Replaces Node CI with native build/test + contracts + quality + sanitizers
.clang-tidy clang-tidy ruleset baseline
.clang-format Formatting policy baseline
Suppressed comments (1)

packages/protocol/src/service_process.cpp:449

  • automaticRestartCount_ is never reset on a clean stop, so a later start() may inherit a nonzero restart count and prematurely suppress configured automatic restarts. Reset the counter when the process reaches Stopped due to an expected stop request.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +22 to +31
bool ClientConfiguration::isValid() const {
constexpr qsizetype minimumSessionTokenBytes = 64;
constexpr qsizetype maximumSessionTokenBytes = 256;
const QByteArray endpointBytes = endpoint.trimmed().toUtf8();
return !endpointBytes.isEmpty()
&& endpointBytes.size() <= limits.maxPathBytes
&& sessionToken.size() >= minimumSessionTokenBytes
&& sessionToken.size() <= maximumSessionTokenBytes
&& limits.isValid();
}
Comment on lines +412 to +414
if(state_ == State::Failed && !explicitRestartRequested_) {
return;
}

auto* explanation = new QLabel{std::move(description), panelContent};
explanation->setWordWrap(true);
explanation->setTextInteractionFlags(Qt::TextSelectableByKeyboard);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants