authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-10-07 01:22:24-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-10-14 02:40:48-07:00
log761f4ae9ab036134de370f1c15c2f03f526fdecf
treef54aa082ef109619e90248344a2c3d30ab9762e8
parent10eaddedc5136acd4d7f8ac8276c4c8e90905703
signature Commit is signed but in an unrecognized format.

feat(site): public code for blog september 2025


6 files changed, 11 insertions(+), 12 deletions(-)

.gitignore+1-1
...@@ -2,4 +2,4 @@...@@ -2,4 +2,4 @@
2.env 2.env
3lib/dist-npm 3lib/dist-npm
4node_modules 4node_modules
5 5src/friends
package.json-2
...@@ -13,9 +13,7 @@...@@ -13,9 +13,7 @@
13 "marko": "6.0.82",13 "marko": "6.0.82",
14 "msgpackr": "1.11.5",14 "msgpackr": "1.11.5",
15 "puppeteer": "24.23.0",15 "puppeteer": "24.23.0",
16 "sharp": "0.34.2",
17 "source-map-support": "0.5.21",16 "source-map-support": "0.5.21",
18 "ts-to-jsdoc": "2.4.0",
19 "unique-names-generator": "4.7.1",17 "unique-names-generator": "4.7.1",
20 "vscode-oniguruma": "2.0.1",18 "vscode-oniguruma": "2.0.1",
21 "vscode-textmate": "9.2.0"19 "vscode-textmate": "9.2.0"
src/friends/.gitignore deleted-4
...@@ -1,4 +0,0 @@
1# this directory is private, and not checked into the git repository
2# instead, it is version-controlled via computer clover's backup system.
3*
4!.gitignore
src/tags/image.tsx+6-3
...@@ -31,7 +31,7 @@ export default function Image(...@@ -31,7 +31,7 @@ export default function Image(
31 : `100vw`;31 : `100vw`;
3232
33 return (33 return (
34 <picture class={className} style={style}>34 <picture>
35 {["jxl", "avif", "webp"].map((ext) => (35 {["jxl", "avif", "webp"].map((ext) => (
36 <source36 <source
37 type={`image/${ext}`}37 type={`image/${ext}`}
...@@ -41,10 +41,13 @@ export default function Image(...@@ -41,10 +41,13 @@ export default function Image(
41 ))}41 ))}
42 <img42 <img
43 src={base}43 src={base}
44 class={className}
44 {...rest}45 {...rest}
45 style={objectFit46 style={objectFit
46 ? { "object-fit": objectFit, width: "100%", height: "100%" }47 ? `object-fit:${objectFit};width:100%;height:100%${
47 : null}48 style ? ";" + style : ""
49 }`
50 : style}
48 />51 />
49 </picture>52 </picture>
50 );53 );
src/tags/photo-grid.css+3-2
...@@ -1,11 +1,12 @@...@@ -1,11 +1,12 @@
1photo-grid {1photo-grid {
2 display: grid;2 display: grid;
3 gap: 0.5rem;3 gap: 11px;
4 div {4 div {
5 position: relative;5 position: relative;
6 width: 100%;6 width: 100%;
7 height: 100%;7 height: 100%;
8 border: 2px solid #0009;8 border: 2px solid black;
9 outline: 4px solid var(--primary, #000);
9 }10 }
10 img {11 img {
11 position: absolute;12 position: absolute;
src/tags/photo-grid.tsx+1
...@@ -133,3 +133,4 @@ import "./photo-grid.css";...@@ -133,3 +133,4 @@ import "./photo-grid.css";
133import { MediaFile } from "@/file-viewer/models/MediaFile.ts";133import { MediaFile } from "@/file-viewer/models/MediaFile.ts";
134import Image from "./image.tsx";134import Image from "./image.tsx";
135import * as path from "node:path";135import * as path from "node:path";
136import { ASSERT } from "lib/assert.ts";