改名
README 里一句承诺没了,应用从 TalexTouch 改成 Tuff,三行代码动了数据文件夹
· 5 min read
一句话
README 里有过这么一句:Soon to support Android, iOS, WearOS, and WatchOS。翻 README 的历史才知道,它是 2023 年 5 月 10 号进去的,和 #Monorepo ready state! 在同一条提交里。之后一直挂着,挂了两年多。我挑了几个时间点看目录,里面只有桌面端的代码,没见过手机或手表的工程。
它没的那天是 2025 年 8 月 8 号晚上 8 点。其实被改的不止这一句,README 整个换了写法:标题从 TalexTouch 变成 Tuff,介绍换成一个本地优先、AI 原生的桌面指令中心。平台那一节原来说 Windows、macOS、Linux 都能用,现在只剩两行,目前只有 macOS,Windows 和 Linux 快了。旁边还多出一份中文 README。
这些全在一条提交里,提交的标题写的却是搜索引擎核心。十来分钟后,文档站又有一条,标题写的是换品牌。承诺为什么偏偏在这时候删,提交正文提了换品牌和重写 README,没单独说这一句。
三行
这个项目在 TouchQ、TouchIM、TalexTouch 之后,又换了一次名字。真正改名的那条在第二天晚上 8 点多,只改一个文件,加三行,删三行。应用的显示名从 TalexTouch 变成 Tuff,数据文件夹从 talex-touch 变成 tuff,URL scheme 从 talextouch 变成 tuff。提交说明里单独留了一段 BREAKING CHANGE,大意是这会影响已经装了的版本。
三样里最重的,我感觉是中间那个。显示名和 URL scheme 改了,顶多是字和链接对不上。(URL scheme 在这一段结束时的代码里,既注册成系统的默认协议,也用来认启动参数里的链接,连托盘图标的提示文字用的都是它。)数据文件夹不一样。我对着改名那天的代码看,应用的配置、装好的插件、日志,都放在这个文件夹下面,路径只靠这一个常量拼出来。到这一段结束,主进程的代码里也没有哪一行去找旧的数据文件夹。
照这个读法,改名之后的新版本一启动,是去一个空的 tuff 里找东西,旧文件夹还在原地,没人去搬它。这是对着代码推的,实际升级起来什么样,记录里没有。
同一天
其实改名那天并不安静。下午 3 点多,搜索引擎被重做了一遍:旧的 ISearchSource 换成 ISearchProvider,provider 不再自己管缓存和刷新,只负责对一个查询交出结果。search 的返回值也换了,带着总耗时、每个 provider 各自的统计和原始查询。夜里 10 点多,剪贴板被重写成能记历史的,渲染进程里插件的状态搬进了 Pinia。
这一天提交说明里写着 BREAKING CHANGE 的,我数到七条。改名是其中最小的一条,加三行删三行。另外几条,少的也动了七百多行,多的一千七百行。可那些改的是代码里的结构,改名改的是用户电脑上的路径,三行的 diff 看不出这个差别。
当时 release 页面上还没有新版,装着旧版的人要碰上这条 BREAKING,大概得等下一次发版。
往数据库里搬
这一个多月里有几处改动都跟状态放在哪有关。provider 刚变成无状态,第二天晚上仓库里就多了一层数据库,三个钟头后 provider 又被改成能持久化、能异步加载的。
8 月 27 号,应用搜索多出一张 keyword_mappings 表,每个应用存好几种关键词:名字带不带空格的两种写法,首字母缩写(Visual Studio Code 对 vsc),全拼,拼音首字母。9 月 19 号一天里,七个主进程模块改成 class,随后又统一改成单例。再过两天,文件搜索的过滤从内存搬进了数据库。原来是把所有文件读出来再筛,现在用 LIKE 在库里查文件名和关键词,只取命中的。
剩下的名字
名字也没有一次改干净。8 月 26 号晚上,一位外面来的贡献者提了个 PR,13 个文件,加 94 行删 90 行,提交里说的是把所有跟 Talex Touch 有关的名字改成 Tuff。里面有应用第一次打开时的欢迎语,原来写的是 Welcome to TalexTouch,还有设置页顶上的应用名,剩下的是些描述和注释。这是改名之后第 17 天。
我停在过滤搬进数据库的那条提交,把主进程的代码又翻了一遍。崩溃上报里填的公司名和产品名,还有插件页面的 user agent,都还是 TalexTouch。macOS 上要访问应用文件夹时弹的那个对话框,写的也是 TalexTouch needs access to your Applications folder。
Copyright
© 2021-present TalexDS. All rights reserved.
Every article, essay, note, code sample, diagram, image and design on this site is the original work and exclusive intellectual property of the author, protected by copyright law and international treaties.
No reproduction. Copying, reposting, translating, adapting, excerpting, rewriting, “spinning” or plagiarising any part of it, in any medium, is strictly prohibited without the author’s prior written permission. Commercial use of any kind is forbidden.
No AI. No crawling. Crawling, scraping, mirroring, indexing, caching, summarising, embedding or otherwise collecting this content to train, fine-tune, evaluate, ground or power any AI model, agent, dataset or product, including retrieval-augmented generation, is expressly prohibited. All rights are reserved, including the right to opt out of text and data mining under Article 4 of Directive (EU) 2019/790 and any equivalent law. AI crawlers and agents must not access or process this page.
Violations will be pursued. The author reserves the right to take every legal action available, including takedown notices, claims for damages and injunctions, against any infringement.
版权声明:本站全部文章、笔记、代码示例、图片与设计均为作者原创,受《中华人民共和国著作权法》及国际公约保护。未经作者书面许可,严禁任何形式的转载、搬运、改写、洗稿与抄袭,严禁商业使用。严禁 AI 爬取:禁止以训练、微调、评测、检索增强或任何其他目的,抓取、镜像、索引、缓存、摘要或向量化本站内容。一经发现,将依法追究法律责任。
Distributed on an “AS IS” basis without warranties.