Skip to content

feat: peroid_update#7

Merged
Charliechen114514 merged 20 commits into
mainfrom
develop
Jun 26, 2026
Merged

feat: peroid_update#7
Charliechen114514 merged 20 commits into
mainfrom
develop

Conversation

@Charliechen114514

Copy link
Copy Markdown
Member

No description provided.

Restore a single source of truth for project status and conventions, and
fix the broken doc links left by prior "remove old documentations" cleanups.

- Restore document/status/current.md as the single progress truth source
  (qualitative status, no percentages); converge README/CLAUDE.md/todo to it
- Add /status slash command (first cognitive/orientation command)
- Make AGENT.md the single convention source; CLAUDE.md (@AGENT.md) and
  AGENTS.md become thin Claude/Codex entry points referencing it
- Share the AI hub via git (was gitignored): track .claude/commands/,
  settings.json, CLAUDE.md, AGENTS.md; keep MEMORY.md/BLUEPRINT.md/
  settings.local.json private
- Fix ~25 broken doc links (deleted done/*_status.md, missing milestone_01,
  MaterialRules.md, quick_start path)
- Dispatch upper layers (current.md, AGENT.md) to HandBook/scripts as the
  detail truth source
- Point git core.hooksPath at scripts/release/hooks/ (version-controlled);
  cmake/install_hooks.cmake sets it at configure time so hooks work right
  after clone — no manual install_hooks.sh needed
- Rename pre-commit.sample/pre-push.sample -> pre-commit/pre-push; CRLF -> LF
- Add three-layer dependency check to pre-commit (blocks base->ui/desktop,
  ui->desktop) — rules were documented in AGENT.md but not enforced on commit
- Make PROJECT_ROOT position-independent (git rev-parse --show-toplevel);
  required after moving hooks from .git/hooks (2 levels deep) to
  scripts/release/hooks (3 levels) — without it every check silently ran in
  the wrong cwd and no-op'd
- Add .clang-tidy naming config (config-only; not enforced in pre-commit/CI)
- Document the full discipline in AGENT.md "Code Quality Discipline"
- install_hooks.ps1: reference pre-commit/pre-push directly (was *.sample,
  which no longer exists after the core.hooksPath rename); add core.hooksPath
  recommendation in header
- install_hooks.sh: rename local sample_name -> source_name (hooks are no
  longer .sample files)
- .clang-tidy: fix naming to match the actual codebase — private members
  use the m_ prefix (was wrongly configured as _ suffix); constants are
  plain UPPER_CASE (drop the invented k prefix)
- AGENT.md: document the deliberate Doxygen two-tier model — lint.py is
  the enforced floor (codebase passes), DOXYGEN_REQUEST.md is the
  aspirational target (class @code, @author/@Date) that does not block
  commits
Distill the codebase's actual style preferences (data-backed) so new code and
AI tools match the project: prefer cf::expected for errors (reduce exceptions),
unique_ptr + make_unique ownership (shared_ptr only for shared ownership),
heavy auto/constexpr/string_view, interface-driven design with strict override,
and Qt without Q_DISABLE_COPY. These are preferences, not lint-enforced.
Resolve develop/main divergence for PR #6. Keep document/status/current.md as the status single source of truth (develop's doc architecture); main's #5 deleted it but left a dangling reference in document/todo/index.md. Adopt develop's todo/index.md (drops links to deleted done/*_status.md files and deprecated percentage notation).
… tracking)

Adds the last three milestones of the see-desktop -> tap-icon -> launch-app loop with taskbar running indicators.

MS3 taskbar: taskbar/{app_entry,taskbar_icon,centered_taskbar} — bottom-edge IPanel, centered icon tiles with hover zoom, self-drawn ripple, running dot; registered via PanelManager.

MS4 launcher: launcher/app_launch_service — QProcess::startDetached (splitCommand for args), returns cf::expected<qint64, AppLaunchError>, failures logged and never swallowed; taskbar appClicked wired to launch.

MS5 window tracking: window_info.h + IWindow::pid() (WSLX11Window reads _NET_WM_PID); WindowManager tracks windows and emits windowAppeared/Disappeared(pid) via QObject::destroyed (window_gone weak is already expired); taskbar indicator lights on matching window appear/gone (PID match; reliable for direct launches like xterm).

Verified: fast build, doxygen lint, clang-format, offscreen launch.
Move the Qt-free, header-only foundation utilities out of base/ into the
new aex org-level library (third_party/aex submodule @ v0.1.0):

- Migrated to aex: expected, scope_guard, weak_ptr, singleton, factory,
  lockfree, hash, policy_chain, indexed_vector, span, helpers, macro
  (+ macros.h). Namespace cf:: -> aex:: in the extracted library.
- Retained in base/: hardware probes (system/, device/, utils/) and the
  windows/linux platform helpers + export.h (consumed by probes).
- CFDesktop consumes aex via setup_third_party(); cfbase and its
  sub-modules link aex::aex. Foundation references across base/desktop/
  ui/test/example rewritten to aex:: (cf::desktop/log/config/ui/asciiart
  stay).
- base/ unit tests + example/base/common policy_chain example moved to aex.
- .gitignore: un-ignore tracked submodule path (third_party/aex).

aex standalone: 231/231 tests pass. CFDesktop: build green, 40/40 tests.
Move the entire ui/ tree out of CFDesktop into the new QuarkWidgets
org-level Qt6 Material 3 widget library (third_party/QuarkWidgets submodule
@ v0.1.0):

- Migrated to QuarkWidgets: ui/ (base/core/components/widget/models),
  test/ui (36 files), example/{gui,ui} (80 files). Namespace cf::ui:: -> qw::,
  export macro CF_UI_EXPORT -> QW_EXPORT, targets cfui -> quarkwidgets and
  cf_ui_* -> qw_ui_* (alias QuarkWidgets::quarkwidgets).
- CFDesktop consumes QuarkWidgets via setup_third_party(); removed
  add_subdirectory(ui). desktop links QuarkWidgets::quarkwidgets;
  cf::ui references in desktop rewritten to qw. desktop include style
  ("core/theme_manager.h", "ui/widget/...") preserved via QuarkWidgets'
  PUBLIC include dirs.
- Removed ui/, test/ui, example/{gui,ui} from CFDesktop.

QuarkWidgets standalone: 500/500 tests pass. CFDesktop: build green, 10/10
tests (ui tests now run from QuarkWidgets).
cpp-check.yml's linux-gcc / linux-clang / windows-msvc checkouts now use
actions/checkout submodules: recursive so third_party/aex and
third_party/QuarkWidgets are populated at checkout time. Previously they
relied on setup_third_party's FetchContent fallback (slow, and requires the
submodule repos to be pushed + network at configure).
…rtifacts)

All 10 conflicts were aex/QuarkWidgets extraction renames (cf::ui::->qw::, cfui->QuarkWidgets::quarkwidgets, base/weak_ptr->aex/weak_ptr) plus minimal-desktop closed-loop additions. origin/main (b84f466) is an older squash snapshot of develop, so develop is the strict content superset; every conflict resolved by taking develop. Verified: merged tree is identical to develop (git diff --cached develop empty), so buildability is unchanged. base/include/base/lockfree/mpsc_queue.hpp removed (moved to aex).
The QuarkWidgets extraction (Phase 2) renamed the cfui shared library to quarkwidgets (alias QuarkWidgets::quarkwidgets). test/desktop/init/CMakeLists.txt still referenced $<TARGET_FILE:cfui> in the WIN32 post-build DLL-copy block, which broke CMake configure on Windows MSVC (generator-expression eval failed; WIN32-only so Linux was unaffected). Use $<TARGET_FILE:quarkwidgets>. Also fix the stale cfui in the ExampleLauncher.cmake usage comment. aex is INTERFACE (header-only), no DLL to copy.
@Charliechen114514 Charliechen114514 merged commit adcfaa0 into main Jun 26, 2026
5 checks passed
@Charliechen114514 Charliechen114514 deleted the develop branch June 26, 2026 02:10
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.

1 participant