diff --git a/package.json b/package.json
index 8ef3aa5..3d509c8 100644
--- a/package.json
+++ b/package.json
@@ -6,10 +6,10 @@
"node": ">=22.12.0"
},
"scripts": {
- "dev": "astro dev",
+ "dev": "PUBLIC_GIT_COMMIT=$(git rev-parse HEAD) astro dev",
"preview": "astro preview",
"astro": "astro",
- "build": "astro build"
+ "build": "PUBLIC_GIT_COMMIT=$(git rev-parse HEAD) astro build"
},
"dependencies": {
"@astrojs/rss": "^4.0.17",
diff --git a/public/images/email.svg b/public/images/email.svg
new file mode 100644
index 0000000..cd78d4f
--- /dev/null
+++ b/public/images/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/images/github-outline-7.svg b/public/images/github-outline-7.svg
new file mode 100644
index 0000000..2ab205c
--- /dev/null
+++ b/public/images/github-outline-7.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/BuildHashBlocks.astro b/src/components/BuildHashBlocks.astro
new file mode 100644
index 0000000..5c0a4ac
--- /dev/null
+++ b/src/components/BuildHashBlocks.astro
@@ -0,0 +1,47 @@
+---
+const rawHash = (import.meta.env.PUBLIC_GIT_COMMIT || "")
+ .replace(/[^a-fA-F0-9]/g, "")
+ .toLowerCase();
+
+const safeHash = rawHash || "0000000000000000000000000000000000000000";
+
+const blockCount = 6;
+const hexPerBlock = 6;
+
+const blocks: string[] = Array.from({ length: blockCount }, (_, i) => {
+ const start = i * hexPerBlock;
+ const part = safeHash.slice(start, start + hexPerBlock).padEnd(6, "0");
+ return `#${part}`;
+});
+---
+
+
+
Astro Build
+ {
+ blocks.map((color: string) => (
+
+ ))
+ }
+
+
+
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
index ffe7c1d..df7648d 100644
--- a/src/components/Footer.astro
+++ b/src/components/Footer.astro
@@ -1,22 +1,85 @@
---
import { getLangFromUrl, getTranslations, type Lang } from "@/i18n";
-
+import BuildHashBlocks from "@/components/BuildHashBlocks.astro";
+const commit = import.meta.env.PUBLIC_GIT_COMMIT || "unknown";
const lang = getLangFromUrl(Astro.url);
const t = getTranslations(lang);
---
diff --git a/src/components/Navigation.astro b/src/components/Navigation.astro
index d2346e4..804ee06 100644
--- a/src/components/Navigation.astro
+++ b/src/components/Navigation.astro
@@ -42,9 +42,9 @@ const t = getTranslations(lang);
height: 12px;
background: repeating-linear-gradient(
-45deg,
- #e96b6b 0 14px,
+ #ef5a6f 0 14px,
transparent 14px 28px,
- #7da2ff 28px 42px,
+ #536493 28px 42px,
transparent 42px 56px
);
pointer-events: none;
diff --git a/src/i18n/en.ts b/src/i18n/en.ts
index d294470..69350fa 100644
--- a/src/i18n/en.ts
+++ b/src/i18n/en.ts
@@ -43,7 +43,7 @@ export default {
'· Parsifal\'s Blog',
"· And some other websites whose names I have unfortunately forgotten",
"Thank you for your ideas and passion!",
- "In addition, this blog is fully open source. You can find its source code through the link in the footer.",
+ "In addition, this blog is open source under MIT License. You can find its source code through the link in the footer.",
]
},
tags: {
diff --git a/src/i18n/zh.ts b/src/i18n/zh.ts
index 593d874..b0b72fc 100644
--- a/src/i18n/zh.ts
+++ b/src/i18n/zh.ts
@@ -43,7 +43,7 @@ export default {
'· Parsifal\'s Blog',
"· 还有一些已经忘记名字的网站",
"谢谢你们的想法和热情!",
- "此外,这个博客完全开源,你可以从页脚的链接处获取它的源代码。",
+ "此外,这个博客的源码使用 MIT 协议开源,你可以从页脚的链接处获取它的源代码。",
]
},
tags: {
diff --git a/src/layouts/MarkdownPostLayout.astro b/src/layouts/MarkdownPostLayout.astro
index 55686b4..873ed51 100644
--- a/src/layouts/MarkdownPostLayout.astro
+++ b/src/layouts/MarkdownPostLayout.astro
@@ -240,6 +240,7 @@ const t = getTranslations(lang);
"Noto Sans CJK SC",
"Source Han Sans SC",
sans-serif;
+ font-weight: 400;
}
.post-content :global(code),
diff --git a/src/styles/global.css b/src/styles/global.css
index ea6a034..ec220d1 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -34,20 +34,11 @@ article svg[id^="mermaid-"] {
html {
/* font-family: "Maple Mono", "Maple Mono CN", monospace; */
- font-family:
- system-ui,
- -apple-system,
- BlinkMacSystemFont,
- "Segoe UI",
- Roboto,
- Oxygen,
- Ubuntu,
- Cantarell,
- "Open Sans",
- "Helvetica Neue",
- sans-serif;
- background-color: #ffffff;
- color: #1f2328;
+ font-family: 'Noto Serif SC', serif;
+ font-weight: 500;
+ /* background-color: #ffffff; */
+ background-color: #F9F2ED;
+ color: #0E2F56;
}
html {
@@ -59,7 +50,7 @@ html {
body {
margin: 0 auto;
width: 100%;
- max-width: 78ch;
+ max-width: 90ch;
padding: 1rem;
line-height: 1.7;
font-size: 1.15rem;
@@ -74,13 +65,14 @@ body::after {
/* 按需调整大小 */
height: 400px;
/* 按需调整大小 */
- background-image: url("https://files.seeusercontent.com/2026/03/30/4Xfr/bc7e804dc2c8ecaf407c9d665414ff72.webp");
+ background-image: url("https://files.seeusercontent.com/2026/04/16/1sXb/touhou___kirisame_marisa__2__by_.webp");
background-repeat: no-repeat;
background-position: right bottom;
background-size: contain;
opacity: 0.35;
pointer-events: none;
z-index: -1;
+
}
html.dark body::after {
@@ -116,7 +108,7 @@ h1 {
a {
- color: #416bd6;
+ color: #3D74B6;
font-weight: 700;
text-decoration: none;
}
@@ -201,8 +193,9 @@ img {
display: block;
margin: 0 0 14px 0;
padding: 0.6rem 1rem;
- border: 1.5px dashed #aeb8c2;
- background-color: #f3f5f7;
+ border: 2px dashed #aeb8c2;
+ background-color: #fbf5f2;
+
}
.comment-card:last-child {