StreamFab 7 桌面客户端改版

Desktop Client · 7.0 · 2025.11 – 2026.01

服务在增加,
一次下载的路径不能跟着变长

StreamFab 卖的是 67 个可以单独购买的下载模块,分成 5 组,覆盖两个平台与三种语言。 7.0 要让服务继续增加时,用户走完一次下载的步骤仍然不变。

我的角色
UI 设计 / 交互设计 / 客户端规范
我交付什么
全局规范 · 组件与状态 · 九个页面与弹窗 · 安装器切图 · 上线验收
协作规模
1 产品经理 · 2 前端 · 我负责客户端设计
版本与平台
7.0.0.0(2025-12-03)· Windows 与 macOS
01产品规模

这个产品有多大

StreamFab 是一组下载器的集合。每个流媒体服务对应一个可以单独购买的模块,模块按五个组别上架,价格和授权各自独立。

这件事决定了界面的形状。用户买了哪几个模块,首页就该只出现哪几个。没买的要能看见、能试用,同时不挡路。

67
可单独购买的下载模块
Modules
5
服务分组
Groups
1000+
通用站点支持
Websites
International
国际 · 27
YouTubeYouTube to MP3AmazonNetflixDisney PlusDRM M3U8DRM MPDHuluDAZNApple TVPlexHBO MaxParamount PlusCrunchyrollYouTube MoviesCanal PlusFoxtelSkyShowtimeESPN PlusDiscovery PlusStanTwitchTikTokShahidUdemyCourseraReelShort
North America
北美 · 8
FandangoPeacockTubiVikiPluto TVSTARZRoku ChannelCW
Asia
亚洲 · 12
U-NEXTTVerFAMILY CLUBNHKDMMAbemaTVdanimeFODWOWOWTELASALeminoRakuten TV
Europe
欧洲 · 12
JoynWaipuRTL PlusWOWNOWM6 PlusViXITVXChannel 4ZDFARTEARD
Adult
成人 · 8
OnlyFansFANZAmyfansPornhubCaribbeancomMGStageSokmilFansly
国际组有 27 个模块,亚洲与欧洲各自收纳区域服务,成人内容单独成组并且默认不出现。横条长度按模块数量画。
02路径拆解

一次下载的四段路径

先把路径摊开。找到服务,定位到要下的那一集,确认参数,去 Downloads 看进度。四段,缺一段都走不通。

改版前这四段各有一套使用逻辑,服务入口、浏览器和任务列表之间缺少连续关系。7.0 让四段共用同一套结构,用户走到第二段就能预判第三段长什么样。

01

Home 的服务入口

用户从自选服务或完整矩阵里点进一个服务。这一步只做一件事,把人送到正确的站点。

自选服务与常用站点共用同一种卡片,六列网格,图标加名称。
Home · 内容区裁切
自选服务与常用站点共用同一种卡片,六列网格,图标加名称。
02

内置浏览器的标签与地址栏

点进服务后是内置浏览器。标签页、地址栏、书签栏都在,用户按平时上网的方式找到要下的那一集。

标签栏、地址栏与书签栏三层叠在窗体顶部,和系统浏览器的顺序一致。
内置浏览器 · 顶部区域裁切
标签栏、地址栏与书签栏三层叠在窗体顶部,和系统浏览器的顺序一致。
03

分析完成的参数区

分析结束后弹出确认层。清晰度、编码、音轨、字幕在这里定,只管这一次。

参数从 Mode 开始沿单列向下排,编码、清晰度、音轨与字幕完整呈现。
确认弹窗 · 参数区
参数从 Mode 开始沿单列向下排,编码、清晰度、音轨与字幕完整呈现。
04

Downloads 的任务行

确认之后任务落到 Downloads。父行汇总计数与速度,子行展开单集。

剧集父行给出 Total、Finished、Failed 三个计数和当前速度。
Downloads · 剧集父行
剧集父行给出 Total、Finished、Failed 三个计数和当前速度。
连续录屏 · 8.1 s · 已裁到窗体
同一条路径的连续录屏,八秒钟走完。静音循环,划出视口自动暂停,也可以手动停。
03服务发现

