Repository navigation
Expand file tree
/
Copy path404.html
More file actions
69 lines (69 loc) · 3.85 KB
/
Copy path404.html
File metadata and controls
69 lines (69 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Page not found — j3w1</title>
<meta name="description" content="The requested page could not be found.">
<meta name="robots" content="noindex">
<!-- @generated-site:head-shared:start -->
<link rel="alternate" type="application/atom+xml" title="j3w1" href="/feed.xml">
<meta name="theme-color" content="#000000">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="stylesheet" href="/assets/css/site.css?v=20260923">
<!-- @generated-site:head-shared:end -->
<script>
/* GitHub Pages serves this for every unknown path. A path that looks like a
workspace or an entry — /writing/foo, /Photography/Slug.html, /about/ or
/projects/ (workspaces with no page of their own) — is a deep link into
the desktop, so it is forwarded to the hash route instead of dead-ending
here. Real entries have real pages at /<collection>/<slug>/ and never
reach this. The workspace list mirrors assets/js/route.js and the slug
pattern mirrors the content validator; test/wm-contract.test.js holds
both in step. */
(() => {
const workspaces = ["home", "writing", "projects", "photography", "books", "elsewhere", "about"];
const parts = location.pathname.toLowerCase().replace(/\.html?$/, "").split("/").filter(Boolean);
const [workspace, slug, extra] = parts;
if (!workspace || extra !== undefined || !workspaces.includes(workspace)) return;
if (slug !== undefined && !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug)) return;
location.replace(`/${location.search}#${slug ? `${workspace}/${slug}` : workspace}`);
})();
</script>
</head>
<body class="page">
<a class="skip-link" href="#error-content">Skip to error</a>
<!-- @generated-site:page-bar:start -->
<header class="page-bar">
<nav aria-label="Site navigation">
<a href="/#home">← workstation</a>
<span aria-hidden="true">/</span> <span class="is-here" aria-current="page">404</span>
</nav>
<span class="spacer"></span>
<a class="desktop-link" data-desktop-link href="/#home">open in the workstation ↗</a>
</header>
<!-- @generated-site:page-bar:end -->
<main id="error-content" class="page-wrap">
<article class="window terminal-window elsewhere-window is-focused">
<header class="window-titlebar"><span>j3w1@manjaro: error</span><span class="window-marks" aria-hidden="true">─ □ ×</span></header>
<div class="terminal-buffer">
<p class="terminal-line"><span class="shell-prompt agnoster"><span class="prompt-path">~</span><span class="prompt-mark" aria-hidden="true"></span><span class="prompt-space"> </span></span><span class="command">open requested-path</span></p>
<div class="terminal-output readable-output">
<h1 id="error-title">404: no such file or workspace</h1>
<p>The address may be incorrect, or the content may have moved into the single-page workstation.</p>
</div>
</div>
<footer class="terminal-statusline"><span>ERROR</span><span class="status-fill">exit 404</span></footer>
</article>
<p class="callout page-desktop">Return to <a href="/#home">1:home</a>, or open <a href="/writing/">writing</a> · <a href="/photography/">photography</a> · <a href="/books/">books</a> · <a href="/wiki/">wiki</a>.</p>
</main>
<!-- @generated-site:page-foot:start -->
<footer class="page-foot page-wrap">
<p><span lang="zh">申杰</span> / j3w1 · <a href="/feed.xml">feed</a> · <a href="https://github.com/j3w1" rel="me">GitHub</a> · <a href="/wiki/">wiki</a></p>
</footer>
<!-- @generated-site:page-foot:end -->
</body>
</html>