When messages are selected in the timeline, change the chat header's
mode to show how many messages are selected and offer copy, remove and
deselect buttons.
Give reason why we can't delete all the selected messages when
selection contains a mix of own and other user messages and we don't
permission to remove them.
Toggle display of the focused message's seen counter tooltip,
which shows which user have this message as their last seen
and when did they send that information.
When this mode is active, you can move the focus
to other messages and the tooltip will update itself.
If a message doesn't have a counter, it won't have a tooltip.
python_debugger (shift+F1) will now always start pdb, and
python_remote_debugger will always start remote_pdb.
Since the new autoreload.py script doesn't break stdin like entr with
live-reload.sh did, we can now use pdb if the app is connected to a
terminal.
- Remove the default Qt dragMargin: when the right pane was
hidden/collapsed in the interface, accidentally clicking on this
invisible 10 pixel-wide zone to the right edge of the window
would interfere with any button under it, e.g. the button to
expand the pane
- Fix expand pane button failing to bring back pane (due to dragMargin)
and turning the chat page header invisible
- Disable swiping to exit panes, interferes with buttons and tiles
When hovering on stability percentages in the server browser, a tooltip
now shows the total downtime in the past 30 days, number of incidents,
their average length and the longest's duration.
- Loading a QML file in place of src/gui/UI.qml is now possible via
-l / --load-qml instead of taking the first positional argument
- New option to start application in tray without showing a window
- --help and --version
entr is a glitchy mess that keeps restarting for no reason and prevents
pdb usage due to stdin takeover, use a python script instead that
doesn't need external utilities.
Fix these issues:
- When the cursor was on the last soft-line of a word-wrapped line,
pressing down wouldn't go to the next history entry
- When the cursor was after the first soft-line of a word-wrapped line
and that line was the first of the text area, pressing up would
go to the previous history entry instead of moving the cursor to the
first soft-line
Add visibleStart/End properties to HListView that take into account the
ListView's originX/Y, and not just contentX/Y which can be largely
offset.
Use those new properties in EventList for message focusing (fix
ctrl+up/down sometimes incorrectly focusing the message at the middle of
the screen even when we're scrolled at the bottom), and detection of
when we can update the read marker (fix cases when we're scrolled at the
bottom but the read marker never updates).
The SVG colors are now an enum of Color objects, instead of hex strings.
The "transparent" color was also added, which isn't in the standards but
works in QML.
Don't use the default config if there's an error in a JSON config file,
a single typo could lead to an entire user settings file getting
overwritten by default data.
- Cleaner design for the backend user_files classes and simplified
interaction with QML
- Config and theme files will now automatically reload when changed on
disk
- Removed manual reload keybind and button
When switching rooms, first load only the delegates in the user's view
and wait a second before expanding the cacheBuffer and loading more
delegates outside the view. This reduces the amount of delegates to load
all at once by 3x.
When a chat page is recycled, set the eventList model to
null, wait for any animations to finish, then explicitely reassign it.
This prevents from model from randomly mixing up old and news delegates.
CppUtils.idleMilliseconds(): If the WAYLAND_DISPLAY environment
variable is set, assume we're running under a Wayland environment
and return early before trying to connect to an X11 display.
If XScreenSaver is available but not supported
(e.g. when running in XWayland), return -1 for
Utils.idleMilliseconds(), instead of letting the code fail and print an
error every time this function gets called to check for the machine's
idle time.