diff --git a/README.en.md b/README.en.md index 09cb11a..4050420 100644 --- a/README.en.md +++ b/README.en.md @@ -1,7 +1,7 @@ # ClawScope

- ClawScope cover + ClawScope cover

**Memory Made Visible, Evolution Enabled** · [中文](README.zh.md) @@ -17,6 +17,12 @@ An OpenClaw memory and evolution management tool — a cross-platform desktop ap - **Configuration Management** — Centrally manage OpenClaw node configurations and state - **Cross-Platform** — Native desktop app for Windows / macOS / Linux +## Architecture Overview + +ClawScope is a local-first desktop control plane: React renders the memory, configuration, and evolution workspaces; Tauri IPC forwards UI actions into the Rust command layer; and Rust talks to OpenClaw Gateway over WebSocket to access agents, memory, configuration, and evolution targets. Local JSON storage only keeps connection identity, endpoints, audit history, and snapshots for reconnect, traceability, and rollback. + +![ClawScope system architecture](public/images/diagrams/clawscope-system-architecture.svg) + ## Quick Start ```bash diff --git a/README.md b/README.md index 09cb11a..4050420 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # ClawScope

- ClawScope cover + ClawScope cover

**Memory Made Visible, Evolution Enabled** · [中文](README.zh.md) @@ -17,6 +17,12 @@ An OpenClaw memory and evolution management tool — a cross-platform desktop ap - **Configuration Management** — Centrally manage OpenClaw node configurations and state - **Cross-Platform** — Native desktop app for Windows / macOS / Linux +## Architecture Overview + +ClawScope is a local-first desktop control plane: React renders the memory, configuration, and evolution workspaces; Tauri IPC forwards UI actions into the Rust command layer; and Rust talks to OpenClaw Gateway over WebSocket to access agents, memory, configuration, and evolution targets. Local JSON storage only keeps connection identity, endpoints, audit history, and snapshots for reconnect, traceability, and rollback. + +![ClawScope system architecture](public/images/diagrams/clawscope-system-architecture.svg) + ## Quick Start ```bash diff --git a/public/images/covers/clawscope-cover-v5-animated-en.gif b/public/images/covers/clawscope-cover-v5-animated-en.gif new file mode 100644 index 0000000..5469bcf Binary files /dev/null and b/public/images/covers/clawscope-cover-v5-animated-en.gif differ diff --git a/public/images/covers/clawscope-cover-v5-animated-en.webp b/public/images/covers/clawscope-cover-v5-animated-en.webp new file mode 100644 index 0000000..4ed651e Binary files /dev/null and b/public/images/covers/clawscope-cover-v5-animated-en.webp differ diff --git a/public/images/covers/clawscope-cover-v5-final-en.meta.txt b/public/images/covers/clawscope-cover-v5-final-en.meta.txt new file mode 100644 index 0000000..4176ad2 --- /dev/null +++ b/public/images/covers/clawscope-cover-v5-final-en.meta.txt @@ -0,0 +1,12 @@ +ClawScope README cover post-processing +locale=en +background=D:\Dev\claw-scope\public\images\covers\clawscope-cover-bg-v3.png +icon=D:\Dev\claw-scope\icon-source.png +static=D:\Dev\claw-scope\public\images\covers\clawscope-cover-v5-final-en.png +animated_webp=D:\Dev\claw-scope\public\images\covers\clawscope-cover-v5-animated-en.webp +animated_gif=D:\Dev\claw-scope\public\images\covers\clawscope-cover-v5-animated-en.gif +canvas=3840x2160 +icon_display=900x900 +icon_center=(860, 1080) +icon_policy=uniform upscale from icon-source.png, preserve silhouette/proportions/colors/transparency; no redraw or recolor +motion_language=flowing memory currents, pulsing knowledge nodes, semantic search ripples, OpenClaw ecosystem paths, evolution diff streams diff --git a/public/images/covers/clawscope-cover-v5-final-en.png b/public/images/covers/clawscope-cover-v5-final-en.png new file mode 100644 index 0000000..bc7bb20 Binary files /dev/null and b/public/images/covers/clawscope-cover-v5-final-en.png differ diff --git a/tmp/cover-restore/v5-en-frame0.png b/tmp/cover-restore/v5-en-frame0.png new file mode 100644 index 0000000..310f32c Binary files /dev/null and b/tmp/cover-restore/v5-en-frame0.png differ diff --git a/tmp/imagegen/postprocess_clawscope_cover.py b/tmp/imagegen/postprocess_clawscope_cover.py index 990ca19..d5b6cd7 100644 --- a/tmp/imagegen/postprocess_clawscope_cover.py +++ b/tmp/imagegen/postprocess_clawscope_cover.py @@ -14,7 +14,7 @@ OUT_DIR = ROOT / "public/images/covers" LOCALE = os.environ.get("COVER_LOCALE", "zh").strip().lower() IS_EN = LOCALE in {"en", "eng", "english"} -OUTPUT_VERSION = "v4" +OUTPUT_VERSION = os.environ.get("COVER_VERSION", "v4").strip() or "v4" OUTPUT_SUFFIX = "-en" if IS_EN else "" OUT_STATIC = OUT_DIR / f"clawscope-cover-{OUTPUT_VERSION}-final{OUTPUT_SUFFIX}.png" OUT_WEBP = OUT_DIR / f"clawscope-cover-{OUTPUT_VERSION}-animated{OUTPUT_SUFFIX}.webp" @@ -246,7 +246,7 @@ def draw_typography(base: Image.Image, scale: float) -> None: draw = ImageDraw.Draw(base) title_font = font(LATIN_FONT_BOLD, max(24, int(286 * scale))) - slogan_font = font(LATIN_FONT_BOLD if IS_EN else SC_FONT, max(20, int((98 if IS_EN else 116) * scale))) + slogan_font = font(LATIN_FONT if IS_EN else SC_FONT, max(20, int((98 if IS_EN else 116) * scale))) sub_font = font(LATIN_FONT if IS_EN else SC_FONT, max(12, int((60 if IS_EN else 68) * scale))) label_font = font(LATIN_FONT_BOLD, max(10, int(42 * scale))) @@ -280,8 +280,9 @@ def draw_typography(base: Image.Image, scale: float) -> None: slogan = "Memory Made Visible, Evolution Enabled" if IS_EN else "记忆可见,进化可期" sy = y + 370 * scale slogan_color = (4, 50, 76, 255) - # Same-color micro-offsets create weight without a visible shadow or outline. - for dx, dy in ((0, 0), (1 * scale, 0), (0, 1 * scale), (1 * scale, 1 * scale)): + slogan_offsets = ((0, 0),) if IS_EN else ((0, 0), (1 * scale, 0), (0, 1 * scale), (1 * scale, 1 * scale)) + # Chinese glyphs need slight reinforcement at README scale; English stays lighter. + for dx, dy in slogan_offsets: draw.text((x + dx, sy + dy), slogan, font=slogan_font, fill=slogan_color) sub = (