Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
acd8e1d
feat: 完成首轮体验优化与交互重构
Robert-Stackflow Aug 23, 2026
1186c35
feat: add unified download task management
Robert-Stackflow Aug 23, 2026
65e01a1
feat: support resilient background downloads
Robert-Stackflow Aug 23, 2026
3225a9d
docs: map legacy icons to Lucide semantics
Robert-Stackflow Aug 23, 2026
23251ef
feat: unify Lucide icon primitives
Robert-Stackflow Aug 23, 2026
801794d
test: enforce icon state policy
Robert-Stackflow Aug 23, 2026
2edcf60
feat: migrate global navigation to Lucide
Robert-Stackflow Aug 23, 2026
574a349
feat: migrate shared controls to Lucide
Robert-Stackflow Aug 23, 2026
c957997
feat: migrate settings icons to Lucide
Robert-Stackflow Aug 23, 2026
ec69246
feat: migrate content item icons to Lucide
Robert-Stackflow Aug 23, 2026
b7211e7
feat: migrate bottom sheet icons to Lucide
Robert-Stackflow Aug 23, 2026
06784bc
feat: migrate content management menus to Lucide
Robert-Stackflow Aug 23, 2026
5dffe18
feat: migrate profile detail icons to Lucide
Robert-Stackflow Aug 23, 2026
cdb0c16
feat: migrate discovery detail icons to Lucide
Robert-Stackflow Aug 23, 2026
823421e
feat: migrate post card icons to Lucide
Robert-Stackflow Aug 23, 2026
33584cc
feat: migrate post detail icons to Lucide
Robert-Stackflow Aug 23, 2026
9f8dbce
feat: migrate login icons to Lucide
Robert-Stackflow Aug 23, 2026
6a0291f
feat: migrate core navigation icons to Lucide
Robert-Stackflow Aug 23, 2026
c26ad96
feat: migrate video controls to Lucide
Robert-Stackflow Aug 23, 2026
42a4455
feat: complete Lucide icon migration
Robert-Stackflow Aug 23, 2026
f9b3b81
chore: remove legacy icon assets
Robert-Stackflow Aug 24, 2026
4c06610
feat: expose downloads in content center
Robert-Stackflow Aug 24, 2026
c94b777
feat: add glass mobile navigation
Robert-Stackflow Aug 24, 2026
c3ead97
feat: add navigation transparency fallback
Robert-Stackflow Aug 24, 2026
624265d
feat: animate glass navigation interactions
Robert-Stackflow Aug 24, 2026
79ac16a
feat: harden glass navigation layouts
Robert-Stackflow Aug 24, 2026
4dcea75
fix: coordinate post navigation gestures
Robert-Stackflow Aug 24, 2026
0a828eb
feat: add batch content downloads
Robert-Stackflow Aug 24, 2026
c9d72e3
fix: prevent dynamic collection card overflow
Robert-Stackflow Aug 24, 2026
99a2a06
docs: freeze visual redesign direction
Robert-Stackflow Aug 24, 2026
56db72c
feat: establish visual design tokens
Robert-Stackflow Aug 24, 2026
ab9b027
feat: unify interactive design controls
Robert-Stackflow Aug 24, 2026
ff9ea9b
feat: normalize and theme Lottie animations
Robert-Stackflow Aug 24, 2026
542751b
fix: restore legacy typography and content surfaces
Robert-Stackflow Aug 24, 2026
a512aca
fix: make app bar actions circular
Robert-Stackflow Aug 24, 2026
ad5fe09
feat: add floating navigation page headers
Robert-Stackflow Aug 24, 2026
4d29388
feat: morph navigation lottie icons to filled state
Robert-Stackflow Aug 24, 2026
f09fc1a
fix: smooth navigation scroll visibility
Robert-Stackflow Aug 24, 2026
93af40a
fix: restore progressive refresh reveal
Robert-Stackflow Aug 24, 2026
e58bc9f
feat: unify cards panels and state views
Robert-Stackflow Aug 24, 2026
aad2507
feat: refine responsive home content grid
Robert-Stackflow Aug 24, 2026
dd9e881
feat: establish post detail reading layout
Robert-Stackflow Aug 24, 2026
2f158da
feat: refine tag detail discovery layout
Robert-Stackflow Aug 24, 2026
d3cd8af
feat: refine responsive author profile
Robert-Stackflow Aug 24, 2026
7b9d231
feat: unify responsive setting surfaces
Robert-Stackflow Aug 24, 2026
6b00764
fix: align section interaction feedback
Robert-Stackflow Aug 24, 2026
0b4d456
feat: refine primary navigation headers
Robert-Stackflow Aug 24, 2026
30bccb3
docs: track navigation and download follow-ups
Robert-Stackflow Aug 24, 2026
d49d029
fix: refine refresh motion and placement
Robert-Stackflow Aug 29, 2026
5f26b4c
fix: tighten home feed presentation
Robert-Stackflow Aug 29, 2026
5dfde90
fix: improve dynamic collection spacing
Robert-Stackflow Aug 29, 2026
ec85386
fix: fill notification tab placeholders
Robert-Stackflow Aug 29, 2026
24dda85
refactor: make navigation headers occupy layout
Robert-Stackflow Aug 29, 2026
26b8a47
feat: add navigation display styles
Robert-Stackflow Aug 29, 2026
e3d5dd5
fix: stabilize navigation scroll visibility
Robert-Stackflow Aug 29, 2026
8deb411
fix: restore compact tag discovery banners
Robert-Stackflow Aug 29, 2026
e181e21
refactor: keep download manager in content center
Robert-Stackflow Aug 29, 2026
2fb89d5
fix: refine app bar action sizing
Robert-Stackflow Aug 29, 2026
3fb4557
fix: show post download progress
Robert-Stackflow Aug 29, 2026
44ee00e
feat: group batch download tasks
Robert-Stackflow Aug 29, 2026
b945402
feat: add grouped download details
Robert-Stackflow Aug 29, 2026
8a67eeb
feat: complete first redesign self-check
Robert-Stackflow Aug 29, 2026
a0af0fc
fix: adapt app bars for compact large text
Robert-Stackflow Aug 29, 2026
1e64f88
fix: keep short-screen state actions reachable
Robert-Stackflow Aug 29, 2026
1d729cd
fix: preserve loading state semantics
Robert-Stackflow Aug 29, 2026
a7cdced
chore: add secure Flutter render capture
Robert-Stackflow Aug 29, 2026
10c7df0
fix: keep theme accent content readable
Robert-Stackflow Aug 29, 2026
bfec9c3
fix: sync persisted locale formatting
Robert-Stackflow Aug 29, 2026
8f9c0b3
fix: separate root and panel back handling
Robert-Stackflow Aug 29, 2026
44dfcbe
fix: keep tonal theme states readable
Robert-Stackflow Aug 29, 2026
a52571f
fix: keep semantic status colors readable
Robert-Stackflow Aug 29, 2026
28490be
fix: keep muted text accessible
Robert-Stackflow Aug 29, 2026
3c80bf3
test: cover asynchronous page state recovery
Robert-Stackflow Aug 29, 2026
0f971c8
fix: block stale state actions during transitions
Robert-Stackflow Aug 29, 2026
5a97ab8
fix: localize Traditional Chinese page states
Robert-Stackflow Aug 29, 2026
7660290
fix: keep muted text readable on soft surfaces
Robert-Stackflow Aug 29, 2026
64f7f3d
fix: separate readable accent foregrounds
Robert-Stackflow Aug 29, 2026
e13ebbe
fix: strengthen interactive surface boundaries
Robert-Stackflow Aug 29, 2026
7237729
fix: keep blocked profile actions readable
Robert-Stackflow Aug 29, 2026
d57fac7
fix: keep profile headers readable over bright covers
Robert-Stackflow Aug 29, 2026
1fd41b3
fix: unify readable artwork header overlays
Robert-Stackflow Aug 29, 2026
7483358
fix: keep image badges readable on bright media
Robert-Stackflow Aug 29, 2026
fefbce1
fix: protect wallpaper preview text on bright media
Robert-Stackflow Aug 29, 2026
e4f4b0d
fix: make decoration detail panels responsive
Robert-Stackflow Aug 29, 2026
b649c31
fix: show real decoration download progress
Robert-Stackflow Aug 29, 2026
6b91d91
fix: show real progress for remaining decoration downloads
Robert-Stackflow Aug 29, 2026
d580d38
fix: keep login actions reachable on short screens
Robert-Stackflow Aug 29, 2026
47e60fd
fix: make the comment panel responsive
Robert-Stackflow Aug 29, 2026
cdb390a
fix: make folder selection panel responsive
Robert-Stackflow Aug 29, 2026
f4b2336
fix: make collection directory panel responsive
Robert-Stackflow Aug 29, 2026
afe9066
fix: use true cell widths in archive grids
Robert-Stackflow Aug 29, 2026
9aa0f6a
fix: align saved archive grid extents
Robert-Stackflow Aug 29, 2026
bb30999
fix: make favorite folder cards responsive
Robert-Stackflow Aug 29, 2026
bd483b5
fix: make relation cards responsive
Robert-Stackflow Aug 29, 2026
7f88d42
test: host tile cards in their scroll context
Robert-Stackflow Aug 29, 2026
476fb2a
fix: reflow download tasks on narrow screens
Robert-Stackflow Aug 29, 2026
a003b59
fix: reflow download details on narrow screens
Robert-Stackflow Aug 29, 2026
0ce70fb
fix: reflow batch downloads on narrow screens
Robert-Stackflow Aug 29, 2026
b46cbc9
fix: reflow notification cards for large text
Robert-Stackflow Aug 29, 2026
2e037a3
fix: preserve gesture lock geometry on short screens
Robert-Stackflow Aug 29, 2026
46e0383
fix: reflow filename fields for large text
Robert-Stackflow Aug 29, 2026
6a40f24
fix: make theme controls large-text accessible
Robert-Stackflow Aug 29, 2026
d237a1b
fix: unify mobile settings scaffold
Robert-Stackflow Aug 29, 2026
aea24d5
fix: make font cards accessible
Robert-Stackflow Aug 29, 2026
b4350b3
fix: unify dropdown option interactions
Robert-Stackflow Aug 29, 2026
0333499
fix: unify selection card interactions
Robert-Stackflow Sep 15, 2026
60edb30
fix: restore primary app bars and compact navigation chrome
Robert-Stackflow Sep 15, 2026
e04ccf6
fix: restore mobile notification entry in content center
Robert-Stackflow Sep 15, 2026
7ed0102
fix: restore original mine app bar actions
Robert-Stackflow Sep 15, 2026
7d29e0a
fix: keep mine actions available while profile loads
Robert-Stackflow Sep 15, 2026
7f1eb14
fix: constrain profile text and verify loading failures
Robert-Stackflow Sep 15, 2026
ce599b9
fix: reflow mine statistics for narrow large-text layouts
Robert-Stackflow Sep 15, 2026
de651b5
fix: wrap large statistics within available width
Robert-Stackflow Sep 15, 2026
56ff3f8
fix: constrain statistics across profile layout matrix
Robert-Stackflow Sep 15, 2026
6ab2c73
fix: ignore stale search suggestions
Robert-Stackflow Sep 15, 2026
af197c1
fix: guard search landing request lifecycle
Robert-Stackflow Sep 15, 2026
83973b2
fix: reflow search tag participation counts
Robert-Stackflow Sep 15, 2026
a3a3656
fix: wrap ranked tag states and actions
Robert-Stackflow Sep 15, 2026
db558f5
fix: keep user search statistics readable
Robert-Stackflow Sep 15, 2026
5cf5bcc
fix: size collection search rows to content
Robert-Stackflow Sep 15, 2026
ba26ed5
fix: keep ranked tag actions compact on normal screens
Robert-Stackflow Sep 15, 2026
d8da17e
fix: connect suggestion scrolling to navigation visibility
Robert-Stackflow Sep 15, 2026
7d48dc6
test: verify search scroll state across query and keyboard changes
Robert-Stackflow Sep 15, 2026
817ecd4
fix: size search rankings for all entries and text scales
Robert-Stackflow Sep 15, 2026
6d4f561
test: cover search themes and metadata contrast
Robert-Stackflow Sep 15, 2026
c02d95d
fix: invalidate suggestions when submitting search results
Robert-Stackflow Sep 15, 2026
3f8dceb
fix: refresh search result tab labels on locale changes
Robert-Stackflow Sep 15, 2026
914c9bf
fix: update dynamic navigation labels with locale
Robert-Stackflow Sep 15, 2026
ddfdd02
fix: relocalize notification tabs without resetting selection
Robert-Stackflow Sep 15, 2026
340f59e
test: preserve my page app bar actions without title
Robert-Stackflow Sep 15, 2026
5988951
fix: release notification loading state across request failures
Robert-Stackflow Sep 15, 2026
4adbfad
fix: prioritize notification refresh over stale pagination
Robert-Stackflow Sep 15, 2026
c2fc0dc
fix: improve compact notification avatar touch target
Robert-Stackflow Sep 15, 2026
878ccd8
fix: distinguish notification loading errors from empty results
Robert-Stackflow Sep 15, 2026
4e80285
test: verify notification row preservation across failed requests
Robert-Stackflow Sep 15, 2026
3b9d40a
fix: keep download empty states visible on short screens
Robert-Stackflow Sep 15, 2026
45b5551
fix: render empty batch downloads in the outer scroll view
Robert-Stackflow Sep 15, 2026
103f938
fix: preserve batch selection when loading all posts fails
Robert-Stackflow Sep 15, 2026
cbc42c6
fix: recover batch downloads from preparation failures
Robert-Stackflow Sep 15, 2026
0235dc3
fix: let management empty states grow with text size
Robert-Stackflow Sep 15, 2026
2717960
fix: guard management list requests after page disposal
Robert-Stackflow Sep 15, 2026
0e7d510
fix: preserve shielded authors when refresh data is malformed
Robert-Stackflow Sep 15, 2026
acc3586
fix: prevent management action text from clipping
Robert-Stackflow Sep 15, 2026
ec67c15
fix: fit batch download action labels at large text sizes
Robert-Stackflow Sep 15, 2026
a740647
test: verify download group controls across sizes and locales
Robert-Stackflow Sep 15, 2026
741ede4
fix: stop indeterminate progress for inactive downloads
Robert-Stackflow Sep 15, 2026
1791c85
style: add block to download progress condition
Robert-Stackflow Sep 15, 2026
10b08be
fix: align completed download percentages with progress bars
Robert-Stackflow Sep 15, 2026
1d3b988
fix: keep history refresh stable across loading and errors
Robert-Stackflow Sep 15, 2026
57f2197
fix: retain history posts when category metadata is incomplete
Robert-Stackflow Sep 15, 2026
89caef1
fix: preserve history categories when removing invalid posts
Robert-Stackflow Sep 15, 2026
5197b85
fix: reset history categories when replacing records
Robert-Stackflow Sep 15, 2026
2c3cc03
test: cover history states across sizes and locales
Robert-Stackflow Sep 15, 2026
36bf00f
perf: lazily build grouped history grid cells
Robert-Stackflow Sep 15, 2026
b034fc4
fix: fit invalid post states in compact archive cells
Robert-Stackflow Sep 15, 2026
59a0f69
fix: discard history responses after account changes
Robert-Stackflow Sep 15, 2026
5bbe590
fix: stabilize favorite folder loading and pagination
Robert-Stackflow Sep 27, 2026
d9f1f62
fix: keep favorite folders consistent during mutations
Robert-Stackflow Sep 27, 2026
b376967
fix: stabilize favorite folder detail refresh and grouping
Robert-Stackflow Sep 27, 2026
3d3f699
fix: reject incomplete favorite folder batch loads
Robert-Stackflow Sep 27, 2026
0a3ec92
fix: keep recommended posts visible across archive groups
Robert-Stackflow Sep 27, 2026
65eb18b
fix: keep recommendation loading stable across failures
Robert-Stackflow Sep 27, 2026
a90d6e3
fix: keep mine app bar actions across layouts
Robert-Stackflow Sep 27, 2026
121e356
fix: reject incomplete recommendation batch loads
Robert-Stackflow Sep 27, 2026
6f87d9b
fix: preserve recommendation groups after invalid cleanup
Robert-Stackflow Sep 27, 2026
78b945c
fix: reject incomplete liked-post batch loads
Robert-Stackflow Sep 27, 2026
968ab0c
fix: scope liked-post cleanup to current account
Robert-Stackflow Sep 27, 2026
e58bf89
fix: restore animated mine theme action and balance appbar icons
Robert-Stackflow Sep 27, 2026
4511b35
fix: make grain lists resilient and responsive
Robert-Stackflow Sep 27, 2026
8acbed5
fix: preserve post archives across loading and pagination
Robert-Stackflow Sep 27, 2026
85fd917
test: align navigation and relation guards with current controls
Robert-Stackflow Sep 27, 2026
dd9d955
docs: record phone QA for grain and post archives
Robert-Stackflow Sep 27, 2026
ff92a4a
fix: strengthen mine app bar icons and theme animation
Robert-Stackflow Sep 27, 2026
9bb2797
fix: stabilize relation lists and restore compact user rows
Robert-Stackflow Sep 27, 2026
3c62ab9
Refine profile cover and relation list layout
Robert-Stackflow Sep 27, 2026
661688e
fix: polish profile more actions sheet layout
Robert-Stackflow Sep 27, 2026
217ace5
style: align supporter rows with relationship lists
Robert-Stackflow Sep 27, 2026
1c31747
fix: allow nested profile pull to reach refresh threshold
Robert-Stackflow Sep 27, 2026
a64dde2
refine post actions, comment sheet, refresh and navigation animations
Robert-Stackflow Sep 27, 2026
598c56a
balance post download progress and app bar spacing
Robert-Stackflow Sep 27, 2026
58bdea9
refine content panels and adaptive tag grids
Robert-Stackflow Sep 27, 2026
49e71ca
refactor: polish UI interactions and navigation animations
Robert-Stackflow Sep 28, 2026
029526d
fix(windows): bundle sqlite and update release CI
Robert-Stackflow Sep 28, 2026
4b8cde2
feat: refine navigation and UI interactions for 3.0.0
Robert-Stackflow Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 15 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ jobs:
artifact_name: release-Android
artifact_path: build/app/outputs/flutter-apk/*.apk
- target: Windows
os: windows-latest
# Keep the VS 2022 toolchain for Windows plugins that still use
# <experimental/coroutine>.
os: windows-2022
artifact_name: release-Windows
artifact_path: |
build/windows/outputs/*.zip
Expand All @@ -34,7 +36,8 @@ jobs:
date: ${{ steps.get_version.outputs.date}}
runs-on: ${{ matrix.os }}
env:
FLUTTER_VERSION: 3.27.3
# Satisfies pubspec.lock without the newer IconData final-class change.
FLUTTER_VERSION: 3.41.5
steps:
# Checkout branch
- name: Checkout
Expand Down Expand Up @@ -72,6 +75,12 @@ jobs:
flutter pub get
dart run intl_utils:generate

- name: Generate awesome_chewie localizations
working-directory: third-party/chewie
run: |
flutter pub get
flutter gen-l10n

# Get app version
- name: Get app version
id: get_version
Expand Down Expand Up @@ -102,6 +111,10 @@ jobs:
$dllDir = "tools\windows_dll"

Copy-Item -Filter *.dll -Path $dllDir\* -Destination $SrcDir -Force
if (-not (Test-Path "$SrcDir\sqlite3.dll")) {
Write-Error "sqlite3.dll is missing from $SrcDir - the packaged app would start but never render."
exit 1
}
New-Item -Path $DestDir -ItemType Directory
Copy-Item $SrcDir\* -Recurse $DestDir

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ app.*.map.json

**/Deprecated/
**/generated/
**/build/

