 Your NameandClaude Sonnet 5
|
4e8f45d7d8
|
路由从 hash 换成 History API(pushState/replaceState/popstate),不再依赖 location.hash
HashNavigation 改名 Navigation(src/lib/navigation.js),接口不变,内部改用真实路径:
parseUrlHash/composeUrlHash 改名 parseUrl/composeUrl;navigateTo/navigateReplace 改调
pushState/replaceState 后手动派发 popstate(pushState/replaceState 不会像赋值 location.hash
那样自动触发事件,这里复用 navigateReplace 早就在用的同一个手动 dispatch 手法);goBack()
不用改,history.back() 本来就是真实浏览器历史机制。新增 Navigation.currentUrl() 替代调用方
原本直接读的 window.location.hash(这个类从来没包装过这个读取)。
一处需要专门处理的边界情况:当 path[0] 是空字符串("不选中侧栏视图、只开一个会话"这个仓库里
的合法状态)时,拼出的真实路径开头会变成双斜杠,被浏览器当协议相对地址解析、试图跳到一个叫
会话id的host,pushState 直接抛 SecurityError。composeUrl/parseUrl 内部用占位 token "_" 处理
这种情况,对外的调用方(19个文件)完全无感。
tinode-web.jsx 的 handleHashRoute 改名 handleRouteChange,监听从 hashchange 换成 popstate;
service-worker.js 的推送通知点击跳转手动改写成同样的路径格式(这个文件在打包之外单独执行,
没法 import Navigation)。index.html/index-dev.html 加了 <base href="/">——所有静态资源引用
都是相对路径,hash 路由下页面路径永远是 /,换真实路径后深层地址刷新会按当前目录解析出错误
资源地址导致白屏,这一行是标准修法。nginx.conf 的 try_files 兜底规则本来就适用两种路由,只
更新了注释。
实机验证:地址栏不再有 #;点击会话/设置等各类视图正常跳转;浏览器前进后退和应用内"返回"
按钮都正常;收藏页内部的类型 tab 切换(navigateReplace)确认不产生新的历史记录;在会话页/
个人中心页刷新、直接用完整深层路径打开新标签页都能正确恢复到位,资源正常加载不白屏。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
2026-09-07 21:00:39 +08:00 |
|
 Your NameandClaude Sonnet 5
|
d573b38d10
|
第九轮(部分):修复日报徽章配色、彻底重做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>
|
2026-09-05 18:17:48 +08:00 |
|
 Your NameandClaude Sonnet 5
