- Backend.clientManager renamed to Backend.clients
- clientManager is now a Mapping subclass
Before/After from Python:
backend.clientManager.clients[thing] → backend.clients[thing]
From QML:
Backend.clientManager.clients[thing] → Backend.clients.get(thing)
- Application and Engine will be started by __init__.run() independently
- Exiting app will disconnect clients
- Signals like SIGINT (Ctrl-C) are now handled for proper exit
- New ListItem implemented using a metaclass, which makes defining new
ListItem subclasses much cleaner and shorter
- ListModel functions taking an index now accept either an int
(list index) or str (value of a main key)
- getWhere() gone, simply use get(a_main_key_value) now
- updateOrAppendWhere replaced by update()/upsert()
- Standardized capitalization for variables and file names everywhere in
QML and JS, get rid of mixed camelCase/snakeCase,
use camelCase like everywhere in Qt
- ListModel items are now stored and returned as real QObjects with
PyQt properties and signals.
This makes dynamic property binding a lot easier and eliminates the need
for many hacks.
- New update(), updateOrAppendWhere() methods and roles property
for ListModel
- RoomHeader now properly updates when the room title or topic changes
- Add Backend.pdb(), to make it easier to start the debugger from QML
@futurize() is now called with parentheses and can take a max_instances
int argument. This is used for setTypingState to not have more than one
queued calls per room and True/False state and avoids bombing the server
with old ephemeral events after a network loss and reconnection.
- Move HTTP connect/disconnect logic to networkManager
- If a talk fails due to socket error, HTTP transport error or
nio bad response that might change, retry every 2s until success
- Clean up some leftover debug prints