loftify.db

Expand Down
256 changes: 256 additions & 0 deletions Final_Visual_Redesign.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
# Loftify 最终视觉重构总纲

> 状态:锁定为整个项目的最后一项重点工作。
> 启动条件:功能、交互、内容、稳定性与可延期边界全部确认后方可开始。
> 关联任务:`Todo.md` 中的 `REDESIGN-00`。
> 适用范围:Android、Windows 及项目支持的其他响应式尺寸;浅色、深色与自定义主题。

## 1. 项目定位与重构目标

Loftify 是面向 LOFTER 内容生态与用户习惯的独立第三方客户端,核心场景包括作品浏览、图文阅读、标签探索、内容收藏、作者关注与社区互动。最终设计需要同时满足:

- 熟悉但不照搬:保留 LOFTER 用户对作品、标签、作者与互动关系的认知连续性,但不复制官方客户端,也不制造官方身份错觉。
- 内容优先:摄影、绘画、同人、文学、手作等作品是视觉主角,界面框架降低存在感,不与内容竞争注意力。
- 文艺但克制:体现创作社区的情绪价值与温度,避免矫饰、廉价渐变、高饱和大色块和无意义装饰。
- 精致且可持续:建立可复用、可测量、可扩展的设计系统,不再逐页凭感觉调整颜色、圆角和间距。
- 完整保留业务:不得遗漏功能、删减内容、改变业务含义或用装饰性入口代替真实能力。