|
d759f67b11
|
第八轮最小粒度测试:修复CSS选择器/JSX结构不匹配的一整类bug,清理Tinode品牌残留
第八轮改用"读CSS选择器+核对JSX结构"的方式复测全部11章,命中了7轮纯接口测试从未发现的一类
问题——选择器写对了但目标元素的实际DOM结构/className对不上,样式静默失效:
- 语音通话最小化胶囊按钮尺寸被同特异度规则覆盖;移动端悬浮通话窗口left/right/width三值同时
生效导致过度约束;来电全屏页认证徽章/姓名标题缺少专属样式覆盖
- 我的收藏-语音卡片三列grid对应实际只有1个子元素,播放器被压缩到卡片左侧一角;链接/记录头部
完全没有基础样式,退化成浏览器默认外观
- 多选模式下"收到的"消息气泡被flex auto-margin一起拖到最右侧;.avatar-box/#send-message-panel
两处逗号断句错误导致后半句选择器丢失祖先限定
- 按住说话悬浮反馈渲染成内联胶囊,而参考图要求的居中悬浮卡片样式其实已经存在(挂在了另一个非
生产demo组件上);批量转发确认框沿用了80%视口高度;audio-player.jsx的playback类点在canvas
上而非包裹层,波形和计时器可能纵向堆叠
- "消息已撤回"占位符误拼了日期分隔条的class而非专属的deleted
品牌清理:浏览器标签页标题、未读数标题更新均硬编码"Tinode";LINK_CONTACT_US等三个链接常量
指向开源Tinode项目自己的域名(联系我们改为跟用户条款/隐私协议一致的toast,不再发起外部mailto)。
以及:空会话丢失.chat-box样式类、青少年模式PIN定位、若干收藏/文件类型展示细节。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
2026-09-05 17:09:42 +08:00 |
|
or-else
|
6c1c8cf336
|
removed incomplete video conferences
|
2025-02-14 21:40:44 +03:00 |
|
or-else
|
f91d8a979d
|
implement touch swiping pinned messages
|
2025-02-14 17:38:49 +03:00 |
|
or-else
|
02e8bd2f74
|
merge devel
|
2025-02-08 19:50:34 +03:00 |
|
or-else
|
df03509029
|
bump version to 22.13, dependencies updated
|
2024-04-29 15:17:46 -07:00 |
|
or-else
|
9eaa172030
|
add QR code display
|
2024-02-02 16:26:49 -08:00 |
|
or-else
|
2f85f01a1a
|
make livekit external
|
2023-06-10 18:10:42 -07:00 |
|
or-else
|
a99ad81196
|
all dependencies updated to latest, including breaking changes
|
2022-11-17 11:43:28 -08:00 |
|
or-else
|
36977b429b
|
small UI and metadata fixes
|
2022-06-23 13:23:06 -07:00 |
|
or-else
|
aa498a7d1f
|
add comment to update Firebase in service worker
|
2022-02-28 15:42:32 -08:00 |
|
or-else
|
d106f6382a
|
google's FCM API is VERY poorly designed
|
2022-02-24 17:39:51 -08:00 |
|
or-else
|
e4c5da3178
|
roll back to firebase 8, otherwise crash
|
2021-11-14 16:22:13 -08:00 |
|
or-else
|
07292dffa4
|
dependencies updated
|
2021-11-09 09:57:43 -08:00 |
|
or-else
|
2e589bef0c
|
use fixed version of react-intl. 5.20.12 is broken
|
2021-09-27 15:54:46 -07:00 |
|
or-else
|
2ecb522b44
|
updated dependencies including react-intl (previously broken)
|
2021-06-02 17:43:43 -07:00 |
|
or-else
|
ebb7537b2f
|
dependencies updated
|
2021-02-28 14:47:33 -08:00 |
|
or-else
|
a319e2b0bc
|
CDN changed react-int paths
|
2021-01-11 19:39:24 -08:00 |
|
or-else
|
396b23ee88
|
dependencies updated
|
2020-12-27 20:55:46 -08:00 |
|
or-else
|
96ad18a902
|
dependencies updated
|
2020-09-15 13:57:35 -07:00 |
|
or-else
|
d91534236f
|
dependencies updated
|
2020-08-24 11:38:01 -07:00 |
|
or-else
|
ab128ba6bb
|
dependencies updated, security fix for elliptic pkg
|
2020-07-30 13:51:40 -07:00 |
|
or-else
|
a192129ff9
|
dependencies updated, breaking change in react-intl fixed
|
2020-06-08 18:20:12 +03:00 |
|
or-else
|
375750a6ff
|
bump version and rebuild
|
2020-04-13 16:13:34 +03:00 |
|
or-else
|
475e5eb3e7
|
dependencies updated
|
2020-03-14 09:09:27 +03:00 |
|
or-else
|
db76ec3266
|
dependencies updated
|
2019-12-23 10:27:34 +03:00 |
|
or-else
|
b81ec3e634
|
update dependencies and bump version
|
2019-11-30 11:21:10 +03:00 |
|
or-else
|
bb20937bc9
|
replace unpkg with jsdeliver as unpkg is too unreliable https://github.com/mjackson/unpkg/issues/229
|
2019-11-01 09:41:06 +03:00 |
|
or-else
|
9891620188
|
added "mobile-web-app-capable" meta header
|
2019-10-23 19:31:59 +03:00 |
|
or-else
|
8e9349b58b
|
split tinode-sdk into a separate file
|
2019-10-03 18:15:29 +03:00 |
|
or-else
|
f9a29ed3ef
|
add alert for destructable actions
|
2019-09-24 17:12:38 +03:00 |
|
or-else
|
f3420dc66f
|
upgraded react-intl to 3.3
|
2019-09-23 15:28:22 +03:00 |
|
or-else
|
d9c729d9ab
|
update dependencies and rebuild
|
2019-08-24 14:31:55 +03:00 |
|
or-else
|
78b0909f02
|
add open graph headers
|
2019-08-24 14:13:33 +03:00 |
|
or-else
|
a6bc2a1f8f
|
migrate the app from api.. to web..
|
2019-08-22 10:46:14 +03:00 |
|
or-else
|
112ce08fde
|
updated dependencies and rebuilt
|
2019-07-17 13:51:59 +03:00 |
|
or-else
|
a0e8aa5c54
|
add bold-italic font variant, rebuild
|
2019-05-11 19:23:31 +03:00 |
|
or-else
|
1458184fc2
|
update versions and rebuild
|
2019-03-11 10:12:05 +03:00 |
|
or-else
|
49af44d4ca
|
upkg.com is supposedly fixed now, rolling back the workaround
|
2019-02-09 10:53:46 +03:00 |
|
or-else
|
7e30c2acc6
|
temporary fox for broken unpkg unpkg/unpkg.com#176
|
2019-02-03 09:48:52 +03:00 |
|
or-else
|
a4af2a53ac
|
pubm versions and rebuild
|
2019-01-29 14:22:42 +03:00 |
|
or-else
|
c76a7dcb6b
|
splitting out libraries
|
2018-10-31 19:44:07 +03:00 |
|
or-else
|
e7f3b424e4
|
add <noscript> message
|
2018-10-31 12:12:10 +03:00 |
|
or-else
|
25021a866d
|
things seem to work
|
2018-10-26 14:45:50 +03:00 |
|
or-else
|
e139c1371e
|
login page is displayed now
|
2018-10-25 14:02:53 +03:00 |
|
or-else
|
7dead5b14d
|
switching to webpack
|
2018-10-24 17:14:07 +03:00 |
|
or-else
|
8b02f39557
|
initial pass at internationalization
|
2018-10-23 16:39:01 +03:00 |
|
or-else
|
a2f075f4fb
|
first pass at localization
|
2018-10-23 14:09:39 +03:00 |
|
or-else
|
47abebd1f2
|
bump version, update dependencies and rebuild
|
2018-10-22 09:30:56 +03:00 |
|