Dependencies point down.core and platform import nothing else from JBrowser; models and services
never import ui. The UI observes lower layers through Qt signals. See the architecture.
Widgets don't talk to each other. They read BrowserState and settings, and send intents to
BrowserController or run a command.
Everything that moves asks motion(), so Fluid animations can turn every animation off.
Saves are atomic. Write through atomic_write_json() / atomic_write_bytes(), never open(..., "w").
Nothing blocks the UI thread. Network work runs asynchronously (QNetworkAccessManager) or in a QThread
stopped with stop_worker() from core/workers.py.
Plain language for users. "Clear browsing data", not "Purge storage".