一系列体验改善 #3

Open
opened 2026-10-10 01:54:41 +00:00 by gjz010 · 2 comments
Owner
  1. “配对失败,请从邀请重新开始”——这个错误没有给我们任何信息,请你给出适当的错误提示方便我们排错和用户上报错误。
  2. 上面这个页面还有“用另一台设备扫码”和“此码将在[接近1h]后过期”;此外,在扫码成功的一瞬间,他也会提示“此码将在[接近1h]后过期”。请你改进UX体验,避免出现这种奇怪的中间状态。
  3. 一端“配对失败,请从邀请重新开始”后,另一端还是stuck——按我理解最好这一端想办法喊一声“这个session挂了”,喊不到就不到
  4. 扫码/被扫的默认项最好根据手机/pc环境猜一个,然后本地保存一下黏性偏好(上次用的什么这次还用什么)
  5. 传输文件的metadata应该先到着占一条消息的位置,而不是笼统地显示一个“发送中”。
  6. 应该同时支持并发发送多个文件。
  7. 二维码没就绪的时候应当有个placeholder。实际上从按下按钮到验证码到二维码就绪这一串UX都要优化,不要显得组件们跳来跳去。我怀疑摄像头也要有一个来避免这种问题,总之请你看着办。
  8. 图片可以用hash thumbnail之类的技术在metadata里加载一个thumbnail,加载出来之前占位。
  9. 我注意到现在我们没有“可靠的重启session”的链接。特别地,在firefox上点“快捷互传”会导致url切过去但是UI本身没变化。
  10. send这个brand不太好(尤其是添加为PWA的时候),建议把我们的App的brand直接叫gjz010/send好了
1. “配对失败,请从邀请重新开始”——这个错误没有给我们任何信息,请你给出适当的错误提示方便我们排错和用户上报错误。 2. 上面这个页面还有“用另一台设备扫码”和“此码将在[接近1h]后过期”;此外,在扫码成功的一瞬间,他也会提示“此码将在[接近1h]后过期”。请你改进UX体验,避免出现这种奇怪的中间状态。 3. 一端“配对失败,请从邀请重新开始”后,另一端还是stuck——按我理解最好这一端想办法喊一声“这个session挂了”,喊不到就不到 4. 扫码/被扫的默认项最好根据手机/pc环境猜一个,然后本地保存一下黏性偏好(上次用的什么这次还用什么) 5. 传输文件的metadata应该先到着占一条消息的位置,而不是笼统地显示一个“发送中”。 6. 应该同时支持并发发送多个文件。 7. 二维码没就绪的时候应当有个placeholder。实际上从按下按钮到验证码到二维码就绪这一串UX都要优化,不要显得组件们跳来跳去。我怀疑摄像头也要有一个来避免这种问题,总之请你看着办。 8. 图片可以用hash thumbnail之类的技术在metadata里加载一个thumbnail,加载出来之前占位。 9. 我注意到现在我们没有“可靠的重启session”的链接。特别地,在firefox上点“快捷互传”会导致url切过去但是UI本身没变化。 10. send这个brand不太好(尤其是添加为PWA的时候),建议把我们的App的brand直接叫gjz010/send好了
Author
Owner

image

  1. 问题暴露了,这种事情经常发生在手机第一次扫码。
  2. 这个UI有点幽默,甚至没有居中——我可能会相机是一个在屏幕中央的东西?作为补偿,你可以搞一个方形,中间放一个按钮,然后整个方形变成相机。二维码也可以如法炮制。image 反而是粘贴邀请链接可以往下放。
  3. 请你在issue里讲解你是怎么猜扫码/被扫的
![image](/attachments/c6076b62-2916-4306-963a-61cf0ddf05ab) 1. 问题暴露了,这种事情经常发生在手机第一次扫码。 2. 这个UI有点幽默,甚至没有居中——我可能会相机是一个在屏幕中央的东西?作为补偿,你可以搞一个方形,中间放一个按钮,然后整个方形变成相机。二维码也可以如法炮制。![image](/attachments/0a48ee06-8373-4f38-9191-3fc1303138ce) 反而是粘贴邀请链接可以往下放。 3. 请你在issue里讲解你是怎么猜扫码/被扫的

关于评论 #19 的第 3 项,目前“扫码/被扫”的默认规则如下:

  1. 优先读取本浏览器 localStorage 中的上次显式选择(send.shortcut.entryPreference,只接受 scan 或 get-scanned)。有合法记录时,无论设备类型,都沿用这个选择。
  2. 没有记录时,根据浏览器提供的设备信息做简单判断:User-Agent 含 Android、iPhone、iPad 或 iPod 时默认“扫码”;对于把自己报告为 Mac 的 iPadOS,若 User-Agent 含 Macintosh / Mac OS X 且 maxTouchPoints > 1,同样默认“扫码”。其余默认“被扫”。
  3. 只有用户主动切换入口时才保存偏好。生成二维码等内部状态变化不会覆盖上次选择。存储被禁用、读取失败或记录无效时,退回设备判断。

这是设备启发式判断,不会检测设备是否真的有摄像头,不申请摄像头权限,也不会自动启动摄像头或创建会话。偏好仅保存在当前浏览器,不跨设备同步。

第 1、2 项正在修复和验证,暂不关闭此 issue。

关于评论 #19 的第 3 项,目前“扫码/被扫”的默认规则如下: 1. 优先读取本浏览器 localStorage 中的上次显式选择(`send.shortcut.entryPreference`,只接受 `scan` 或 `get-scanned`)。有合法记录时,无论设备类型,都沿用这个选择。 2. 没有记录时,根据浏览器提供的设备信息做简单判断:User-Agent 含 Android、iPhone、iPad 或 iPod 时默认“扫码”;对于把自己报告为 Mac 的 iPadOS,若 User-Agent 含 Macintosh / Mac OS X 且 `maxTouchPoints > 1`,同样默认“扫码”。其余默认“被扫”。 3. 只有用户主动切换入口时才保存偏好。生成二维码等内部状态变化不会覆盖上次选择。存储被禁用、读取失败或记录无效时,退回设备判断。 这是设备启发式判断,不会检测设备是否真的有摄像头,不申请摄像头权限,也不会自动启动摄像头或创建会话。偏好仅保存在当前浏览器,不跨设备同步。 第 1、2 项正在修复和验证,暂不关闭此 issue。
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gjz010.dev/send#3
No description provided.