Improve TODO.md & add section about Qt future

This commit is contained in:
miruka 2019-12-12 11:48:16 -04:00
parent 82e4dff2ab
commit 5dc228f197

355
TODO.md
View File

@ -1,183 +1,234 @@
# TODO
- invite keybind & context menu - invite keybind & context menu
- better cancel for all boxes - better cancel for all boxes
- Media ## Media
- Handle set avatar upload errors
- Support encrypted m.file
- Confirmation box after picking file to upload
- Show real progression for mxc thumbnail loadings
- Show reason under broken thumbnail icons - Handle set avatar upload errors
- Support m.file thumbnails - Support encrypted m.file
- Generate video thumbnails - Confirmation box after picking file to upload
- GIFs can use the video player - Show real progression for mxc thumbnail loadings
- 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
- Refactoring - Show reason under broken thumbnail icons
- Use a singleton for utils.js - Support m.file thumbnails
- Use HBox for Profile - Generate video thumbnails
- Get rid of all `currentSpacing` stuff - GIFs can use the video player
- Banners - Display GIF static thumbnails while the real GIF is loading
- Composer - Video bug: when media is done playing, clicking on progress slider always
- Try gel for the models and stop being lazy in python 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 - Use a singleton for utils.js
- Pausing uploads doesn't work well with matrix.org - Use HBox for Profile
- Quickly posting with another account leads to sync stop - Get rid of all `currentSpacing` stuff
- CPU usage - Banners
- `code` not colored in room subtitle - Composer
- In the "Leave me" room, "join > Hi > left" aren't combined - Try gel for the models and stop being lazy in python
- 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
- Pressing backspace in composer sometimes doesn't work - Room Sidepane save/load size & keybinds
- 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
- If account not in config anymore, discard ui state last page on startup ## Bug fixes
- Do something when access token is invalid
- Don't store states in delegates - Pausing uploads doesn't work well with matrix.org
- [hr not working](https://bugreports.qt.io/browse/QTBUG-74342) - Quickly posting with another account leads to sync stop
- Terrible performance using `QT_QPA_PLATFORM=wayland-egl`, must use `xcb` - CPU usage
- Quote links color in room subtitles (e.g. "> http://foo.orgA)" ) - `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 - Pressing backspace in composer sometimes doesn't work
- Scrollable popup - Message order isn't preserved when sending a first message in a E2E
- HDrawer snapping room, then while keys are being shared sending one with another account,
- Make theme error/etc text colors more like name colors then sending one with the first account again
- In account settings, display name field text should be colored
- Way to open context menus without a right mouse button
- `smartVerticalFlick()` gradual acceleration
- Choose a better default easing type for animations - If account not in config anymore, discard ui state last page on startup
- Make HListView scrollbars visible - Do something when access token is invalid
- Remove first html lists left margin
- Adapt UI for small heights
- In room creation, click avatar to set the future room's avatar - Don't store states in delegates
- In join room page, show the matching room's avatar when typing - [hr not working](https://bugreports.qt.io/browse/QTBUG-74342)
- In find someone page, show the matching user's avatar when typing - 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 ## Interface
- 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
- EditAccount page: - Scrollable popup
- Device settings - HDrawer snapping
- Multiaccount aliases: - Make theme error/etc text colors more like name colors
- Warn when conflict with another alias - In account settings, display name field text should be colored
- Forbid spaces? - Way to open context menus without a right mouse button
- Add an explanation tooltip - `smartVerticalFlick()` gradual acceleration
- Prevent sending messages with an user not in room
- Support \ escaping
- Accept drag and dropping a picture to set avatar
- Add stuff to room tooltips like last messages - Choose a better default easing type for animations
- Show something when connection is lost or 429s happen - Make HListView scrollbars visible
- "Rejoin" LeftBanner button if room is public - Remove first html lists left margin
- Daybreak color - Adapt UI for small heights
- Conversation breaks: show time of first new msg after break instead of big
blank space
- Sidepane - In room creation, click avatar to set the future room's avatar
- Animate when logging out last account and sidepane turns invisible - In join room page, show the matching room's avatar when typing
- Header back button when reduced - In find someone page, show the matching user's avatar when typing
- Better look when reduced to minimum size
- Server selection - Combine events so they take less space
- Register/Reset for AddAccount page - After combining is implemented, no need to hide profile changes anymore.
- Prevent using an alias if that user is not in the room or no permission - Replies
- Spinner when loading past room events - Messages editing and redaction
- Code highlighting
- Adapt shortcuts flicking speed to font size
- Theming - EditAccount page:
- Bundle fonts - Device settings
- Standard file format, see *~ppy/qml_dict_theme.qml* - Multiaccount aliases:
- https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#creating-a-custom-style - Warn when conflict with another alias
- icons.preferredPack: accept multiple values - Forbid spaces?
- Find icon packs in user data dir - Add an explanation tooltip
- See [Text.fontSizeMode](https://doc.qt.io/qt-5/qml-qtquick-text.html#fontSizeMode-prop) - Prevent sending messages with an user not in room
- Way to round avatar corners to allow box radius - Support \ escaping
- If avatar is set, name color from average color? - Accept drag and dropping a picture to set avatar
- Accent color from background
- Settings page - Add stuff to room tooltips like last messages
- Notifications - Show something when connection is lost or 429s happen
- Opening links with keyboard - "Rejoin" LeftBanner button if room is public
- Better `<pre>` - 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 - Server selection
- E2E - Register/Reset for AddAccount page
- Device verification - Prevent using an alias if that user is not in the room or no permission
- Edit/delete own devices - Spinner when loading past room events
- 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
- Client improvements - Theming
- Refetch profile after manual profile change, don't wait for a room event - 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 - Settings page
- Check if username exists on login screen - Notifications
- [Soft logouts](https://github.com/poljar/matrix-nio/commit/aba10) - Opening links with keyboard
- `pyotherside.atexit()` - Better `<pre>`
- Logout previous session if adding an account that's already connected
- Config file format
- Startup improvements - Custom file picker for Linux (...)
- 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
- Direct chats category ## Backend
- Animate RoomEventDelegate DayBreak apparition
- Live-reloading accounts.json
- nio - Refetch profile after manual profile change, don't wait for a room event
- 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 - Prevent starting multiple client instances, causes problems with E2E DB
- `m.room.aliases` events - Check if username exists on login screen
- MatrixRoom invited members list - [Soft logouts](https://github.com/poljar/matrix-nio/commit/aba10)
- Verify room has correct name when creating direct chat and peer hasn't - `pyotherside.atexit()`
accepted the invite yet - Logout previous session if adding an account that's already connected
- Left room events after client reboot - Config file format
- `org.matrix.room.preview_urls` events
- Support "Empty room (was ...)" after peer left
- Previewing room without joining
- Get content repo config API - Startup improvements
- Add the `resume()` method - 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 - E2E
- Include python dependencies in binary with rcc? - Device verification
- README.md - 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.