10 KiB
TODO
-
delete devices (do that in key verification popup instead of blacklisting)
-
avatar upload/change component
-
device list keyboard navigation
-
device IP geolocation
-
unregister popup/menu when destroyed without being closed
-
menu click-through padding to close it easily
-
show scrollbars for a few secs if there's content to scroll on beginning
-
can leave room with a reason?
-
use new nio
restore_login()
-
verify all popups and box-pages work: enter/esc, tab focus, operations
-
write changelog
-
update requirements.txt and flatpak nio version
Refactoring
- Reorder QML object declarations,
conform to https://doc-snapshots.qt.io/qt5-dev/qml-codingconventions.html
Issues
-
Bottom focus line for an
HTextArea
inside aScrollView
is invisible,
put the background onScrollView
instead? -
Don't send typing notification when switching to a room where the composer
has preloaded text -
When calling
Backend.update_room_read_marker()
for a recent message,
the marker will only be updated for accounts that have already received
it (server lag) -
Jumping between accounts (clicking in account bar or alt+(Shift+)N) is
laggy with hundreds of rooms in between -
On startup, if a room's last event is a membership change,
it won't be visible in timeline no matter what the user config is -
There are rooms without messages to show as last message subtitle after
initial sync -
Drag-scrolling in room pane a tiny bit activates the delegates
-
Catch server 5xx errors when sending message and retry
-
Handle cases where a known account's access token is invalid
-
If an account is gone from the user's config, discard UI state last page
-
After forgetting a room, it comes back because of the "you left" event
-
code
, mentions and links in quote ("> http://example.com") aren't properly
colored in room delegate "last message" subtitle -
Timer
andAnimation
are bound to framerate -
Can't use
QQmlApplicationEngine
, problem with QApplication?
See https://bugreports.qt.io/browse/QTBUG-50992 -
not rendered -
Pausing uploads doesn't work well, servers ends up dropping the connection
(no real solution possible?)
Interface
-
When responding to a message, highlight that message in the timeline
-
Highlight timeline messages that mentions our user
-
Add room members loading indicator, similar to the "Loading past messages..."
-
Long-press-drag to select multiple messages on touch
-
Drag to select multiple messages on non-touch
-
Make clicking on user/room mentions open relevant UI instead of matrix.to
URL in browser -
Missing room settings:
- Set whether to publish this room in the server room directory
- Set history visibility
- Set aliases
- Change members power level
- Setup permissions
- Unban members
- Set flair (which community this room belongs to)
-
Linkify URLs in topic text areas
-
Expand the room pane if it's currently too small to show room settings
-
Use a loader for items not in view for the
HTabContainer
'sSwipeView
-
Make "Cancel" buttons consistent, and able to cancel running Backend
coroutines. SetdisabledWhileLoading
tofalse
for all "OK" buttons where
it makes sense. -
Remember the previously focused item in page for ctrl+tab
-
https://doc.qt.io/qt-5/qml-qtquick-smoothedanimation.html for progress bars
-
Improve when HDrawer should collapse when the ui is zoomed
-
Make room invite/left banner buttons look better
-
Choose a better easing types for animations
-
Make HListView scrollbars more visible
-
In messages, remove the HTML lists excess left margin
-
Improve UI for very small window heights
-
In room creation, click avatar to set the future room's avatar
-
In join room page, show the matching room's avatar when typing
-
In direct chat page, show the matching user's avatar when typing
-
Combine events so they take less space
- After combining is implemented,
no need to hide profile changes by default anymore
- After combining is implemented,
-
Animate
DayBreak
apparition -
Device settings
-
Proparly formatted rich replies
-
Messages editing
-
Code highlighting
-
Adapt shortcuts flicking speed to font size
-
Accept drag and drop to upload files or set a new avatar
-
Improve room tooltips, e.g. show last messages
-
Warn user when connection is lost or 429s happen
-
"Rejoin" LeftBanner button if room is public
-
Daybreak color
-
Conversation breaks: show time of first new msg after break instead of big
blank space -
MainPane
:- Animate when logging out last account and sidepane turns invisible
-
Server selection
-
Implement Register/Reset pages
-
Theming
- Use a standard file format
- icons.preferredPack: accept multiple values
- Find icon packs in user data dir
- See Text.fontSizeMode
-
Settings page
-
Notifications
-
Opening files with keyboard
-
Better
<pre>
-
Replace the rubbish default filepicker on Linux
Media-related
-
UI for download progress (using
Transfer
like for uploads) -
Add upload keybindings (close failed upload, pause, resume)
-
Handle errors when setting an avatar
-
Show confirmation box when picking file to upload or uploading from clipboard
-
Show proper progress ring for mxc thumbnails loading
-
Sentinel function to report local file paths for already downloaded media,
without having to click and try downloading first -
EventFile "Save as..." context menu entry
-
Show a reason or HTTP error code for thumbnails that fail to load
-
Support
m.file
thumbnails -
Generate video thumbnails
-
Display GIF static thumbnails while the real GIF is loading
-
Audio/video player
- Can GIFs use it?
-
EventLink
for client-side URL previews- Special UI for matrix.to URLs
-
Prevent using upload keybindings in rooms where user doesn't have permission
to upload
Backend
-
Saving the room settings
-
Better config file format
-
Prevent starting multiple client instances, causes problems with E2E DB
-
Check if username exists on login screen
-
Logout previous session when adding an account that's already connected
-
Cache and restore profiles, room events and client states
-
Properly handle direct chats
-
Live-reloading accounts.json
-
E2E
- Device verification
- Edit/delete own devices
- Request room keys from own other devices
- Auto-trust accounts within the same client
- Provide help when undecryptable messages occur, including:
- Trigger
nio.AsyncClient.request_room_key
- Option to export-logout-login-import to fix one-time key problems
- Trigger
- Cross-signing
-
Status message and presence
-
Display read receipts on events (who/how many people have read an event)
-
Fully read markers
-
Methods of signing in that aren't handled yet:
m.login.password
alternate logins methods:m.id.thirdparty
m.id.phone
m.login.recaptcha
(need browser, just use fallback?)m.login.oauth2
m.login.email.identity
m.login.msisdn
(phone)m.login.sso
+m.login.token
m.login.dummy
- Web page fallback
Nio contributions
-
Streaming download & decrypt
-
Running blocking DB function calls in executor (WIP)
-
Dedicated error for invalid password on key import
-
RoomMessageMedia
andRoomAvatarEvent
info attributes -
Handle
m.room.aliases
events -
Left room events after client reboot
-
Previewing room without joining
Distribution and dependencies
-
Use Qt 5.14 for AppImage
-
Add AppImage & Flatpak metadata file
-
Publish on Flathub and AppImageHub
-
Update to Mistune v2.0 when released
Notable changes for future Qt version upgrade
Qt 5.13
- Added
SplitView
- Added
cache
property to icon
Qt 5.14
-
Applications can now opt-in to use non-integer scale factors.
UseQGuiApplication::highDpiScaleFactorRoundingPolicy
. -
Added
qmlRegisterSingletonInstance
function.
This allows to expose a QObject as a singleton to QML, without having to
create a factory function as required byqmlRegisterSingletonType
.
It is meant as a type safe replacement ofsetContextProperty
. -
Added
qmlRegisterAnonymousType
as a replacement forqmlRegisterType
.
It allows to specify the URI and major version for better tooling support. -
qmllint gained an experimental -U option. If run with it, it warns about
about accesses to unqualified identifiers -
Text
andTextEdit
now support Markdown format
(CommonMark and GitHub dialects) as an alternative to HTML.
Includes the GitHub checklist extension, such that you can click to toggle
checkboxes in aTextEdit
. -
TextEdit
uses an I-beam cursor by default, and a pointing-hand cursor when
hovering a checkbox or a link -
Added
WheelHandler
, an Event Handler for the mouse wheel, and optionally
for emulated mouse wheel events coming from a trackpad.- Rewrite
HKineticScrollingDisabler
with it
- Rewrite
-
Added
BoundaryRule
in Qt.labs.animation: aPropertyValueInterceptor
that
restricts the range of values a numeric property can have, applies
"resistance" when the value is overshooting, and provides the ability to
animate it back within range. It's particularly useful in combination with
WheelHandler
, to provide similar physics as Flickable has. -
Image
andBorderImage
now have the samecurrentFrame
andframeCount
properties thatAnimatedImage
has; this allows choosing an individual icon
from an .ICO file that contains multiple icons, for example.
In the future it's intended to support other multi-page formats such as
PDF, TIFF and WEBP. -
Binding.restoreMode
: This property can be used to describe if and how the
original value should be restored when the binding is disabled.
Qt 5.15
-
Introduced inline components
(ability to declare multiple QML components in the same file) -
Introduced
required
properties -
Added a declarative way of registering types to QML
-
Added support for the Nullish Coalescing Operator (
??
) -
Added
qmlformat
tool which automatically formats any QML file according to
the QML Coding Conventions. -
Added
cursorShape
property to pointer handlers. Most pointer handlers
(e.g.DragHandler
) will change the cursor when the active state is true.
HoverHandler
will change it when the mouse is hovering over theItem
that
contains theHoverHandler
. -
Added
selectTextByMouse
property toComboBox
. -
Technology Preview: Support for running Qt Quick (2D) on top of
Direct3D, Metal and Vulkan