diff --git a/dist/page_schema.c b/dist/page_schema.c index ea94612..57e8378 100644 --- a/dist/page_schema.c +++ b/dist/page_schema.c @@ -10,9 +10,18 @@ el_val_t page_schema(void) { " \"@context\": \"https://schema.org\",\n" " \"@graph\": [\n" " {\n" + " \"@type\": \"WebSite\",\n" + " \"name\": \"Neuron\",\n" + " \"url\": \"https://neurontechnologies.ai\"\n" + " },\n" + " {\n" " \"@type\": \"Organization\",\n" " \"name\": \"Neuron, LLC\",\n" " \"url\": \"https://neurontechnologies.ai\",\n" + " \"logo\": {\n" + " \"@type\": \"ImageObject\",\n" + " \"url\": \"https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png\"\n" + " },\n" " \"founder\": {\n" " \"@type\": \"Person\",\n" " \"name\": \"Will Anderson\",\n" @@ -20,11 +29,15 @@ el_val_t page_schema(void) { " },\n" " \"description\": \"Neuron builds AI that runs on your machine, builds a memory over time, and gets sharper the longer you use it. One builder. Built different.\",\n" " \"foundingDate\": \"2026\",\n" - " \"sameAs\": [\"https://github.com/neuron-technologies\"]\n" + " \"sameAs\": [\n" + " \"https://github.com/neuron-technologies\",\n" + " \"https://x.com/neurontechai\"\n" + " ]\n" " },\n" " {\n" " \"@type\": \"SoftwareApplication\",\n" " \"name\": \"Neuron\",\n" + " \"url\": \"https://neurontechnologies.ai\",\n" " \"applicationCategory\": \"AIApplication\",\n" " \"operatingSystem\": \"macOS, Windows, Linux\",\n" " \"offers\": [\n" @@ -39,7 +52,7 @@ el_val_t page_schema(void) { " \"name\": \"Professional\",\n" " \"price\": \"19\",\n" " \"priceCurrency\": \"USD\",\n" - " \"billingIncrement\": \"monthly\"\n" + " \"billingPeriod\": \"P1M\"\n" " },\n" " {\n" " \"@type\": \"Offer\",\n" @@ -67,7 +80,7 @@ el_val_t page_schema(void) { " \"name\": \"What is Neuron?\",\n" " \"acceptedAnswer\": {\n" " \"@type\": \"Answer\",\n" - " \"text\": \"Neuron is an AI that runs on your machine and builds a persistent memory over time. Every other AI forgets you when you close the tab. Neuron doesn't. The longer you use it, the less you have to explain.\"\n" + " \"text\": \"Neuron is an AI that runs on your machine and builds a persistent memory over time. Every other AI forgets you when you close the tab. Neuron doesn't. The longer you use it, the less you have to explain.\"\n" " }\n" " },\n" " {\n" diff --git a/src/enterprise_terms.el b/src/enterprise_terms.el index 8a4a6d6..6519c33 100644 --- a/src/enterprise_terms.el +++ b/src/enterprise_terms.el @@ -1,7 +1,7 @@ // components/enterprise_terms.el - Enterprise Agreement page. // Returns complete HTML using the shared page shell from styles.el. -from styles import { page_open, page_close } +from styles import { page_open_seo, page_close } from nav import { nav } extern fn el_div(attrs: String, children: String) -> String @@ -15,7 +15,13 @@ extern fn el_li(attrs: String, children: String) -> String extern fn el_em(children: String) -> String fn enterprise_terms_page() -> String { - page_open() + enterprise_terms_body() + page_close() + page_open_seo( + "Enterprise Agreement — Neuron", + "The Neuron Enterprise Agreement governs enterprise deployments of Neuron software. Review licensing terms, data handling, and compliance provisions.", + "/legal/enterprise-terms", + "The Neuron Enterprise Agreement — governing enterprise deployments, licensing, data handling, and compliance.", + "false" + ) + enterprise_terms_body() + page_close() } fn et_section(num: String, title: String, body: String) -> String { diff --git a/src/styles.el b/src/styles.el index 3ad5054..c54cfe8 100644 --- a/src/styles.el +++ b/src/styles.el @@ -30,36 +30,80 @@ extern fn el_script_src(src: String, defer_load: Bool) -> String extern fn el_script_inline(js: String) -> String extern fn el_title(text: String) -> String -fn page_head() -> String { +// ── Shared head infrastructure ──────────────────────────────────────────────── +// page_head_base() emits charset, viewport, favicons, fonts, CSS, scripts. +// page_seo_block() emits the SEO/OG/canonical block for a given page. +// page_head() assembles both for the homepage. +// page_open_seo() is the variant used by inner pages with custom meta. + +fn page_head_base() -> String { return el_meta_charset("UTF-8") + el_meta("viewport", "width=device-width, initial-scale=1.0") - + el_title("Neuron - The AI That Remembers You") - + el_meta("description", "Every AI resets when you close the tab. Neuron doesn't. Runs on your machine. Remembers everything. Cheaper than ChatGPT on day one.") + "" + "" + "" + "" + el_link_stylesheet("https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap") + page_css() - + "" + + "" + "" + "" + "" + "" + page_ga_script() +} + +// page_seo_block — emits title, description, canonical, OG, and Twitter Card +// for a given page. Pass the production canonical path (e.g. "/" or "/about"). +fn page_seo_block(title: String, description: String, canonical_path: String, og_description: String) -> String { + let base: String = "https://neurontechnologies.ai" + let canonical: String = base + canonical_path + let og_image: String = base + "/assets/brand/neuron-wordmark-on-light@2x.png" + return el_title(title) + + el_meta("description", description) + "" - + "" - + "" - + "" - + "" + + "" + + "" + + "" + + "" + + "" + "" - + "" - + "" - + "" - + "" + + "" + + "" + + "" + + "" +} + +fn page_head() -> String { + return page_head_base() + + page_seo_block( + "Neuron — The AI That Remembers You", + "Every AI resets when you close the tab. Neuron doesn't. Runs on your machine. Remembers everything. Start free — no credit card required.", + "/", + "Every other AI forgets you. Neuron doesn't. Runs on your machine, builds a persistent memory over time, and gets sharper the longer you use it. Free tier available." + ) + page_schema() } fn page_open() -> String { return "
" + page_head() + "" } + +// page_open_seo — page shell for inner pages with unique per-page SEO. +// title: full