最终结果应是一款成熟、现代、具有自身辨识度的第三方客户端:用户首先感受到作品与内容,其次才感受到界面的存在。

## 2. 严格启动门槛

以下条件未全部满足时,不得开始页面视觉改造:

- [ ] `Todo.md` 中所有不依赖官方接口的功能与体验任务已完成并验收。
- [ ] 依赖官方接口的划线评论、评论扩展等任务已明确实现条件,或由用户确认登记延期。
- [ ] P0、P1 无未关闭回归;主要页面不存在持续加载、崩溃、跳位、内容裁切或明显手势冲突。
- [ ] 首页、详情、灯箱、标签、搜索、个人主页、收藏、历史与设置的信息和入口清单已冻结。
- [ ] 关键流程已有自动化测试,重构前主要页面已有浅色 / 深色、手机 / 平板 / 桌面基线截图。
- [ ] Lucide 图标迁移与首页毛玻璃主导航已作为独立功能完成,不在最终重构中边设计边补功能。
- [ ] 当前工作区已提交且可构建,可随时对照或回退到重构前基线。

## 3. 不可违反的边界

- 不冒充 LOFTER 官方客户端,不复制官方商标性布局、专属视觉资产或容易造成官方误认的表达。
- 不删除、隐藏、合并或更改任何已有功能的业务含义;视觉分组变化必须保留可发现性。
- 不以“更简洁”为由移除信息,不以“更现代”为由增加没有真实功能的入口。
- 不把最终重构缩减为换主题色、调圆角、换字体、统一卡片或替换图标。
- 不在各页面直接硬编码一套相似但不同的样式;先建立语义 Token 和公共组件,再迁移页面。
- 不混用多套图标、阴影、圆角、间距或动效语言;受控例外必须登记原因、范围和退出条件。
- 不为了动效展示牺牲阅读、性能、可访问性或操作效率。

