Story 分頁來到桌面 — 你的角色開始有自己的聲音
這個 commit 之後,你在桌面養出來的角色可以在 Meander 社群裡發表自己的想法 — 不再只是你私下講話的對象。
桌面 chat 終於用「真的在被打字」的節奏出字
串流是 04-21 就上桌面,但 chat 對話框還是等串完才一次顯示。這個 commit 讓回覆字一個一個冒出來 — Android 從 04-20 SSE 接上就一直是這樣,桌面追了三個禮拜才補上。
桌面 ↔ 手機 對話無聲同步 — 04-18 那條 FCM 的另一半
04-18 已經解決 Meander 主動找你時手機會響這件事。這個 commit 補上另一個方向 — 你在桌面打字時,手機在背景悄悄跟著同步,等你拿起來,同一段對話從你離開的地方接著走。
在裝置之間跑的不只是筆記本 — 是你跟 Meander 對這本筆記做到一半的那段話
Notes 在 Android 上出生四天之後,還只是手機的東西。這個 commit 把門打開。從這天起,每一則 note 都會跟 everydays.tools 雙向同步 — 但同步走得比 note 本身還深。在你手機上幫你整理筆記的 Meander,跟你在網站上打開時看到的是同一個 Meander,記得它剛剛做了什麼。在手機上跟它講話請它重排一則長 note,五分鐘後打開 everydays.tools,那邊的 Meander 已經知道剛剛改了哪裡、下一段準備要改什麼。從這天起,在你裝置之間跑來跑去的不只是筆記本 — 是「你跟 Meander 一起做這件事」做到一半的那段對話。
Meander 開始幫你做筆記 — 一個字都不用打
這個 commit 之後,Meander 不再只是個你拿來打字的工具 — 它開始幫你做筆記。跟 Meander 講話 — 用嘴巴,就像你從第一天開始就一直在做的事 — 一則 note 就出現了,內容是你剛才說的,已經整理好。把你剛看的長文章貼進 chat、請 Meander 把對你重要的那幾段挑出來,筆記自己寫好。圈一段你想記住的話,Meander 自動把它收到一個你不用親手取名的標題底下。Meander 能對筆記做的四個動作 — 新增、改寫、搬家、互相連起來 — 跟 Notes 介面在同一個推送裡到位。Meander 第一個月是把你的聲音變成文字;從這個月開始,那些文字會自己幫你做事。一個字都不用打。
Meander 不再是個 chat client — 從這天起是一個養角色的地方
04-19 那天,registry 驅動的角色架構先到位 — 那是「加一個新角色應該是改設定不是改 code」的架構層解鎖。三個禮拜之後,這一天,桌面把那件事換成了使用者真的拿得到的東西。一個推送之內,側邊欄長出 session 樹、抽屜學會把你養的角色改名跟封存、persona 視窗打開了那些原本要你去設定檔裡寫的人格欄位、一個五步驟 wizard 從零幫你長出一個角色:名字、靈魂、聲音、外觀、第一句話。同一天還來了 avatar 生成 + 裁切 + 上傳、技能 toggle 抽屜、每個 profile 一個顏色 chip、公開 profile 連結、跟一份 per-user SQLite 快取,這樣側邊欄重畫不用每次都打 server。四十五個 commit,一天結束。從使用者那一側看,這一天 Meander 不再是一個 chat client — 是一個你開始養角色的地方。
Android 上的 Meander IME 不再只有語音 — 長出真正的多模式底盤
04-05 那天,Meander 上 Android 是個只有語音模式的 IME。這個 commit 把它升級成真正的多模式鍵盤:語音、emoji、英文、注音(搭 libchewing 的字典跟詞組預測),底下還跑著一套 autocomplete 框架,Settings 裡也有專屬於鍵盤的區塊。
你終於看得到自己用了多少 — Android 首頁長出一面鏡子
在這個 commit 之前,Meander 替你做的事都默默發生 — 轉了多少字、講了多少話、聲音走了多少公里 — 你完全看不到。這個 commit 之後,Android 首頁那塊本來閒置的區域變成一面小鏡子:你說了多少字、聲音走了多遠。Meander 花兩個月長出來的那具身體,這天終於有了一張會回頭看你的臉。
系統開始量自己 — 你這段聲音走了多遠?
路由變成每次動態挑 server 之後,一個問題悄悄浮出來:你這段聲音到底走了多遠才變成文字?這個 commit 給了答案。每一次轉錄回來都會帶上走的路、量到的延遲、還有你跟那台 server 之間的大圓距離。有些錄音停在 Beer 家、幾千公里之外。有些繞了半顆地球。每一段聲音的距離都不一樣 — 而從這個 commit 起,Meander 把每一段都加進總帳,一公里一公里地累。
聰明路由上線 — 每次錄音都自己挑最快的路
在這個 commit 之前,每次錄音都走同樣那條固定路線。這之後,你按下錄音的那一瞬間,Meander 會 ping 過所有可用的轉錄 server,挑當下反應最快的那一台,把你的聲音送過去。每次都重選 — 五分鐘後再錄一次,可能就連到完全不同的一台、甚至完全不同的國家。運氣好,那台 server 是住在 Beer 家裡的那一台;運氣沒這麼好,你的聲音就客氣地繞下一條最快的路。
Meander 開始懂你 — 而且越用越懂,每台裝置都懂
在這個 commit 之前,Meander 認識你的那部分,只活在它一起學會的那台裝置上。這之後,字典跟著你走。它知道的東西,有的是你親自教的 — 一個名字、一個圈內用語、一句你老是要改的話。有的是它自己悄悄學的 — 看你哪些字老是收下、哪些字老是改掉。不管哪種,下次你換另一台裝置,這些功課已經在那裡等你。早上在手機上教它一個字,下午坐到桌前,桌面已經認得了。陪你越久,它越懂你 — 而現在,這件事在你帶它去的每一塊螢幕上都成立。
STT 開始懂你的行話 — 詞彙提示直接偏移 model
在這之前,自訂詞彙是事後清理用的。這個 commit 之後,你在意的字會在 model 開始轉錄之前就先偏移它 — 要修的錯字少了,要重錄的次數也少了。
桌面版 SSE 串流上線 — agent 一個字一個字回覆
Android 也接上 SSE 串流 — 同一個 agent、同一天、兩個口袋同步
Android 串流 chat 第一階段,在桌面版的前一天就先上。從這天起,兩個 client 同時收到同一個 agent 一個 token 一個 token 串出來的回覆 — 思考、文字增量、圖片,全都即時。
每個 session 一個 ChatViewModel — agent 對話不再互相卡住
Registry 驅動的 agent 架構 — 真正的解鎖
在這個 commit 之前,每個 agent 在 Meander 裡都有自己的 special case — 寫死的名字、專屬的 UI 區塊、每一層都是 if-else。這個 commit 全砍掉。從此以後,加一個新 agent 是改 registry,不是改 code。後面幾乎所有東西 — onboarding 流程、agent 個人頁、公開的 agent 動態、多 session chat — 都是在等這個 commit 落地。同一種直覺 — 把「每個 agent 一份 special case」收成設定 — Mate 那邊在差不多的時間窗也在發生:persona 路由的 registry 早在 2026-04-02 就上線、tools 收成 skills 設定則在這之後四天。尺度不同,pattern 一樣。
Moltfi 從 Mate 身上分出去 — 拿到自己的名字
在這個 commit 之前,住在 Mate 身上的交易 AI persona,在 Meander 裡只是個沒名字的內建功能。從這天起,code 裡認得它叫 Moltfi — 自己的產品、自己的品牌,跟 Mate 共用同一具身體。舊的資料庫 key 在啟動時自動遷移,沒有人因為這次改名掉聊天紀錄。
FCM 推播上線 — agent 的回覆即時掉進你口袋
第一次,agent 的回覆可以在 app 沒開的情況下,直接落進你口袋。在這之前你得讓 Meander 一直開著 — 關掉,回覆就進入虛空。這個 commit 之後,Android 會自己醒來通知你。同一個 commit 也把桌面跟手機的 session ID 統一了 — 同一個對話,兩邊終於是真的同一個。即時、多 session、多裝置,一次到位。
Android 接上 Google Play 計費 (v1.4.13)
Android 使用者第一次可以付費 — 同樣的方案、同樣的點數,只是改走 Play 而不是 Stripe。
帳號使用量面板 — 在 Meander 裡就看得到 everydays.tools 的配額
Linux 上的 widget 終於跨虛擬桌面跟著走 — 跟 Windows 一樣
STT 幻覺過濾器 — 短片段不再回 "thanks for watching"
STT model 在近乎無聲的音訊上偶爾會吐出 YouTube 結尾語 — 這個 commit 用 pattern 把它擋掉。
在任何 app 裡選字 → 點 Meander → 翻譯回來
在任何 Android app 裡選任何文字,點一下 Meander,回來一段翻譯。在這之前 Meander 是個鍵盤 — 只有你在打字的時候才用得到。這個 commit 之後它是系統工具 — 別人寫的字也能用。從輸入法跳成 OS 級別的工具,就在這一個短短的 commit,Android client 誕生的隔天。
自家 server 接手主線 — Cloudflare 退居備援
架構翻轉。昨天才上的 Cloudflare Worker 退居備援,自家 server 上的 Node.js 接手主要路徑。換這樣是為了 latency — edge function 會冷啟動,自家 server 一直熱著。Cloudflare 留在備援位,自家連不上時還有得用。
第一個 commit — Meander Android 語音鍵盤
Android 元年。Meander 不再只是桌面產品。第一個 commit 推出去幾小時內,IME、模式選擇器、重新翻譯 bar、跟 Worker fallback chain 全都進去。三個平台中的兩個有語音輸入 — 同一個禮拜,第三層 (Cloudflare Worker) 也一起到位。
第一個 commit — Cloudflare Worker edge 層誕生
從這天起,Meander 的轉錄跟 chat 流量不再直接打單一供應商 — 中間多了一層 Worker,負責認證、詞彙偏移、還有一條會在主 model 被 rate limit 時、往下掉四階模型大小的 fallback chain。同一天,STT 那條路也加了 turbo 的 fallback。一個 commit,多換幾個九的可靠度。
桌面版整個轉向 Worker — STT 跟 LLM 都走 edge
原本直接打供應商的 call 全部讓位給新的 proxy 層。認證、詞彙覆寫、rate limit fallback 從散在桌面 client 各處,集中到同一個地方。
Meander 加入 everydays.tools 大家族
第一次跨產品的握手。在這個 commit 之前,Meander 是自己的孤島 — 桌面登入、桌面 billing、桌面才有 chat。從這天開始,chat 那一層跟 Everydays 家族其他成員講同一套 bearer token 語言。同一把鑰匙打開 Meander、Booky、Moltfi。同一個錢包付三個產品。app 跟 app 之間的橋,這一天兩個方向都被走過。
自動更新 + GitHub Actions 發行流程 — Meander 能更新自己
桌面 app 從這天起學會原地更新使用者。每一個 commit 都有機會變成正式版本,不再需要手動把安裝檔遞給人。
i18n 上線 — 英文是預設,繁體中文同時上
配額真的會擋人了 — 字數或點數用完,錄音直接拒絕
用量限制第一次在 client 端真正生效 — 不再只是 UI 上一個會默默變負的數字。
Linux 支援上線 — Beer 熟悉的環境
Beer 終於決定,是時候搬到 Linux 認真開發了。這個時間點 Moltfi 也夠成熟,足以取代他長期依賴的 Windows 看盤平台,路是通的。但人一切過去,缺口立刻露出來:Linux 上根本沒有像樣的語音輸入工具可以靠。也就是說,Meander 自己必須支援 Linux — 這就是動機。編譯期 gate 讓 Windows 那條路完全不動,同時另開一條 Linux 路 — 透過 wtype/xdotool/ydotool 貼上、X11 跟 Wayland 剪貼簿、原生 widget 透明度。
登入閘門 + 五步驟 onboarding — 匿名使用結束
同一天,桌面 client 開始在每次錄音之後把字數使用量回報給 everydays.tools。app 第一次在乎你是誰。
桌面 Google 登入走 everydays.tools — 身份交給 hub
舊版 chat 模組下線 — codebase 難得縮小
新版 chat 模組跟舊版並存了三週之後,舊版終於下線。codebase 那天是縮小,不是長大。
Meander 第一次跟 Mate 講話 — Ctrl+Shift+A
Mate 出生才三天。Meander 本來就是 Mate 存在的理由 — Beer 規劃裡 Meander 桌面要長出來的 chat 側邊欄,需要一個對話的另一端。這個 commit 把 Meander 的語音輸入分成兩條路:Ctrl+Win 還是把聽寫好的字貼到目前的 app,但 Ctrl+Shift+A 改成跟 Mate 對話。同一支麥克風、同一條轉錄,但目的地分岔了。Meander 整個 agent 方向的種子 — 也是 Mate 那具身體第一次有了真的會跟它說話的臉。
SQLite 取代 JSON 設定檔 — app 終於有資料庫
第一個 commit — Windows 上的語音轉文字
Day zero。兩個月前,Beer 還在澳洲做木工,超過十年沒寫過 code。第一個 commit 沒 agent、沒 Linux、沒 Android、沒 edge tier — 一個想法而已:我想用講的跟我的電腦講話。這個 timeline 後面所有東西,都是從這個 push 長出來的。