决策一 · 服务发现

服务在增加,入口不能跟着增加。

展开态 240 px 宽,七个一级入口都带文字,底部是折叠开关和账号区。
侧栏 · 展开
展开态 240 px 宽,七个一级入口都带文字,底部是折叠开关和账号区。
收起态压到 64 px 只留图标。两张图裁的是同一块区域,让出来的宽度当场被内容区接走。
侧栏 · 收起 · 同一裁切框
收起态压到 64 px 只留图标。两张图裁的是同一块区域,让出来的宽度当场被内容区接走。
这 240 px 怎么花是个真问题。展开时它是导航,收起后它变成内容区的一部分。窄屏上用户更需要多出来的那一列,所以收起态保留了一条可点的图标轨道。
矩阵分成 Activated 与 Free to Try 两段,过期服务直接标出 Expired。
VIP Services · 内容区裁切
矩阵分成 Activated 与 Free to Try 两段,过期服务直接标出 Expired。
首发面板把 12 项上限放在顶部,当前计数在左,Cancel 与 Save 在右。
Choose my services · 7.0.0.0
首发面板把 12 项上限放在顶部,当前计数在左,Cancel 与 Save 在右。

首页的 My Services 放用户自己挑的常用服务,VIP Services 才是完整矩阵。两种需求的频率差得远,天天用的那几个和偶尔翻一次的几十个,挤在一起谁都不好找。

挑选面板做了上限,首发给到 12 个,界面上有明确提示。两行六列让首页保持完整可见,再多就需要滚动。

九天后的 7.0.0.1 把上限改成了 24。首页由两行扩到四行,取舍也跟着改变。首发优先保证一眼看完,后续版本先容纳用户已经选中的服务,再接受纵向滚动。这次修改说明 12 只是首发假设,24 才是上线后的容量选择。

04下载确认

决策二 · 下载确认

参数不能砍。清晰度、编码、音轨、字幕、季和集,每一项都有人依赖。能做的是把它们分成两类。

设一次就行的
格式、清晰度、预选音轨与字幕语言、下载间隔和命名模板沿单列向下排列。
Common Settings · Preferred Settings
格式、清晰度、预选音轨与字幕语言、下载间隔和命名模板沿单列向下排列。
每次都要选的
左边剧集树勾选季与集,右边参数区定这一次的规格,两栏对齐同一条基线。
确认弹窗 · 弹窗本体
左边剧集树勾选季与集,右边参数区定这一次的规格,两栏对齐同一条基线。

Preferred Settings 收纳长期偏好,当次确认层只保留这一次会改变的选择。用户不用每次重选格式和语言,也不会失去单集参数的控制。

分析失败时,弹窗先写清原因,再给 Try Again。任务进入队列后,ERROR 行保留机器错误码,同时带上一句能读懂的失败原因。

失败时 Try Again 占主位、Cancel 退到次位,失败原因用一句话写在按钮上方。中间那段空白是留给结果列表的高度,失败时它就是空的。
分析失败 · 弹窗本体
失败时 Try Again 占主位、Cancel 退到次位,失败原因用一句话写在按钮上方。中间那段空白是留给结果列表的高度,失败时它就是空的。
05任务生命周期

决策三 · 任务生命周期

一个任务从创建到完成,不能跨页面追。

Downloads 是唯一的工作区。五个状态共用一行骨架,缩略图、标题、规格标签、数据区的位置固定,变的是进度条和数据区里那几个字段。扫一列就知道整个队列的情况。

五个状态共用一行骨架。任务会连续经过等待、运行、暂停与结束,固定行高和字段位置以后,队列变化时不需要重新寻找速度、体积与剩余时间。

失败状态留在原任务行里,机器错误码和可读原因共同占用进度条的位置。用户仍能在队列里找到这个任务,也能从同一行判断下一步。

Downloads · 工作区整窗
Downloading 与 Downloaded 两个标签页共用一套行结构,批量操作固定在顶部一排。
Waiting排队中,只显示标题与状态词
任务行 Waiting 状态
Running实时指示速度 · 进度 · 体积 · 剩余时间
任务行 Running 状态
Paused进度条转灰,时间位写 Paused
任务行 Paused 状态
Error错误码与可读原因写在进度条的位置
任务行 Error 状态
Done规格标签末尾补上最终体积
任务行 Done 状态
失败行同时保留机器错误码和可读原因。分组行沿用同一套骨架,父行汇总子行计数。
06设计系统

