From 90125d2d80d770d0aa77632ddad0ff46fcb1671b Mon Sep 17 00:00:00 2001 From: bitkojine <74838686+bitkojine@users.noreply.github.com> Date: Wed, 18 Feb 2026 03:46:29 +0200 Subject: [PATCH 1/6] Add Causal Factory showcase and one-line setup to README --- README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b23bcf..173ee5c 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,24 @@ We don't just claim stability; we prove it. Causaloop is continuously benchmarke - **🔄 Session Restore**: Subscriptions automatically resume after replay, eliminating stuck "phantom pending" states. --- - + + ## 🎮 Featured Showcase: Causal Factory + + **[Causal Factory](https://github.com/bitkojine/causal-factory)** is a high-performance industrial logistics simulation built to stress test Causaloop. + + It demonstrates: + - **Massive Entity Scaling**: 100,000+ autonomous bots moving in a single tick. + - **Complex Logistics**: Dynamic supply/demand re-routing and state transition bursts. + - **The "Live-Link" Architecture**: A developer setup that hard-wires the game directly to the engine source for zero-build, instant-feedback development. + + ### Quick One-Line Setup + To clone the engine and the showcase game in the required sister-folder structure: + ```bash + git clone https://github.com/bitkojine/causal-factory.git causal-factory && git clone https://github.com/bitkojine/causaloop.git causaloop-repo && cd causaloop-repo && pnpm install && cd ../causal-factory && pnpm install && pnpm run dev + ``` + + --- + ## 🚀 Getting Started ### Prerequisites From c20b9123ba21e025b49714ffd33e248db9e8c2d3 Mon Sep 17 00:00:00 2001 From: bitkojine <74838686+bitkojine@users.noreply.github.com> Date: Wed, 18 Feb 2026 03:47:24 +0200 Subject: [PATCH 2/6] docs: fix README formatting --- README.md | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 173ee5c..1881f94 100644 --- a/README.md +++ b/README.md @@ -80,24 +80,27 @@ We don't just claim stability; we prove it. Causaloop is continuously benchmarke - **🔄 Session Restore**: Subscriptions automatically resume after replay, eliminating stuck "phantom pending" states. --- - - ## 🎮 Featured Showcase: Causal Factory - - **[Causal Factory](https://github.com/bitkojine/causal-factory)** is a high-performance industrial logistics simulation built to stress test Causaloop. - - It demonstrates: - - **Massive Entity Scaling**: 100,000+ autonomous bots moving in a single tick. - - **Complex Logistics**: Dynamic supply/demand re-routing and state transition bursts. - - **The "Live-Link" Architecture**: A developer setup that hard-wires the game directly to the engine source for zero-build, instant-feedback development. - - ### Quick One-Line Setup - To clone the engine and the showcase game in the required sister-folder structure: - ```bash - git clone https://github.com/bitkojine/causal-factory.git causal-factory && git clone https://github.com/bitkojine/causaloop.git causaloop-repo && cd causaloop-repo && pnpm install && cd ../causal-factory && pnpm install && pnpm run dev - ``` - - --- - + +## 🎮 Featured Showcase: Causal Factory + +**[Causal Factory](https://github.com/bitkojine/causal-factory)** is a high-performance industrial logistics simulation built to stress test Causaloop. + +It demonstrates: + +- **Massive Entity Scaling**: 100,000+ autonomous bots moving in a single tick. +- **Complex Logistics**: Dynamic supply/demand re-routing and state transition bursts. +- **The "Live-Link" Architecture**: A developer setup that hard-wires the game directly to the engine source for zero-build, instant-feedback development. + +### Quick One-Line Setup + +To clone the engine and the showcase game in the required sister-folder structure: + +```bash +git clone https://github.com/bitkojine/causal-factory.git causal-factory && git clone https://github.com/bitkojine/causaloop.git causaloop-repo && cd causaloop-repo && pnpm install && cd ../causal-factory && pnpm install && pnpm run dev +``` + +--- + ## 🚀 Getting Started ### Prerequisites From 41c12446ecb443e38e3589c06ad3725b30763d7d Mon Sep 17 00:00:00 2001 From: bitkojine <74838686+bitkojine@users.noreply.github.com> Date: Wed, 18 Feb 2026 03:52:30 +0200 Subject: [PATCH 3/6] feat: add magic verification identity badge --- packages/core/src/dispatcher.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/core/src/dispatcher.ts b/packages/core/src/dispatcher.ts index cfc8132..0eceb85 100644 --- a/packages/core/src/dispatcher.ts +++ b/packages/core/src/dispatcher.ts @@ -10,6 +10,17 @@ import { UpdateContext, } from "./types.js"; import { Subscription, diffSubscriptions } from "./subscriptions.js"; + +// LIVE-LINK VERIFICATION: Change this ASCII art to see the game react instantly! +export const __CAUSALOOP_DEV_IDENTITY__ = ` + ________ + / ____ \\ + / / \\ \\ + | | | | CAUSALOOP + \\ \\____/ / CORE-ENGINE + \\________/ +`; + export interface DispatcherOptions< M extends Model, G extends Msg, From 865bd076d9343be57ebb532ef59ed92af6407478 Mon Sep 17 00:00:00 2001 From: bitkojine <74838686+bitkojine@users.noreply.github.com> Date: Wed, 18 Feb 2026 03:52:41 +0200 Subject: [PATCH 4/6] feat: remove forbidden comments from identity badge --- packages/core/src/dispatcher.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/src/dispatcher.ts b/packages/core/src/dispatcher.ts index 0eceb85..330eedd 100644 --- a/packages/core/src/dispatcher.ts +++ b/packages/core/src/dispatcher.ts @@ -11,7 +11,6 @@ import { } from "./types.js"; import { Subscription, diffSubscriptions } from "./subscriptions.js"; -// LIVE-LINK VERIFICATION: Change this ASCII art to see the game react instantly! export const __CAUSALOOP_DEV_IDENTITY__ = ` ________ / ____ \\ From 6fa2c96abae4ea6f3b35e2b49310a6eff68f7af7 Mon Sep 17 00:00:00 2001 From: bitkojine <74838686+bitkojine@users.noreply.github.com> Date: Wed, 18 Feb 2026 03:55:11 +0200 Subject: [PATCH 5/6] style: redesign engine identity badge with premium infinity loop motif --- packages/core/src/dispatcher.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/core/src/dispatcher.ts b/packages/core/src/dispatcher.ts index 330eedd..890412b 100644 --- a/packages/core/src/dispatcher.ts +++ b/packages/core/src/dispatcher.ts @@ -12,12 +12,13 @@ import { import { Subscription, diffSubscriptions } from "./subscriptions.js"; export const __CAUSALOOP_DEV_IDENTITY__ = ` - ________ - / ____ \\ - / / \\ \\ - | | | | CAUSALOOP - \\ \\____/ / CORE-ENGINE - \\________/ + ▄██████████████████▄ + ██▀▀ ▐██ ▀▀██ + ▐█▌ ▐██ ▐█▌ + ▐█▌ ▄██████████▄ ▐█▌ CAUSALOOP + ▐█▌ ██▀▀ ▐██ ▀▀██ ▐█▌ CORE-ENGINE + ██▄▄ ▐██ ▄▄██ [LIVE-SRC] + ▀██████████████████▀ `; export interface DispatcherOptions< From e7ffb7ed396a296ac87f4a36f46771b6107f2f55 Mon Sep 17 00:00:00 2001 From: bitkojine <74838686+bitkojine@users.noreply.github.com> Date: Wed, 18 Feb 2026 03:59:04 +0200 Subject: [PATCH 6/6] style: replace legacy logo.png with premium ASCII logo --- README.md | 10 +++++++++- logo.png | Bin 29767 -> 0 bytes 2 files changed, 9 insertions(+), 1 deletion(-) delete mode 100644 logo.png diff --git a/README.md b/README.md index 1881f94..cfbb351 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,13 @@
- Causaloop Logo +
+   ▄██████████████████▄
+  ██▀▀     ▐██      ▀▀██
+ ▐█▌       ▐██       ▐█▌
+ ▐█▌   ▄██████████▄  ▐█▌ CAUSALOOP
+ ▐█▌  ██▀▀ ▐██ ▀▀██  ▐█▌ CORE-ENGINE
+  ██▄▄     ▐██     ▄▄██  [LIVE-SRC]
+   ▀██████████████████▀
+  

Causaloop

A production-grade TypeScript ecosystem for deterministic, effect-safe MVU applications.

diff --git a/logo.png b/logo.png deleted file mode 100644 index 715d8ef9f1f61e7bd6d38968b0ed385b460c9a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29767 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