diff --git a/TODO.md b/TODO.md index 436ed156..2127cec2 100644 --- a/TODO.md +++ b/TODO.md @@ -1,183 +1,234 @@ +# TODO + - invite keybind & context menu - better cancel for all boxes -- Media - - Handle set avatar upload errors - - Support encrypted m.file - - Confirmation box after picking file to upload - - Show real progression for mxc thumbnail loadings +## Media - - Show reason under broken thumbnail icons - - Support m.file thumbnails - - Generate video thumbnails - - GIFs can use the video player - - Display GIF static thumbnails while the real GIF is loading - - Video bug: when media is done playing, clicking on progress slider always - bring back to the beginning no matter where - - Video: missing buttons and small size problems - - Audio: online playback is buggy, must download+play file - - EventLink - - Special treatment for matrix.to URLs? - - EventFile & Downloading (right click on media > save as...) - - Prevent using upload keybinds in rooms with no perms +- Handle set avatar upload errors +- Support encrypted m.file +- Confirmation box after picking file to upload +- Show real progression for mxc thumbnail loadings -- Refactoring - - Use a singleton for utils.js - - Use HBox for Profile - - Get rid of all `currentSpacing` stuff - - Banners - - Composer - - Try gel for the models and stop being lazy in python +- Show reason under broken thumbnail icons +- Support m.file thumbnails +- Generate video thumbnails +- GIFs can use the video player +- Display GIF static thumbnails while the real GIF is loading +- Video bug: when media is done playing, clicking on progress slider always + bring back to the beginning no matter where +- Video: missing buttons and small size problems +- Audio: online playback is buggy, must download+play file +- EventLink + - Special treatment for matrix.to URLs? +- EventFile & Downloading (right click on media > save as...) +- Prevent using upload keybinds in rooms with no perms - - Room Sidepane save/load size & keybinds +## Refactoring -- Fixes - - Pausing uploads doesn't work well with matrix.org - - Quickly posting with another account leads to sync stop - - CPU usage - - `code` not colored in room subtitle - - In the "Leave me" room, "join > Hi > left" aren't combined - - Event delegates changing height don't scroll the list - - When selecting text and scrolling up, selection stops working after a while - - Ensure all the text that should be copied is copied - - Multiple messages are currently copied out of order +- Use a singleton for utils.js +- Use HBox for Profile + - Get rid of all `currentSpacing` stuff +- Banners +- Composer +- Try gel for the models and stop being lazy in python - - Pressing backspace in composer sometimes doesn't work - - Message order isn't preserved when sending a first message in a E2E - room, then while keys are being shared sending one with another account, - then sending one with the first account again +- Room Sidepane save/load size & keybinds - - If account not in config anymore, discard ui state last page on startup - - Do something when access token is invalid +## Bug fixes - - Don't store states in delegates - - [hr not working](https://bugreports.qt.io/browse/QTBUG-74342) - - Terrible performance using `QT_QPA_PLATFORM=wayland-egl`, must use `xcb` - - Quote links color in room subtitles (e.g. "> http://foo.orgA)" ) +- Pausing uploads doesn't work well with matrix.org +- Quickly posting with another account leads to sync stop +- CPU usage +- `code` not colored in room subtitle +- In the "Leave me" room, "join > Hi > left" aren't combined +- Event delegates changing height don't scroll the list +- When selecting text and scrolling up, selection stops working after a while + - Ensure all the text that should be copied is copied + - Multiple messages are currently copied out of order -- UI - - Scrollable popup - - HDrawer snapping - - Make theme error/etc text colors more like name colors - - In account settings, display name field text should be colored - - Way to open context menus without a right mouse button - - `smartVerticalFlick()` gradual acceleration +- Pressing backspace in composer sometimes doesn't work +- Message order isn't preserved when sending a first message in a E2E + room, then while keys are being shared sending one with another account, + then sending one with the first account again - - Choose a better default easing type for animations - - Make HListView scrollbars visible - - Remove first html lists left margin - - Adapt UI for small heights +- If account not in config anymore, discard ui state last page on startup +- Do something when access token is invalid - - 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 find someone page, show the matching user's avatar when typing +- Don't store states in delegates +- [hr not working](https://bugreports.qt.io/browse/QTBUG-74342) +- Terrible performance using `QT_QPA_PLATFORM=wayland-egl`, must use `xcb` +- Quote links color in room subtitles (e.g. "> http://foo.orgA)" ) - - Combine events so they take less space - - After combining is implemented, no need to hide profile changes anymore. - - Replies - - Messages editing and redaction - - Code highlighting - - Adapt shortcuts flicking speed to font size +## Interface - - EditAccount page: - - Device settings - - Multiaccount aliases: - - Warn when conflict with another alias - - Forbid spaces? - - Add an explanation tooltip - - Prevent sending messages with an user not in room - - Support \ escaping - - Accept drag and dropping a picture to set avatar +- Scrollable popup +- HDrawer snapping +- Make theme error/etc text colors more like name colors +- In account settings, display name field text should be colored +- Way to open context menus without a right mouse button +- `smartVerticalFlick()` gradual acceleration - - Add stuff to room tooltips like last messages - - Show something 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 +- Choose a better default easing type for animations +- Make HListView scrollbars visible +- Remove first html lists left margin +- Adapt UI for small heights - - Sidepane - - Animate when logging out last account and sidepane turns invisible - - Header back button when reduced - - Better look when reduced to minimum size +- 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 find someone page, show the matching user's avatar when typing - - Server selection - - Register/Reset for AddAccount page - - Prevent using an alias if that user is not in the room or no permission - - Spinner when loading past room events +- Combine events so they take less space + - After combining is implemented, no need to hide profile changes anymore. +- Replies +- Messages editing and redaction +- Code highlighting +- Adapt shortcuts flicking speed to font size - - Theming - - Bundle fonts - - Standard file format, see *~ppy/qml_dict_theme.qml* - - https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#creating-a-custom-style - - icons.preferredPack: accept multiple values - - Find icon packs in user data dir - - See [Text.fontSizeMode](https://doc.qt.io/qt-5/qml-qtquick-text.html#fontSizeMode-prop) - - Way to round avatar corners to allow box radius - - If avatar is set, name color from average color? - - Accent color from background +- EditAccount page: + - Device settings + - Multiaccount aliases: + - Warn when conflict with another alias + - Forbid spaces? + - Add an explanation tooltip + - Prevent sending messages with an user not in room + - Support \ escaping + - Accept drag and dropping a picture to set avatar - - Settings page - - Notifications - - Opening links with keyboard - - Better `
` 
+- Add stuff to room tooltips like last messages
+- Show something 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
 
-  - Custom file picker for Linux (...)
+- Sidepane
+  - Animate when logging out last account and sidepane turns invisible
+  - Header back button when reduced
+  - Better look when reduced to minimum size
 
-- Major features
-  - 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
-  - Read receipts
-  - Status message and presence
+- Server selection
+- Register/Reset for AddAccount page
+- Prevent using an alias if that user is not in the room or no permission
+- Spinner when loading past room events
 
-- Client improvements
-  - Refetch profile after manual profile change, don't wait for a room event
+- Theming
+  - Bundle fonts
+  - Standard file format, see *~ppy/qml_dict_theme.qml*
+  - https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#creating-a-custom-style
+  - icons.preferredPack: accept multiple values
+  - Find icon packs in user data dir
+  - See [Text.fontSizeMode](https://doc.qt.io/qt-5/qml-qtquick-text.html#fontSizeMode-prop)
+  - Way to round avatar corners to allow box radius
+  - If avatar is set, name color from average color?
+  - Accent color from background
 
-  - Prevent starting multiple client instances, causes problems with E2E DB
-  - Check if username exists on login screen
-  - [Soft logouts](https://github.com/poljar/matrix-nio/commit/aba10)
-  - `pyotherside.atexit()`
-  - Logout previous session if adding an account that's already connected
-  - Config file format
+- Settings page
+- Notifications
+- Opening links with keyboard
+- Better `
` 
 
-  - Startup improvements
-    - Initial sync filter to get more events on first sync
-    - Lazy loading members
-    - Store profiles, room events and states
-    - Use AsyncClient `store_sync_tokens`
-      - Make sure to all members are fetched before sending an E2E message 
-      - Fetch all members when using the filter members bar
+- Custom file picker for Linux (...)
 
-  - Direct chats category
-  - Animate RoomEventDelegate DayBreak apparition
-  - Live-reloading accounts.json
+## Backend
 
-- nio
-  - Dedicated error for invalid password on key import
-  - Running blocking DB function calls in executor
-  - `AsyncClient.share_group_session`: send device batches concurrently
+- Refetch profile after manual profile change, don't wait for a room event
 
-  - RoomMessageMedia and RoomAvatarEvent info attributes
-  - `m.room.aliases` events
-  - MatrixRoom invited members list
-    - Verify room has correct name when creating direct chat and peer hasn't
-      accepted the invite yet
-  - Left room events after client reboot
-  - `org.matrix.room.preview_urls` events
-  - Support "Empty room (was ...)" after peer left
-  - Previewing room without joining
+- Prevent starting multiple client instances, causes problems with E2E DB
+- Check if username exists on login screen
+- [Soft logouts](https://github.com/poljar/matrix-nio/commit/aba10)
+- `pyotherside.atexit()`
+- Logout previous session if adding an account that's already connected
+- Config file format
 
-  - Get content repo config API
-  - Add the `resume()` method
+- Startup improvements
+  - Initial sync filter to get more events on first sync
+  - Lazy loading members
+  - Store profiles, room events and states
+  - Use AsyncClient `store_sync_tokens`
+    - Make sure to all members are fetched before sending an E2E message 
+    - Fetch all members when using the filter members bar
 
-  - See if we can turn all the Error classes into actual exceptions
+- Direct chats category
+- Animate RoomEventDelegate DayBreak apparition
+- Live-reloading accounts.json
 
-- Distribution
-  - Include python dependencies in binary with rcc?
-  - README.md
+- 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
+- Read receipts
+- Status message and presence
+
+## Nio contributions
+
+- Dedicated error for invalid password on key import
+- Running blocking DB function calls in executor
+- `AsyncClient.share_group_session`: send device batches concurrently
+
+- RoomMessageMedia and RoomAvatarEvent info attributes
+- `m.room.aliases` events
+- Left room events after client reboot
+- `org.matrix.room.preview_urls` events
+- Support "Empty room (was ...)" after peer left
+- Previewing room without joining
+
+- Get content repo config API
+- Add the `resume()` account "login" method
+
+- See if we can turn all the Error classes into actual exceptions
+
+## Distribution
+
+- Include python dependencies in binary with rcc?
+- Improve the README.md
+
+## Notable changes for future Qt version upgrade
+
+### [Qt 5.13](https://wiki.qt.io/New_Features_in_Qt_5.13)
+
+- Added `SplitView`
+- Added `cache` property to icon
+
+### [Qt 5.14](https://wiki.qt.io/New_Features_in_Qt_5.14)
+
+- Applications can now opt-in to use non-integer scale factors.
+  Use `QGuiApplication::highDpiScaleFactorRoundingPolicy`.
+
+- Added `qmlRegisterSingletonInstance` function.
+  This allows to expose a QObject as a singleton to QML, without having to
+  create a factory function as required by `qmlRegisterSingletonType`.
+  It is meant as a type safe replacement of `setContextProperty`.
+
+- Added `qmlRegisterAnonymousType` as a replacement for `qmlRegisterType`.
+  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` and `TextEdit` 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 a `TextEdit`.
+
+- `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.
+
+- Added `BoundaryRule` in Qt.labs.animation: a `PropertyValueInterceptor` 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` and `BorderImage` now have the same `currentFrame` and `frameCount`
+  properties that `AnimatedImage` 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.