briar issueshttps://code.briarproject.org/groups/briar/-/issues2022-02-14T09:08:00Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/267Allow to select and copy text from messages2022-02-14T09:08:00ZNicoAllow to select and copy text from messagesWe may want to implement one or more of the following features:
1. copy selections of text inside one message
2. copy a whole message's content
3. copy text across several messages
1 or 2 should hopefully be easy to do.
Related:
* http...We may want to implement one or more of the following features:
1. copy selections of text inside one message
2. copy a whole message's content
3. copy text across several messages
1 or 2 should hopefully be easy to do.
Related:
* https://code.briarproject.org/briar/briar/-/issues/9Desktop 0.2.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/263Add some start information to chat history2022-02-22T09:53:09ZNicoAdd some start information to chat historyWhile looking at the mockup in #262 I remembered something from our UX meeting on Jan 27th. The idea came up that at the beginning of a chat there could be given some "start information", like
* Bob got introduced to you by Alice
* Your ...While looking at the mockup in #262 I remembered something from our UX meeting on Jan 27th. The idea came up that at the beginning of a chat there could be given some "start information", like
* Bob got introduced to you by Alice
* Your messages are encrypted end-to-end.
* Only you and Bob know of the fact that you're communicating (single-hop social mesh) (?)
See this mockup for an illustration:
![mobile-shell-convergence](https://code.briarproject.org/briar/briar-gtk/uploads/c7c585bd2133b1e37cd70487b7baf6a5/mobile-shell-convergence.png)
Source: https://gitlab.gnome.org/Teams/Design/os-mockups/-/blob/f69fa82f8676582d900af8716522a27ddd77d87f/mobile-shell/mobile-shell-convergence.pnghttps://code.briarproject.org/briar/briar-desktop/-/issues/262Redesign contact list2023-03-08T14:07:24ZNicoRedesign contact listThis is what I had in mind for Briar GTK:
![mobile-shell-convergence](https://code.briarproject.org/briar/briar-gtk/uploads/c7c585bd2133b1e37cd70487b7baf6a5/mobile-shell-convergence.png)
Source: https://gitlab.gnome.org/Teams/Design/os...This is what I had in mind for Briar GTK:
![mobile-shell-convergence](https://code.briarproject.org/briar/briar-gtk/uploads/c7c585bd2133b1e37cd70487b7baf6a5/mobile-shell-convergence.png)
Source: https://gitlab.gnome.org/Teams/Design/os-mockups/-/blob/f69fa82f8676582d900af8716522a27ddd77d87f/mobile-shell/mobile-shell-convergence.png
https://code.briarproject.org/briar/briar-gtk/-/issues/73
In particular I think we should at least show the latest message per chat.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/214It's possible to add one's own briar:// links when appending one or multiple ...2022-01-18T16:18:52ZSebastianIt's possible to add one's own briar:// links when appending one or multiple charsWhen checking wheter the user-provided link is our own link, we use the whole string and compare that to our own link while we really should only compare the valid part found by `HandshakeLinkConstants.LINK_REGEX.matcher(link).find()`When checking wheter the user-provided link is our own link, we use the whole string and compare that to our own link while we really should only compare the valid part found by `HandshakeLinkConstants.LINK_REGEX.matcher(link).find()`Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/213Use system's default theme color by default2022-05-03T16:44:51ZNicoUse system's default theme color by defaultIn !49 we allowed people to switch themes (or rather implemented a more beautiful UI for it), but in #212 we realized that this setting doesn't stick. This made me think that by default we should be using our desktop environment's defaul...In !49 we allowed people to switch themes (or rather implemented a more beautiful UI for it), but in #212 we realized that this setting doesn't stick. This made me think that by default we should be using our desktop environment's default color theme, which is at least possible on GTK with dark/light.https://code.briarproject.org/briar/briar-desktop/-/issues/207Exceptions on UI layer don't make the app crash2022-01-18T18:31:40ZSebastianExceptions on UI layer don't make the app crashAs we noticed with #173, when an exception is thrown in the AWT thread, for example when something goes wrong in response to a button click, it can happen that the UI crashes with an error dialog usually. While the UI is gone after confi...As we noticed with #173, when an exception is thrown in the AWT thread, for example when something goes wrong in response to a button click, it can happen that the UI crashes with an error dialog usually. While the UI is gone after confirming the dialog, it can happen that the briar process lives on. That's kind of bad because the app will still be online, receiving messages without the user noticing. Worse, it will probably not be possible to launch a new briar-desktop afterwards as the Tor-ports will be blocked.
I think it would be best to somehow hook into the graceful shutdown that already seems to exist for the UI somehow (a dialog is shown after all explaining the exception) and shut down the whole app.Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/199Show different placeholder screen if pending contact is selected2022-01-12T11:32:46ZMikolai GütschowShow different placeholder screen if pending contact is selectedCurrently, it looks like the following. It would be best to display some information about what it means for a contact to be pending.
![image](/uploads/451a4a64648af2face680c6ef6330253/image.png)Currently, it looks like the following. It would be best to display some information about what it means for a contact to be pending.
![image](/uploads/451a4a64648af2face680c6ef6330253/image.png)Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/167Work on some old website merge requests to get them merged2023-05-10T14:32:50ZSebastianWork on some old website merge requests to get them mergedDesktop 0.6.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/148Raise translation limit for inclusion in release2022-05-10T20:35:30ZMikolai GütschowRaise translation limit for inclusion in releaseFollow-up of !59
> We shouldn't include every single translation language, since some of them have only a few percent of our strings translated.
>
> I chose 50% as a limit for now, which I also used for GTK iirc. Later on we should prob...Follow-up of !59
> We shouldn't include every single translation language, since some of them have only a few percent of our strings translated.
>
> I chose 50% as a limit for now, which I also used for GTK iirc. Later on we should probably increase this. The Localization Lab people recommend 100% and reviewed, but I find this too harsh, given that it's all run by volunteers. Briar Android is using 80%, iirc, which sounds like a good choice for a first stable release.Desktop 0.4.0https://code.briarproject.org/briar/briar-desktop/-/issues/146Follow/copy Briar UI style more closely2023-01-09T21:29:49ZMikolai GütschowFollow/copy Briar UI style more closelyReference: https://briar-styleguide.netlify.app/design/#typography
Colors, margins and shapes can be derived from Briar Android XML-Views.
Margins should be specified by the theme instead of being hardcoded in UI code.
Typography is tra...Reference: https://briar-styleguide.netlify.app/design/#typography
Colors, margins and shapes can be derived from Briar Android XML-Views.
Margins should be specified by the theme instead of being hardcoded in UI code.
Typography is tracked in #112Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/137First release2022-01-07T14:07:42ZMikolai GütschowFirst releasePrivate chats (almost) feature-complete:
- [x] write/read messages
- [ ] introductions
- [ ] self-destructing messages
- [ ] receive/show images (perhaps not send yet)
- [ ] user avatars
- [ ] delete messages
- [ ] change contact alias
-...Private chats (almost) feature-complete:
- [x] write/read messages
- [ ] introductions
- [ ] self-destructing messages
- [ ] receive/show images (perhaps not send yet)
- [ ] user avatars
- [ ] delete messages
- [ ] change contact alias
- [ ] delete contacts
Supported platform: Linux
Planned release: January, 21sthttps://code.briarproject.org/briar/briar-desktop/-/issues/99Avoid passing individual view models around2022-01-07T21:51:07ZMikolai GütschowAvoid passing individual view models aroundFor now, all view models are injected by Dagger at the start of the application in the top composable and then passed to the individual composable functions that actually need it. This has several disadvantages:
- the composables further...For now, all view models are injected by Dagger at the start of the application in the top composable and then passed to the individual composable functions that actually need it. This has several disadvantages:
- the composables further up the tree have a lot of view models as parameters that are just passed down to other composables that actually need it. Also, adding a new view model adds a new function parameter to all composables up to the root resulting in a lot of unnecessary changes.
- all view models are initialized when the application starts and also start to listen for events, even if the respective screen is not shown (yet)
- there can always only be a single instance of a certain view model (unless we initialize two or more of them in the top composable). That would forbid us to support displaying several chats at the same time in separate windows (the Pidgin (?) way of doing things). That one might not be a big deal, though.
I would propose the following:
- implement a `ViewModelProvider` similar to the one available in Android that could either hold all view models from the application start on (not resolving the third point) or instantiating them on demand
- have a base `ViewModel` class/interface that provides the methods `onInit()` and `onCleared()` where such things as adding/removing the view model from the `eventBus` can be done
- adopt the convention of only instantiating view models within composables called `Screen` (e.g. `MainScreen` for the view model handling the global state, `PrivateMessageScreen` for the contact list view model) and always provide a second composable with the same name that takes the view model as a parameter (allowing for easier testability). The view model should always be instantiated as down in the UI tree as possible and as up in the tree as necessary. `Screen`s could be seen as analog to `Fragment` or `Activity` in the Android world.
- implement a helper composable function called `Screen` that takes a view model class name and does the repetitive process of obtaining the view model from the provider, call `onInit()` and `onCleared()` when appropiate (the compose `DisposableEffect` will come to handy here). Additionally, `Screen` would take a composable function where the view model is available (similar to the `ApplicationScope` that exposes `exitApplication` and is available after `runApplication`).
As a rough sketch, the usage might then look like the following:
```kotlin
@Composable
fun PrivateMessageScreen() = Screen(ContactListViewModel::class) {
PrivateMessageScreen(viewModel)
}
@Composable
fun PrivateMessageScreen(viewModel: ContactListViewModel) {
// actual content using the viewModel
}
```Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/95Implement view model for private chat view2021-12-06T14:25:10ZMikolai GütschowImplement view model for private chat viewDesktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/90Move Briar API calls from @Composables to view models2021-12-06T14:25:10ZMikolai GütschowMove Briar API calls from @Composables to view modelsAs soon as no calls are left, we can remove the `CompositionLocalProvider` and (most of) the `*Manager` injections in `BriarUi`.
This is a follow up of !30 and #78 .As soon as no calls are left, we can remove the `CompositionLocalProvider` and (most of) the `*Manager` injections in `BriarUi`.
This is a follow up of !30 and #78 .Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/87Handle long names in contact list2022-01-11T22:26:24ZMikolai GütschowHandle long names in contact listWhile testing !22 I found this visual glitch for (the actually not so long name) *Joseph Louis Lagrange*:
![image](/uploads/f2e7835605a58050bffd3368a734cdf2/image.png)
We should decide on how this should be handled:
- Should the name be...While testing !22 I found this visual glitch for (the actually not so long name) *Joseph Louis Lagrange*:
![image](/uploads/f2e7835605a58050bffd3368a734cdf2/image.png)
We should decide on how this should be handled:
- Should the name be cut after a given amount of characters to something like *Joseph Louis Lagr...*?
- Should we wrap the name to a second line? (I remember we were advised not to do so in the UX coaching)
- Would we like the name to be shown in a scrolling fashion (like a ticker)?Desktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar/-/issues/2199Use plus icon to add members to private group2022-04-17T11:31:44ZIvanaUse plus icon to add members to private groupOne of the outcomes of the Sponsor6 user survey, which ran in the summer of 2021, is the user's request: "Instead of using the sharing icon to add to the group, there should be a + icon or an option in the three-point menu to add to the ...One of the outcomes of the Sponsor6 user survey, which ran in the summer of 2021, is the user's request: "Instead of using the sharing icon to add to the group, there should be a + icon or an option in the three-point menu to add to the group. The sharing icon should be to give the group link to someone else."
Another user gave the feedback "Invite users at the bottom of the page and float", which may be a request to use a floating action button for adding members.
A third user gave the feedback "Adding a friend with the share button is not appropriate for me, one must be added from the settings section", which may be a request to add members via the member list screen.
A fourth user gave the feedback: "To add an audience, I habitually went to the dot. As a result, it was a little strange for me to use the 'subscribe' icon to 'invite'. The corresponding icon is known as 'subscribe'."https://code.briarproject.org/briar/briar-desktop/-/issues/84Accessibility for Visually Impaired2023-01-09T21:29:49ZpaulAccessibility for Visually Impaired"The 2018 National Health Interview Survey (NHIS) data release established that an estimated 32.2 million adult Americans (or about 13% of all adult Americans) reported they either "have trouble" seeing, even when wearing glasses or cont..."The 2018 National Health Interview Survey (NHIS) data release established that an estimated 32.2 million adult Americans (or about 13% of all adult Americans) reported they either "have trouble" seeing, even when wearing glasses or contact lenses, or that they are blind or unable to see at all." ([source](https://www.afb.org/research-and-initiatives/statistics))
This issue looks to investigate ways we can optimize Briar Desktop to improve accessibility for the visually impaired.
Some initial investigation:
- Our color selection.
- Jetpack Compose tools to help screen readers parse Briar Desktop.
- Jetpack Compose tools to help navigate the UI with keyboard only.Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/82Warn users of potential attack when creating contacts2022-01-20T13:18:02ZNicoWarn users of potential attack when creating contacts@grote or @akwizgran informed me of this potential attack back in the old days of Briar GTK. An attacker might try to find out which contacts a user has, which we try to prevent by implementing the following logic from the Android client...@grote or @akwizgran informed me of this potential attack back in the old days of Briar GTK. An attacker might try to find out which contacts a user has, which we try to prevent by implementing the following logic from the Android client:
https://code.briarproject.org/briar/briar/-/blob/beta-1.2.14/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java#L139
Also see the respective MR at Briar GTK https://code.briarproject.org/briar/briar-gtk/-/merge_requests/97 where I tried to re-implement it, but we should follow the Android's logic because that one got peer reviewed.
Sub task of https://code.briarproject.org/briar/briar-desktop/-/issues/81.
Follow up to https://code.briarproject.org/briar/briar-desktop/-/merge_requests/28.Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/78Code refactoring2021-12-06T14:25:33ZSebastianCode refactoring* Remove subpackage `paul`, move classes elsewhere
* Break apart huge files and move `@Composables` into smaller files* Remove subpackage `paul`, move classes elsewhere
* Break apart huge files and move `@Composables` into smaller filesDesktop 0.1.0https://code.briarproject.org/briar/briar-desktop/-/issues/75Use relative time spans instead of absolute ones2023-08-25T13:33:36ZNicoUse relative time spans instead of absolute oneshttps://code.briarproject.org/briar/briar-desktop/-/merge_requests/23 introduced proper absolute timestamps, this issue is about doing something like "5 min ago".
For Android there's [`DateUtils.html.getRelativeTimeSpanString(long)`](ht...https://code.briarproject.org/briar/briar-desktop/-/merge_requests/23 introduced proper absolute timestamps, this issue is about doing something like "5 min ago".
For Android there's [`DateUtils.html.getRelativeTimeSpanString(long)`](https://developer.android.com/reference/android/text/format/DateUtils.html#getRelativeTimeSpanString%28long%29).Desktop 0.7.0