第九轮(部分):修复日报徽章配色、彻底重做PIN定位方案、清理静态文件品牌残留
- 日报卡片"已提交/未提交"状态徽章补色:DailyReportCard用<article><header><em>结构,原选择器
要求.report-cards直接子<button>,日报卡片永远命中不了、只落到不分状态的兜底样式;月报因为
行本身就是<button>所以没受影响。详情页.report-author em同理补了区分色(原来恒为绿色,"未
提交"用绿色在语义上很怪)。
- 青少年模式/独立密码设置的PIN输入定位改用结构性方案,不再靠猜一个rem偏移量:给
.auth-pin-boxes/.auth-pin-input包一层.auth-pin-wrap,输入框inset:0精确覆盖方块的真实
渲染框,不管外层页面有没有标题、padding多少都自动对齐。上一轮的补丁(.youth-password-gate
.auth-pin-input{top:1.75rem})把重叠率从0%提到32.5%,本轮实测确认还是不够(方块下方
67.5%的面积点不中),根治后4个采样点(四角+中心)全部精确命中输入框。过程中额外发现并
修复了两个更隐蔽的层叠问题:全局input[type=text]的height:2.5rem特异度反超裸class、
textarea/input共享的margin:0.25rem重置——不清掉这两个会让inset:0看起来生效了、实际尺寸/
位置还是被悄悄改掉。
- .report-loading(举报原因页加载态)补基础样式,原来在base.css里零匹配,吃浏览器默认<p>样式。
- 清理静态文件里的Tinode品牌残留:index.html/index-dev.html的<meta>标签(application-name/
description/og:*/canonical,此前只改了<title>,meta标签一直没跟上)、manifest.json(name/
short_name/description改MeetingIM;prefer_related_applications+related_applications整个
删掉——这两个字段会让Android/Chrome"添加到主屏幕"时引导用户去装无关的第三方开源Tinode App,
不只是文案问题);删除.well-known/assetlinks.json(声明了无关第三方App对本域名的URL处理/
登录凭据代理权限,属于遗留模板残留,无真实对应关系,直接移除而非编造虚假内容)。
manifest.json里的图标文件(logo96.png/logo192.png/logo.svg)本身画的就是Tinode的蓝绿橙"t"标志,
是真实的视觉品牌泄漏,但重新设计一套图标涉及视觉识别决策,本次未动,留给用户决定。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
f688578714
commit
d573b38d10
+36
-30
@@ -6817,21 +6817,24 @@ function IndependentPassword({
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("h1", {
|
||||
children: "设置独立密码"
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("div", {
|
||||
className: "auth-pin-boxes",
|
||||
"aria-hidden": "true",
|
||||
children: [0, 1, 2, 3].map(i => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("span", {
|
||||
children: pin[i] ? '●' : ''
|
||||
}, i, false))
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("input", {
|
||||
className: "auth-pin-input",
|
||||
type: "text",
|
||||
value: pin,
|
||||
onChange: e => setPin(e.target.value.replace(/\D/g, '').slice(0, 4)),
|
||||
inputMode: "numeric",
|
||||
autoComplete: "off",
|
||||
"aria-label": "四位独立密码",
|
||||
autoFocus: true
|
||||
}, void 0, false), error ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("div", {
|
||||
className: "auth-pin-wrap",
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("div", {
|
||||
className: "auth-pin-boxes",
|
||||
"aria-hidden": "true",
|
||||
children: [0, 1, 2, 3].map(i => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("span", {
|
||||
children: pin[i] ? '●' : ''
|
||||
}, i, false))
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("input", {
|
||||
className: "auth-pin-input",
|
||||
type: "text",
|
||||
value: pin,
|
||||
onChange: e => setPin(e.target.value.replace(/\D/g, '').slice(0, 4)),
|
||||
inputMode: "numeric",
|
||||
autoComplete: "off",
|
||||
"aria-label": "四位独立密码",
|
||||
autoFocus: true
|
||||
}, void 0, false)]
|
||||
}, void 0, true), error ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("div", {
|
||||
className: "auth-field-error",
|
||||
children: error
|
||||
}, void 0, false) : null, (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("button", {
|
||||
@@ -16197,21 +16200,24 @@ function YouthModeVerify({
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("main", {
|
||||
className: "youth-password-gate",
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("div", {
|
||||
className: "auth-pin-boxes",
|
||||
"aria-hidden": "true",
|
||||
children: [0, 1, 2, 3].map(i => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("span", {
|
||||
children: password[i] ? '●' : ''
|
||||
}, i, false))
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("input", {
|
||||
className: "auth-pin-input",
|
||||
type: "text",
|
||||
inputMode: "numeric",
|
||||
autoComplete: "off",
|
||||
autoFocus: true,
|
||||
value: password,
|
||||
onChange: e => setPassword(e.target.value.replace(/\D/g, '').slice(0, 4)),
|
||||
"aria-label": "独立密码"
|
||||
}, void 0, false), error ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("div", {
|
||||
className: "auth-pin-wrap",
|
||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("div", {
|
||||
className: "auth-pin-boxes",
|
||||
"aria-hidden": "true",
|
||||
children: [0, 1, 2, 3].map(i => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("span", {
|
||||
children: password[i] ? '●' : ''
|
||||
}, i, false))
|
||||
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("input", {
|
||||
className: "auth-pin-input",
|
||||
type: "text",
|
||||
inputMode: "numeric",
|
||||
autoComplete: "off",
|
||||
autoFocus: true,
|
||||
value: password,
|
||||
onChange: e => setPassword(e.target.value.replace(/\D/g, '').slice(0, 4)),
|
||||
"aria-label": "独立密码"
|
||||
}, void 0, false)]
|
||||
}, void 0, true), error ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("div", {
|
||||
className: "auth-field-error",
|
||||
children: error
|
||||
}, void 0, false) : null, (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("button", {
|
||||
|
||||
Reference in New Issue
Block a user