Site: props text on one level, GitHub links

This commit is contained in:
ZacharyZhang-NY committed 2026-10-08 23:59:12 -04:00
1 parent d0d890359b
commit 0a01845db9
5 files changed
+22 -14

No files matched your search

+2 -4
View File
@@ -59,8 +59,7 @@ test("six links in reading order; reduced motion skips growth", async ({ page })
test("focus lifts one cell, shows the name, survives the mouse", async ({ page }) => {
const rest = await top(page, "ElyDoc");
await page.keyboard.press("Tab");
await page.keyboard.press("Tab");
for (let i = 0; i < 3; i++) await page.keyboard.press("Tab");
await expect(page.locator(".doors a").first()).toBeFocused();
expect(rest - (await top(page, "ElyDoc"))).toBeCloseTo(CELL, 0);
await expect(caption(page, "ElyDoc")).toHaveCSS("opacity", "1");
@@ -132,8 +131,7 @@ test("a primary press sinks one cell; only a click starting on it opens", async
test("holding Enter sinks the focused building until release", async ({ page }) => {
const rest = await top(page, "ElyDoc");
await page.keyboard.press("Tab");
await page.keyboard.press("Tab");
for (let i = 0; i < 3; i++) await page.keyboard.press("Tab");
await page.keyboard.down("Enter");
expect(await top(page, "ElyDoc")).toBeCloseTo(rest, 0);
await expect(page).toHaveURL(/#elydoc$/);
+7 -3
View File
@@ -7,7 +7,8 @@ import { touch } from "./touch.ts";
import { regions, reveal } from "./regions.ts";
import { said, speak, type Lang } from "./text.ts";
const RELEASE = "https://github.com/ZacharyZhang-NY/ElyOffice/releases/download/v0.1.0";
const REPO = "https://github.com/ZacharyZhang-NY/ElyOffice";
const RELEASE = `${REPO}/releases/download/v0.1.0`;
const app = document.querySelector<HTMLElement>("#app");
if (!app) throw new Error("index.html has no #app");
@@ -27,7 +28,10 @@ const svg = stage(built.flat());
svg.classList.add("grow", "seen");
svg.setAttribute("aria-hidden", "true");
host.append(svg);
hero.append(title, said("p", "tagline"), said("p", "platforms"), host);
const github = document.createElement("a");
github.href = REPO;
github.textContent = "GitHub";
hero.append(title, said("p", "tagline"), said("p", "platforms"), github, host);
touch(host, svg, parts);
const sections = regions();
@@ -46,7 +50,7 @@ for (const p of apps) {
list.append(li);
}
const source = said("a", "source");
source.href = `${RELEASE}/ElyOffice-0.1.0-source.tar.gz`;
source.href = REPO;
const li = document.createElement("li");
li.append(source);
list.append(li);
+6
View File
@@ -54,6 +54,10 @@ button:focus-visible {
text-align: center;
}
.hero a {
font-size: 1.0625rem;
}
.hero .model {
margin-top: 6rem;
}
@@ -126,7 +130,9 @@ button:focus-visible {
.prop {
display: grid;
grid-template-rows: 1fr auto;
justify-items: center;
align-items: end;
gap: 2rem;
text-align: center;
}
Binary file not shown.
+7 -7
View File
@@ -19,7 +19,7 @@ RGB_IN = "scale=in_color_matrix=bt709:in_range=tv,format=rgb24"
def run(args):
print("+", " ".join(str(a) for a in args[:6]), "...", flush=True)
subprocess.run(["ffmpeg", "-hide_banner", "-v", "warning", "-y", *map(str, args)], check=True)
subprocess.run(["ffmpeg", "-hide_banner", "-v", "error", "-y", *map(str, args)], check=True)
def lerp(points, x):
@@ -58,7 +58,7 @@ def piece_chain(label, piece, start, f0, f1, out):
f"[{label}:v]trim=start={u0:.4f}:end={u1:.4f},setpts=PTS-STARTPTS,"
f"setpts='({pts}-{f0 / FPS:.6f})/TB',fps={FPS}:start_time=0,"
f"trim=end_frame={n},tpad=stop_mode=clone:stop={n},trim=end_frame={n},setpts=N/{FPS}/TB,"
f"{RGB_IN}[{out}]"
f"{RGB_IN},setsar=1[{out}]"
)
@@ -108,8 +108,8 @@ def plate_chain(scene, rec, k, out):
)
return (
f"{rec},scale=800:450:flags=area,scale=1912:1072:flags=bicubic,format=rgba,"
f"pad=1920:1080:4:4:color=black@0,perspective={pins}:sense=destination:eval=frame:interpolation=cubic"
f"{fades}[pin];[{k}:v]format=rgba[bg];[bg][pin]overlay=format=auto:shortest=1,format=rgb24,setsar=1[{out}]"
f"pad=1920:1080:4:4:color=black@0,setsar=1,perspective={pins}:sense=destination:eval=frame:interpolation=cubic"
f"{fades}[pin];[{k}:v]format=rgba[bg];[bg][pin]overlay=format=rgb:shortest=1,format=rgb24,setsar=1[{out}]"
)
@@ -126,10 +126,10 @@ def full_chain(s, plan, rec, n, k, out):
rise = "round(12*pow(max(0,1-t/0.2),2))"
return (
f"{rec},perspective={quad}:sense=source:eval=frame:interpolation=cubic,"
f"scale={w['w']}:{w['h']}:flags=lanczos,pad=1920:1080:{w['x']}:{w['y']}:color=0xfbfbfa,format=rgba[lb];"
f"[{k + 1}:v]format=rgba[fr];[lb][fr]overlay=format=auto:shortest=0[lf];"
f"scale={w['w']}:{w['h']}:flags=lanczos,pad=1920:1080:{w['x']}:{w['y']}:color=0xfbfbfa,setsar=1,format=rgba[lb];"
f"[{k + 1}:v]format=rgba[fr];[lb][fr]overlay=format=rgb:shortest=0[lf];"
f"[{k + 2}:v]format=rgba,fade=in:st=0:d=0.2:alpha=1[cap];"
f"[lf][cap]overlay=x=0:y='{rise}':format=auto:eval=frame,trim=end_frame={n},format=rgb24,setsar=1[{out}]"
f"[lf][cap]overlay=x=0:y='{rise}':format=rgb:eval=frame,trim=end_frame={n},format=rgb24,setsar=1[{out}]"
)