Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
5a23545
hwtier system enabled
Charliechen114514 May 23, 2026
7ccb63c
refactor: refactor the ui subsystem
Charliechen114514 May 23, 2026
09f7025
simplified: remove the old documentations
Charliechen114514 May 23, 2026
ea1df7a
simplified: remove the old documentations
Charliechen114514 May 23, 2026
77740f0
docs: establish multi-layer documentation truth-source architecture
Charliechen114514 Jun 15, 2026
f7aa681
ci: reusable pre-commit hooks (core.hooksPath) + layer dependency check
Charliechen114514 Jun 15, 2026
d6388a2
fix: align hook install scripts with renamed hooks
Charliechen114514 Jun 15, 2026
3ebe630
docs: finalize naming & Doxygen conventions
Charliechen114514 Jun 15, 2026
fbe4fab
docs: add Coding Taste section to AGENT.md
Charliechen114514 Jun 15, 2026
07703c8
improved status bar
Charliechen114514 Jun 15, 2026
1eb57d5
Merge branch 'main' into develop
Charliechen114514 Jun 16, 2026
e5f9c6c
feat: fix the mspc queue issue
Charliechen114514 Jun 16, 2026
3a49030
feat: complete minimal desktop closed-loop (taskbar, launcher, window…
Charliechen114514 Jun 16, 2026
03acbc1
feat: extract foundation utils into aex submodule (Phase 1)
Charliechen114514 Jun 18, 2026
8941016
feat: extract ui into QuarkWidgets submodule (Phase 2)
Charliechen114514 Jun 19, 2026
fa20136
ci: fetch submodules recursively on build jobs
Charliechen114514 Jun 19, 2026
e10d15b
refactor: seperate and simplified
Charliechen114514 Jun 19, 2026
85c491a
aligned documents
Charliechen114514 Jun 26, 2026
81a02a4
Merge main into develop; resolve PR #7 conflicts (extraction-rename a…
Charliechen114514 Jun 26, 2026
93f8d69
fix(cmake): replace stale cfui target ref after QuarkWidgets extraction
Charliechen114514 Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .github/workflows/cpp-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Normalize Docker image name
run: echo "GHCR_IMAGE=$(echo '${{ env.GHCR_IMAGE }}' | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
Expand Down Expand Up @@ -167,6 +169,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Normalize Docker image name
run: echo "GHCR_IMAGE=$(echo '${{ env.GHCR_IMAGE }}' | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
Expand Down Expand Up @@ -273,6 +277,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup MSVC developer environment
uses: ilammy/msvc-dev-cmd@v1
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@ document/api/
.vscode

# third_party dependencies (downloaded during configuration)
# FetchContent-downloaded deps stay ignored; tracked submodules are re-included
# so their gitlink + .gitmodules are committed.
third_party/*/
!third_party/aex/
!third_party/QuarkWidgets/
!third_party/.gitkeep

__pycache__/
Expand Down
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "third_party/aex"]
path = third_party/aex
url = https://github.com/Awesome-Embedded-Learning-Studio/aex.git
[submodule "third_party/QuarkWidgets"]
path = third_party/QuarkWidgets
url = https://github.com/Awesome-Embedded-Learning-Studio/QuarkWidgets.git
21 changes: 16 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,28 @@ cf_generate_desktop_settings()
# Apply desktop root overlay (needs CFDESKTOP_DEFAULT_ROOT from above)
cf_apply_desktop_root_overlay()

# ============================================================
# Third-party: aex (foundation utils, header-only). MUST precede base —
# the slimmed cfbase links aex::aex for expected/scope_guard/macro.
# ============================================================
include(cmake/third_party_helper.cmake)
setup_third_party(
NAME aex
GIT_REPOSITORY https://github.com/Awesome-Embedded-Learning-Studio/aex.git
GIT_TAG v0.1.0)

# Log base module start
log_module_start("base")
add_subdirectory(base)
# Log base module end
log_module_end("base")

# Log base module start
log_module_start("ui")
add_subdirectory(ui)
# Log base module end
log_module_end("ui")
# NOTE: ui/ was extracted to the QuarkWidgets submodule (Phase 2). It is consumed
# below via setup_third_party() before desktop, which links QuarkWidgets::quarkwidgets.
setup_third_party(
NAME QuarkWidgets
GIT_REPOSITORY https://github.com/Awesome-Embedded-Learning-Studio/QuarkWidgets.git
GIT_TAG v0.1.0)

log_module_start("desktop")
add_subdirectory(desktop)
Expand Down
7 changes: 6 additions & 1 deletion base/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@
cmake_minimum_required(VERSION 3.16)

# ============================================================
# Header-only library for base/include (utilities, hash, expected, etc.)
# Header-only exposure for base/include (system probes + platform helpers).
# Foundation utilities (expected, scope_guard, weak_ptr, macro, ...) were
# extracted to the aex submodule; retained headers (e.g. windows/co_helper.hpp)
# include them, so aex::aex is propagated here.
# ============================================================
add_library(cfbase_headers INTERFACE)
target_include_directories(cfbase_headers INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/include
)
target_link_libraries(cfbase_headers INTERFACE aex::aex)
add_library(CFDesktop::base_headers ALIAS cfbase_headers)

# Include subdirectory CMakeLists (static libraries)
Expand Down Expand Up @@ -60,6 +64,7 @@ target_include_directories(cfbase PUBLIC
# Link dependencies
target_link_libraries(cfbase PUBLIC
Qt6::Core
aex::aex
)

# Platform-specific link libraries
Expand Down
4 changes: 2 additions & 2 deletions base/device/console/console_helper.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#pragma once
#include "aex/policy_chain/policy_chain.hpp"
#include "base/export.h"
#include "base/policy_chain/policy_chain.hpp"
#include "console_defines.h"
#include <any>
#include <memory>
#include <string_view>

namespace cf::base::device::console {

using cf::PolicyChain;
using aex::PolicyChain;

/**
* @file console_helper.h
Expand Down
2 changes: 1 addition & 1 deletion base/device/console/impl/console_platform.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "console_platform.h"
#include "base/macros.h"
#include "aex/macros.h"
#include <memory>
#include <optional>

Expand Down
4 changes: 2 additions & 2 deletions base/device/console/impl/console_platform.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once
#include "../console_defines.h"
#include "base/policy_chain/policy_chain.hpp"
#include "aex/policy_chain/policy_chain.hpp"
#include <memory>

namespace cf::base::device::console {
Expand All @@ -19,7 +19,7 @@ static constexpr console::console_size_t INVALID_ONE{-1, -1};
* @ingroup device
*/

using cf::PolicyChain;
using aex::PolicyChain;

/**
* @brief Creates the platform-specific console size policy chain.
Expand Down
4 changes: 2 additions & 2 deletions base/device/console/impl/unix/console_unix_impl.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "base/macro/system_judge.h"
#include "aex/macro/system_judge.h"

#ifndef CFDESKTOP_OS_LINUX
# error "Unexpected Includes As This File is using for Linux/Unix Implementations"
Expand All @@ -13,7 +13,7 @@
# include <unistd.h>
namespace cf::base::device::impl::Unix {
console::console_size_t console_size() {
struct winsize console_window_size {};
struct winsize console_window_size{};
const auto result = ioctl(STDOUT_FILENO, TIOCGWINSZ, &console_window_size);
if (result == 0) {
return {console_window_size.ws_col, console_window_size.ws_row};
Expand Down
2 changes: 1 addition & 1 deletion base/device/console/impl/win/console_win_impl.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "base/macro/system_judge.h"
#include "aex/macro/system_judge.h"

#ifndef CFDESKTOP_OS_WINDOWS
# error "Unexpected Includes As This File is using for Windows Implementations"
Expand Down
Loading
Loading