## 4. 重构前全局审计

开始设计前先产出审计文档和截图矩阵,至少覆盖:

### 4.1 字体与信息层级

- 字体家族、字号、字重、行高、字距和文字颜色的现有使用分布。
- 标题、正文、作者、元信息、标签、按钮、提示与错误文案之间的层级冲突。
- 中文、繁体中文和英文下的换行、截断、基线与可读性问题。
- 长文字正文宽度、段落间距和前景对比度是否适合持续阅读。

### 4.2 组件与布局

- 按钮、输入框、搜索框、标签、开关、卡片、菜单、导航、Tab、Panel、Dialog 与空状态的重复实现。
- 控件高度、点击区域、圆角、边框、内外间距、分割线和阴影的不一致项。
- 页面栅格、边距、内容最大宽度、图片比例、卡片节奏与视觉重心问题。
- 手机、横屏、平板与桌面之间突然跳变、内容挤压和操作错位问题。

### 4.3 图标与动效

- Lucide 之外的静态界面图标、旧位图和重复 SVG 清单。
- 图标视觉尺寸、线宽感、颜色、对齐和选中态表达差异。
- Lottie、页面过渡、加载、反馈和手势动画的节奏、时长与曲线差异。
- 无意义、冗长、遮挡阅读或导致持续重绘的动画。

### 4.4 内容呈现

- 作品卡片的封面比例、标题行数、作者信息、标签、发布时间、热度和互动按钮是否争夺注意力。
- 图片、插画、摄影、多图、长文、短文和视频在不同密度页面中的展示质量。
- 标签发现、筛选、选中、管理和失效状态是否清晰统一。
- 评论与社区互动的信息层级、阅读顺序和操作入口是否自然。

## 5. 设计系统交付物

设计系统必须先于全页面迁移完成,并以语义命名而非页面命名组织。

### 5.1 色彩体系

建立浅色、深色和自定义主题的完整语义色表:

- 页面底色、内容底色、悬浮层、遮罩、输入层、选中层和禁用层。
- 主文字、次文字、弱化文字、反色文字、链接与占位文字。
- 品牌强调、互动选中、成功、警告、错误和信息状态。
- 边框、分割线、焦点环、阴影与毛玻璃染色。

基础色应低噪声、中性、耐看并带适度社区温度;强调色只服务于关键操作和状态。必须验证正文、弱文字、按钮和图标的对比度,禁止依赖颜色作为唯一状态信号。

### 5.2 字体层级

制定显示标题、页面标题、区块标题、卡片标题、正文、长文正文、辅助信息、标签和按钮文字的:

- 字体家族与回退顺序。
- 字号、字重、行高、字距和最大行数。
- 中文 / 英文 / 数字混排规则。
- 响应式缩放边界与系统大字体策略。

