From 6994da58743a9d07af863b826db3d99ab555cbe1 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Tue, 19 May 2026 22:01:38 -0400 Subject: [PATCH 01/48] README Graphic Added Chevron's social preview image in README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 7c45dd4..5a59be1 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,10 @@
+
+ Chevron_GitHub_Social_Preview_ren001 +

+

( Nothing here yet, come back soon! )

From c6b241a0bee839b1b33690819a8c519404b78973 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Tue, 19 May 2026 22:03:07 -0400 Subject: [PATCH 02/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a59be1..b980373 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@
- Chevron_GitHub_Social_Preview_ren001 + Chevron_GitHub_Social_Preview_ren002

From 45dccf8b97c8d141cabb11fb54bac11615ddb54e Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Tue, 19 May 2026 23:38:53 -0400 Subject: [PATCH 03/48] Update README.md --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index b980373..a295cd6 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,18 @@ Chevron_GitHub_Social_Preview_ren002

+
+

What is this?

+

+ Every C++ GUI application has to settle the same foundational details before it can really begin: how memory is structured, how concurrent threads of execution are managed, + how windows are managed, how UI views change at runtime, etc. None of this is the application itself, yet it is crucial to the applications functionality. +

+

+ Chevron is a C++20 GUI application infrastructure library that owns the mechanics of a modern GUI application (process lifetime, window scaffolding, dynamic view handling, + memory/thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose. +

+
+

( Nothing here yet, come back soon! )

From d8e8d3594f6291ac8a50b560ba2b392bf83dc43d Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Tue, 19 May 2026 23:40:38 -0400 Subject: [PATCH 04/48] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a295cd6..02a5fd9 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,8 @@ Chevron is a C++20 GUI application infrastructure library that owns the mechanics of a modern GUI application (process lifetime, window scaffolding, dynamic view handling, memory/thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.

- +
-

( Nothing here yet, come back soon! )

+

( ...This README is still in progress... )

From a9563934e3d285121950deec26a8dc870156b3c8 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Tue, 19 May 2026 23:46:31 -0400 Subject: [PATCH 05/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02a5fd9..ec38f98 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@
-

What is this?

+

What is this?

Every C++ GUI application has to settle the same foundational details before it can really begin: how memory is structured, how concurrent threads of execution are managed, how windows are managed, how UI views change at runtime, etc. None of this is the application itself, yet it is crucial to the applications functionality. From c27836e34a67291ff9c512c04ea113d5e517d51e Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Tue, 19 May 2026 23:49:00 -0400 Subject: [PATCH 06/48] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ec38f98..526bf02 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,10 @@ how windows are managed, how UI views change at runtime, etc. None of this is the application itself, yet it is crucial to the applications functionality.

+ Chevron is a C++20 GUI application infrastructure library that owns the mechanics of a modern GUI application (process lifetime, window scaffolding, dynamic view handling, memory/thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose. +


From 316696603b60cf8d267323385c195dc245a7c5f4 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 00:10:22 -0400 Subject: [PATCH 07/48] Update README.md --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 526bf02..d23f193 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,17 @@


+> [!WARNING] +>

+> Chevron is in active early development. The API is unstable and breaking changes should be expected. This library is not yet suitable for production code. +>

+ +
+ +
+ +
+

( ...This README is still in progress... )

From 681460bc91948bc2ee8ca1e3890145f249eede9f Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 01:00:13 -0400 Subject: [PATCH 08/48] Update README.md --- README.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d23f193..09c29e5 100644 --- a/README.md +++ b/README.md @@ -38,14 +38,32 @@ > [!WARNING] >

-> Chevron is in active early development. The API is unstable and breaking changes should be expected. This library is not yet suitable for production code. +> Chevron is in active early development. The API is unstable and breaking changes should be expected. This library is not yet suitable for production code! >


-
+
+

What Chevron is NOT

+

+ Chevron is GUI application infrastructure, NOT a GUI framework abstraction +

+

+ It does not unify GUI frameworks behind a portable interface and it does not introduce an explicit widget layer of its own. A Chevron user picks exactly one GUI framework, includes + it directly, and writes GUI code as they typically would. What changes is the structural environment that code lives inside (the parts of the application that aren't about the + GUI but are around it). +

+

[ ...graph visually conveying Chevron's relationship to a GUI framework... ]

+

-
+

+ +
+

Planned GUI Framework Support

+

wxWidgets | Qt Framework

+

+ +

( ...This README is still in progress... )

From 11065995a9183a42a2dc42f282b29774204e57ec Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 01:06:36 -0400 Subject: [PATCH 09/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 09c29e5..2796fe6 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@

-

Planned GUI Framework Support

+

Planned GUI Framework Support

wxWidgets | Qt Framework


From e8ce7e14adb58af0ee15c64a03011343f5c6a189 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 01:10:05 -0400 Subject: [PATCH 10/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2796fe6..af4f556 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@

What is this?

Every C++ GUI application has to settle the same foundational details before it can really begin: how memory is structured, how concurrent threads of execution are managed, - how windows are managed, how UI views change at runtime, etc. None of this is the application itself, yet it is crucial to the applications functionality. + how windows are handled, how UI views change at runtime, etc. None of this is the application itself, yet it is crucial to the applications functionality.

From 488edba52b66753001545d4f9494b645703cf12e Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 01:16:50 -0400 Subject: [PATCH 11/48] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index af4f556..4493da8 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,9 @@ Chevron is GUI application infrastructure, NOT a GUI framework abstraction

- It does not unify GUI frameworks behind a portable interface and it does not introduce an explicit widget layer of its own. A Chevron user picks exactly one GUI framework, includes - it directly, and writes GUI code as they typically would. What changes is the structural environment that code lives inside (the parts of the application that aren't about the - GUI but are around it). + It does NOT unify GUI frameworks behind a portable interface and it does NOT introduce an explicit widget layer of its own. A Chevron user + picks exactly one GUI framework, includes it directly, and writes GUI code similar to how they typically would. What changes is the structural environment that code lives + inside (the parts of the application that aren't about the GUI but are around it).

[ ...graph visually conveying Chevron's relationship to a GUI framework... ]


From 7b94275ed7a8497419a879168c526deaa26edd80 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 01:33:15 -0400 Subject: [PATCH 12/48] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4493da8..ccbfa7d 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ memory/thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.

+

[ ...graphic visually conveying components Chevron provides downstream applications... ]


> [!WARNING] From 853a2c857860c4e6755a5158104054a9b69c729d Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 01:50:34 -0400 Subject: [PATCH 13/48] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ccbfa7d..0182f4a 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,6 @@ picks exactly one GUI framework, includes it directly, and writes GUI code similar to how they typically would. What changes is the structural environment that code lives inside (the parts of the application that aren't about the GUI but are around it).

-

[ ...graph visually conveying Chevron's relationship to a GUI framework... ]




From ba9e74ba4b72749c694e38ef1183c40b139df143 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 02:09:51 -0400 Subject: [PATCH 14/48] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0182f4a..85c7f5b 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,12 @@

What is this?

Every C++ GUI application has to settle the same foundational details before it can really begin: how memory is structured, how concurrent threads of execution are managed, - how windows are handled, how UI views change at runtime, etc. None of this is the application itself, yet it is crucial to the applications functionality. + how windows are handled, how UI views change at runtime, and more. None of this is the application itself, yet it is crucial to the applications functionality.

Chevron is a C++20 GUI application infrastructure library that owns the mechanics of a modern GUI application (process lifetime, window scaffolding, dynamic view handling, - memory/thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose. + thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.

[ ...graphic visually conveying components Chevron provides downstream applications... ]

From a177e17ff3e08fcd5b7e19459964f5c479c74d28 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 07:26:57 -0400 Subject: [PATCH 15/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 85c7f5b..6455475 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.

-

[ ...graphic visually conveying components Chevron provides downstream applications... ]

+ Access_Stack_001
> [!WARNING] From d09722c296b8e8e64efb06f64915b99b7705687b Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 07:38:35 -0400 Subject: [PATCH 16/48] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6455475..b678cd5 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,8 @@ Chevron is a C++20 GUI application infrastructure library that owns the mechanics of a modern GUI application (process lifetime, window scaffolding, dynamic view handling, thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose. -

- Access_Stack_001 +


+ Access_Stack_002
> [!WARNING] From 816d1ce546f963acaabe1f3f71fe1721c5575525 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 08:15:47 -0400 Subject: [PATCH 17/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b678cd5..2565b2c 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.


- Access_Stack_002 + Access_Stack_003
> [!WARNING] From db39b6a02405cab3fdbd4bf6c5547ac14fda6ae5 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 16:54:23 -0400 Subject: [PATCH 18/48] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2565b2c..56cc119 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@
- Chevron_GitHub_Social_Preview_ren002 + Chevron social preview graphic

@@ -34,7 +34,8 @@ thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.


- Access_Stack_003 + Diagram visually conveying components Chevron provides downstream applications +

( diagram showcasing components Chevron provides downstream applications )


> [!WARNING] From 9a5f644c4440192902a825fd60ee9597ed514fec Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 21:23:14 -0400 Subject: [PATCH 19/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 56cc119..55effab 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.


- Diagram visually conveying components Chevron provides downstream applications + Diagram visually conveying components Chevron provides downstream applications

( diagram showcasing components Chevron provides downstream applications )


From 8954685d73e0e71f43b1b1d7c81553ada51e78ca Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 23:29:12 -0400 Subject: [PATCH 20/48] Update README.md --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 55effab..cd823cc 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,10 @@

What Chevron is NOT

- Chevron is GUI application infrastructure, NOT a GUI framework abstraction + Chevron is GUI application infrastructure, +

+

+ NOT a GUI framework abstraction

It does NOT unify GUI frameworks behind a portable interface and it does NOT introduce an explicit widget layer of its own. A Chevron user @@ -59,6 +62,18 @@



+
+

Architecture Overview

+

+ Chevron is organized as three nested lifetime tiers, each owned and bounded by the one above it. AppProcess opens the process lifetime and lives for the full + duration of the application. Inside it, GUIEngine opens the GUI lifetime, governing framework initialization, the mainloop, and teardown. Inside that, each + live window is represented by a WindowEnvelope, created when a window is dispatched and destroyed when that window closes. Nothing in a tier may exist before + its enclosing tier has opened, and nothing may outlive its close. Every other piece of infrastructure in the library (memory, threading, windowing, dynamic views) + lives somewhere inside this nesting. +

+ Chevron three-tier-lifetime hierarchy diagram +

+

Planned GUI Framework Support

wxWidgets | Qt Framework

From 48094019d73b1b9878bb1daed611b1922bd3fac5 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 23:33:05 -0400 Subject: [PATCH 21/48] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cd823cc..bb08c47 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ lives somewhere inside this nesting.

Chevron three-tier-lifetime hierarchy diagram +

( diagram showcasing major system component lifetime progression )


From 29f233b96dd8d66f07a9c993c421f9ef873fedcf Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 20 May 2026 23:35:11 -0400 Subject: [PATCH 22/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb08c47..d3fe2db 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ lives somewhere inside this nesting.

Chevron three-tier-lifetime hierarchy diagram -

( diagram showcasing major system component lifetime progression )

+

( diagram showcasing major system component lifetime tiers )


From 519fbd263b33087320a535395263acd7121059bb Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 00:09:33 -0400 Subject: [PATCH 23/48] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d3fe2db..4cbf071 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@

Architecture Overview

+

Three-Tier-Lifetime Hierarchy

Chevron is organized as three nested lifetime tiers, each owned and bounded by the one above it. AppProcess opens the process lifetime and lives for the full duration of the application. Inside it, GUIEngine opens the GUI lifetime, governing framework initialization, the mainloop, and teardown. Inside that, each From 722090142f52fc15b82cfd2c5a8b79e39d5d13c4 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 00:28:29 -0400 Subject: [PATCH 24/48] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4cbf071..fa00a9b 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Chevron is GUI application infrastructure,

- NOT a GUI framework abstraction + not a GUI framework abstraction

It does NOT unify GUI frameworks behind a portable interface and it does NOT introduce an explicit widget layer of its own. A Chevron user @@ -72,7 +72,7 @@ its enclosing tier has opened, and nothing may outlive its close. Every other piece of infrastructure in the library (memory, threading, windowing, dynamic views) lives somewhere inside this nesting.

- Chevron three-tier-lifetime hierarchy diagram + Chevron three-tier-lifetime hierarchy diagram

( diagram showcasing major system component lifetime tiers )


From d77c86705f827e733752f3bfd2257027133ff67f Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 02:46:02 -0400 Subject: [PATCH 25/48] Update README.md --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README.md b/README.md index fa00a9b..534cd28 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,53 @@

( diagram showcasing major system component lifetime tiers )


+

Conceptual Chevron Usage

+ +```cpp +#include // `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` macros +#include // Application process-level constructs +#include // wxWidgets GUI framework engine +#include // Digital size units + +using chevron::AppProcess; +using WxEngine = chevron::wx::Engine; + +using chevron::ProcessMemoryConfig; +using chevron::ProcessThreadConfig; +using chevron::ProcessExitReport; + +ENTRY_POINT_METHOD_SIGNATURE +{ + ProcessMemoryConfig memoryConfig = /*Configure process memory*/; + ProcessThreadConfig threadConfig = /*Configure process threads*/; + + AppProcess proc{memoryConfig, threadConfig}; + + WxEngine::Configuration runtimeConfig; + runtimeConfig.forwardCmdlArgs(ENTRY_POINT_ARG_VARS); + + auto guiEngine = std::make_unique(runtimeConfig); + guiEngine->windowing().registerFactory( /*Callable that returns wxFrame pointer*/ ); + + proc.commitGUIEngine(std::move(guiEngine)); + proc.initializeGUIEngine(); + proc.mainloopEntry(); + + ProcessExitReport report = proc.shutdown(); + + return report.exitCode; +} +``` + + +
+

Planned GUI Framework Support

wxWidgets | Qt Framework

From 9e13e722b51b2058250b9d474f9f8d114c457129 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 02:47:22 -0400 Subject: [PATCH 26/48] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 534cd28..710a8f8 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,6 @@ #include // `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` macros #include // Application process-level constructs #include // wxWidgets GUI framework engine -#include // Digital size units using chevron::AppProcess; using WxEngine = chevron::wx::Engine; From 156544bbdab70f1898ba973073725f119d41e915 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 02:51:34 -0400 Subject: [PATCH 27/48] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 710a8f8..7ad0a07 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@

Conceptual Chevron Usage

```cpp -#include // `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` macros +#include // `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` macro #include // Application process-level constructs #include // wxWidgets GUI framework engine @@ -101,7 +101,7 @@ ENTRY_POINT_METHOD_SIGNATURE runtimeConfig.forwardCmdlArgs(ENTRY_POINT_ARG_VARS); auto guiEngine = std::make_unique(runtimeConfig); - guiEngine->windowing().registerFactory( /*Callable that returns wxFrame pointer*/ ); + guiEngine->windowing().registerFactory( /*Callable that returns new wxFrame pointer*/ ); proc.commitGUIEngine(std::move(guiEngine)); proc.initializeGUIEngine(); From 32ae29cf186550ee5e2b9acd4c41c09b5bc93d86 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 03:01:57 -0400 Subject: [PATCH 28/48] Update README.md --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ad0a07..7fdda43 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,13 @@

Conceptual Chevron Usage

```cpp +/*! + * @file main.cpp + * + * @brief + * Conceptual GUI application launch sequence. + */ + #include // `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` macro #include // Application process-level constructs #include // wxWidgets GUI framework engine @@ -90,8 +97,11 @@ using chevron::ProcessMemoryConfig; using chevron::ProcessThreadConfig; using chevron::ProcessExitReport; -ENTRY_POINT_METHOD_SIGNATURE -{ +/*! + * @brief + * Application entry point (main method) + */ +ENTRY_POINT_METHOD_SIGNATURE { ProcessMemoryConfig memoryConfig = /*Configure process memory*/; ProcessThreadConfig threadConfig = /*Configure process threads*/; From ead464d55efa8fc167a305d337ec4ed260372e7a Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 03:05:21 -0400 Subject: [PATCH 29/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7fdda43..d600c54 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ * @file main.cpp * * @brief - * Conceptual GUI application launch sequence. + * Conceptual portable GUI application launch sequence. */ #include // `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` macro From bd83409bd4d5c84fcede466bed974810d99128c2 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 03:16:25 -0400 Subject: [PATCH 30/48] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index d600c54..4c944dd 100644 --- a/README.md +++ b/README.md @@ -115,10 +115,9 @@ ENTRY_POINT_METHOD_SIGNATURE { proc.commitGUIEngine(std::move(guiEngine)); proc.initializeGUIEngine(); - proc.mainloopEntry(); + proc.mainloopEntry(); ProcessExitReport report = proc.shutdown(); - return report.exitCode; } ``` From e1277e35e8a244588620b79a7b04bdcdf6ca8d64 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 03:41:51 -0400 Subject: [PATCH 31/48] Update README.md --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4c944dd..896aeda 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,7 @@ using chevron::AppProcess; using WxEngine = chevron::wx::Engine; +using chevron::WindowFactory; using chevron::ProcessMemoryConfig; using chevron::ProcessThreadConfig; using chevron::ProcessExitReport; @@ -102,8 +103,8 @@ using chevron::ProcessExitReport; * Application entry point (main method) */ ENTRY_POINT_METHOD_SIGNATURE { - ProcessMemoryConfig memoryConfig = /*Configure process memory*/; - ProcessThreadConfig threadConfig = /*Configure process threads*/; + ProcessMemoryConfig memoryConfig = /*Configure process memory*/ ; + ProcessThreadConfig threadConfig = /*Configure process threads*/ ; AppProcess proc{memoryConfig, threadConfig}; @@ -111,7 +112,12 @@ ENTRY_POINT_METHOD_SIGNATURE { runtimeConfig.forwardCmdlArgs(ENTRY_POINT_ARG_VARS); auto guiEngine = std::make_unique(runtimeConfig); - guiEngine->windowing().registerFactory( /*Callable that returns new wxFrame pointer*/ ); + guiEngine->windowing().registerFactory( + WindowFactory{ + /*Callable that returns new wxFrame pointer*/, + /*Window dispatch descriptor*/ + } + ); proc.commitGUIEngine(std::move(guiEngine)); proc.initializeGUIEngine(); From 499c3e38fc7bcaf9a4ec0a9379391d80ea0838df Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Thu, 21 May 2026 03:45:39 -0400 Subject: [PATCH 32/48] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 896aeda..baf24bd 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ ENTRY_POINT_METHOD_SIGNATURE { runtimeConfig.forwardCmdlArgs(ENTRY_POINT_ARG_VARS); auto guiEngine = std::make_unique(runtimeConfig); + guiEngine->windowing().registerFactory( WindowFactory{ /*Callable that returns new wxFrame pointer*/, From 1e1f89121444547d955f66840d34c2e9cbd271a5 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 07:34:28 -0400 Subject: [PATCH 33/48] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index baf24bd..4457a29 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,11 @@

Conceptual Chevron Usage

+

+ Chevron applications are bootstrapped from the users own main() entry point. During this stage, the process is tailor configured to the applications profile, a GUI + engine is prepared for the users chosen framework, and window factories are registered to declare the application's window intent (this is also the ideal opportunity to + conduct any necessary pre-launch work). +

```cpp /*! From 29de087d0cf0b08a986ad147297f8cc19b62d019 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 07:48:23 -0400 Subject: [PATCH 34/48] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4457a29..c46daf0 100644 --- a/README.md +++ b/README.md @@ -77,10 +77,12 @@

Conceptual Chevron Usage

+

Bootstrapping / Application Launch

Chevron applications are bootstrapped from the users own main() entry point. During this stage, the process is tailor configured to the applications profile, a GUI - engine is prepared for the users chosen framework, and window factories are registered to declare the application's window intent (this is also the ideal opportunity to - conduct any necessary pre-launch work). + engine is prepared for the users chosen framework, and window factories are registered to declare window intent (this is also the ideal opportunity to conduct any necessary + pre-launch work). The main method handles process-wide setup, it is not application code. The application itself lives downstream of this stage, in the windows and + infrastructure that come online during runtime.

```cpp From 14446f226273c576a2f0b5e450a95456446b2042 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 07:51:42 -0400 Subject: [PATCH 35/48] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c46daf0..fdd63a2 100644 --- a/README.md +++ b/README.md @@ -81,8 +81,8 @@

Chevron applications are bootstrapped from the users own main() entry point. During this stage, the process is tailor configured to the applications profile, a GUI engine is prepared for the users chosen framework, and window factories are registered to declare window intent (this is also the ideal opportunity to conduct any necessary - pre-launch work). The main method handles process-wide setup, it is not application code. The application itself lives downstream of this stage, in the windows and - infrastructure that come online during runtime. + pre-launch work). The main method is always tasked with handling process-wide setup, it is not application code. The application itself lives downstream of this stage, in + the windows and infrastructure that come online during runtime.

```cpp From 75ade794f6adb3e89d3afab40a540e0140cb32ed Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 07:59:34 -0400 Subject: [PATCH 36/48] Update README.md --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fdd63a2..162b307 100644 --- a/README.md +++ b/README.md @@ -135,13 +135,10 @@ ENTRY_POINT_METHOD_SIGNATURE { return report.exitCode; } ``` -
From 1f67c2126e919dd95d018a131bc7973f3964768e Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 08:05:40 -0400 Subject: [PATCH 37/48] Update README.md --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 162b307..f6ecf83 100644 --- a/README.md +++ b/README.md @@ -80,11 +80,16 @@

Bootstrapping / Application Launch

Chevron applications are bootstrapped from the users own main() entry point. During this stage, the process is tailor configured to the applications profile, a GUI - engine is prepared for the users chosen framework, and window factories are registered to declare window intent (this is also the ideal opportunity to conduct any necessary - pre-launch work). The main method is always tasked with handling process-wide setup, it is not application code. The application itself lives downstream of this stage, in - the windows and infrastructure that come online during runtime. + engine is prepared for the users chosen framework, and window factories are registered to declare window intent. This is also the ideal opportunity to conduct any necessary + pre-launch work.

+> [!NOTE] +>

+> The main method is always tasked with handling process-wide setup, it is not application code. The application itself lives downstream of this stage, in the windows +> and infrastructure that come online during runtime. +>

+ ```cpp /*! * @file main.cpp @@ -135,10 +140,6 @@ ENTRY_POINT_METHOD_SIGNATURE { return report.exitCode; } ``` -

- The main method is always tasked with handling process-wide setup, it is not application code. The application itself lives downstream of this stage, in the windows and - infrastructure that come online during runtime. -


From cb9306ed584ddd75316173bfef861a45dfce89fc Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 08:50:54 -0400 Subject: [PATCH 38/48] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f6ecf83..7bcd0e1 100644 --- a/README.md +++ b/README.md @@ -80,8 +80,9 @@

Bootstrapping / Application Launch

Chevron applications are bootstrapped from the users own main() entry point. During this stage, the process is tailor configured to the applications profile, a GUI - engine is prepared for the users chosen framework, and window factories are registered to declare window intent. This is also the ideal opportunity to conduct any necessary - pre-launch work. + engine is prepared for the users chosen framework, and window factories are registered to declare window intent. Once setup work is completed on the established GUI engine, it + can then be handed off to AppProcess to enter application runtime under Chevron's direction. The bootstrapping phase is also the ideal opportunity to conduct any + necessary pre-launch work.

> [!NOTE] From 47b72f64dbb80c9f82f9390e37e7660f762db826 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 08:53:37 -0400 Subject: [PATCH 39/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7bcd0e1..c26fe3e 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@

Bootstrapping / Application Launch

Chevron applications are bootstrapped from the users own main() entry point. During this stage, the process is tailor configured to the applications profile, a GUI - engine is prepared for the users chosen framework, and window factories are registered to declare window intent. Once setup work is completed on the established GUI engine, it + engine is prepared for the users chosen framework, and window factories are registered to declare window intent. Once setup work is complete on the established GUI engine, it can then be handed off to AppProcess to enter application runtime under Chevron's direction. The bootstrapping phase is also the ideal opportunity to conduct any necessary pre-launch work.

From 1135243fa785c6407fd3f6358e85442a787f1944 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 09:54:20 -0400 Subject: [PATCH 40/48] Update README.md --- README.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c26fe3e..0562a7e 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ * Conceptual portable GUI application launch sequence. */ -#include // `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` macro +#include // Entry point helpers and macros #include // Application process-level constructs #include // wxWidgets GUI framework engine @@ -111,13 +111,17 @@ using chevron::ProcessMemoryConfig; using chevron::ProcessThreadConfig; using chevron::ProcessExitReport; +// Note: +// `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` are +// Chevron defined macros from . + /*! * @brief * Application entry point (main method) */ ENTRY_POINT_METHOD_SIGNATURE { - ProcessMemoryConfig memoryConfig = /*Configure process memory*/ ; - ProcessThreadConfig threadConfig = /*Configure process threads*/ ; + ProcessMemoryConfig memoryConfig{ /*Configure process memory*/ }; + ProcessThreadConfig threadConfig{ /*Configure process threads*/ }; AppProcess proc{memoryConfig, threadConfig}; @@ -146,7 +150,10 @@ ENTRY_POINT_METHOD_SIGNATURE {

Planned GUI Framework Support

-

wxWidgets | Qt Framework

+

+ wxWidgets | + Qt Framework +




From ad4df80e58c3c0bde37164104b17be23c3197a6c Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 17:24:37 -0400 Subject: [PATCH 41/48] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 0562a7e..a6e11ae 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,13 @@


+
+

License

+

+ Chevron is released under the GNU Affero GPLv3 license. See LICENSE for the full text. +

+

+

From 205d375efc6c659e8d11fe646af2aec9962046db Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 17:32:09 -0400 Subject: [PATCH 42/48] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index a6e11ae..70ff817 100644 --- a/README.md +++ b/README.md @@ -163,8 +163,6 @@ ENTRY_POINT_METHOD_SIGNATURE {

-

-

( ...This README is still in progress... )

From b146a66014bfcb687a91d54d2af32f927641c9a8 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 18:17:58 -0400 Subject: [PATCH 43/48] Update README.md --- README.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/README.md b/README.md index 70ff817..fc65580 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,89 @@

+
+

Updates

+

Subsystem Development Progress

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SubsystemStatusNotes
Process LifecycleDesignAppProcess design still pending further library development
GUI RuntimeDesignGUIEngine design still pending further library development
Memory InfrastructureDesign + Process-level memory construct designs/implementations complete; Broader memory hierarchy still in-progress +
Thread InfrastructureDesignThreadCore and related entity designs still incomplete
Host System ServicesNot StartedN/a
Logging SystemNot StartedN/a
Windowing SystemDesign + WindowCoordinator and WindowDispatcher designs nearly complete; WindowEnvelope and WindowingSubsystem still + pending further design +
Window Component SystemDesignPending further window facilities design and development
Dynamic View SystemDesignPending further window facilities design and development
Event Routing SystemNot StartedN/a
Messaging InfrastructureNot StartedN/a
Telemetry InfrastructureNot StartedN/a
+

+ +

+

Architecture Overview

Three-Tier-Lifetime Hierarchy

From 79d9cadecd2e4ab2936cbf5d27c97111eafaeb6e Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 18:22:23 -0400 Subject: [PATCH 44/48] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fc65580..596c357 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@

-

Updates

+

Development Updates

Subsystem Development Progress

@@ -124,12 +124,12 @@ - + - + From be261980313309c2c4cec3c5013ae1178dbc160c Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 18:24:54 -0400 Subject: [PATCH 45/48] Update README.md --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 596c357..8c3d528 100644 --- a/README.md +++ b/README.md @@ -83,39 +83,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + From a6380951286a160f78ca28ee1a19de60244f5055 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 18:27:38 -0400 Subject: [PATCH 46/48] Update README.md --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 8c3d528..8a72164 100644 --- a/README.md +++ b/README.md @@ -75,46 +75,46 @@
Window Component System DesignPending further window facilities design and developmentIncomplete design; Pending further window facilities design and development
Dynamic View System DesignPending further window facilities design and developmentIncomplete design; Pending further window facilities design and development
Event Routing System
Process LifecycleDesignDesign AppProcess design still pending further library development
GUI RuntimeDesignDesign GUIEngine design still pending further library development
Memory InfrastructureDesignDesign Process-level memory construct designs/implementations complete; Broader memory hierarchy still in-progress
Thread InfrastructureDesignDesign ThreadCore and related entity designs still incomplete
Host System ServicesNot StartedNot Started N/a
Logging SystemNot StartedNot Started N/a
Windowing SystemDesignDesign WindowCoordinator and WindowDispatcher designs nearly complete; WindowEnvelope and WindowingSubsystem still pending further design @@ -123,27 +123,27 @@
Window Component SystemDesignDesign Incomplete design; Pending further window facilities design and development
Dynamic View SystemDesignDesign Incomplete design; Pending further window facilities design and development
Event Routing SystemNot StartedNot Started N/a
Messaging InfrastructureNot StartedNot Started N/a
Telemetry InfrastructureNot StartedNot Started N/a
- - - + + + - + - + - + - + - + - + - + - + - + - + - + - + From 83c9e2f71d010b6a362a0f95e72846e9539f13d3 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Fri, 22 May 2026 19:27:25 -0400 Subject: [PATCH 47/48] Update README.md --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a72164..6cff3ac 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose.


- Diagram visually conveying components Chevron provides downstream applications + Diagram visually conveying components Chevron provides downstream applications

( diagram showcasing components Chevron provides downstream applications )


@@ -163,7 +163,15 @@ lives somewhere inside this nesting.

Chevron three-tier-lifetime hierarchy diagram -

( diagram showcasing major system component lifetime tiers )

+

( diagram showcasing major system component lifetime tiers )


+

Chevron Application Structure

+

+ Every Chevron application is structured around a single AppProcess at its root. AppProcess owns the GUIEngine, an abstraction whose + concrete implementation matches the user's chosen GUI framework. The GUI engine hosts Chevron's windowing infrastructure: a dispatcher that creates windows, a coordinator + that manages them once they exist, and a windowing subsystem that surfaces these components together as a coherent user-facing API. Live windows are represented by + WindowEnvelope instances held by the coordinator, each carrying its own per-window infrastructure (PWI). The application's behavior + lives inside those windows, where the user writes code against the chosen GUI framework directly. +


Conceptual Chevron Usage

From d34fc400462297c5af039b7ec0fffe5eb9877f41 Mon Sep 17 00:00:00 2001 From: Jamon Bailey <83630529+jamon-bailey@users.noreply.github.com> Date: Wed, 3 Jun 2026 19:35:58 -0400 Subject: [PATCH 48/48] README Update --- docs/templ/README.md.in | 238 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 237 insertions(+), 1 deletion(-) diff --git a/docs/templ/README.md.in b/docs/templ/README.md.in index 914f912..8cc328b 100644 --- a/docs/templ/README.md.in +++ b/docs/templ/README.md.in @@ -19,5 +19,241 @@
-

( Nothing here yet, come back soon! )

+ Chevron social preview graphic +

+ +
+

What is this?

+

+ Every C++ GUI application has to settle the same foundational details before it can really begin: how memory is structured, how concurrent threads of execution are managed, + how windows are handled, how UI views change at runtime, and more. None of this is the application itself, yet it is crucial to the applications functionality. +

+

+ + Chevron is a C++20 GUI application infrastructure library that owns the mechanics of a modern GUI application (process lifetime, window scaffolding, dynamic view handling, + thread infrastructure, etc.) so user code can focus on the application itself, written directly against the GUI framework the user chose. + +


+ Diagram visually conveying components Chevron provides downstream applications +

( diagram showcasing components Chevron provides downstream applications )

+

+ +> [!WARNING] +>

+> Chevron is in active early development. The API is unstable and breaking changes should be expected. This library is not yet suitable for production code! +>

+ +
+ +
+

What Chevron is NOT

+

+ Chevron is GUI application infrastructure, +

+

+ not a GUI framework abstraction +

+

+ It does NOT unify GUI frameworks behind a portable interface and it does NOT introduce an explicit widget layer of its own. A Chevron user + picks exactly one GUI framework, includes it directly, and writes GUI code similar to how they typically would. What changes is the structural environment that code lives + inside (the parts of the application that aren't about the GUI but are around it). +

+

+ +
+

License

+

+ Chevron is released under the GNU Affero GPLv3 license. See LICENSE for the full text. +

+

+ +

+ +
+

Development Updates

+

Subsystem Development Progress

+
SubsystemStatusNotesSubsystemStatusNotes
Process LifecycleProcess Lifecycle Design AppProcess design still pending further library development
GUI RuntimeGUI Runtime Design GUIEngine design still pending further library development
Memory InfrastructureMemory Infrastructure Design Process-level memory construct designs/implementations complete; Broader memory hierarchy still in-progress
Thread InfrastructureThread Infrastructure Design ThreadCore and related entity designs still incomplete
Host System ServicesHost System Services Not Started N/a
Logging SystemLogging System Not Started N/a
Windowing SystemWindowing System Design WindowCoordinator and WindowDispatcher designs nearly complete; WindowEnvelope and WindowingSubsystem still @@ -122,27 +122,27 @@
Window Component SystemWindow Component System Design Incomplete design; Pending further window facilities design and development
Dynamic View SystemDynamic View System Design Incomplete design; Pending further window facilities design and development
Event Routing SystemEvent Routing System Not Started N/a
Messaging InfrastructureMessaging Infrastructure Not Started N/a
Telemetry InfrastructureTelemetry Infrastructure Not Started N/a
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SubsystemStatusNotes
Process LifecycleDesignAppProcess design still pending further library development
GUI RuntimeDesignGUIEngine design still pending further library development
Memory InfrastructureDesign + Process-level memory construct designs/implementations complete; Broader memory hierarchy still in-progress +
Thread InfrastructureDesignThreadCore and related entity designs still incomplete
Host System ServicesNot StartedN/a
Logging SystemNot StartedN/a
Windowing SystemDesign + WindowCoordinator and WindowDispatcher designs nearly complete; WindowEnvelope and WindowingSubsystem still + pending further design +
Window Component SystemDesignIncomplete design; Pending further window facilities design and development
Dynamic View SystemDesignIncomplete design; Pending further window facilities design and development
Event Routing SystemNot StartedN/a
Messaging InfrastructureNot StartedN/a
Telemetry InfrastructureNot StartedN/a
+

+ +

+ +
+

Architecture Overview

+

Three-Tier-Lifetime Hierarchy

+

+ Chevron is organized as three nested lifetime tiers, each owned and bounded by the one above it. AppProcess opens the process lifetime and lives for the full + duration of the application. Inside it, GUIEngine opens the GUI lifetime, governing framework initialization, the mainloop, and teardown. Inside that, each + live window is represented by a WindowEnvelope, created when a window is dispatched and destroyed when that window closes. Nothing in a tier may exist before + its enclosing tier has opened, and nothing may outlive its close. Every other piece of infrastructure in the library (memory, threading, windowing, dynamic views) + lives somewhere inside this nesting. +

+ Chevron three-tier-lifetime hierarchy diagram +

( diagram showcasing major system component lifetime tiers )


+

Chevron Application Structure

+

+ Every Chevron application is structured around a single AppProcess at its root. AppProcess owns the GUIEngine, an abstraction whose + concrete implementation matches the user's chosen GUI framework. The GUI engine hosts Chevron's windowing infrastructure: a dispatcher that creates windows, a coordinator + that manages them once they exist, and a windowing subsystem that surfaces these components together as a coherent user-facing API. Live windows are represented by + WindowEnvelope instances held by the coordinator, each carrying its own per-window infrastructure (PWI). The application's behavior + lives inside those windows, where the user writes code against the chosen GUI framework directly. +

+

+ +

Conceptual Chevron Usage

+

Bootstrapping / Application Launch

+

+ Chevron applications are bootstrapped from the users own main() entry point. During this stage, the process is tailor configured to the applications profile, a GUI + engine is prepared for the users chosen framework, and window factories are registered to declare window intent. Once setup work is complete on the established GUI engine, it + can then be handed off to AppProcess to enter application runtime under Chevron's direction. The bootstrapping phase is also the ideal opportunity to conduct any + necessary pre-launch work. +

+ +> [!NOTE] +>

+> The main method is always tasked with handling process-wide setup, it is not application code. The application itself lives downstream of this stage, in the windows +> and infrastructure that come online during runtime. +>

+ +```cpp +/*! + * @file main.cpp + * + * @brief + * Conceptual portable GUI application launch sequence. + */ + +#include // Entry point helpers and macros +#include // Application process-level constructs +#include // wxWidgets GUI framework engine + +using chevron::AppProcess; +using WxEngine = chevron::wx::Engine; + +using chevron::WindowFactory; +using chevron::ProcessMemoryConfig; +using chevron::ProcessThreadConfig; +using chevron::ProcessExitReport; + +// Note: +// `ENTRY_POINT_METHOD_SIGNATURE` and `ENTRY_POINT_ARG_VARS` are +// Chevron defined macros from . + +/*! + * @brief + * Application entry point (main method) + */ +ENTRY_POINT_METHOD_SIGNATURE { + ProcessMemoryConfig memoryConfig{ /*Configure process memory*/ }; + ProcessThreadConfig threadConfig{ /*Configure process threads*/ }; + + AppProcess proc{memoryConfig, threadConfig}; + + WxEngine::Configuration runtimeConfig; + runtimeConfig.forwardCmdlArgs(ENTRY_POINT_ARG_VARS); + + auto guiEngine = std::make_unique(runtimeConfig); + + guiEngine->windowing().registerFactory( + WindowFactory{ + /*Callable that returns new wxFrame pointer*/, + /*Window dispatch descriptor*/ + } + ); + + proc.commitGUIEngine(std::move(guiEngine)); + proc.initializeGUIEngine(); + + proc.mainloopEntry(); + ProcessExitReport report = proc.shutdown(); + return report.exitCode; +} +``` + +
+ +
+

Planned GUI Framework Support

+

+ wxWidgets | + Qt Framework +

+

+ +
+

( ...This README is still in progress... )