| author | |
| committer | |
| log | cea1ec92f2c784f8b5a54e4aea68fec889a5cd51 |
| tree | e36b1fc6d1a499fa5acbb1b23ae859966f240c5d |
| parent | 28ec9396072d32c89d6575dd90fedb093dc496c3 |
| signature | Commit is signed but in an unrecognized format. |
4 files changed, 56 insertions(+), 12 deletions(-)
lib/progress.ts+2-10| ... | @@ -154,15 +154,8 @@ function newNode( | ... | @@ -154,15 +154,8 @@ function newNode( |
| 154 | parent?.sortChildren && parent.children.sort(parent.sortChildren); | 154 | parent?.sortChildren && parent.children.sort(parent.sortChildren); |
| 155 | state.signal("draw"); | 155 | state.signal("draw"); |
| 156 | } | 156 | } |
| 157 | const scope = headless.logger({ | 157 | const scope = log.headlessScope(() => { |
| 158 | log: { | 158 | console.log("TODO"); |
| 159 | writeLine(line) { | ||
| 160 | if (detached) return state.signal({ type: "line", line }); | ||
| 161 | state.logs.push(...line.split("\n")); | ||
| 162 | state.signal("draw"); | ||
| 163 | }, | ||
| 164 | }, | ||
| 165 | colors: process.stderr.isTTY, | ||
| 166 | }); | 159 | }); |
| 167 | const binding: Node = { | 160 | const binding: Node = { |
| 168 | start(text, opts) { | 161 | start(text, opts) { |
| ... | @@ -416,7 +409,6 @@ const global = /** @__PURE__ */ new Headless(log); | ... | @@ -416,7 +409,6 @@ const global = /** @__PURE__ */ new Headless(log); |
| 416 | 409 | ||
| 417 | import * as process from "node:process"; | 410 | import * as process from "node:process"; |
| 418 | import * as log from "lib/log.ts"; | 411 | import * as log from "lib/log.ts"; |
| 419 | import * as headless from "lib/log/headless.ts"; | ||
| 420 | import * as ansi from "lib/string/ansi.ts"; | 412 | import * as ansi from "lib/string/ansi.ts"; |
| 421 | import * as string from "lib/string.ts"; | 413 | import * as string from "lib/string.ts"; |
| 422 | import { ASSERT, UNWRAP } from "lib/assert.ts"; | 414 | import { ASSERT, UNWRAP } from "lib/assert.ts"; |
src/pages/index.css+12| ... | @@ -24,3 +24,15 @@ hr { | ... | @@ -24,3 +24,15 @@ hr { |
| 24 | width: 100%; | 24 | width: 100%; |
| 25 | border: 1px solid #000b; | 25 | border: 1px solid #000b; |
| 26 | } | 26 | } |
| 27 | .cite { | ||
| 28 | color: inherit; | ||
| 29 | text-decoration-line: underline; | ||
| 30 | text-decoration-thickness: 2px; | ||
| 31 | text-decoration-style: dotted; | ||
| 32 | text-decoration-color: blueviolet; | ||
| 33 | text-underline-offset: 1px; | ||
| 34 | &:hover { | ||
| 35 | text-decoration-color: magenta; | ||
| 36 | color: magenta; | ||
| 37 | } | ||
| 38 | } |
src/pages/index.marko+6| ... | @@ -13,6 +13,12 @@ export const meta = { | ... | @@ -13,6 +13,12 @@ export const meta = { |
| 13 | 13 | ||
| 14 | <main> | 14 | <main> |
| 15 | <div> | 15 | <div> |
| 16 | <h2>about</h2> | ||
| 17 | <p> | ||
| 18 | i am a <a class='custom cite' href="https://en.wikipedia.org/wiki/Transgender">girl</a> | ||
| 19 | that is | ||
| 20 | <a class='custom cite' href="https://en.wikipedia.org/wiki/Life">alive</a>. | ||
| 21 | </p> | ||
| 16 | <h2>posts</h2> | 22 | <h2>posts</h2> |
| 17 | <p style='display:flex'><span style='flex:0 0 max-content'>blog:&nbsp;</span><span style='flex: 1 0 0px'><a href="/blog/webdev/one-year-next-app-router">One Year with Next.js App Router — why we're moving on</a> (2025-10-21)</span></p> | 23 | <p style='display:flex'><span style='flex:0 0 max-content'>blog:&nbsp;</span><span style='flex: 1 0 0px'><a href="/blog/webdev/one-year-next-app-router">One Year with Next.js App Router — why we're moving on</a> (2025-10-21)</span></p> |
| 18 | <p>song: <a href="/in-the-summer">in the summer</a> (2025-08-08)</p> | 24 | <p>song: <a href="/in-the-summer">in the summer</a> (2025-08-08)</p> |
src/static/rss.xml+36-2| ... | @@ -3,10 +3,41 @@ | ... | @@ -3,10 +3,41 @@ |
| 3 | 3 | ||
| 4 | <channel> | 4 | <channel> |
| 5 | <title>paper clover</title> | 5 | <title>paper clover</title> |
| 6 | <description>art</description> | 6 | <description>art, music, code, life</description> |
| 7 | <link>https://paperclover.net</link> | 7 | <link>https://paperclover.net</link> |
| 8 | <item> | 8 | <item> |
| 9 | <title>clo's files &amp; cotyledon</title> | 9 | <title>blog: One Year with Next.js App Router — Why We're Moving On</title> |
| 10 | <link>https://paperclover.net/blog/webdev/one-year-next-app-router</link> | ||
| 11 | <description> | ||
| 12 | A critique of React Server Components and Next.js 15, and how my company switched to TanStack Start in an incremental migration. | ||
| 13 | </description> | ||
| 14 | <pubDate>Tue, 21 Oct 2025 00:00:00 -0000</pubDate> | ||
| 15 | <guid>https://paperclover.net/blog/webdev/one-year-next-app-router</guid> | ||
| 16 | </item> | ||
| 17 | <item> | ||
| 18 | <title>music video: in the summer</title> | ||
| 19 | <link>https://paperclover.net/in-the-summer</link> | ||
| 20 | <description> | ||
| 21 | this is a song about the summer, and related feelings. written in 2022, produced in 2025. i had a lot of fun playing with a much larger instrument selection, and new 3d workflows. enjoy! | ||
| 22 | </description> | ||
| 23 | <pubDate>Fri, 01 Aug 2025 00:00:00 -0000</pubDate> | ||
| 24 | <guid>https://paperclover.net/in-the-summer</guid> | ||
| 25 | |||
| 26 | <enclosure url="https://paperclover.net/file/2025/in%20the%20summer/in%20the%20summer.mp4" | ||
| 27 | length="120415064" | ||
| 28 | type="video/mp4"/> | ||
| 29 | <media:content url="https://paperclover.net/file/2025/in%20the%20summer/in%20the%20summer.mp4" | ||
| 30 | type="video/mp4" | ||
| 31 | width="1920" | ||
| 32 | height="1080"> | ||
| 33 | </media:content> | ||
| 34 | <media:thumbnail url="https://paperclover.net/file/2025/in%20the%20summer/thumbnail.jpeg" | ||
| 35 | width="1920" | ||
| 36 | height="1080" | ||
| 37 | /> | ||
| 38 | </item> | ||
| 39 | <item> | ||
| 40 | <title>site: clo's files &amp; cotyledon</title> | ||
| 10 | <link>https://paperclover.net/file</link> | 41 | <link>https://paperclover.net/file</link> |
| 11 | <description> | 42 | <description> |
| 12 | i rewrote the file viewer to be nicer to use. as well as uploading about | 43 | i rewrote the file viewer to be nicer to use. as well as uploading about |
| ... | @@ -27,6 +58,7 @@ | ... | @@ -27,6 +58,7 @@ |
| 27 | <guid>https://paperclover.net/waterfalls</guid> | 58 | <guid>https://paperclover.net/waterfalls</guid> |
| 28 | 59 | ||
| 29 | <enclosure url="https://paperclover.net/file/2025/waterfalls/waterfalls.mp4" | 60 | <enclosure url="https://paperclover.net/file/2025/waterfalls/waterfalls.mp4" |
| 61 | length="390074616" | ||
| 30 | type="video/mp4"/> | 62 | type="video/mp4"/> |
| 31 | <media:content url="https://paperclover.net/file/2025/waterfalls/waterfalls.mp4" | 63 | <media:content url="https://paperclover.net/file/2025/waterfalls/waterfalls.mp4" |
| 32 | type="video/mp4" | 64 | type="video/mp4" |
| ... | @@ -38,6 +70,8 @@ | ... | @@ -38,6 +70,8 @@ |
| 38 | height="1080" | 70 | height="1080" |
| 39 | /> | 71 | /> |
| 40 | </item> | 72 | </item> |
| 73 | |||
| 74 | <atom:link href="http://paperclover.net/rss.xml" rel="self" type="application/rss+xml" /> | ||
| 41 | </channel> | 75 | </channel> |
| 42 | 76 | ||
| 43 | </rss> | 77 | </rss> |