ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Search 浏览器版本发布说明(NOTES.md)全解析:从 1.0 到 1.0.4 的功能演进与源码印证

Search 浏览器版本发布说明(NOTES.md)全解析:从 1.0 到 1.0.4 的功能演进与源码印证 【免费下载链接】SearchA small, fast WebKit browser for macOS, by Office Commun.项目地址https://gitcode.com/gh_mirrors/search59/Search点击查看免费下载导读本篇文章以仓库根目录的 NOTES.md 为主体逐段拆解 Search——这个由 Office Commun 开发、基于 WebKit 的轻量 macOS 浏览器——从首个版本 1.0 到 1.0.4 的每一次发布内容并结合Sources/Search/下的 Swift 源码Whats New 卡片、多窗口、导入、标签页分组、更新器等模块印证每条新功能与修复背后的真实实现。读完本文你将掌握 Search 各版本的功能清单、所有默认关闭的开关项及其含义以及这套版本说明即单一事实来源的发布流程是怎样被 CHANGELOG.md 与 WhatsNew.swift 共同驱动的。NOTES.md 在项目中的定位一份被机器消费的版本发布说明与一般项目里随手维护的发布记录不同NOTES.md在 Search 仓库中扮演着程序化数据源的角色。其顶部的 CHANGELOG.md 开篇注释说明了完整的生成机制When a version ships, the section takes its number and date, its gist becomes the paragraph inNOTES.md(what Settings and the updater show), and the list is what gets posted as the update.也就是说每个版本发布时CHANGELOG 中该版本的一句话摘要gist会落入NOTES.md成为对应段落而这些段落正是 Settings 里的 Whats New 面板与更新器所展示的内容。这一机制在源码中得到了精确的印证。WhatsNew.swift 定义了WhatsNew.Notes结构体包含version、date、headline一句话主旨、new、better、fixed三组条目其中headline字段的内容与NOTES.md各段落的开篇句一一对应例如NOTES.md 段落开头WhatsNew.swift 中的 headlineSeveral windows, and a lot to discover.Several windows, and a lot to discover. Most of whats new is off until you turn it on…Security, and the mouse wheel.Security, and the mouse wheel.Passkeys, password managers and Google.Passkeys, password managers and Google.The first update, made of a day of your replies and pull requests.The first update, made of a day of your replies and pull requests.The first version.The first version. A browser for the Mac with nothing in the way.这些 notes 通过ReleaseNotesPanel呈现在Settings › About › Whats New…中按版本倒序渲染为 Search 1.0.4 · 27 September 2026 之类的标题块。而更新后弹出的Whats New 卡片WhatsNewCard则更进一步它不仅展示当版本的开关还会把更早版本里仍然处于关闭状态的开关一并列出防止用户错过新特性——这正是 NOTES.md 中反复出现的 New, each off until you turn it on新功能默认关闭设计的产品化表达。NOTES.md当前共收录 5 个版本段落1.0.4、1.0.3、1.0.2、1.0.1、1.0最新版本号 1.0.4 与 VERSION 文件一致。下面逐段展开。1.0.4多窗口与一批默认关闭的新开关1.0.42026 年 9 月 27 日是NOTES.md中的最新段落核心主题是多窗口与大量默认关闭、手动开启的新功能。多窗口机制⌘N打开另一个窗口每个窗口拥有属于自己的标签页把标签页从标签行中拖出即可变成一个独立窗口固定标签页pinned tabs在所有窗口中保持一致——在一个窗口固定、取消固定或移动其他窗口同步跟随。源码层面对这一条的支撑非常完整。新增的 Windows.swift 实现了Browsers枚举每个窗口拥有独立的Browser各自的标签页、空间、地址栏与面板而设置、历史、书签、下载等通过Shared共享固定标签页与空间则是处处一致的全局状态。窗口状态以WindowRecordframe、space、各空间的标签行rows形式写入windows.json最老的窗口仍沿用session.json。Pins.swift的头部注释同样写明Pinned tabs are the same in every window…Each window holds its own tab for each pin共享的只是 pin 的字母、名称、固定的起始页与排序位置具体数据持久化在pins.json。新开关默认关闭可在设置中开启1.0.4 引入的开关在WhatsNew.toggles中均以since: 1.0.4标记Tab groups标签页分组按名称归拢标签页点击可折叠为组名分组随其标签页存续每个空间各自独立。实现见 TabGroups.swift其中GroupHeading支持直接内联重命名、点击折叠旋转的 chevron 指示并通过GroupDropFrames让拖放归组复用既有的标签重排手势。Sidebar on the right右侧侧边栏标签页可排到窗口右缘。对应开关绑定prefs.sidebar prefs.sidePosition .right。Videos wait for a click视频等待点击再播放视频不再自动开始即使没有声音。Always show the downloads button常驻下载按钮下载按钮常驻在按钮区下载进行时仍会像以前一样环形填充进度。其他新功能书签文件夹自排可自建多层文件夹New Folder… / New Folder Inside…拖拽书签归入其中站点快捷方式site shortcuts如yt cats直接搜 YouTube——在 Settings › General 中以词 含%s的搜索地址形式配置双击固定标签页回到其固定时页面已在那页则改为修改 pin 字母下载进度同步显示在 Dock与 Finder、Downloads 栈一致。导入支持扩展Bringing things over从其他浏览器搬迁数据在 1.0.4 扩展到Firefox、Zen、Helium、Comet、Opera 与 Arc且连 Arc 的 spaces 与 pinned tabs 一并导入每个 Arc 空间映射为一个 Search 空间Arc 收藏变为各空间的 pinsArc 文件夹在开启分组时映射为同名 tab group。也支持从导出的文件导入书签 HTML、密码 CSV、Safari 导出并记录什么来自哪里来源浏览器、时间与数量。在 Import.swift 中Chromium.known数组列出 14 个受支持的 Chromium 系浏览器来源Dia、Chrome、Arc、Brave、Edge、Vivaldi、Chromium、Chrome Beta/Dev/Canary、Opera/Opera GX、Helium、Comet每个条目注明其数据目录如Arc/User Data与钥匙串服务名如Arc Safe StorageFirefox/Zen 则读取key4.db无主密码时以 AES-256 或 3DES 解密登录项落入钥匙串。性能与安全滚动开销减半此前每次滚动帧都会上报 caret 位置并重绘标签页现仅在变化时上报密码管理器适配1Password、Bitwarden、iCloud Passwords、Figma 得到各自的修复第二轮安全加固来自第二次谨慎的私有安全报告涉及扩展隔离、javascript:/file: 地址禁止、下载权限、通知/搜索/语音权限校验等详见下文安全主题。1.0.3安全加固与鼠标滚轮1.0.32026 年 9 月 24 日段落围绕两个主题安全与鼠标滚轮。安全修复修复本周评审发现的漏洞扩展可以读取自身文件夹之外的文件、页面或广告可以不询问就打开其他应用复制已保存密码现在需要 Touch ID 认证与查看密码一致复制内容对剪贴板管理器隐藏、90 秒后自动清除。这些修复与 CHANGELOG.md 1.0.3 的 Fixed 部分一一对应且 CHANGELOG 进一步说明其来源是安全研究员 Vahagn Yengibaryan 提交的私有报告更新安装需满足 Developer ID 要求并校验校验和扩展只能请求 manifest 中声明的权限Let a script drive Search 仅在设置中开启后才生效。鼠标滚轮与页面体验x.com 等自行监听滚轮事件的页面恢复平滑滚动此前 Search 用自己的样式阻止页面越界回弹导致 WebKit 丢弃滚轮步进现在回弹交给 WebKit 自身处理页面样式不受影响横向回弹用于前进/后退手势保留Bitwarden 可登录自托管服务器扩展 popup 与pop out标签页现在能实时收到变更事件此前 WebKit 完全不给 Search 的 popup 发事件History 面板即时打开2,000 条历史时从秒级降至即时只构建可见行切换空间时音乐继续播放⌘⇧M或标签页扬声器可停止来自 Mail 等应用的链接会把 Search 带到前台全屏视频不再黑屏弹窗需要点击才会打开页面window.open仅接受来自点击或按键的调用。其他修复标签栏以⌘S折叠后重新展开时拥有独立的底色扩展在下次更新时可能被再次询问权限证书错误仅对 localhost/127.x.x.x/::1 静默豁免。1.0.2Passkeys、密码管理器与 Google1.0.22026 年 9 月 24 日段落的主题是通行密钥passkeys、密码管理器与 Google 兼容性。Passkeys 与密码管理器站点的 passkey 按钮现在唤起 Mac 自带的 passkey 面板——Touch ID、你的 iPhone、安全密钥security key1Password、Bitwarden、Proton Pass 得到各自的修复例如 1Password 的 worker 此前因打开 WebSocket 被 WebKit 挂起而永久冻结现在 worker 的 socket 由 Search 接管Bitwarden 的离屏文档offscreen document每次保存耗时十秒的问题被修复Proton Pass 依赖的requestIdleCallback由 Search 补充提供iCloud Passwords 首次配对即成功并保持配对首条消息等待 Apple 辅助进程就绪与 Mac 上应用对话的扩展保持唤醒。反指纹与隐私页面不再看到任何 Safari 看不到的 Search 痕迹Search 自身的脚本此前暴露window.webkit及其变量被 Google 判定为机器人并每隔几次搜索弹出 CAPTCHA某些登录页报 This browser or app may not be secure现在脚本运行在与页面隔离的独立 world 中已保存密码只在自己所属的站点被提供用公钥后缀列表public suffix list区分共享托管站点与局域网地址Search 可被设为 Mac 的默认浏览器1.0.2 修复了未声明 XHTML 文档类型导致系统列表不显示的问题。新开关默认关闭书签栏bookmarks bar书签以一行排列在页面上方文件夹展开为菜单shift-click 预览链接Peek at a link按住 Shift 点击链接在阅读页面上方的面板中打开切换应用时视频跟随Float the video when you switch apps播放中的视频跟随到小窗口页面 120 Hz在支持的屏幕如 MacBook Pro上以最高 120 次/秒绘制页面动画与滚动默认关闭且更耗电显示链接去向Show where links go悬停链接时页面底部显示目标地址。其他新功能静音单个标签页标签末尾扬声器图标通过 File › Share… 走系统分享菜单右键Copy as Markdown Linktitle鼠标前进/后退侧键导航含 Logi Options 把侧键伪装成 swipe 的情况空间Spaces出现在顶部标签栏双指上下或鼠标滚轮切换滑过最后一个自动新建。性能与已知注意事项打开更快新标签页约 10 ms开始加载此前先冷启动 Web 进程需要 40–60 ms若更新后 passkeys 仍然失败请重启一次 Mac此前的版本曾因页面残留未决 passkey 请求导致 macOS 在 Search 退出/崩溃后持续拒绝其所有 passkey直至重启。1.0.1第一次更新1.0.12026 年 9 月 23 日是由你一天的回复和 pull request 构成的第一次更新关键修复是Search 重新支持 macOS 14此前在设置外观时对尚不存在的应用做操作导致启动即退出以及安装 iCloud Passwords 后登录 Google 不再反复重载页面。新开关默认关闭Spaces空间同一窗口内多组独立标签页各自有图标与可选独立下载目录可为每个空间选择独立登录态侧边栏自动隐藏Hide the sidebar until the pointer reaches the edge指针到达左缘才滑出可选搜索引擎Settings › General › Search with 提供 DuckDuckGo、Bing、Ecosia、Startpage、Kagi或任何含%s的搜索地址默认仍是 Google。其他新功能⌘S折叠侧边栏页面占满窗口左缘唤回中键点击关闭标签页标签页可重命名重命名随标签迁移并跨重启存活清空字段恢复页面标题Web Inspector 移入 View 菜单含 ⌥⌘I / ⌥⌘J / ⌥⌘C与 Chrome/Arc 的键一致。修复亮点⌘1–⌘9在所有键盘布局含 AZERTY上生效跟随键位而非字符表单字段间 Tab 正常移动标签拖拽不再移动整个窗口窗口顶部双击可全屏修复输入时 Mac 发出蜂鸣声的问题。1.0第一版——Nothing in the wayNOTES.md最底部的段落回顾第一版2026 年 9 月 23 日的产品定位与核心能力这部分与 README.md 的 What it is 一节完全呼应一个浏览器什么都没有挡路标签页一行排列顶部或侧边二选一、固定标签页保持原位、一个字段同时承担地址输入与搜索广告在加载前被拦截WebKit 的WKContentRuleList在网络层拦截运行时零成本密码与通行密钥保存在系统钥匙串由 Office Commun 签名、仅 Search 可读页面上的任何元素都可永久隐藏逐站点选择器列表以样式表在文档起始注入文章打开阅读模式、视频可浮动画中画Chrome 扩展可从 Chrome Web Store 安装macOS 15.4 或更高版本按钮显示 Add to Search运行在 WebKit 自己的扩展引擎上Chrome 有而 WebKit 没有的 API 由 Search 自行补齐见 ExtensionShims.swift半小时未查看的标签页进入睡眠并归还内存运行在 macOS 自带的引擎上体积 2.9 MB。CHANGELOG 中 1.0 的条目还补充了 1.0.4 之前的体积轨迹1.0.2 起约为 6.1 MB、1.0.4 为 6.3 MB对图标目录压缩后仍保持同等性能。发布说明背后的工程机制将NOTES.md与源码对照可以还原出这套版本说明系统完整的运行方式这对想要借鉴该模式的其他项目同样有参考价值单一事实来源开发过程中每个修复与新增在合并当天就写入 CHANGELOG 的 Unreleased 段版本发布时该段摘出gist填入NOTES.md完整列表用于发布公告。Whats New 卡片只展示开关WhatsNew.toggles中每个条目绑定get/set闭包直接读写Preferences因此卡片上的开关就是 Settings 里同一个开关新功能默认关闭是刻意策略——不打开 Settings 的用户永远不会被迫遇到新特性源码注释原文someone who never opens Settings never meets them。版本兼容判断WhatsNew.older(_:than:)按数字分量比较版本串1.0.10 1.0.9用于筛选早于本版本且仍关闭的开关。更新器消费版本信息Updater.swift 通过Bundle.main读取CFBundleShortVersionString/CFBundleVersion判断是否为更新appcast.json中每个 release 携带版本号、构建号、ZIP/DMG 地址、SHA-256 与最低系统版本且从 1.0.3 起 feed 文件本身由 Office Commun 的 Developer ID 签名、版本必须通过签名校验才会被采用Intel 与 Apple Silicon 各自拥有独立 feed 与独立下载包。安全加固贯穿始终1.0.3 与 1.0.4 两次加固均来自同一研究员的私有报告覆盖扩展文件系统越界、应用跳转、权限最小化、更新链签名等面。延伸阅读各版本完整条目含 pull request 致谢CHANGELOG.mdWhats New 卡片与版本说明面板的实现WhatsNew.swift多窗口与会话恢复Windows.swift、Session.swift固定标签页跨窗口共享Pins.swift标签页分组TabGroups.swift从其他浏览器导入Import.swift、ImportArc.swift自动更新链Updater.swift产品功能总览与快捷键表README.md综上NOTES.md虽只有五段散文却是 Search 发布体系的事实核心它既是用户可读的版本摘要也是 Whats New 面板与更新器直接消费的数据更与 CHANGELOG、源码开关、安全公告构成了完整的工程闭环。开发者既可把它当作版本速览也能循着本篇文章的源码索引深入到每一项特性的真实实现。赞分享【免费下载链接】SearchA small, fast WebKit browser for macOS, by Office Commun.项目地址https://gitcode.com/gh_mirrors/search59/Search点击查看免费下载相关推荐CodiMD 版本发布全览从 0.2.0 到 2.6.0 的功能演进、安全修复与源码印证CodiMD 版本发布全览从 0.2.0 到 2.6.0 的功能演进、安全修复与源码印证 CodiMD 是一款基于 Node.js 的实时协同 Markdow后端协同办公知识库WebSocketElastAlert 版本演进全解析从 v0.1.9 到 v0.2.4 的功能变迁与源码印证ElastAlert 版本演进全解析从 v0.1.9 到 v0.2.4 的功能变迁与源码印证 ElastAlert 是 Yelp 开源的简单而灵活的 Ela告警异常检测MusicFree 版本演进全解析从 0.0.1-alpha 到 0.6.2 的功能脉络与源码印证MusicFree 版本演进全解析从 0.0.1 alpha 到 0.6.2 的功能脉络与源码印证 本文以 changelog.md https://link音视频移动开发插件系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进