长文需单独定义舒适正文宽度、段落间距、引用、链接、图片说明和列表样式,不能直接复用普通卡片正文。

### 5.3 间距、栅格与响应式

- 建立有限且明确的间距阶梯,覆盖图标间距、控件内边距、卡片间距、页面边距和区块节奏。
- 定义手机、宽手机、平板、横屏和桌面的断点、列数、沟槽、最大内容宽度和侧栏规则。
- 建立内容密度等级,让首页流、搜索列表、个人主页和设置页可以共享规则但保持合理密度差异。
- 所有布局必须支持安全区、系统手势区、键盘、长文本和动态字体。

### 5.4 圆角、边框与阴影

- 建立小控件、中型容器、卡片、Panel、Dialog 和全屏浮层的圆角阶梯。
- 区分结构边界、交互焦点和状态警告,避免所有区域都依赖描边。
- 阴影只表达真实层级,使用低透明、柔和扩散和有限层数;深色模式不能简单复用黑色阴影。
- 毛玻璃、透明层和纯色层必须有确定的层级及性能降级方案。

### 5.5 图标规范

- 默认静态界面图标统一使用 Lucide。
- 统一常用尺寸、视觉修正、颜色、点击区域、文字基线和状态透明度。
- 面性状态优先通过主题色、底板、容器形态、圆点或强调层表达,不重新混入 Material / Cupertino 面性图标。
- Lottie 动画保留;其静态占位、失败与无障碍替代仍遵循 Lucide 规范。
- 品牌标识、用户内容和受控配对 SVG 必须登记为例外,不得借例外扩散第二套图标语言。

