276 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
277 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
278 gl.texImage2D(
279 gl.TEXTURE_2D, 0, gl.R8,
280 numBars, 1, 0,
307 gl.activeTexture(gl.TEXTURE0);
308 gl.bindTexture(gl.TEXTURE_2D, audioTex);
309 gl.texSubImage2D(
310 gl.TEXTURE_2D, 0, 0, 0, numBars, 1,
311 gl.RED, gl.UNSIGNED_BYTE, fftBuffer
271 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
272 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
273 gl.texImage2D(
274 gl.TEXTURE_2D, 0, gl.R8,
275 numBars, 1, 0,
302 gl.activeTexture(gl.TEXTURE0);
303 gl.bindTexture(gl.TEXTURE_2D, audioTex);
304 gl.texSubImage2D(
305 gl.TEXTURE_2D, 0, 0, 0, numBars, 1,
306 gl.RED, gl.UNSIGNED_BYTE, fftBuffer
26 - trailing: feed summarizer and k-latest prompts
27- nicer upload area
28 - add image upload
29 - add file upload?
30 - voice?
9 <meta property="og:title" content="Chat">
10 <meta property="og:description" content="General-purpose AI assistant">
11 <meta property="og:image" content="https://imagedelivery.net/TysXuIP7qbyd6gh5m_zQIQ/1764955c-dd1f-4745-2aed-3b59717e3d00/medium">
12
13 <meta property="twitter:card" content="summary_large_image">
14 <meta property="twitter:url" content="https://re-search.val.run/">
15 <meta property="twitter:title" content="Chat">
16 <meta property="twitter:description" content="General-purpose AI assistant">
17 <meta property="twitter:image" content="https://imagedelivery.net/TysXuIP7qbyd6gh5m_zQIQ/1764955c-dd1f-4745-2aed-3b59717e3d00/medium">
18 <script>
19 window.deferLoadingAlpine = function (start) { window._startAlpine = start; };
6 <title>QBAT - Grid Jumping Game</title>
7 <link rel="stylesheet" href="/frontend/style.css">
8 <link rel="icon" href="/frontend/favicon.svg" type="image/svg+xml">
9 </head>
10 <body>
169 if (svgContent) {
170 try {
171 const svgBlob = new Blob([svgContent], { type: 'image/svg+xml' });
172 const uploadResponse = await this.session.agent.com.atproto.repo.uploadBlob(svgBlob, {
173 encoding: 'image/svg+xml'
174 });
175
177 $type: "blob",
178 ref: uploadResponse.data.blob.ref,
179 mimeType: "image/svg+xml",
180 size: svgBlob.size
181 };
4 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
5 <title>Boombox Generator</title>
6 <meta property="og:image" content="/bb.png" />
7
8 <script type="module" lang="text/javascript" src="script.js"></script>
3import { readFile } from "https://esm.town/v/std/utils/index.ts";
4import { blob } from "https://esm.town/v/std/blob";
5import { generateOgImageResponse } from "./og.tsx";
6import { generateScadCode } from "./scad.ts";
7
11 const code = c.req.query("b");
12 if (code) {
13 const ogImageUrl = `https://boombox.val.run/bb.png?b=${code}`;
14 text = text.replace("/bb.png", ogImageUrl);
15 }
16 return new Response(text, {
25
26app.get("/bb.png", (c) => {
27 const response = generateOgImageResponse(c.req.query("b"));
28 return response;
29});
31// TODAN: remove this eventually
32app.get("/og.png", (c) => {
33 const response = generateOgImageResponse(c.req.query("b"));
34 return response;
35});
46
47// app.get("/:code/og.png", (c) => {
48// const response = generateOgImageResponse(c.req.param("code"));
49// return response;
50// });
12 <meta property="og:title" content="Sacher Solutions — Executive & Leadership Coaching" />
13 <meta property="og:description" content="Executive & leadership coaching, presentations, formative 360 processes, and support for boards & superintendents — led by Kurt Sacher." />
14 <meta property="og:image" content="https://f2.phage.directory/capsid/P96RiSU6/kurt-share-2_large.png" />
15 <meta property="og:image:alt" content="Kurt Sacher — Sacher Solutions" />
16 <meta name="twitter:card" content="summary_large_image" />
17 <meta name="twitter:title" content="Sacher Solutions — Executive & Leadership Coaching" />
18 <meta name="twitter:description" content="Executive & leadership coaching, presentations, formative 360 processes, and support for boards & superintendents — led by Kurt Sacher." />
19 <meta name="twitter:image" content="https://f2.phage.directory/capsid/P96RiSU6/kurt-share-2_large.png" />
20
21 <!-- Google Fonts: thin, airy vibe -->
252 <div class="min-h-[260px] md:min-h-full bg-gradient-to-br from-emerald-100 to-emerald-200 flex items-center justify-center">
253 <div class="w-3/4 h-3/4 max-w-md rounded-xl bg-white/60 ring-1 ring-emerald-300/60 flex items-center justify-center">
254 <span class="text-emerald-700 text-sm">Case study image</span>
255 </div>
256 </div>
1/** @jsxImportSource https://esm.sh/preact */
2import { boomboxData } from "./boombox.js";
3import { ImageResponse } from "npm:@vercel/og";
4
5export function generateOgImageResponse(code: string | undefined) {
6 try {
7 const bb = boomboxData();
18
19 const svg = bb.svg({ unpaddedHeight });
20 const imgSrc = `data:image/svg+xml;base64,${btoa(svg)}`;
21 return new ImageResponse(
22 (
23 <img