开发者日志

构建 FleaWinder 的故事和笔记——一个由键盘和鼠标驱动的迷你动画马戏团。

How the fleas learned to sound more like themselves

This month I spent time on a quieter kind of magic: helping each flea feel more like a tiny performer with a point of view. The goal was not to make the circus louder or more complicated. It was to make the moments between tricks feel warmer, more specific, and less repetitive.

The new voice work gives each flea a clearer rhythm. Pip can be proud without becoming stiff, Nova can notice details without turning into a lecture, and Bugg can keep that bright daredevil spark even when the app is simply idling on a desk.

I also tightened the way seasonal flavor shows up. A spring session should not feel exactly like an autumn one, and a late-night wind should have a slightly different mood than a midday check-in. Those shifts are small on purpose. FleaWinder works best when it feels alive without demanding attention.

The important part is consistency. The same troupe should feel familiar on iPhone, Apple TV, Mac, watch, widgets, and the spatial circus. When a flea becomes more expressive in one place, the rest of the surfaces need to catch up so the project still feels like one world.

That is the thread I keep coming back to: tiny, readable, characterful moments that travel everywhere. The fleas are still small. The circus is still gentle. But they have a little more presence now, and that makes the whole thing feel more cared for.

在 iOS 上随时随地为跳蚤上发条

FleaWinder 现在有了自定义 iOS 键盘。安装一次,你在任何应用中打字——Messages、Notes、Safari,任何地方——都会在后台悄悄为马戏团上发条。每十次按键就会向主应用发送一股能量。跳蚤不在乎输入来自哪里;它们只想被上发条。

键盘本身是马戏团主题的:深暖棕色按键,特殊键上有金色点缀,顶部有一个小能量条,随着你打字而填满。随着按键次数增加,它从红色变为金色再变为绿色。旁边有一个小跳蚤表情符号和实时计数器,让你可以准确看到这次会话中你上了多少发条。

最棘手的部分是数据共享。iOS 键盘扩展在自己的沙盒进程中运行——无法直接与主应用通信。解决方案是 App Groups:一个共享的 UserDefaults 容器,键盘和应用都可以读写。键盘累积发条点数并放入共享容器;应用在恢复时拾取它们。我们顺便将现有的 Siri Shortcuts 和小组件意图也迁移到了同一个共享容器,所以现在一切都通过一根管道流通。

启用方法:设置、通用、键盘、键盘、添加新键盘、FleaWinder Circus。不请求完全访问权限——没有网络,没有数据离开你的设备。只有按键为跳蚤提供动力。

把马戏团带到小屏幕

FleaWinder 为任务栏上方的宽薄条带而设计——舒适的横屏。手机是竖屏的。让马戏团在小屏幕上运作,意味着要重新思考布局,同时不能失去让它充满活力的要素。

The embeddable widget flips to a tall canvas on mobile, stacking the acts vertically instead of spreading them across a ribbon. Anyone dropping FleaWinder into their own site gets a layout that adapts automatically. Four theme presets (dark, light, warm, cool) and a scale parameter let it blend with whatever surrounds it.

更大的挑战是可读性。在手机屏幕上,以桌面比例绘制的跳蚤只是些小点。我们添加了一个缩放步骤来放大跳蚤身体,让它们的服装、表情和配饰真正可见——Pip 的头带、Rex 的头盔、Blaze 的小皇冠。一直存在的个性细节突然在一臂之遥就能辨认。

其余的移动端改造不那么华丽但同样重要:触控友好的点击区域、更好的字体缩放、整个营销站点的响应式间距。没什么革命性的——只是确保马戏团在任何地方都看起来合适。

服装、季节与马戏团总监

这周全是关于视觉深度。殖民地里的每只跳蚤现在都穿着独特的服装——Nova 在钢丝上有把阳伞,Rex 在大炮里戴着头盔,Blaze 为喷火表演戴上皇冠。细小的细节,但赋予每位表演者一眼就能辨认的身份。

舞台本身随日历变化。季节性粒子系统在冬天飘雪、春天撒樱花、夏天放萤火虫、秋天飘落叶。还有与你的现实时钟绑定的微妙日/夜色调——黄金时段条带变暖,天黑后变暗,夜空中星星更亮。

最大的新增是马戏团总监——一只戴高帽的特殊跳蚤,在节目之间巡视演出。他不表演;他督导。让他的巡逻路径恰到好处意味着安排他的步行节奏,使他恰好在一个节目过渡结束时到达,这给整个马戏团赋予了以前没有的编排感。

在底层,一个完整的主题系统现在驱动着这一切。八个调色板加上一个自动季节模式,根据月份选择合适的调色板。每个节目和界面元素中的每种颜色都取自活动主题,因此切换感觉是无缝的而非拼凑的。

v1.1.0:两个新节目

1.1.0 版本将杂耍表演和喷火表演加入阵容,使现场马戏团表演总数达到七个。两者都运行在驱动其余节目的同一能量系统上——你的击键、鼠标移动和点击。

杂耍者以真实抛物线弧线追踪多个球。数量随能量变化:空闲时两三个,满功率时最多六个,观众疯狂时还有背后接球。让时机恰到好处需要将每个球的相位解耦,这样它们才不会挤在一起。

喷火者使用现有的粒子系统,但加入了新的热浪扭曲效果。火焰长度随能量增长,点击产生额外爆发。最棘手的部分是颜色混合——从底部的深红平滑过渡到顶端的明黄,而不出现色带效果。

两个节目都集成到现有的轮换系统中,因此你会看到它们与原来的五个节目交替出现。如果你想固定喜欢的节目,设置面板现在允许你单独开启和关闭各个节目。

历史页面背后的历史

FleaWinder 的历史页面记录了四百多年的真实跳蚤马戏团——从罗伯特·胡克 1665 年的显微镜素描到今天仍在表演的啤酒节表演者。撰写它意味着阅读维多利亚时代的节目单、数字化的报纸剪报,以及数量惊人的关于昆虫学娱乐的学术论文。

最困难的部分是决定省略什么。仅路易斯·贝尔托洛托一个人就能写满一本书(事实上他确实写了——好几本)。妥协方案是一条涵盖主要事件的时间线,以及一组可展开的章节,供想要深入了解的人使用。

该页面使用首字下沉、装饰性分隔线和衬线字体,以呼应它所描述的宣传单和节目单。每个章节默认折叠,这样读者不会感到压力,但第一段总是可见的,并带有首字下沉来吸引读者。

所有文字提供英语、西班牙语和德语版本。翻译过程揭示了一些迷人的地方历史——例如,啤酒节上的德国跳蚤马戏团传统有着不同于伦敦和纽约的独立发展脉络。

我为什么开发 FleaWinder

我想要一个能让电脑有生命感的东西——不是以分散注意力的方式,而是作为一个安静的伙伴,对你的存在做出反应。大多数屏幕保护程序在你离开时激活;FleaWinder 在你到来时激活。

想法很简单:把操作系统忽略的所有空闲输入——打字的节奏、鼠标的速度、点击的频率——输入给一群动画马戏团跳蚤。你工作得越多,表演就越精彩。

将它构建为任务栏上方的透明叠加层被证明是正确的限制条件。它始终可见但从不碍事。你不与它直接交互;你只是工作,它就做出反应。技术挑战在于使它真正可以点击穿透,这样它永远不会抢走焦点。

FleaWinder 是对维多利亚时代跳蚤马戏团的致敬——这是一种真实存在了数百年的艺术形式,钟表匠用真正的跳蚤拉微型马车、走钢丝。历史页面完整地讲述了这个故事。