### 5.6 动效规范

- 定义快速反馈、状态切换、Panel、页面过渡、内容进入和手势跟随的时长与曲线。
- 动效只解释空间关系、操作结果或状态变化;禁止循环装饰和冗长等待。
- 支持系统减少动画偏好;60/90/120Hz 下时长与速度一致。
- 模糊、阴影和大图变换必须验证重绘范围和帧时间。

## 6. 公共组件及完整状态

以下组件必须统一,并覆盖默认、悬停、按下、聚焦、选中、禁用、加载、成功、警告、错误和无内容等适用状态:

- 主按钮、次按钮、文字按钮、图标按钮、危险操作和组合操作。
- 输入框、搜索框、验证码、下拉菜单、行内选择与筛选器。
- 标签、筛选标签、状态徽标、角标和可管理标签。
- 开关、单选、复选、滑块、进度条和刷新控件。
- 内容卡片、作者卡片、列表项、设置项和管理项。
- AppBar、主导航、Tab、侧栏、悬浮操作条和面包屑。
- BottomSheet、Panel、Dialog、ContextMenu、Tooltip 与 Toast。
- 图片查看器、视频控件、评论区、加载、空状态、错误和重试。

每个公共组件需要记录:用途、禁止用途、尺寸、Token、状态、交互、语义标签、键盘行为、响应式变化和测试用例。

## 7. 内容类型设计原则

### 7.1 图片、插画与摄影

- 封面比例稳定,裁切策略明确,禁止压缩变形。
- 多图顺序、页码、预览与沉浸式灯箱关系清晰。
- 界面控件减少对画面的遮挡,必要操作可渐隐但必须可发现。

### 7.2 长短文字作品

- 长文优先保证阅读宽度、字号、行高、段落、引用与图片说明。
- 短文卡片只保留必要信息,避免标签、作者、数据和按钮同时高亮。
- 正文与互动区建立清晰结束边界,不让悬浮操作遮挡内容。

### 7.3 标签与兴趣发现

- 标签展示、点击、筛选、选中、屏蔽与管理使用同一语义体系。
- 热门、普通、已选、禁用和风险标签不能只靠颜色区分。
- 标签详情、搜索和首页入口保持认知连续性。

### 7.4 高频互动

点赞、推荐、收藏、评论、关注、分享和下载必须易识别,但只允许关键当前状态使用强调色;数字、状态变化、触觉与动画反馈保持一致,不制造彩色按钮墙。

## 8. 页面级迁移范围

按“基础 Token → 公共组件 → 代表页面 → 全量页面”的顺序迁移,不逐页另起炉灶。

1. 首页信息流与主导航:建立内容密度、卡片节奏、毛玻璃层级和选中状态基准。
2. 作品详情与长文阅读:验证内容优先、正文可读性、互动区和切篇体验。
3. 图片灯箱与视频:验证沉浸、手势、控件渐隐和横屏布局。
4. 标签页与搜索结果:验证筛选、Tab、列表密度和发现路径。
5. 作者主页:验证资料头、内容 Tab、关注与更多操作层级。
6. 收藏、喜欢、推荐、合集、粮单与历史:验证批量操作、状态和分组一致性。
7. 评论区与社区互动:验证作者、回复、时间、操作与多级内容的阅读顺序。
8. 设置、管理、登录、验证码和异常页:验证表单、列表项、状态反馈及品牌独立性。

