diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index f3e964d..279dbc1 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -146,7 +146,11 @@ jobs: COPY src/assets /srv/landing/assets COPY src/shares /srv/landing/shares EOF - docker buildx build --platform linux/amd64 --load \ + # Plain `docker build` — the gitea runner ships docker without + # the buildx plugin, so `docker buildx build --platform ...` + # exits 125 ("unknown flag: --platform"). The runner host is + # already linux/amd64 so cross-platform isn't needed here. + docker build \ --build-arg BASE="$LATEST" \ -f /tmp/Dockerfile.assets \ -t "marketing:${{ steps.tag.outputs.tag }}" \ diff --git a/build-stage.sh b/build-stage.sh index fb2a6fd..0a3ce1e 100755 --- a/build-stage.sh +++ b/build-stage.sh @@ -87,8 +87,14 @@ sed "${SED_INPLACE[@]}" \ 's|#include "el_runtime.h"|#include "el_runtime.h"\nel_val_t http_get_auth(el_val_t url, el_val_t tok);\nel_val_t http_post_auth(el_val_t url, el_val_t tok, el_val_t body);\nel_val_t http_post_auth_json(el_val_t url, el_val_t tok, el_val_t body);\nel_val_t http_delete_auth(el_val_t url, el_val_t bearer_tok, el_val_t apikey);\nel_val_t cwd(void);\nel_val_t color_bold(el_val_t s);\nel_val_t unix_timestamp(void);\nel_val_t gcs_write(el_val_t bucket, el_val_t object_name, el_val_t content);\nel_val_t gcs_read(el_val_t bucket, el_val_t object_name);\nel_val_t supabase_insert(el_val_t project_url, el_val_t service_key, el_val_t table, el_val_t row_json);\nel_val_t supabase_get(el_val_t project_url, el_val_t service_key, el_val_t table_and_query);\nel_val_t supabase_auth_user(el_val_t project_url, el_val_t anon_key, el_val_t user_jwt);\nel_val_t supabase_admin_invite(el_val_t project_url, el_val_t service_key, el_val_t body_json);\nel_val_t supabase_upsert_user(el_val_t project_url, el_val_t anon_key, el_val_t user_jwt, el_val_t table_and_query, el_val_t row_json);|' \ dist/main.c -echo "==> Building Docker image marketing:${TAG} for linux/amd64" -docker buildx build --platform linux/amd64 --load \ +echo "==> Building Docker image marketing:${TAG}" +# Plain `docker build` — the gitea runner doesn't ship buildx, so +# `docker buildx build --platform ...` exits 125 ("unknown flag: +# --platform"). The runner host is already linux/amd64 so the +# explicit --platform is redundant. BUILDKIT_INLINE_CACHE works with +# plain docker as long as DOCKER_BUILDKIT=1 is set (default on the +# runner). +docker build \ --build-arg BUILDKIT_INLINE_CACHE=1 \ --cache-from us-central1-docker.pkg.dev/neuron-785695/neuron-marketing/marketing:latest \ -f Dockerfile.stage \ diff --git a/src/styles.el b/src/styles.el index 3de832c..4ec8645 100644 --- a/src/styles.el +++ b/src/styles.el @@ -1603,6 +1603,53 @@ fn page_open() -> String { .demo-msg-ai .demo-msg-bubble ul, .demo-msg-ai .demo-msg-bubble ol { margin: 0.5rem 0 0.5rem 1.25rem; } .demo-msg-ai .demo-msg-bubble li + li { margin-top: 0.25rem; } .demo-msg-ai .demo-msg-bubble strong { font-weight: 600; } + .demo-msg-ai .demo-msg-bubble em { font-style: italic; } + .demo-msg-ai .demo-msg-bubble a { color: var(--navy); text-decoration: underline; } + /* Code: marked.js emits for inline backticks and
 for
+       fenced blocks. Without these rules they render as unstyled inline
+       text and the user can't tell where the code starts and stops. */
+    .demo-msg-ai .demo-msg-bubble code {
+      font-family: 'IBM Plex Mono', Menlo, Consolas, monospace;
+      font-size: 0.85em;
+      background: rgba(0, 0, 0, 0.06);
+      padding: 1px 4px;
+      border-radius: 3px;
+      word-break: break-word;
+    }
+    .demo-msg-ai .demo-msg-bubble pre {
+      background: rgba(0, 0, 0, 0.06);
+      padding: 0.75rem;
+      border-radius: 6px;
+      overflow-x: auto;
+      font-size: 0.85em;
+      line-height: 1.5;
+      margin: 0.5rem 0;
+      max-width: 100%;
+      white-space: pre;
+    }
+    .demo-msg-ai .demo-msg-bubble pre code {
+      background: none;
+      padding: 0;
+      font-size: inherit;
+      word-break: normal;
+    }
+    .demo-msg-ai .demo-msg-bubble blockquote {
+      border-left: 3px solid var(--border);
+      margin: 0.5rem 0;
+      padding: 0.25rem 0 0.25rem 0.75rem;
+      color: var(--t2);
+    }
+    .demo-msg-ai .demo-msg-bubble h1,
+    .demo-msg-ai .demo-msg-bubble h2,
+    .demo-msg-ai .demo-msg-bubble h3,
+    .demo-msg-ai .demo-msg-bubble h4 {
+      font-weight: 600;
+      margin: 0.5rem 0 0.25rem;
+    }
+    .demo-msg-ai .demo-msg-bubble h1 { font-size: 1.05em; }
+    .demo-msg-ai .demo-msg-bubble h2 { font-size: 1em; }
+    .demo-msg-ai .demo-msg-bubble h3 { font-size: 0.95em; }
+    .demo-msg-ai .demo-msg-bubble h4 { font-size: 0.9em; }
     .demo-msg-share {
       position: relative;
       margin-top: 0.375rem;