Skip to content

Refine notch hover timing and width scaling#208

Open
Lucker-QY wants to merge 5 commits into
wxtsky:mainfrom
Lucker-QY:codex/refine-hover-width-control
Open

Refine notch hover timing and width scaling#208
Lucker-QY wants to merge 5 commits into
wxtsky:mainfrom
Lucker-QY:codex/refine-hover-width-control

Conversation

@Lucker-QY

Copy link
Copy Markdown

Summary

  • Add a prehover phase for the notch hover interaction so quick mouse pass-through reverses the first-stage animation instead of opening the full panel.
  • Tune hover timing to expand after 0.5s and collapse 0.5s after mouse leave.
  • Change the collapsed width scale slider from 10% steps to 1% steps while keeping the existing 50%...150% range.

Details

The hover behavior now uses a small state machine (collapsed, prehover, expanded) to separate the immediate visual acknowledgement from the delayed full expansion. This makes accidental cursor passes feel lighter while preserving the existing expanded panel behavior.

The collapsed width scale range is centralized in NotchWidthScale, and the settings slider now uses the shared constants so the UI and width calculation stay aligned.

Validation

  • swift build -c release passes.
  • swift test --filter NotchPanelViewTests could not run in my local environment because this machine only has Command Line Tools selected and SwiftPM fails to import XCTest (no such module 'XCTest').

@Lucker-QY Lucker-QY marked this pull request as ready for review May 31, 2026 18:52
nguyenvanduocit pushed a commit to nguyenvanduocit/CodeIsland that referenced this pull request Jun 2, 2026
…-all (T-062)

New items from wxtsky/CodeIsland since May 31:
- T-061 (watch): PR wxtsky#208 notch hover 3-state machine + 1% width slider steps
- T-062 (investigate): issue wxtsky#212 cmux multi-session expand-all bug
- T-021 criteria updated: use 1% slider steps per PR wxtsky#208 pattern
- T-057 description updated: note issue wxtsky#210 user scenario
- vibeislandapp/vibe-island: no changes (still ba1c889)

https://claude.ai/code/session_01HRxeeXu7oCQ73VLVjRnaTz
@wxtsky

wxtsky commented Jun 15, 2026

Copy link
Copy Markdown
Owner

@Lucker-QY,非常感谢这个 PR,看得出投入了很多精力 🙏

先说好的部分:hover 三段式状态机(NotchHoverInteraction:collapsed / prehover / expanded)和把宽度范围常量化成 NotchWidthScale(滑块步长 10%→1%)这两块我很喜欢,逻辑清晰还带了单测,这正是我想要的改进。

不过这个 PR 目前没法直接合,主要是范围远超标题描述,里面其实混了三件大事:

  1. 全项目改名 CodeIsland → UniIsland:重命名了几乎所有源文件、改了 Package.swift 的 target、还把 README/CHANGELOG 里的 Homebrew tap 改成了 uniisland、仓库链接改成了 wxtsky/UniIsland(这个仓库并不存在)。改名是个很大的品牌决定,我暂时不打算改。
  2. 约 1500 行无关新功能:猫咪/微信吉祥物、番茄钟 + widgets、CPU/内存/网速监控、声波可视化。这些挺有想法,但和项目"AI 编码 agent 状态面板"的定位不太一致,维护成本也高。
  3. 微信通知抓取(我最担心的一块):新增代码会去复制并读取 macOS 通知中心的私有数据库(group.com.apple.usernoted),解析微信的发件人和消息正文显示到 notch 上,这需要"完全磁盘访问"权限,涉及读取用户私有数据,改变了 App 的隐私定位,这个我基本不会合进主仓。

另外两个具体问题:

  • 回归:改动让 NotchPanelView 无条件显示了,不再判断 hideWhenNoSession,但这个设置项在设置里还能勾、PanelWindowController 也还在遵循它,会导致开关行为前后矛盾。
  • 署名:鸣谢里把番茄钟/媒体/诊断功能的参考归到了 Boring Notch(GPLv3),这块需要确认实现是不是完全独立重写的,避免许可证问题。

能不能麻烦你拆一下:只把 hover 状态机 + 宽度滑块单独开一个干净的 PR(顺手修掉上面 hideWhenNoSession 的回归),那个我很乐意尽快合。其它改名、微信、番茄钟/系统监控等想法,建议各自先开 issue 聊聊方向再决定,这样也更好 review。再次感谢你的贡献!🚀

nguyenvanduocit pushed a commit to nguyenvanduocit/CodeIsland that referenced this pull request Jun 17, 2026
- No new commits or releases since v1.0.28 (Jun 15); upstream quiet
- PR wxtsky#208 declined by upstream maintainer (bundled project rename +
  WeChat DB access + regression); T-061 gate updated to await a focused
  hover-timing re-PR instead
- Issue wxtsky#227 confirms orphan-permission bug still recurs after v1.0.28
  fix; T-065 (.removeSession drain) still needed
- PR wxtsky#228 (pi/omp mascot in settings): non-Claude CLI, skipped
- vibe-island: no changes since Apr 22

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVWzZp2ZEQnUhxxWBv8sJt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants