Compare commits
54 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c38a552266 | |||
| b87b0bed24 | |||
| ef352d2b8a | |||
| bb690c4690 | |||
| e148e6987d | |||
| 5812cb0452 | |||
| 5885826316 | |||
| 9554430b7e | |||
| 9685a42c7d | |||
| cac986c5e1 | |||
| 9650dad951 | |||
| c3aec8947a | |||
| 441d6d7cb5 | |||
| de9bf25437 | |||
| a59fdf4baa | |||
| ae633d3f71 | |||
| 43b5286fd5 | |||
| 04641ed1a3 | |||
| f4a202e220 | |||
| 3482e7e0f5 | |||
| beee0f99a7 | |||
| 4b70e8c186 | |||
| f9a5f93070 | |||
| 8e2deab5cb | |||
| ddeca2250e | |||
| d228701828 | |||
| 41f27e83aa | |||
| 533436e2c2 | |||
| aeea037e6f | |||
| 41bad94368 | |||
| 3020b4e902 | |||
| e82425a829 | |||
| c4cdb31529 | |||
| a1c0cc090d | |||
| 7df96a2273 | |||
| d3b890b739 | |||
| 3f069eeb79 | |||
| 8676751ed6 | |||
| a4f5312069 | |||
| c76e5a19eb | |||
| 58b7b32cdd | |||
| 0fdabcce86 | |||
| 79de47de2c | |||
| 45963154d9 | |||
| aabaa2ffb0 | |||
| d5dcb08ec6 | |||
| 20a36eeb9e | |||
| 32a179c24a | |||
| 6bc026de19 | |||
| 0ae526b72e | |||
| 8221aef605 | |||
| f8487c43a0 | |||
| 36b99dd9e2 | |||
| cd93af38fb |
Vendored
+20
-20
@@ -19,11 +19,11 @@ el_val_t el_li(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_p(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_span(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_form(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_h1(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_h2(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_h3(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_h4(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_button(el_val_t attrs, el_val_t children);
|
||||
el_val_t el_h1(el_val_t attrs, el_val_t text);
|
||||
el_val_t el_h2(el_val_t attrs, el_val_t text);
|
||||
el_val_t el_h3(el_val_t attrs, el_val_t text);
|
||||
el_val_t el_h4(el_val_t attrs, el_val_t text);
|
||||
el_val_t el_button(el_val_t attrs, el_val_t label);
|
||||
el_val_t el_a(el_val_t href, el_val_t attrs, el_val_t children);
|
||||
el_val_t el_input(el_val_t type_attr, el_val_t attrs);
|
||||
el_val_t el_textarea(el_val_t attrs, el_val_t value);
|
||||
@@ -176,43 +176,43 @@ el_val_t el_form(el_val_t attrs, el_val_t children) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t el_h1(el_val_t attrs, el_val_t children) {
|
||||
el_val_t el_h1(el_val_t attrs, el_val_t text) {
|
||||
if (str_eq(attrs, EL_STR(""))) {
|
||||
return el_str_concat(el_str_concat(EL_STR("<h1>"), children), EL_STR("</h1>"));
|
||||
return el_str_concat(el_str_concat(EL_STR("<h1>"), el_escape(text)), EL_STR("</h1>"));
|
||||
}
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h1 "), attrs), EL_STR(">")), children), EL_STR("</h1>"));
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h1 "), attrs), EL_STR(">")), el_escape(text)), EL_STR("</h1>"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t el_h2(el_val_t attrs, el_val_t children) {
|
||||
el_val_t el_h2(el_val_t attrs, el_val_t text) {
|
||||
if (str_eq(attrs, EL_STR(""))) {
|
||||
return el_str_concat(el_str_concat(EL_STR("<h2>"), children), EL_STR("</h2>"));
|
||||
return el_str_concat(el_str_concat(EL_STR("<h2>"), el_escape(text)), EL_STR("</h2>"));
|
||||
}
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h2 "), attrs), EL_STR(">")), children), EL_STR("</h2>"));
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h2 "), attrs), EL_STR(">")), el_escape(text)), EL_STR("</h2>"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t el_h3(el_val_t attrs, el_val_t children) {
|
||||
el_val_t el_h3(el_val_t attrs, el_val_t text) {
|
||||
if (str_eq(attrs, EL_STR(""))) {
|
||||
return el_str_concat(el_str_concat(EL_STR("<h3>"), children), EL_STR("</h3>"));
|
||||
return el_str_concat(el_str_concat(EL_STR("<h3>"), el_escape(text)), EL_STR("</h3>"));
|
||||
}
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h3 "), attrs), EL_STR(">")), children), EL_STR("</h3>"));
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h3 "), attrs), EL_STR(">")), el_escape(text)), EL_STR("</h3>"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t el_h4(el_val_t attrs, el_val_t children) {
|
||||
el_val_t el_h4(el_val_t attrs, el_val_t text) {
|
||||
if (str_eq(attrs, EL_STR(""))) {
|
||||
return el_str_concat(el_str_concat(EL_STR("<h4>"), children), EL_STR("</h4>"));
|
||||
return el_str_concat(el_str_concat(EL_STR("<h4>"), el_escape(text)), EL_STR("</h4>"));
|
||||
}
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h4 "), attrs), EL_STR(">")), children), EL_STR("</h4>"));
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<h4 "), attrs), EL_STR(">")), el_escape(text)), EL_STR("</h4>"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t el_button(el_val_t attrs, el_val_t children) {
|
||||
el_val_t el_button(el_val_t attrs, el_val_t label) {
|
||||
if (str_eq(attrs, EL_STR(""))) {
|
||||
return el_str_concat(el_str_concat(EL_STR("<button type=\"button\">"), children), EL_STR("</button>"));
|
||||
return el_str_concat(el_str_concat(EL_STR("<button type=\"button\">"), el_escape(label)), EL_STR("</button>"));
|
||||
}
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<button type=\"button\" "), attrs), EL_STR(">")), children), EL_STR("</button>"));
|
||||
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("<button type=\"button\" "), attrs), EL_STR(">")), el_escape(label)), EL_STR("</button>"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ fn checkout_page(plan: String, pub_key: String) -> String {
|
||||
el_li("", "Persistent memory - never resets")
|
||||
+ el_li("", "Local inference via Ollama (coming)")
|
||||
+ el_li("", "Bring your own API keys")
|
||||
+ el_li("", "3 marketplace plugins included")
|
||||
+ el_li("", "Plugin marketplace access (coming soon)")
|
||||
+ el_li("", "Core built-in capabilities")
|
||||
+ el_li("", "2 devices included")
|
||||
} else {
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ fn hero() -> String {
|
||||
|
||||
let sub: String = el_p(
|
||||
"class=\"hero-sub animate-up-3\"",
|
||||
"Runs on your machine. Remembers everything. Priced below ChatGPT on day one."
|
||||
"Runs on your machine. Remembers everything. The memory is yours — forever."
|
||||
)
|
||||
|
||||
let cta_primary: String = el_a(
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ fn marketplace_categories() -> String {
|
||||
|
||||
el_div(
|
||||
"class=\"marketplace-categories reveal\" style=\"transition-delay:320ms\"",
|
||||
marketplace_tags_block("Connectors - day one", connectors) +
|
||||
marketplace_tags_block("Connectors (rolling out)", connectors) +
|
||||
marketplace_tags_block("Following launch", following) +
|
||||
el_div(
|
||||
"",
|
||||
|
||||
+16
-2
@@ -36,7 +36,7 @@ fn pricing_free_features() -> String {
|
||||
el_li("", el_span("class=\"dash\"", "-") + el_span("", "Local inference via Ollama (coming)")) +
|
||||
el_li("", el_span("class=\"dash\"", "-") + el_span("", "Neuron Inference included when it launches - Q3 2026")) +
|
||||
el_li("", el_span("class=\"dash\"", "-") + el_span("", "Unlimited projects")) +
|
||||
el_li("", el_span("class=\"dash\"", "-") + el_span("", "3 marketplace plugins included")) +
|
||||
el_li("", el_span("class=\"dash\"", "-") + el_span("", "Plugin marketplace access (coming soon)")) +
|
||||
el_li("", el_span("class=\"dash\"", "-") + el_span("", "Core built-in capabilities"))
|
||||
}
|
||||
|
||||
@@ -91,6 +91,7 @@ fn pricing(sold: Int, total: Int) -> String {
|
||||
el_span("class=\"pricing-price\"", "$0") +
|
||||
el_span("class=\"pricing-cadence\"", "forever")
|
||||
) +
|
||||
el_p("class=\"pricing-tagline\" style=\"margin-bottom:.5rem\"", "$0 + your AI provider's usage — free provider option available") +
|
||||
el_p("class=\"pricing-tagline\"", "Start building your memory. No card required.") +
|
||||
el_ul("class=\"pricing-features\"", pricing_free_features()) +
|
||||
el_div("style=\"flex:1\"", "") +
|
||||
@@ -108,6 +109,7 @@ fn pricing(sold: Int, total: Int) -> String {
|
||||
el_span("class=\"pricing-price\"", "$19") +
|
||||
el_span("class=\"pricing-cadence\"", "/ month")
|
||||
) +
|
||||
el_p("class=\"pricing-tagline\" style=\"margin-bottom:.5rem\"", "+ your AI provider's usage (typically $2–8/mo for everyday chat) · one bill once Neuron Inference launches") +
|
||||
el_p("class=\"pricing-tagline\"", "Full access. Use your own API keys now. Neuron Inference when it launches.") +
|
||||
el_ul("class=\"pricing-features\"", pricing_pro_features()) +
|
||||
el_div("style=\"flex:1\"", "") +
|
||||
@@ -125,6 +127,7 @@ fn pricing(sold: Int, total: Int) -> String {
|
||||
el_span("class=\"pricing-price\"", "$199") +
|
||||
el_span("class=\"pricing-cadence\"", "lifetime")
|
||||
) +
|
||||
el_p("class=\"pricing-tagline\" style=\"margin-bottom:.5rem\"", "+ your AI provider's usage until Neuron Inference launches — then it's included, forever") +
|
||||
el_p("class=\"pricing-tagline\"", "Pay once. Everything, forever. Including Neuron Inference when it launches.") +
|
||||
spots_html +
|
||||
el_ul("class=\"pricing-features\"", pricing_founding_features()) +
|
||||
@@ -135,6 +138,17 @@ fn pricing(sold: Int, total: Int) -> String {
|
||||
)
|
||||
)
|
||||
|
||||
let need_box: String = el_div(
|
||||
"class=\"founding-banner reveal\" style=\"margin:0 auto 2.5rem\"",
|
||||
el_div(
|
||||
"",
|
||||
el_p("class=\"founding-banner-label\"", "What you'll need") +
|
||||
el_p("class=\"pricing-tagline\" style=\"margin-bottom:0\"",
|
||||
"Neuron is the mind — the AI model it thinks with comes from a provider you connect in about two minutes. Google Gemini has a free tier to start (note: Google uses free-tier chats to improve its products — their paid tier doesn't). Anthropic, OpenAI, and xAI bill you directly for what you use: everyday chat typically runs $2–8 a month, and budget models cost under $1. Neuron adds no markup and never touches the bill. When Neuron Inference launches, Neuron includes the AI — one bill, zero setup. Heavy agentic use costs more than everyday chat — you're always billed at your provider's own rates."
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
let grid: String = el_div("class=\"pricing-grid\"", card_free + card_pro + card_founding)
|
||||
|
||||
let banner_fill: String = el_div(
|
||||
@@ -165,6 +179,6 @@ fn pricing(sold: Int, total: Int) -> String {
|
||||
|
||||
el_section(
|
||||
"id=\"pricing\" aria-label=\"Pricing\"",
|
||||
el_div("class=\"container\"", header + grid + banner + fine1 + fine2)
|
||||
el_div("class=\"container\"", header + need_box + grid + banner + fine1 + fine2)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user