八周三个版本
TouchQ 在八周里出了三个大版本,提交说明里反复出现的一句是 UI FIXED。
· 5 min read
TouchQ 的提交记录里,有一句话出现了八次:UI FIXED。
其中四次写成了 UI FIFXED,都是 11 月 7 号一天里提交的,到 13 号才改对。自己写的提交说明,自己大概也没回头看过。
TouchQ 是一个 QQ 的第三方客户端,Electron 加 Vue 2,有亮暗两套主题,前两版后端接的是 go-cqhttp 和 Koishi。仓库是 2021 年 10 月 5 号开的,最后一次提交在 11 月 28 号,一共五十四天,差不多八周。
第二天
开仓库的第二天,我写了一份贡献指南。
里面有一句:「touchq 处于萌芽阶段,个人开发者的力量是微不足道的。」后面规定了提交说明的写法,前缀加尖括号里的区域,再跟一句具体更新,前缀有 Fix、Feat、Test、Build、Docs、Add、Upd、Change 这几种。PR 十分重要但格式不对的时候,我会 squash,不会 merge,这会影响你的提交数。想让我收别的平台的实现也不行,首要目标是把 OneBot 的一系列配置做完,想要的话请自己 fork。
仓库里的提交署名一共只有两个,都是我,一个是 TalexDreamSoul,一个是 Tds。这份指南是写给还不存在的贡献者的,README 里还提前写好了一句:开发者没有义务解决你的 Issue,这个项目的开源和维护都建立在空闲时间之上。我觉得当时的我是想先把边界划好,免得哪天真有人来了,不知道怎么办。
"微不足道"这个词,两年后我在《迈出第一步》里又用了一次,说的还是自己做的贡献。
指南里还有一句关于设计的:你的设计必须参考项目本身的设计,否则这将会是一场灾难。这大概是我第一次给自己的项目立设计上的规矩。
三个版本
其实 1.0.0 就在开仓库的第一天,那天提交了二十三次。其中一次是 69 个文件,四万五千多行,七成多是两个锁文件和一份 yarn-error.log。真正是我写的在 src 里,九千多行,components/talex 下已经有十八个文件、六千八百多行。八周是仓库的年纪,这些组件大概在开仓库之前就有了。
10 月 30 号是 2.0.0。一个星期之后,我又把"准备更新版本"的那次提交回滚了,接着出了 2.0.0-Lite。从 10 月初到 11 月中旬,我还给自己提过好几个 PR,把 develop 合进 main,编号一直排到 11,自己提,自己合。
11 月 27 号是 3.0.0-Lite,37 个文件,加了三千八百多行,删了一千四百多行。删掉的那部分,七成多在 .vue 文件里,应该就是被推翻的旧界面。加的那部分也没有看上去那么多,一千来行是两份 .old 备份。
说明里写的
2.0.0-Lite 和 3.0.0-Lite 的发版说明,后面都跟着 UI FIXED。至少这两次,说明里写的发版理由就是界面。
前两版的协议那一半是别人的,go-cqhttp 和 Koishi 都不是我写的,大概是想往前走的时候,我能自己动的只有界面吧。components 下那个 talex 目录,后来有三十二个文件,TBubbleButton、TInput、TalexDialog、TalexImgViewer、TMarquee、TipMentioner 都在里面,是我自己的一套小组件。
指南里写设计要参考项目本身,可项目本身的设计,八周里至少换了两回。
不过第三次不全是界面。3.0.0-Lite 那次提交里,TouchQ.js 加了两百多行、删了一百多行,package.json 里多了 oicq,go-cqhttp 和 Koishi 换成了它。说明里还是只有界面那一句,我觉得说明是顺手写的。
收尾
11 月 13 号,README 里多了一行:目前正在研究 mirai 协议,较长一段时间内不会更新。
27 号那一版,README 里的 Koishi 和 go-cqhttp 被划掉了,换成 oicq,mirai 那一行也删了。说好不更新,隔了两个礼拜又发了一版,我自己看着也想笑。
27 号三次提交,28 号一次,全在 develop 上。main 停在 13 号合进去的第 11 个 PR,27 号开的第 12 个没有合。
最后一次提交的说明,还是那句:@Version 3.0.0-Lite (UI FIXED)。
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.