feat: update tag and timeline share panel copy for clarity and conciseness
Some checks failed
docker-images / resolve-build-targets (push) Successful in 7s
ui-regression / playwright-regression (push) Failing after 13m4s
docker-images / build-and-push (admin) (push) Successful in 1m17s
docker-images / build-and-push (backend) (push) Successful in 28m13s
docker-images / build-and-push (frontend) (push) Successful in 47s
docker-images / submit-indexnow (push) Successful in 13s

style: enhance global CSS for better responsiveness of terminal chips and navigation pills

test: remove inline subscription test and add maintenance mode access code test

feat: implement media library picker dialog for selecting images from the media library

feat: add media URL controls for uploading and managing media assets

feat: add migration for music_enabled and maintenance_mode settings in site settings

feat: implement maintenance mode functionality with access control

feat: create maintenance page with access code input and error handling

chore: add TypeScript declaration for QR code module
This commit is contained in:
2026-04-02 23:05:49 +08:00
parent 6a50dd478c
commit 9665c933b5
94 changed files with 5266 additions and 1612 deletions

View File

@@ -33,7 +33,6 @@ try {
{ label: t('common.posts'), value: String(posts.length) },
{ label: t('common.tags'), value: String(tags.length) },
{ label: t('common.friends'), value: String(friendLinks.filter(friend => friend.status === 'approved').length) },
{ label: t('common.location'), value: siteSettings.location || t('common.unknown') },
];
} catch (error) {
console.error('Failed to load about data:', error);
@@ -42,7 +41,6 @@ try {
{ label: t('common.posts'), value: '0' },
{ label: t('common.tags'), value: '0' },
{ label: t('common.friends'), value: '0' },
{ label: t('common.location'), value: siteSettings.location || t('common.unknown') },
];
}
@@ -57,14 +55,13 @@ const sharePanelCopy = isEnglish
'Use this page as the canonical identity and capability profile so social sharing and AI search can cite one stable source.',
}
: {
badge: '身份主页',
title: '分享这张身份名片页',
description: '把这页当成统一的身份与能力来源分发出去,方便社交回流,也方便 AI 搜索引用到同一个规范地址。',
badge: '个人介绍',
title: '分享个人介绍',
description: '把这页作为个人介绍页分享,方便快速了解作者信息、技术栈和联系方式。',
};
const aboutHighlights = buildDiscoveryHighlights([
siteSettings.ownerTitle,
siteSettings.ownerBio,
siteSettings.location || '',
siteSettings.techStack.slice(0, 4).join(' / '),
]);
const aboutFaqs = buildPageFaqs({
@@ -154,10 +151,6 @@ const aboutJsonLd = [
</div>
</div>
<div class="mt-5 flex flex-wrap gap-2">
<span class="terminal-stat-pill">
<i class="fas fa-location-dot text-[var(--primary)]"></i>
<span>{siteSettings.location || t('common.unknown')}</span>
</span>
<span class="terminal-stat-pill">
<i class="fas fa-layer-group text-[var(--primary)]"></i>
<span>{t('about.techStackCount', { count: techStack.length })}</span>