From 0c021dfdc9670814f4d93a7f07047f121e1e5742 Mon Sep 17 00:00:00 2001 From: leora Date: Thu, 8 Oct 2026 20:50:27 +0800 Subject: [PATCH] README: page text editing --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 270a3b3..5e9a78c 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,13 @@ never changes the page for anyone else. **Reset look** in the header, or saying - The CSS uses cascade layers in the order `base < user < protected`. The TEST DEMO banner, the agent badge, and the checkout, cash and receipt panels (fee lines, totals, the test-card notice and the card inputs) live in `protected`. No theme can hide, recolour or shrink them. - Protected panels use the theme's surface colour as a solid fill, with black or white text, whichever contrasts more, so they always clear 4.5:1. The banner and badge use fixed high-contrast colours. - Text sitting directly on the page background switches to readable ink. If no ink clears 4.5:1 against every gradient stop, it gets a scrim behind it. +- **Page text.** The logo (top-left brand text), headline, subtitle, footer, quick-action buttons and bullets are editable + through `copy`. The built-in agent (`market/copyedit.py`) understands "replace/change/rename/swap A to/with/into B", + locations such as top left, header, logo, brand, site name, title, headline, subtitle and footer, quoted or unquoted text, + and a generic find-and-replace when A is the current text of exactly one slot. It keeps the case you type for B; text typed + all in lowercase takes the style of the text it replaces ("new internet" replacing "Agent Market" gives "New Internet"). + When it can't tell what to change, it says what it understood and offers the closest option. The model prompt gets the + same slot map plus the visitor's current page text (`PAGE_TEXT`). - If the model is unavailable, the built-in agent understands the common look commands: presets, light/dark, background colours, gradients and patterns, accent and text colour, fonts, bigger or smaller text, corners, density, card style, list/grid, columns, chat position and size, hiding or showing sections, headline, logo and subtitle, animations, and reset. ### Fees @@ -203,6 +210,7 @@ python3 tests/e2e_http.py http://127.0.0.1:8795 # HTTP end-to-end incl bash tests/llm_proxy_check.sh # fake LLM: 429 chain, cooldown, fallback, key handling, rate limit python3 tests/nl_check.py http://127.0.0.1:8795 # real model: 6 natural-language prompts python3 tests/test_theme.py # theme spec + customCss sanitiser +python3 tests/test_copyedit.py # built-in copy edits (logo/headline/... phrasings) NODE_PATH=... node tests/theme_check.js BASE ./screenshots # chat restyles, guardrail contrast, persistence, hostile stored theme, reset (REQUIRE_LLM=1 to insist on the model) NODE_PATH=/path/to/node_modules node tests/browser_e2e.js http://127.0.0.1:8795 ./screenshots # headless Chrome (14 checks) NODE_PATH=/path/to/node_modules bash tests/fake_model_browser.sh # React UI vs fake model: badges, fallback text, quota, rate-limit toast, sanitised set_theme