TerryM
64a41359b4
style: 展开/收起按钮去掉背景胶囊样式,仅保留文字+chevron
2026-05-29 23:58:14 +08:00
TerryM
b283ba74da
feat: 消息气泡长文字支持「展开全部/收起全部」折叠
...
- 新增 CollapsibleText 组件:超过 8 行文字自动折叠,按行高对齐裁切,底部柔和渐隐遮罩暗示有更多内容
- 折叠按钮左对齐,胶囊样式 + chevron 图标,hover 浅背景高亮,点击 chevron 旋转 180°
- 应用到全部 5 种气泡:Text/ImageWithText/Album/Video/FileDoc
- 动画统一使用 motion 包的 EASE_OUT 缓动,尊重 reducedMotion=user
- i18n 七种语言新增 showMore/showLess 文案
2026-05-29 23:49:59 +08:00
TerryM
471d29bec9
fix: 相册改用绝对定位百分比布局,彻底消除底部黑边
...
CSS grid + aspect-ratio 下 fr 行在部分浏览器不撑满,留出 bg-black。
改为 Telegram 同款:算法输出每块 {left,top,width,height} 百分比坐标,
图块绝对定位铺满容器。顺带修复竖主图在左时右侧堆叠图高度算错未填满列。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 22:56:20 +08:00
TerryM
789920d2b9
fix: 修复相册底部黑边(grid 用 aspect-ratio 时 fr 行不撑满)
...
aspect-ratio 单独作用在 grid 上时,容器高度对 fr 行属"非确定高度",
fr 退化为 max-content,行被压成内容高度,容器底部露出 bg-black。
改为:aspect-ratio + maxHeight 放外层 wrapper,内层 grid 用 absolute
inset-0 撑满,获得确定高度,fr 行正常拉伸,黑边消除。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 22:37:16 +08:00
TerryM
0035457c6d
feat: 媒体流图片自适应显示(单图/2图/Telegram式相册)
...
- 单图气泡按真实比例显示:横图限高260px、过高裁上下;竖图完整铺满宽度不裁、无黑边
- 2张同类相册:都竖图左右并排、都横图上下堆叠,按比例不裁
- 3+张相册:Telegram式马赛克拼贴(竖主图占左+其余堆右 / 横主图占顶+其余排底)
- 图片比例优先用后端width/height,缺失时从加载后的naturalWidth/Height读取
- 新增 constants/media.ts 统一尺寸规范;albumLayout 纯算法附单测
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 22:16:55 +08:00
TerryM
a7792c117d
fix: 资料流提早显现内容,避免空白缺口被误认为到底
...
Reveal 加 300px 前置 viewport margin,内容在进入视口前淡入;
无限滚动预加载触发线 200px → 1000px,下一页提前请求。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 19:04:31 +08:00
TerryM
042635528a
feat: 灯箱支持下载、底部缩略图居中、关闭后保留滚动位置
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 18:11:30 +08:00
TerryM
e04dd7dc2a
fix: 修复相册缩略图无法显示(dev 代理 + 前端兜底)
...
- vite: /uploads 代理指向源站根而非 /apnew 前缀,relative thumbnailUrl
(/uploads/thumb…) 在 dev 下不再落到 SPA index.html
- BubbleImage: 新增 fallbackSrc 候选链,缩略图加载失败时自动回退到绝对
thumbUrl/url,全部失败才显示占位符
- AlbumBubble / ImageLightbox: 缩略图传入绝对地址作为兜底
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 17:59:33 +08:00
TerryM
1f8772f645
feat: 相册点击直接进大图查看器,移除「选择图片」列表
...
- AlbumBubble: 点 +N 直接打开全屏查看器(从该图开始),删除中间的选择列表弹窗
- ImageLightbox: 底部加可滑动缩略图条(当前高亮+自动滚动定位),顶栏加下载按钮
- 下载按钮保证此前藏在 +N 列表里的图片仍可下载
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 17:50:53 +08:00
TerryM
559c4f19c8
feat: image error placeholder + scroll-to-top on navigation
...
Image bubbles previously used the raw filename as alt text, so a failed
asset load exposed the file name in the broken-image box. Add a reusable
BubbleImage that renders an empty alt and falls back to a neutral
placeholder (ImageOff icon) on error; use it in the album, image, and
image-with-text bubbles, and drop the filename from their aria-labels.
Also add a global ScrollToTop that resets the window on route change so
desktop navigation matches mobile (e.g. clicking a category card no
longer lands at the bottom of the new page). Hash navigations are skipped
so #post-<id> deep-link scrolling still works.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 13:09:09 +08:00
TerryM
4464e6fdc5
fix: fall back to file icon when document thumbnail fails to load
...
Render the 52x52 preview with an empty alt and an onError handler, so a
broken thumbnail no longer shows the browser's broken-image box (which
leaked the raw filename) — it falls back to the file-type icon instead.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 13:08:16 +08:00
TerryM
f73131dc03
style: apply prettier formatting to fix format:check
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 12:49:22 +08:00
TerryM
14c3defd23
feat: show attachment preview thumbnail in document bubble
...
Use thumbnailUrl/posterUrl (and the image url itself for image-type
attachments) inside the 52x52 box of the file/document bubble, falling
back to the file-type icon when no preview is available.
Also tune the deep-link scroll-mt offset (82px / 98px) so a targeted
bubble lands just below the sticky header.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 12:40:17 +08:00
TerryM
88a25b6ad4
feat: scroll to post bubble from recommended card + back-to-top button
...
Deploy to Frontend Servers / deploy (push) Failing after 14s
Recommended cards already routed to /browse#post-<id>, but the stream had
no logic to scroll to the target bubble — and the post might not be paged
in yet. MessageStream now resolves the #post-<id> hash, auto-loads more
pages until the bubble renders, scrolls to it, and gives it a brief gold
highlight. Bubbles get scroll-mt so they clear the sticky header.
Also adds a global floating back-to-top button (BackToTop) mounted in
PublicLayout, shown after scrolling past 400px.
Bundles related staging UI work already present in the working tree.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 11:50:27 +08:00
TerryM
320739f91b
Add stale cache for public data
2026-05-28 23:09:18 +08:00
TerryM
5ca38a0eca
fix: overlay lightbox captions without shifting image
2026-05-28 18:40:17 +08:00
TerryM
5fec82dbba
fix: route home view-all links
2026-05-28 16:49:30 +08:00
TerryM
4c15e01460
fix: keep video downloads visible while playing
2026-05-28 16:37:00 +08:00
TerryM
6a998c0186
feat: separate popular browse navigation
2026-05-28 16:28:50 +08:00
TerryM
0e98428f64
feat: polish figma mobile home and nav
2026-05-28 15:32:15 +08:00
TerryM
e65c473369
feat: align figma browse and category sections
2026-05-28 15:11:13 +08:00
TerryM
49f61b89f1
feat: apply figma browse mobile redesign
2026-05-28 10:41:53 +08:00
TerryM
4a718926da
fix: show download buttons on video albums
Deploy to Frontend Servers / deploy (push) Successful in 19s
2026-05-27 15:37:46 +08:00
TerryM
7e70798d68
fix: show download buttons on image albums
Deploy to Frontend Servers / deploy (push) Successful in 19s
2026-05-27 15:30:40 +08:00
TerryM
f5e858659f
feat: add media overflow pickers
2026-05-27 15:28:51 +08:00
TerryM
23a7807bef
feat: support multi-video post bubbles
2026-05-27 15:19:31 +08:00
TerryM
1ad599c3ac
Prevent mobile horizontal scroll black edge
2026-05-27 15:18:27 +08:00
TerryM
d3d054ad32
Toggle lightbox captions on image click
2026-05-27 13:37:14 +08:00
TerryM
a6fda3cd03
Align compact message bubbles within media column
2026-05-27 13:16:40 +08:00
TerryM
565784b4bb
Shrink non-media message bubbles to content
2026-05-27 12:58:35 +08:00
TerryM
1f3acca211
Unify message bubble width
Deploy to Frontend Servers / deploy (push) Successful in 21s
2026-05-27 12:46:31 +08:00
TerryM
902300933e
Share media attachment download pill
2026-05-27 12:35:47 +08:00
TerryM
8120f6b05c
feat: add expandable filter chips
2026-05-27 12:35:47 +08:00
TerryM
54841a4ed9
Show attachment download progress
2026-05-27 12:35:47 +08:00
TerryM
9453777dba
Use backend endpoint for attachment downloads
2026-05-27 12:35:47 +08:00
TerryM
68cbce9cf1
style: make message cards fluid width
2026-05-27 12:35:47 +08:00
TerryM
7cd48f767e
style: align and widen message stream cards
2026-05-27 12:35:47 +08:00
TerryM
3f0a395f40
feat: unify search with browse page
2026-05-27 12:35:47 +08:00
TerryM
54f71c6ab3
feat: refine language menu and lightbox caption
2026-05-26 18:37:17 +08:00
TerryM
532f0112fd
feat: polish message attachment downloads
2026-05-26 18:10:34 +08:00
TerryM
e0629c9df7
fix: allow copying message stream text
2026-05-26 18:10:34 +08:00
TerryM
78bdf73143
feat: enable real posts api by default
2026-05-26 14:07:10 +08:00
TerryM
d3c30795dc
feat: wire public posts api
2026-05-26 12:07:13 +08:00
TerryM
f482a2ec38
fix: unify chinese language code as zh-CN
2026-05-26 10:03:12 +08:00
TerryM
f2e97c329e
fix: map chinese language requests to zh-CN
2026-05-26 08:09:20 +08:00
TerryM
e7a5952d58
feat: align frontend languages with posts api
2026-05-26 07:36:53 +08:00
TerryM
a784f159fe
feat: add telegram-style resource stream
2026-05-25 05:25:57 +08:00