设计系统

颜色走三级映射。色板定原始值,全局 Token 给它语义,组件 Token 再引用全局 Token。

改一次品牌色,按钮、标签、链接一起跟着走,不需要逐个组件改。下面三列就是规范里的映射关系。

色板
颜色 · 色阶
Color-6Color-5Color-3fontgray-1fontgray-2
全局 Token
主题/容器/文字 · 色彩 · 交互层级 @色板
brand-color: @Color-6brand-color-hover: @Color-5brand-color-disabled: @Color-3text-color-primary: @font-gray-1text-color-secondary: @font-gray-2
组件 Token
组件 · 背景文字描边 · 交互层级 @全局语义Token
button-bg: @brand-colorbutton-bg-hover: @brand-color-hoverbutton-bg-disabled: @brand-color-disabledtabs-text-hover: @text-color-secondarytabs-text: @text-color-primary
三级引用先以单套色板为例。下面的主题表再按皮肤分支,禁用品牌色在 Light 使用 Color4,在 Dark 使用 Color7。
主题色
Token描述LightDark
@brand-color常规Color6Color6
@brand-color-hover悬浮Color5Color5
@brand-color-disabled禁用Color4Color7
文字颜色与功能色
Token描述LightDark
@text-color-primary主要文字色彩Font Gy1Font Wh1
@text-color-secondary次要文字色彩Font Gy2Font Wh2
@text-color-placeholder占位符文字色彩Font Gy3Font Wh3
@text-color-disabled禁用文字色彩Font Gy4Font Wh4
@text-color-anti反色文字WhiteNone
@text-color-link链接文字LinkLink
@error-color错误状态Error6Error6
@warning-color警告状态Warning6Warning6
@success-color成功状态Success6Success6
文字色沿用四级。浅色皮肤是 Gy1 到 Gy4,深色皮肤是 Wh1 到 Wh4,同一个语义名在两套皮肤下各自取值。这一页的正文用的就是这套 Wh1 到 Wh4。

控件密度

高度定了 24 和 32 两档。小的用在表格和列表里,大的用在主操作上。四个状态各自有取值,禁用态使用单独色值。

Default
Hover
Loading
Disabled
24 px
32 px
这一组按产品上线取值展示。白字压在 Color5 / Color4 上,实测对比度只有 1.9 比 1 和 1.6 比 1,低于 WCAG AA 的 4.5 比 1。按钮态当时只按品牌色阶推,没有用对比度做验收。

三语字体

规范分别指定 Arial、阿里巴巴普惠体与 Noto Sans JP。下面三行按对应字体栈各排一句,完整字形以规范板为准。

EnglishArial
Analyze the page, then pick a resolution.
简体中文阿里巴巴普惠体
先分析页面,再挑清晰度。
日本語Noto Sans JP
ページを解析してから画質を選ぶ。

两套皮肤

Home 的 Light 主题
Home 的 Dark 主题
DarkLight
Home · 侧导航展开 · 同一界面的两套皮肤 · 整窗
两套皮肤共用同一份布局与同一组 Token 名,只有取值不同。拖动分割线可以逐列比对。

完整规范板可以单独看

07Happy Path 之外

Happy Path 之外

剩下的时间都花在这些地方。

弹窗本体是 480 px 到 740 px 宽,放进正文列比整窗图更接近原始像素,最窄的那个放大到 1.5 倍还清楚。

空状态

空状态要说清下一步怎么做。Downloads 没有任务的时候,页面顶部的批量操作全部保留可见,让用户知道拿到任务以后能做什么。

空态保留顶部操作栏与 Paste URL 入口。
Downloads · 空状态
空态保留顶部操作栏与 Paste URL 入口。

批量删除

删除要问一次,并且说清会清掉哪几类任务,所以确认层先列清单再给按钮。这一版把 Delete All 放在左、Cancel 放在右,两个按钮之间只有常规间距,回头看这里该再拉开一些。

