docs menu
empty, loading, error
No blocking background logic (B9): nothing looks ready while it isn't, and no wait lasts forever.
rules
- A control that needs background work (a captcha, the session, a socket, a lazy chunk) is either disabled with a visible reason or enabled with a queue that finishes the action once ready. It is never enabled and then refused.
- Every wait has a visible state, a timeout, a plain error, and a way to retry or recover.
- No failure is silent: it's shown, or deliberately ignored with a comment in the code.
- Actions are idempotent where they can be: double submits are blocked and sends carry a client id.
- State is checked again on return: back/forward and the back-forward cache, tab visibility and reconnects.
- Unknown is not down: when a check can't get an answer, say it's unknown.
specimens
loading
working: loading your chats… (gives up after 10 s)
failed
error: couldn't load your chats — the server took too long.
unknown
info: meowsenger — unknown · no answer in 5 s
empty
no chats yet
done
saved.