每迁移一组页面,都必须与未迁移页面检查视觉断层;不得留下长期存在的半新半旧状态。

## 9. 实施阶段

### 阶段 A:审计与方向确认

- 产出现状问题清单、组件清单、页面截图矩阵和信息架构图。
- 提出至少两套完整视觉方向,比较内容沉浸、辨识度、实现成本和可访问性。
- 选定方向后冻结原则,不在编码过程中反复凭感觉改风格。

### 阶段 B:设计 Token 与组件样板

- 实现颜色、字体、间距、栅格、圆角、边框、阴影、图标和动效 Token。
- 用真实中文、英文、长标题、大图、长文和异常数据构建组件样板。
- 完成深浅色、响应式、键盘和无障碍状态验证。

### 阶段 C:代表页面试点

- 选择首页、作品详情、标签详情、作者主页和设置页作为密度不同的试点。
- 完整实现而非只做静态稿;保留真实数据、滚动、加载、失败、空态和操作反馈。
- 对照产品定位与设计系统至少进行两轮自检和调整。

### 阶段 D:全量迁移

- 按页面族批量迁移,删除旧样式和重复组件。
- 每完成一个页面族立即执行自动化、截图、双端运行与 Git 提交。
- 记录受控例外和未决项,禁止用临时硬编码赶进度。

### 阶段 E:多轮质量收口

- 第一轮:设计一致性、信息层级、内容沉浸和明显视觉断层。
- 第二轮:可读性、可访问性、状态反馈和功能可发现性。
- 第三轮:响应式、动态字体、中英文、深浅色和性能。
- 第四轮:逐像素细节,包括基线、图标对齐、点击区域、裁切、留白、列表节奏和视觉重心。
- 最后一轮:对照重构前功能与入口清单,证明无信息、功能、数据和交互遗漏。

## 10. 验收矩阵

### 10.1 必测页面

- 首页各 Tab、搜索与搜索结果、动态、我的。
- 图片、文章、视频、合集、粮单和标签详情。
- 作者主页、粉丝 / 关注、收藏、喜欢、推荐、历史。
- 评论 Panel、所有底部 Panel、更多菜单、分享、下载与管理页。
- 登录、验证码、锁屏、设置、主题、语言、字体与错误页。

### 10.2 必测状态

- 首次加载、刷新、分页、空数据、部分失败、整页失败、重试。
- 默认、悬停、按下、聚焦、选中、禁用、成功、警告和错误。
- 浅色、深色、自定义主题;简体、繁体、英文;系统字体与自定义字体。
- 小屏手机、宽手机、平板竖屏 / 横屏、桌面最小窗口与大窗口。
- 键盘、安全区、系统返回手势、减少动画、降低透明度和高对比度。
- 60/90/120Hz、长列表、大图、多图、长文和高密度评论。

### 10.3 完成证据

- 设计 Token 清单和组件目录。
- 重构前后主要页面截图矩阵。
- 自动化测试、静态检查和 Debug 构建结果。
- Android 模拟器、Android 真机与 Windows 的 Hot Reload / Hot Restart 记录。
- 主要流程功能对照清单与无遗漏结论。
- 仍保留的受控例外清单及理由。

## 11. 最终完成标准

只有同时满足以下条件,`REDESIGN-00` 才能勾选完成:

- 所有主要页面共享明确统一的视觉语言,不存在明显临时样式、旧组件残留或页面间断层。
- 内容层级、阅读体验、图片展示、标签发现与高频互动符合 LOFTER 内容生态,但保持第三方产品独立身份。
- 颜色、字体、间距、栅格、圆角、边框、阴影、图标和动效均由可持续设计系统驱动。
- 所有核心组件及适用状态完整,深浅色、语言、响应式和可访问性验证通过。
- 重构前已有信息、功能、数据和交互逻辑完整保留,测试与人工对照均未发现遗漏。
- 多轮自检中不再存在明显拥挤、零碎、突兀、廉价、抢夺内容注意力或与整体风格不一致的部分。

在达到这些标准之前,不得以“初版已完成”结束任务。
Loading
Loading