确认层先列出会被清掉的四类任务,再给按钮。Delete All 在左,Cancel 在右。
删除确认 · 弹窗本体
确认层先列出会被清掉的四类任务,再给按钮。Delete All 在左,Cancel 在右。

首次启动

首次启动先处理授权与试用分流。页面解释产品与付费权益,再给 Buy Now、Authorize 和 Start Free Trial 三个出口。信息密度偏高,这是当时版本保留商业选择的代价。

首启页同时承担产品说明、付费权益与三种授权出口。
Welcome · 弹窗本体
首启页同时承担产品说明、付费权益与三种授权出口。

试用与授权

试用到期和授权状态要说明现在还能用什么。授权流程分三步,每一步只问一件事。

第二步在等浏览器回调,文案说明它在等什么。登录入口留在原位不收走,浏览器那边失败了还能回到这里重来。
授权流程 · 弹窗本体
第二步在等浏览器回调,文案说明它在等什么。登录入口留在原位不收走,浏览器那边失败了还能回到这里重来。

更新流程

更新层先给版本对照与 What's New,继续向下才是 beta 开关和三个出口。跳过当前版本以后,不再重复提示同一个版本号。

版本与改动、beta 开关、跳过、更新和取消在完整界面中依次呈现。
Update · 功能区裁切
版本与改动、beta 开关、跳过、更新和取消在完整界面中依次呈现。

成人服务的入口限制

这一类只做了一个设计决定,把入口关在开关后面。设置里不打开,首页和侧栏都不出现这一类,搜索也不返回。这是入口层面的处理。

08交付

交付

三个版本,六周。

7.0.0.0
2025-12-03
首发。Home、VIP Services、Downloads、Scheduled 与全部弹窗上线。
7.0.0.1
2025-12-12
My Services 上限从 12 调到 24,首页从两行扩到四行,先容纳已选服务。
7.0.0.2
2025-12-18
状态与文案修订。

安装与卸载

安装器不走客户端那套渲染,界面另算一套规格。63 个切图按 Windows 安装器要的格式出,按钮九态、单选复选、图标、背景各自成组。

安装 / 卸载切图 · 63 件
每格按切图自身尺寸摆放,没有放大。最小的 14×14,最大的是安装页背景图。

专题页

上线导流的专题页也在这次交付里,整页四个板块加页脚。主视觉沿用 7 的数字光效,第一板块用客户端真实界面讲这次改版,往下是近 60 个平台的支持板块和三张功能卡,最后收在试用引导。

专题页 · 首屏与第一板块
第一板块的配图直接用客户端真实界面,专题页和产品讲同一套话。点右下角看整页。

专题页断点

专题页跟客户端同期上线,四个断点各自排过版。主视觉裁切位、卡片列数、按钮位置每一档都重新定过。下面按断点宽度等比画出四档的版心与栏数。

1920 px 以上
1920 – 1440 px
1439 – 900 px
899 – 375 px
1920 px 以上主视觉铺满,文案与下载按钮左对齐。
1920 – 1440 px主视觉收窄,模块卡片保持三列。
1439 – 900 px主视觉换裁切位,卡片降到两列。
899 – 375 px主视觉移到文案下方,卡片单列。
1920 以上:背景切图定宽 1920,两侧用纯色补足。
1920 到 1440:背景等比缩放,版式不变。
1439 到 900:主视觉换裁切位。
899 到 375:移动端自适应,字号分档下调。
专题页 Banner · 2560 / 1440 / 900 / 375 · 按各自宽度等比摆放
四档 Banner 设计稿按各自宽度等比缩小摆在一起。超过 1920 的屏幕两侧用纯色补足;1920 往下背景等比缩放,标题与文案字号在 1440 和 900 两档分别下调。

客户端与专题页均已上线,可在 官网 核对模块清单、服务分组与系统要求。

09结尾

模块还会继续加。路径仍是四段,首页容量已经从 12 调到 24,任务行继续沿用同一套骨架。

Discover more

©2026

Designed & Built by

程传基

©2026

Designed & Built by

程传基

©2026

Designed & Built by

程传基