以 .phile 纯文本文件作为文章源,frontmatter 后接正文,支持 ANSI 转义序列与自定义 ink 块语法
entropic — Astro 博客模板
作者 CuB3y0nd
Entropic 是一个面向复古文本模式爱好者的 Astro 博客主题,使用固定宽度文本、ASCII 边框、ANSI 颜色和位图 CJK 字形呈现文章。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
文章头部装饰效果由公开 URL 决定,默认池含 life、maze、sort、bits、asm、reorder,可在配置或单篇 frontmatter 中调整
卷装饰提供 circuit、archive、study、prism 四种主题插图,并保留原有 life 帧
redacted: true 可让文章正文从内容存储中丢弃并渲染遮蔽画面,预提交钩子会阻止其进入提交
math: true 时用 Temml 在构建期将 LaTeX 转为原生 MathML,公式保留文本模式字体与颜色
88x31 按钮与装饰画按 Asia/Shanghai 时区每日轮换,同一日期所有访客看到相同组合
模板详细介绍
Entropic 是一个用 Astro 构建的复古文本模式博客主题。它把文章正文当作文本模式内容渲染,保留排版、按配置宽度换行、支持图片、ANSI 转义序列以及自定义 ink 块语法。文章以 .phile 文件存放于 src/content/philes/volume-*/**/*.phile,frontmatter 必填 title 与 date,可选 order、slug、redacted、lang、decoration、math 等字段。卷号来自目录名,公开路由为 /volume/<n>/ 与 /volume/<n>/<phile-name>/。
站点身份、首页区块、88x31 按钮、装饰画、颜色、效果、卷元数据、CVE 记录、分析以及可选的 WKD 发布都集中在仓库根目录的 entropic.config.ts 中配置,无需改动 src/ 内的文件。配置文件是带 as const satisfies EntropicConfig 的普通 TypeScript 对象,编辑器可提供字段说明与补全。省略的设置继承内部默认值,对象在文档标注的叶子处合并,数组则替换默认值。
文章头部装饰效果从文章公开 URL 决定,默认池包含 life、maze、sort、bits、asm、reorder,可通过 philes.decoration 配置效果池、动画与速度,也可在单篇文章 frontmatter 中用 decoration 固定效果或设为 false 移除。卷装饰支持 circuit、archive、study、prism 四种主题插图,以及原有的 life 帧。
redacted: true 的文章正文会从内容存储中丢弃,公开页面渲染遮蔽画面;预提交钩子会解析暂存的 YAML 并取消暂存被遮蔽的 phile。该标记是发布标志而非秘密存储,不会从既有 Git 历史中抹除文件。
数学公式需在 frontmatter 中设置 math: true,使用 $...$ 或 \(...\) 行内公式、$$...$$ 或 \[...\] 显示公式,构建时转换为原生 MathML,不支持的指令会导致构建失败;Temml 需要浏览器支持原生 MathML,且 \ref 与 \eqref 尚未接入渲染流程。
适合你的项目吗?
适用场景
- 搭建以固定宽度文本、ASCII 边框和 ANSI 颜色为视觉语言的个人博客
- 发布以 .phile 纯文本文件维护、需要保留原始排版的技术文章或安全研究记录
- 为文章配置按 URL 稳定分配的文本模式装饰动画,并可按卷设置主题插图
- 在文章中使用 LaTeX 公式并希望构建期输出原生 MathML 的写作场景
- 需要将部分文章标记为遮蔽、仅公开遮蔽画面而非正文的发布流程
适合人群
- 偏好复古文本模式界面、愿意用纯文本文件写作的博主
- 使用 Astro 并接受通过根目录 entropic.config.ts 集中配置的开发者
- 需要按卷组织文章、并为不同卷设置不同装饰插图的站点维护者
- 在文章中使用 LaTeX 公式且目标浏览器支持原生 MathML 的作者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
文章放在 src/content/philes/volume-*/**/*.phile,frontmatter 必填 title 与 date,卷号取自目录名
- 2
站点身份、首页区块、按钮、装饰、卷元数据、CVE、分析等均在根目录 entropic.config.ts 中配置,无需改动 src/
- 3
可用 pnpm check:config 校验配置值、装饰选择与可选公钥输入,pnpm check 额外检查未知字段/类型、源码边界与格式,pnpm dev 本地预览配置修改
- 4
在新克隆中执行 git config core.hooksPath scripts/hooks 启用钩子,使用前需先安装依赖
- 5
redacted 是发布标志而非秘密存储,不会从既有 Git 历史中抹除文件,机密源材料应放在 Git 之外
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 构建时可选设置 GITHUB_TOKEN 环境变量以提高 GitHub API 请求配额;不设置时使用缓存资料作为回退。
- 仅当需要重新生成数学字体时才需要安装 uv 工具;正常构建与页面访问使用已提交的字体,无需联网获取上游。
- 仅当需要重新生成字体子集与 CJK 图集时才需要 fonttools;正常生产构建使用已提交的字体资源,无需本地字体工具。
- 仓库中检入的配置是作者个人站点配置,WKD 与 CVE 页面默认启用;新站点需自行修改 entropic.config.ts 中的身份、邮箱与公钥路径。
- 在 Vercel 上部署 pnpm 12 需在构建环境设置 ENABLE_EXPERIMENTAL_COREPACK=1 以启用 Corepack 固定版本。
- 启用 WKD 发布需自行配置 openpgpkey 子域、DNS 记录与托管平台响应头,并处理 Cloudflare 浏览器完整性检查等外部服务设置。
- 内置数学字体派生自 STIX Two Math,其许可单独存放于 fonts/STIXTwoMath.LICENSE,与项目代码的 MIT 许可不同,使用该字体需遵守其自身许可。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
An optional build-time GITHUB_TOKEN increases the API request allowance.
README 原文
Run `pnpm fonts:math` to regenerate from the latest upstream release (requires `uv`).
README 原文
Regenerating these assets requires `fonttools`.
README 原文
This personal site enables WKD for `[email protected]` in `entropic.config.ts`.
README 原文
For pnpm 12 on Vercel, use the pinned `packageManager` via Corepack (`ENABLE_EXPERIMENTAL_COREPACK=1` in the build environment).
README 原文
For Vercel, deploy the configured public key and attach `openpgpkey.<mail-domain>` directly to that environment, without a domain redirect.
README 原文
https://github.com/CuB3y0nd/entropic/blob/master/LICENSEhttps://github.com/CuB3y0nd/entropic/blob/master/READMEThe bundled Entropic Math font derives from STIX Two Math's CFF font: https://github.com/stipub/stixfonts/releases/latest Its license is included in `fonts/STIXTwoMath.LICENSE`.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-02。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 87 / 100
- 技术栈
- Astro
- 网站类型
- 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-27
- 截图检查日期
- 2026-10-02
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: d870cc6f43c00916c3d873f5a78ae1a5475b2f8d518690903671be45a4a5193e
2026-10-02T16:48:55.896Z
来源文件 / 仓库Entropic
========
Entropic is a retro textmode blog theme for purists.
The implementation uses Astro, Vite, and Tailwind CSS utilities. The surface
uses fixed-width text, ASCII frames, volume indexes, ANSI colors, bitmap CJK
glyphs, and plain `.phile` documents.
Configuration
-------------
Edit `entropic.config.ts` at the repository root. It is the single entry for
site identity, home sections, 88x31 buttons, decorative artwork, colors,
effects, volume metadata, CVE records, analytics, and optional WKD publishing.
You do not need to edit files inside `src/` to customize these settings.
The checked-in file is also the personal site configuration. `home.asciiArt`
inherits the banner from `src/config/defaults.ts` unless overridden; WKD and
the CVE page are explicitly enabled.
Set `cves.enabled: false` to omit the CVE page, its homepage links, and its sitemap
entry; the records can remain in `cves.records` for later use.
Article inspection and fragment links are enabled by default. Select article
text to inspect a value or prepare a link to that passage, then copy with your
browser's native Copy action. Fragment links locate the quoted text and briefly
highlight it; repeated passages need enough context to identify one match.
Set `philes.inspect: false` or `philes.fragmentLinks: false` to disable either
tool. Disabling fragment links also disables incoming passage navigation.
The file is a plain TypeScript object with `as const satisfies EntropicConfig`.
Your editor provides field descriptions and completion, including artwork
preset names and rotation modes. Omitted settings inherit internal defaults;
objects merge at documented leaves and arrays replace their defaults.
pnpm check:config
validate values, artwork selection, and optional public key input
pnpm check
also check unknown fields/types, source boundaries, and formatting
pnpm dev
preview configuration edits locally
Field comments in `entropic.config.ts` describe supported values, examples,
and default inheritance. The configuration types live in `src/config/types.ts`.
Directory Layout
----------------
entropic.config.ts the user-editable configuration
src/config/ internal types, defaults, validation, and projections
src/content/philes/ article source files
src/pages/ Astro file routes and HTTP output adapters
src/features/ home, site-badges, philes, volumes, cves, seo, and wkd
src/shared/textmode/ text cells, ANSI, bitmap CJK, and browser behaviors
src/shared/browser/ browser lifecycle helpers
src/layouts/ shared page shells
src/styles/ foundation, layer ordering, and responsive rules
src/assets/decorations/ original artwork grouped by series
src/generated/ generated glyph metadata
scripts/ font generation, checks, and Git hooks
tests/ configuration, content, browser, and security regressions
Features own their data access, rendering, components, and styles. Shared
textmode primitives have separate pure, server, and browser entry points.
Cross-feature imports use public entries; `pnpm check:boundaries` verifies
these interfaces and keeps server dependencies out of browser modules.
Tailwind handles common layout and spacing. Pixel typography, ANSI/CJK output,
and animation rules live in native CSS. Theme utilities use the typed
configuration; Preflight is not enabled. Astro bundles styles from their owning
components and modules instead of loading every feature's CSS on every page.
Content
-------
Articles are `.phile` files under:
src/content/philes/volume-*/**/*.phile
A phile is a frontmatter block followed by plain text.
Required fields:
title
date
Optional fields:
order
slug
redacted
lang
decoration
math
Credits come from each file's Git history, including renames and
Co-authored-by trailers. The original author appears first, followed by
contributors in order of first participation. GitHub nicknames are preferred;
accounts without a nickname use their login. Unlinked identities keep their
Git author name. A new, uncommitted article has no credits yet.
Names are resolved once per production build and embedded in the static pages.
No GitHub requests run in the browser. Builds restore shallow history before
reading credits; Vercel checkouts without an origin use its Git system variables.
An optional build-time GITHUB_TOKEN increases the API request allowance. Cached
profiles provide a fallback when GitHub is unavailable.
The body is rendered as textmode content. It preserves layout, wraps to the
configured article width, renders images, accepts ANSI escape sequences, and
supports the custom ink block syntax.
Set `math: true` in an article's frontmatter to render LaTeX formulas with
Temml. Use `$...$` or `\(...\)` inline, and `$$...$$` or `\[...\]` for display
equations. Standalone tall expressions also receive display space. Math is
converted to native MathML at build time; unsupported
commands fail the build. Code spans and fenced code keep their TeX literal.
The bundled Entropic Math font derives from STIX Two Math's CFF font:
https://github.com/stipub/stixfonts/releases/latest
Its license is included in `fonts/STIXTwoMath.LICENSE`.
Radical size variants have their short horizontal caps trimmed so
MathML's overbar joins directly to the diagonal without a pixel step. Other
glyph outlines are unchanged. Fraction, radical, overbar and underbar rule
thicknesses use 0.05em to avoid two-pixel bars at the article's 16/17px sizes.
Run `pnpm fonts:math` to regenerate from the latest upstream release (requires
`uv`). The script checks the radical geometry before replacing the font and
records the resolved source URL and SHA-256 in the font's metadata. Normal
builds and page visits use the bundled font without fetching upstream.
Temml requires a browser with native MathML support. Equation references
(`\ref` and `\eqref`) are not wired into the site's rendering pipeline yet.
Math articles retain the textmode font and colors, with unframed equations
aligned to the body. Prose wraps to the viewport; long equations scroll within
their own region instead of shrinking the entire article. Articles without
`math: true` retain the original text rendering, including literal dollar signs.
Ink style reference:
https://www.cubeyond.net/volume/3/ansi-ink-phile/
Article header artwork is chosen from the article's public URL. It stays the
same across reloads, rebuilds, and adding/removing other articles. Renaming its
slug or moving it to another volume can choose a different effect. The default
pool is `life`, `maze` (depth-first maze carving), `sort` (insertion sort),
`bits` (four byte registers), `asm` (a small assembly loop), and `reorder`
(out-of-order execution with in-order retirement). No extra controls interrupt
the reading layout.
Configure the pool and playback in `entropic.config.ts`:
philes: {
decoration: {
effects: ["life", "maze", "sort", "bits", "asm", "reorder"],
animated: true,
speed: 1
}
}
Omitted options inherit these defaults. `effects` must contain at least one
unique algorithm; use a single item to show the same effect everywhere.
Reordering the pool does not reshuffle articles. For the new effects, `speed`
ranges from 0.25 to 4 and `animated: false` keeps a still frame. The new artwork
also stays visible without JavaScript. Life uses its original renderer, grid,
color, and timing; these playback options do not change it. All effects
pause offscreen, in hidden tabs, and for reduced motion.
Set `decoration: maze` (or any other effect name) in an article's frontmatter
to pin its effect, including one outside the global pool. `decoration: false`
removes that article's artwork and closes the unused header space.
`philes.decoration: false` disables all article artwork, including overrides.
The processor illustrations use native Gohu text at the article's font size.
`bits` highlights the bits changed by XOR, rotate, and shift operations. `asm`
shows an executed instruction with its resulting registers and flags. `reorder`
shows dependency waits and two execution slots; completed instructions remain
in the queue until all earlier instructions can retire.
Example:
---
title: "Example"
date: 2026-05-31
---
--[ Summary ]-------------------------------------------------------------
target : ...
primitive : ...
--[ ink ]--
| 00400000-00401000 r--p 00000000 ./a.out ; ELF headers
~ BBBBBBBB.BBBBBBBB GGKK KKKKKKKK MMMMMMM
| 00401000-00402000 r-xp 00001000 ./a.out ; executable text
~ BBBBBBBB.BBBBBBBB GGRR KKKKKKKK MMMMMMM
#[B|B] address range
#[G|G] readable permission
#[R|R] executable permission
#[K|K] offset / padding
#[M|M] mapped object
Volumes
-------
Volume numbers come from the directory name:
volume-0
volume-1
volume-2
The public routes are:
/volume/<n>/
/volume/<n>/<phile-name>/
Per-volume behavior is configured in `entropic.config.ts` under `volumes`.
Only the fields supplied for a volume override its generated defaults.
Set `decoration` to `circuit`, `archive`, `study`, or `prism` for a themed header
illustration. `life` keeps the original Game of Life frame and is the default
for unconfigured volumes; `false` removes the decoration. For example:
volumes: {
0: { title: "Security Research", decoration: "circuit" },
1: { title: "Historical Philes", decoration: "archive" }
}
The four illustrations also accept an options object:
decoration: {
kind: "study",
animated: true,
speed: 1,
calendar: { month: 12, day: 31 }
}
`animated: false` keeps a static illustration. `speed` is a playback multiplier
from 0.25 to 4: 0.5 is half speed, 2 is double speed. These optional settings
default to `true` and `1`. `calendar` is only for `study` and defaults to December
31; use a numeric month and a valid day (February 29 is supported). The original
`life` frame uses the string shorthand. Every CPU transfer independently samples
an 8-bit value, including 00 and FF; consecutive random values may repeat.
The new illustrations remain visible without JavaScript. Their motion pauses
offscreen, in hidden tabs, and when reduced motion is requested. Article
headers use the separate `philes.decoration` settings described above.
Redactions
----------
A redacted phile uses:
redacted: true
The loader discards redacted bodies from the content store and the public page
renders the redacted screen. The pre-commit hook parses staged YAML with the
same parser and unstages redacted philes, leaving the worktree untouched.
Install dependencies before using the hook. Invalid frontmatter blocks the
commit before the hook changes the index.
Redaction is a publishing flag, not secret storage: it does not erase files
from existing Git history. Keep confidential source material outside Git.
Enable hooks in a fresh clone:
git config core.hooksPath scripts/hooks
Site Badges and Artwork
-----------------------
`entropic.config.ts` groups links and decoration under `buttons`. The default
rotates through all 25 presets daily in `Asia/Shanghai`:
buttons: {
items: [/* your 88x31 links or copy controls */],
shuffleOnBuild: true,
artwork: {
mode: "daily",
timeZone: "Asia/Shanghai",
seed: "entropic-artwork-v1",
fallback: "nagaraNozomi"
}
}
All visitors with the same date see the same composition, including after a
refresh. Each cycle shuffles every selected preset once and avoids repeats at
the cycle boundary. The date is checked on load and when returning to a tab or
cached page; a continuously open page does not swap on a timer.
No daily rebuild, endpoint, cookie, or browser storage is needed.
Use `artwork: false` for links alone, or
`artwork: { mode: "fixed", preset: "nagaraNozomi" }` for a fixed image.
An empty `items` array hides the panel. The inline configuration comments cover
custom images, preset pools, interval/visit modes, and the no-JavaScript fallback.
`shuffleOnBuild: true` shuffles buttons once per production build and keeps
that order across visits and artwork changes. Local development uses items order.
Each item supplies `label`, `imageSrc`, and either `href` or `copyText`.
Artwork originals live under `src/assets/decorations/<series>/`. Presets retain
the approved display sizes, overlap, and companion placement. Astro builds 1x
and 2x WebP images with lossless encoding; originals remain unchanged. Inert HTML
templates keep unselected compositions from fetching images. The shareable
animated site badge stays at `/assets/88x31/button.gif` for other sites to link to.
CSS grid and container queries own layout. Overlapped badges appear above the
artwork on hover or keyboard focus; touch devices show them immediately.
Artwork is decorative and cannot intercept link activation.
Commands
--------
Use Node.js 24 or newer and the pinned pnpm 12.3.4. `pnpm check:types` runs
Astro diagnostics with the official TS 6 compatibility API and the native
TypeScript 7 checker. Keep both aliases until Astro supports the new API.
pnpm install --frozen-lockfile
install dependencies
pnpm dev
run the local development server
pnpm check
run Astro and TypeScript diagnostics, formatting/lint, and module boundaries
pnpm format
format TS/JS/CSS/JSON with Biome and Astro templates with Prettier
pnpm lint
lint the files covered by Biome
pnpm build
build the static site
pnpm test
run content, textmode, redaction-hook, and WKD regression tests
pnpm exec playwright install chromium firefox
install the browser revisions used by this Playwright version
pnpm test:browser http://127.0.0.1:4329
check fitting, animation lifecycle, and site badges against a production preview
set PLAYWRIGHT_BROWSER=firefox to use Firefox
pnpm test:wkd
verify optional WKD generation and key handling
pnpm assets:fonts
regenerate font subsets and CJK atlases
Font assets are committed. Normal production builds do not require local font
tooling.
Run `pnpm assets:fonts` only when the committed font outputs need to change:
after editing font source files under `fonts/`
after changing CJK glyph coverage or bitmap atlas generation
after changing text that introduces new CJK glyphs which must render via
the bitmap CJK atlas
after changing the font subset scripts themselves
The command regenerates:
public/assets/fonts/gohu-subset.woff
public/assets/cjk/wqy-cjk-body.png
public/assets/cjk/wqy-cjk-link.png
src/generated/cjk-atlas.ts
Regenerating these assets requires `fonttools`. If `pyftsubset` is already on
`PATH`, the scripts use it directly. Otherwise, with `uv` installed, the
scripts resolve `fonttools` automatically and keep the uv cache under `/tmp`.
Branches
--------
`master` is stable. `dev` is integration.
Feature and fix work should branch from `dev`. Pull requests should be
squash-merged. Commits should be signed and should use Conventional Commits.
Public Key Discovery
--------------------
This personal site enables WKD for `[email protected]` in `entropic.config.ts`.
A new site that omits WKD settings leaves publication disabled. To configure it:
wkd: {
enabled: true,
email: "[email protected]",
publicKeyPath: "public/assets/pgp/public-key.asc"
}
Set `wkd.enabled: false` to disable publication while retaining the email and path. Replace the referenced file with your
public key export; its manual download URL also works without WKD. Key changes
require replacing only that file and rebuilding.
The configuration check rejects missing settings, private keys, and public
keys whose UIDs do not match the email. The development server watches the
configured public key file. Production requires a new deployment.
Migration: move the former `WKD_EMAIL` and `WKD_PUBLIC_KEY_PATH` values from
`.env.local` or the hosting environment into this object. Those old environment
variables no longer configure WKD; there is one source of truth. The email and
public-key path are public publishing settings, not credentials.
The build derives the mail domain and lookup hash, then generates the policy
and binary public key under `dist/.well-known/openpgpkey/`. Generated WKD
files are not committed. The Vercel header rules work with any mail domain.
For pnpm 12 on Vercel, use the pinned `packageManager` via Corepack
(`ENABLE_EXPERIMENTAL_COREPACK=1` in the build environment). Confirm the actual
Node.js and pnpm versions in the deployment log; Vercel's default package-manager
detection is not the same as honoring this pin. Local builds do not verify the
remote environment.
For Vercel, deploy the configured public key and attach
`openpgpkey.<mail-domain>` directly to that environment, without a domain
redirect. Redeploy after changing the configuration. In Cloudflare DNS, add a
CNAME named `openpgpkey` using Vercel's displayed target, with Proxied (orange
cloud) and TTL Auto. Use Full (strict) for the connection to Vercel and wait
for domain verification, HTTPS certificates, and DNS caches to update.
Preserve Vercel's proxy prerequisites for certificate issuance and renewal:
allow HTTP access to `/.well-known/acme-challenge/*` without redirects or
browser checks, and leave `/.well-known/vercel/*` uncached. See:
https://vercel.com/docs/security/reverse-proxy
The proxy setting reflects deployment testing: direct Vercel connections
failed during TLS 1.3 shutdown with GnuPG 2.5.21 / GnuTLS 3.8.13, while the
same WKD lookup succeeded through Cloudflare with default TLS settings.
Other static hosts need equivalent WKD response headers and their own live
discovery checks.
WKD clients need public access without authentication or browser challenges.
Cloudflare's Browser Integrity Check can reject non-browser clients with
HTTP 403 / error 1010 even when GnuPG succeeds. Add a scoped exception:
1. Select your domain in Cloudflare, then open Rules > Overview.
2. Select Create rule > Configuration Rule and name it `WKD public access`.
3. Under When incoming requests match, choose a custom filter expression
and open Edit expression. Replace the example hostname with your WKD
hostname:
(http.host eq "openpgpkey.example.org"
and starts_with(http.request.uri.path, "/.well-known/openpgpkey/")
and http.request.method in {"GET" "HEAD"})
4. Under Then the settings are, add Browser Integrity Check and set it to
Off. This exception applies only to WKD GET/HEAD requests on that host.
5. Select Deploy.
Cloudflare documents configuration rules and selective BIC exceptions here:
https://developers.cloudflare.com/rules/configuration-rules/create-dashboard/
https://developers.cloudflare.com/waf/tools/browser-integrity-check/#disable-selectively
After DNS changes have propagated, verify discovery with a fresh keyring:
gpg --homedir "$(mktemp -d)" --auto-key-locate clear,wkd \
--locate-keys [email protected]
Use your configured email and compare the complete primary fingerprint with
your trusted public key export. Check that policy and key URLs accept both
GET and HEAD with the expected content types and CORS headers. Test generic
HTTP clients too: a successful GnuPG lookup alone does not rule out a
Cloudflare browser check blocking another client. Local builds cannot
verify production DNS, HTTPS, or the hosting provider's access rules.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

astrowind
⭕️ AstroWind: A free template using Astro v7 and Tailwind CSS v4. Astro starter theme.
Astro · 博客

astro-paper
A minimal, accessible and SEO-friendly Astro blog theme.
Astro · 博客

fuwari
✨A static blog template built with Astro.
Astro · 博客

Firefly
Firefly 是一款基于 Astro 的静态博客主题,由 CuteLeaf 在 saicaca 的 Fuwari 模板基础上二次开发,主打清新美观的视觉风格。
Astro · 博客

astro-theme-cactus
A simple Astro theme. Use it to create your blog or website.
Astro · 作品集

astrofy
Astrofy is a free and open-source template for your Personal Portfolio Website built with Astro and TailwindCS…
Astro · 作品集
