Compare commits

...

2137 Commits

Author SHA1 Message Date
Kévin Commaille
2a09a76fb0
Upgrade crate dependencies
Just run `cargo update`.
2025-08-11 15:22:48 +02:00
Kévin Commaille
ddc5001a79
Release Fractal 12 2025-08-11 13:35:54 +02:00
Kévin Commaille
ae53630df3
Fix new clippy lints 2025-08-11 13:35:54 +02:00
Alexandre Franke
6f090f3883 Update French translation 2025-08-11 10:53:01 +00:00
Artur S0
b343862f35 Update Russian translation 2025-08-08 12:00:32 +00:00
Anders Jonsson
c7c9d5d974 Update Swedish translation 2025-08-06 18:29:06 +00:00
Kévin Commaille
10ed8358f9
Upgrade ruma and matrix-sdk
Brings in important bug fixes.
2025-08-06 18:40:09 +02:00
Rafael Fontenelle
0be7615056 Update Brazilian Portuguese translation 2025-08-06 01:49:36 +00:00
Ekaterine Papava
a0955e225a Update Georgian translation 2025-08-05 23:20:44 +00:00
Luming Zh
2ae6f75938 Update Chinese (China) translation 2025-08-02 00:10:48 +00:00
Davide Ferracin
420ec4d24e Update Italian translation 2025-08-01 15:53:08 +00:00
Evan Paterakis
7bd9e7fa45 notification-count: center label to background 2025-08-01 11:36:36 +00:00
Martin
e9f6873d8a Update Slovenian translation 2025-08-01 10:38:41 +00:00
Yuri Chornoivan
9dcee3a6ac Update Ukrainian translation 2025-07-31 18:28:41 +00:00
Kévin Commaille
5fb9e981b7
Release Fractal 12.rc 2025-07-31 18:50:36 +02:00
Kévin Commaille
643114867a room-history: Allow to click on sender's name to mention them 2025-07-31 16:13:32 +00:00
Kévin Commaille
879c6acf57 room-details: Warn when upgrading changes the creators of a room 2025-07-31 15:30:17 +00:00
Yuri Chornoivan
cbbab3adda Update Ukrainian translation 2025-07-30 18:56:55 +00:00
Kévin Commaille
87f3c2aff0
room-details: Do no allow to "downgrade" a room 2025-07-30 16:35:13 +02:00
Kévin Commaille
32d80497cf
room-details: Use a custom upgrade dialog 2025-07-30 16:35:12 +02:00
Martin
93061a79a0 Update Slovenian translation 2025-07-29 08:54:12 +00:00
Luming Zh
7d74ca2372 Update Chinese (China) translation 2025-07-29 01:25:07 +00:00
Kévin Commaille
5d2189a6bb
power-level-selection: Add info popover to explain the creator role 2025-07-28 14:00:39 +02:00
Kévin Commaille
d4b92ad765
login: Show offline banner when applicable during initial sync after login 2025-07-28 10:27:18 +02:00
Kévin Commaille
9a1f24ddb9
login: Remove unused LoginPage variant 2025-07-28 10:16:30 +02:00
Kévin Commaille
908f114400
Clarify the source of session restoration errors in logs 2025-07-28 10:06:21 +02:00
Luming Zh
53f35d19ed Update Chinese (China) translation 2025-07-27 00:58:49 +00:00
Martin
77fd709836 Update Slovenian translation 2025-07-26 20:18:48 +00:00
Kévin Commaille
f3d7b6c2e1
utils: Don't auto-enable backups
We want backups to be enabled at the same time as recovery.
2025-07-26 13:42:32 +02:00
Martin
94d2f562b8 Update Slovenian translation 2025-07-24 16:29:16 +00:00
Yuri Chornoivan
b68d4e2ae1 Update Ukrainian translation 2025-07-24 11:35:02 +00:00
Kévin Commaille
8cfc2e1ac7
Upgrade ruma and matrix-sdk
And add support for room version 12.
2025-07-24 12:04:22 +02:00
Martin
36bfd90672 Update Slovenian translation 2025-07-23 11:23:00 +00:00
Luming Zh
dc2618d0f4 Update Chinese (China) translation 2025-07-23 00:21:59 +00:00
Yuri Chornoivan
fa62fc4240 Update Ukrainian translation 2025-07-22 13:53:40 +00:00
Kévin Commaille
d81a70b4c6
utils: Add functions to clean up strings before using them 2025-07-21 17:36:50 +02:00
Kévin Commaille
34957f7282
room-history: Do not send read receipts if the window is not active 2025-07-21 16:14:59 +02:00
Kévin Commaille
98fc1110df
room-details: Support empty list of members with assigned power levels 2025-07-21 09:47:22 +02:00
Kévin Commaille
06cecb946e
window: Avoid showing session page every time that selected session changes
We use different objects for the different stages of initialization of
the session, so the selected item will change several times. However, if
the user switches to another page like the greeter, we don't want to
show the selected session page when it is loaded.

So this separates updating the session in the SessionView, and showing
the proper page for the session. We still show the proper page if we
were showing the loading screen or the SessionView.
2025-07-20 17:19:13 +02:00
Kévin Commaille
86061a7680
sidebar-data: Fix visibility 2025-07-20 16:33:08 +02:00
Kévin Commaille
4584c0b5ec
Move sidebar_data::Selection to utils as FixedSelection
To be able to reuse it.
2025-07-20 16:33:05 +02:00
Kévin Commaille
3673ca15e2
session-list: Always set loading state when setting error 2025-07-20 16:29:37 +02:00
Kévin Commaille
b632397022
app: Get rid of SessionIntentType 2025-07-20 16:29:37 +02:00
Ekaterine Papava
a19bf7d1e2 Update Georgian translation 2025-07-20 02:49:28 +00:00
Kévin Commaille
57ae0ef0c4
Downgrade curve25519-dalek
The current version was yanked.
2025-07-19 17:05:30 +02:00
Kévin Commaille
7f39417349
room-history: Show a banner when there are pending invite requests
And the user can accept or deny it.
2025-07-19 17:05:29 +02:00
Kévin Commaille
4625b5bb97
session: Allow to knock on a room in explore view and room preview 2025-07-19 17:05:29 +02:00
Kévin Commaille
bfcf5550cf
sidebar: Show our invite requests 2025-07-19 17:05:29 +02:00
Kévin Commaille
b672f52bf8
room-details: Allow to change join rule to knock 2025-07-19 17:05:29 +02:00
Kévin Commaille
25f2dc1cc8
components: Add dialog to ask what to do about unsaved changes
To reduce code duplication and be consistent about the wording.
2025-07-19 17:05:29 +02:00
Kévin Commaille
454f3e15ae
room-details: Be consistent about wording around knock feature
Always talk about requesting an invite
2025-07-19 17:05:29 +02:00
Kévin Commaille
83ca3e8a2b
sender-avatar: Remove action to deny invite request
We don't show an avatar for invite requests, so it's very unlikely to
ever appear.
2025-07-19 17:05:29 +02:00
Kévin Commaille
f526ad5d6b
room-details: Show the list of users that knocked on the room 2025-07-19 17:05:29 +02:00
Kévin Commaille
fecf32f3c6
session: Move membership lists to MemberList
Allows to reuse the same list filtered by membership in several places.

We also use an enum that is a subset of Membership for identifying the
lists, allowing to do exhaustive matches, which will catch when new
variants are added.
2025-07-19 17:05:28 +02:00
Kévin Commaille
34ad0aae0f
utils: Allow to change item in SingleItemListModel 2025-07-19 17:05:28 +02:00
Kévin Commaille
f07ee800a8
user-page: Be consistent about wording around knock feature
Always talk about requesting an invite.
2025-07-19 17:05:28 +02:00
Martin
47acd98a6b Update Slovenian translation 2025-07-19 09:24:27 +00:00
Yuri Chornoivan
94b4b5c4b1 Update Ukrainian translation 2025-07-19 06:01:18 +00:00
Luming Zh
99a7fdb9bd Update Chinese (China) translation 2025-07-18 23:38:59 +00:00
Anders Jonsson
c3bb69aaed message-dialogs: Fix typo 2025-07-17 16:30:38 +02:00
Kévin Commaille
0a92b9772a
room-details: Ask to confirm some changes in PermissionsMemberRow
When muting, promoting to the same level as our own user, or demoting
oneself like on the UserPage.
2025-07-17 12:27:45 +02:00
Kévin Commaille
edf6f80adc
room-details: Ask to confirm some changes in PermissionsAddMembersSubpage
When muting or promoting to the same level as our own user, like on the
UserPage.
2025-07-17 12:27:45 +02:00
Kévin Commaille
87406c1278
room-details: Only show members with default PL in view to add custom PLs
It is more consistent with the wording that way.
2025-07-17 12:27:45 +02:00
Kévin Commaille
c5d7b4d6e7
room-details: Fix member selection not toggled when using PermissionsSelectMemberRow checkbox
It only worked when activating the full row.
2025-07-17 12:27:45 +02:00
Kévin Commaille
8c7b452b1f
user-page: Allow to change own power level and ask for confirmation 2025-07-17 12:27:45 +02:00
Kévin Commaille
d3ce661865
Upgrade ruma and matrix-sdk
This upgrade is more about Ruma, to test the main branch that contains
several breaking changes before it is released.
2025-07-14 20:35:41 +02:00
Kévin Commaille
ab2f70a258 build: Remove ffmpeg-full extension
It is not compatible with the 25.08beta freedesktop.org runtime base.
It was replaced by the codecs-extra extension which is auto-downloaded
with the runtime.
2025-07-14 10:33:30 +00:00
Kévin Commaille
12e2c9cbfb
Upgrade matrix-sdk
To the new release.
2025-07-10 16:46:05 +02:00
Aefgh Threenine
431d849bcd Update Thai translation 2025-07-09 16:24:41 +00:00
Anders Jonsson
4319c3160b Update Swedish translation 2025-07-08 16:38:42 +00:00
Kévin Commaille
9299056daa
ci: Upgrade cargo-nextest 2025-07-08 15:09:33 +02:00
Kévin Commaille
81900cdc6d
Upgrade matrix-sdk
And run `cargo update`.
2025-07-08 15:09:33 +02:00
Kévin Commaille
ca1599296c
Update manifest, CI and instructions for 25.08beta runtime base 2025-07-07 18:05:35 +02:00
Kévin Commaille
b4bcb46fae
Port to Rust 2024 2025-06-29 17:44:20 +02:00
Kévin Commaille
591026c65c Upgrade matrix-sdk
And run cargo update.
2025-06-29 14:45:57 +00:00
Kévin Commaille
4b1b3fb12b Upgrade glycin-loaders to 1.2.2 2025-06-29 14:45:57 +00:00
Daniel Rusek
a089732ba2 Update Czech translation 2025-06-26 13:06:25 +00:00
Álvaro Burns
f9b1f23b11 Update Brazilian Portuguese translation 2025-06-26 11:39:40 +00:00
Kévin Commaille
4a65b1cb29
docs: Update Flathub instructions 2025-06-26 11:03:20 +02:00
Kévin Commaille
b31f4ff67b
Release Fractal 12.beta 2025-06-26 09:04:39 +02:00
Luming Zh
938396b500 Update Chinese (China) translation 2025-06-25 11:22:49 +00:00
Martin
1006b9b2b4 Update Slovenian translation 2025-06-24 18:51:50 +00:00
Yuri Chornoivan
1c27842ab3 Update Ukrainian translation 2025-06-24 17:44:43 +00:00
Kévin Commaille
0eec6d8189
room-history: Display the sender of membership change events 2025-06-24 10:01:31 +02:00
Kévin Commaille
3f611f7ca2
message-toolbar: Use the sender of the tombstone event for routing the successor room
We shouldn't use the server name in the room ID, it is supposed to be an
opaque string and the `!localpart:server_name` format might change.
2025-06-21 13:47:34 +02:00
Baxrom Raxmatov
aaf145feb7 Add Uzbek (Latin) translation 2025-06-21 09:02:09 +00:00
David Akopov
3a6628adea
sidebar-section: signal aggregate notification count & highlight changes
Add notification-count, highligh and has-notifications properties to the
sidebar section model and signal on corresponding changes.
Aggregation is done as follows:
  is-read := conjunction_over_all_rooms_in_section(is-read)
  highligh := union_over_rooms_in_section(highligh)
  has-notification := any_over_rooms(has-notifications)
  notification-count := sum_over_rooms_in_section(notification-count)

Functionality of ExpressionList is reused on one of the intermediate
models to populate watches (internally on the underlying model) and signal
change of notification-count or highlight with the room indices.
This implementation recalculates the aggregate expressions via
naive iterations (discarding exactly which room(s)' values  were
changed).

UI state bits are reflected accordingly to consume the signalled changes.

Fixes: #1048
2025-06-20 21:31:33 +04:00
Kévin Commaille
a213ec8467
Release Fractal 11.2 2025-06-10 17:44:19 +02:00
Kévin Commaille
85bcfc74bc
Upgrade matrix-sdk
Use the newly released version.
2025-06-10 14:29:44 +02:00
Rafael Fontenelle
59c6e88311 Update Brazilian Portuguese translation 2025-06-08 01:18:31 +00:00
Luming Zh
37c8490abc Update Chinese (China) translation 2025-05-29 23:14:03 +00:00
Juliano de Souza Camargo
7f687871b7 Update Brazilian Portuguese translation 2025-05-29 12:19:26 +00:00
Yuri Chornoivan
da49563c35 Update Ukrainian translation 2025-05-28 19:34:41 +00:00
Martin
b31d74e8ba Update Slovenian translation 2025-05-28 18:11:52 +00:00
Kévin Commaille
d65fbacac6
room-history: Replace ratio character with colon in timestamps
Apparently using the ratio character can create issues for RTL languages.
2025-05-28 13:05:32 +02:00
Kévin Commaille
58ebb7e3bc
room-history: Add back support for redacted messages
We need it in case of replies to a redacted message.
2025-05-28 10:50:37 +02:00
Kévin Commaille
d025f24928
media-viewer: Allow to show a media without an event ID 2025-05-28 10:34:12 +02:00
Yuri Chornoivan
56a82d7cbf Update Ukrainian translation 2025-05-28 06:14:33 +00:00
Kévin Commaille
655676de7e
sidebar: Allow to mark a room as unread 2025-05-27 11:20:44 +02:00
Ekaterine Papava
44ea6d38ac Update Georgian translation 2025-05-25 01:59:45 +00:00
Luming Zh
e69bc3efaf Update Chinese (China) translation 2025-05-25 00:47:38 +00:00
Yuri Chornoivan
e903be2564 Update Ukrainian translation 2025-05-24 15:41:56 +00:00
Martin
b0dd62a90b Update Slovenian translation 2025-05-23 22:37:09 +00:00
Kévin Commaille
774f4b4690 ci: Fix cargo-sort check 2025-05-23 12:08:11 +00:00
Kévin Commaille
3388795df5 session: Synchronize the media previews safety settings with the Matrix account data
To share the setting between clients.
2025-05-23 12:08:11 +00:00
Kévin Commaille
59b6740ce5 account-settings: Refactor NotificationsPage 2025-05-23 12:08:11 +00:00
Kévin Commaille
4f573e54d4 Upgrade matrix-sdk 2025-05-23 12:08:11 +00:00
Luming Zh
134d271f68 Update Chinese (China) translation 2025-05-23 11:13:55 +00:00
Kévin Commaille
e1452fcda4
invite: Refactor and fix visibility 2025-05-21 12:41:29 +02:00
Kévin Commaille
edac9e3381
room-history: Make sure that mentions respect safety settings
Gets rid of a potential attack factor.
2025-05-21 12:25:04 +02:00
Kévin Commaille
366a602260
Upgrade matrix-sdk dependency 2025-05-20 11:11:28 +02:00
Álvaro Burns
45ee641a78 Update Brazilian Portuguese translation 2025-05-19 11:31:53 +00:00
Daniel Rusek
f7370be6a5 Update Czech translation 2025-05-19 11:26:23 +00:00
Kévin Commaille
2dd845f7e0
ci: Include flatpak template as a project rather than URL
It might get rid of the 429 errors.
2025-05-19 10:06:33 +02:00
Kévin Commaille
8ccb67cb8a
build: Enable frame pointers for Rust modules
It seems to be necessary to build the aarch64 flatpak in CI, and it
doesn't hurt anyway.
2025-05-19 09:55:35 +02:00
Kévin Commaille
0931854b98
Revert "ci: Allow failure of aarch64 jobs"
This reverts commit 69dde233e43179e4515df9c1875805af1642e082.
2025-05-19 09:50:05 +02:00
Sabri Ünal
9697badf22 Update Turkish translation 2025-05-18 16:44:26 +00:00
Martin
679c29069d Update Slovenian translation 2025-05-18 15:53:59 +00:00
Yuri Chornoivan
76b92815b0 Update Ukrainian translation 2025-05-18 15:23:58 +00:00
Kévin Commaille
e5ed751c1f
notifications: Fix notifications for invites
There was a race condition where we would not be able to show the invite
for a room because we didn't have the room yet in the room list.
2025-05-18 12:08:21 +02:00
Kévin Commaille
b84a584995
account-settings: Add safety setting to hide avatars in invites
For consistency, we also hide avatars for invites that were rejected or
retracted, if we manage to find that out for left rooms.
2025-05-18 11:26:02 +02:00
Kévin Commaille
6035b4ee37
misc: Fix new clippy warnings 2025-05-16 18:28:51 +02:00
Álvaro Burns
5bd1122a2b Update Brazilian Portuguese translation 2025-05-16 10:49:43 +00:00
Luming Zh
cc028458bd Update Chinese (China) translation 2025-05-16 09:06:43 +00:00
Kévin Commaille
b9757404e3
Release Fractal 11.1 2025-05-15 10:47:45 +02:00
Ekaterine Papava
ecc9eab92e Update Georgian translation 2025-05-15 03:44:46 +00:00
Martin
6649018303 Update Slovenian translation 2025-05-14 17:31:01 +00:00
Yuri Chornoivan
d7032bf945 Update Ukrainian translation 2025-05-14 13:03:27 +00:00
Kévin Commaille
e5f473d9b6
user-facing-error: Reduce the size of some strings that appear in toasts 2025-05-14 12:00:51 +02:00
Kévin Commaille
ec56f9471c
ci: Allow to interrupt most jobs 2025-05-13 15:15:34 +02:00
Yuri Chornoivan
65531c7870 Update Ukrainian translation 2025-05-13 12:47:33 +00:00
Kévin Commaille
ca387e3261
account-switcher: Make sure to unparent the popover when the button is disposed of
Avoids a warning that occurs sometimes when closing Fractal.
2025-05-13 12:18:54 +02:00
Kévin Commaille
4a5a4b4cde
room-history: Ignore empty inline elements when ellipsizing to a single line 2025-05-13 11:31:29 +02:00
Martin
94d2cdf81d Update Slovenian translation 2025-05-12 20:48:50 +00:00
Kévin Commaille
97e051235d
Upgrade matrix-sdk
And cargo update other crates.
2025-05-12 19:09:10 +02:00
Kévin Commaille
c85d6462b5
room-history: Update strings for creation event 2025-05-12 13:45:38 +02:00
Kévin Commaille
893f795228
room-history: Remove banner for tombstoned rooms
Instead we offer to join or view the new room instead of showing the
composer.

This also makes sure that the state of the Join/View button is updated
depending on the joining state of the successor.
2025-05-12 13:45:38 +02:00
Kévin Commaille
9f426e2c6d
message-toolbar: Fix style of text when user cannot send a message
Works better on narrow screens.
2025-05-12 13:45:38 +02:00
Kévin Commaille
8b3b816005
room-history: Do not show room tombstone event in history
There is already a banner for this so when both are visible it looks
weird to have a duplicate.
2025-05-12 13:45:38 +02:00
Kévin Commaille
41fb45cd90
explore: Fix and refactor
Use a GListStore for the list of rooms, and RemoteRoom to represent the
rooms.

Fix cleaning server popover when switching between sessions, and make
sure that triggering a search only happens when the view is mapped.
2025-05-12 12:28:46 +02:00
Kévin Commaille
793907383a room-preview-dialog: Update button according to current state of room
It was only updated depending on what happened in the dialog. Now it
also updates depending on what happens in the room list.
2025-05-11 09:35:27 +00:00
Kévin Commaille
76b3559dfe room-list: Rename room_list_metainfo file 2025-05-11 09:35:27 +00:00
Kévin Commaille
e51a8d73aa room-list: Rename pending rooms to joining rooms
"Pending" was not very clear about what it meant for a room to be in
that list.
2025-05-11 09:35:27 +00:00
Philipp Bartsch
8e2118dc67 media-viewer: halign the right-click context menu
Other right-click context menus are not centered on the cursor.
2025-05-10 14:25:58 +02:00
Kévin Commaille
cc1e231297
message-toolbar: Fix inserting mention before another mention 2025-05-09 10:19:55 +02:00
Kévin Commaille
7cf3823bea
room-history: Increase padding of SenderAvatar
Makes the hover effect around the avatar bigger, which makes it more
obvious that it behaves like a button.
2025-05-09 09:51:34 +02:00
Kévin Commaille
338c732e5f
event: Do not count unsent events as unread or as activity 2025-05-08 09:42:41 +02:00
Kévin Commaille
c646ca611b
account-settings: Fix renamed page name 2025-05-07 10:56:54 +02:00
Kévin Commaille
b79ddd453d
overlapping-avatars: Remove unnecessary debug logging 2025-05-07 10:28:51 +02:00
Kévin Commaille
5158e408d7
utils: Simplify truncate_end_whitespaces
Work with char_indices, it allows us to compute the index after the char
easily.
2025-05-07 10:25:34 +02:00
Kévin Commaille
a0aec0b176
room-history: Remove whitespaces before newlines in HTML messages 2025-05-07 10:25:00 +02:00
Kévin Commaille
0bf579e4b0
room-history: Fix jittery media during transition from loading to showing the media 2025-05-07 10:01:13 +02:00
Kévin Commaille
75d41ee146
overlapping-avatars: Use GtkSliceListModel to limit the number of avatars
That way we don't need our custom code to cap the number of avatars that
we present, which seems to have an error.
2025-05-06 18:03:19 +02:00
Kévin Commaille
d161a58424
ci: Don't build unnecessary Flatpak modules when they are not needed 2025-05-05 15:17:32 +02:00
Kévin Commaille
e76cf4097f utils: Re-enable event cache storage 2025-05-05 11:00:59 +00:00
Kévin Commaille
0092ae1e30 Upgrade matrix-sdk 2025-05-05 11:00:59 +00:00
Kévin Commaille
0ed68fd993 docs: Update Flathub instructions in RELEASING.md 2025-05-05 09:53:39 +00:00
Kévin Commaille
69dde233e4
ci: Allow failure of aarch64 jobs
There are issues currently with the only flatpak-arch64 CI runner that
prevents us from merging anything.

This means that the nightly aarch64 Flatpak will not be updated as long
as the problem is not fixed.
2025-05-05 11:25:10 +02:00
Kévin Commaille
7f3fe72503
camera: Fix crash in LinuxCamera::has_cameras()
`timeout` needs to be called in an async block to make the future "lazy",
so that it is executed on the tokio runtime.
2025-05-05 11:11:08 +02:00
Jiri Grönroos
0b5809b07d Update Finnish translation 2025-05-04 19:37:05 +00:00
Kévin Commaille
ebd7d029cf Release Fractal 11 2025-05-02 12:57:09 +00:00
Alexandre Franke
04c1df671d Update French translation 2025-05-01 09:04:40 +00:00
Kévin Commaille
862fc14744
room-history: Show focus ring around visual media 2025-04-28 15:53:20 +02:00
Kévin Commaille
eeff96e1db
room-history: Remove whitespaces at the beginning and end of HTML elements
To have the same behavior as in browsers.
2025-04-28 13:31:48 +02:00
Kévin Commaille
eea9e9122e
room-history: Be consistent about compact visual content activation
It was already not possible with the mouse, but there was still a hover
effect, and the key bindings where still working.
2025-04-28 12:27:23 +02:00
Kévin Commaille
537d31521b
utils: Replace remove_newlines with collapse_whitespace
In HTML, contiguous whitespaces must be replaced by a single space, not
removed.
2025-04-25 12:06:48 +02:00
Kévin Commaille
73989239b9
sidebar-data: Fix visibility 2025-04-25 10:30:08 +02:00
Kévin Commaille
67a12518bd
room-history: Add spaces instead of newlines in topic 2025-04-25 10:06:12 +02:00
Kévin Commaille
0cc9ed3ae9
user: Refactor and clean up 2025-04-25 09:50:46 +02:00
Kévin Commaille
72c44056b2
utils: Make data_dir_path a method of DataType
It reduces the necessary imports.
2025-04-25 09:20:44 +02:00
Kévin Commaille
5891f28548
utils: Remove timeout_future
Use the function provided by tokio instead.
2025-04-25 09:15:12 +02:00
Kévin Commaille
efe9189d76
session: Cache room and user profile in memory
Reduces the number of requests to the homeserver.
2025-04-24 15:31:00 +02:00
Kévin Commaille
108174e040
session: Sleep between failed sync attempts 2025-04-24 09:40:39 +02:00
Kévin Commaille
782889079f
room-history: Edit latest message when pressing the up key in an empty composer 2025-04-23 12:49:18 +02:00
Kévin Commaille
de4772bf1e
message-toolbar: Do not allow to send message with only whitespace 2025-04-23 12:49:18 +02:00
Kévin Commaille
30269e7dde
message-toolbar: Capture key presses even if CapsLock is enabled 2025-04-23 12:49:18 +02:00
Kévin Commaille
828fa2e91d window: Show button to open About dialog on error page 2025-04-23 08:30:28 +00:00
Artur S0
39cb8ca758 Update Russian translation 2025-04-22 15:20:15 +00:00
Kévin Commaille
d60117236f
resources: Update SVG to use Adwaita Sans font 2025-04-22 13:05:52 +02:00
Kévin Commaille
4b30e5f6f2
room-history: Add context menu action on invites to be able to revoke them 2025-04-22 12:44:20 +02:00
Kévin Commaille
22a6f63230
room-details: Refactor code for extra items in the list of joined members
Fixes bug where they would not appear anymore.
2025-04-22 11:43:16 +02:00
Kévin Commaille
b7b309f1d4
room-history: Only show timestamp when too much time has passed between events
Instead of the full header with name and avatar
2025-04-22 10:13:23 +02:00
Kévin Commaille
64bf58e2ea
timeline: Show event header again if too much time has passed since previous event 2025-04-21 14:17:10 +02:00
Kévin Commaille
5ca1b6a3e7
session-view: Do not center ScaleRevealer
It allows text to take as much space as it wants instead of its minimum
size.
2025-04-21 12:53:08 +02:00
Kévin Commaille
6813a4c98e
components: Reduce minimal height of PillSearchEntry
Since there have been measuring fixes in GTK and it doesn't grow
excessively anymore when we insert a pill.
2025-04-21 12:05:27 +02:00
Kévin Commaille
09e3ec218e
room-details: Rename invite-search-results class
Since it is not only used in the invite subpage.
2025-04-21 11:59:44 +02:00
Kévin Commaille
2122882f37
room-details: Make sure search entry is focused when opening subpage and it is the main widget 2025-04-21 11:55:01 +02:00
Kévin Commaille
21b5cd056e
room-history: Make sure there is enough space for overlays on small media 2025-04-21 10:04:48 +02:00
Kévin Commaille
97a528c5d3
account-settings: Always disconnect session via account management URL when it is available
A homeserver that supports the OAuth 2.0 API doesn't allow to disconnect
a session via the Matrix API, even if the session was connected before
the move to the OAuth 2.0 API.
2025-04-21 09:28:59 +02:00
Yuri Chornoivan
bca6fd7f67 Update Ukrainian translation 2025-04-20 12:53:57 +00:00
Kévin Commaille
5307cb1fe0
notifications: Truncate body if it is too long
This avoids performance issues with GNOME Shell.
2025-04-20 12:27:05 +02:00
Kévin Commaille
21b6e3b74b
room-history: Fix enabling and disabling copy-image action
We now track all the way down if there is currently a texture and
update whenever the texture is added/removed.

This prevents a race condition when the image is loaded before the child
is added to its parent and works with showing and hiding media previews
too.
2025-04-20 11:04:54 +02:00
Kévin Commaille
426b99ec73
utils: Add extension trait for reusing child widget
There would be less duplication if Rust allowed generic implementations
with different bounds. Oh well…
2025-04-20 09:18:58 +02:00
Ekaterine Papava
b5ef87f99f Update Georgian translation 2025-04-20 02:42:51 +00:00
Kévin Commaille
57941187dd
utils: Fix loading animated images in encrypted rooms 2025-04-19 15:03:32 +02:00
Kévin Commaille
10776c0f52
room-details: Respect media previews safety setting for media history viewer
Do not show the previews if they are not shown in the room history.

This also adds support for blurhashes.
2025-04-19 14:56:09 +02:00
Kévin Commaille
5ea7f82c2f
room-history: Add support for Blurhashes
It is displayed while the media is being downloaded, or instead of the
preview if the preview is hidden.
2025-04-19 13:13:15 +02:00
Kévin Commaille
5ef500e916
build: Disable grass submodules
It seems that they are only necessary for some tests, that we don't run.
2025-04-18 15:30:22 +02:00
Kévin Commaille
5c774ceccc
build: Properly clean up grass
This is the right way, removing all files generated by the module.
2025-04-18 13:32:47 +02:00
Kévin Commaille
16661287c3
utils: Don't send items-changed signal for new groups in GroupingListModel
Sending the items-changed signal for groups after signalling that the
group was added results in duplicates for APIs that only care about that
signal, not about the actual number of items.
2025-04-18 13:32:47 +02:00
Anders Jonsson
c8015d121d Update Swedish translation 2025-04-17 15:30:33 +00:00
Kévin Commaille
8a88b7fb07
build: Properly clean up grass 2025-04-17 16:31:30 +02:00
Daniel Rusek
cebd738569 Update Czech translation 2025-04-17 13:06:13 +00:00
Luming Zh
71e4f016dd Update Chinese (China) translation 2025-04-17 10:47:13 +00:00
Yuri Chornoivan
6616969582 Update Ukrainian translation 2025-04-17 10:14:18 +00:00
Kévin Commaille
c5325049f6
Release Fractal 11.rc 2025-04-17 10:59:31 +02:00
Kévin Commaille
b7c45229d0
flatpak: Properly clean up grass 2025-04-17 09:45:48 +02:00
Martin
8a7e0fe8ff Update Slovenian translation 2025-04-17 06:29:14 +00:00
Kévin Commaille
cb6c0ecffe room-history: Fix justification of text in media preview placeholder 2025-04-16 20:08:04 +00:00
Kévin Commaille
865733b151 Upgrade glycin 2025-04-16 20:08:04 +00:00
Álvaro Burns
67f6808f6d Update Brazilian Portuguese translation 2025-04-16 20:00:12 +00:00
Kévin Commaille
e0a7eb4cd1
room-history: Group contiguous state events
They are replaced by an item that shows the count of state rows that
are hidden. This item can be expanded to show all the hidden state rows.
2025-04-16 18:12:06 +02:00
Kévin Commaille
316e7296e4
misc: Fixes
Small unrelated fixes
2025-04-16 15:56:19 +02:00
Kévin Commaille
da2e81fbdb
timeline: Clean up TimelineItem API
Remove the `selectable` property which is not used, and move properties
about the header to Event, which is the only child type using it.
2025-04-16 15:33:00 +02:00
Kévin Commaille
4372f80a6b
room-history: Replace ItemRow by more specific widgets
It is now basically the new EventRow, since only events have a context
menu.

All the widgets that can be direct children of GtkListItem use the
`room-history-row` class for CSS styling.
2025-04-16 15:33:00 +02:00
Kévin Commaille
93ccda449f
utils: Rename DummyObject to PlaceholderObject
"dummy" can be viewed as offensive
2025-04-16 15:33:00 +02:00
Yuri Chornoivan
9396a8b036 Update Ukrainian translation 2025-04-15 17:38:20 +00:00
Kévin Commaille
213b5bd5dd account-settings: Add safety setting to choose which rooms should show media previews
It is a global choice between all rooms, only private rooms, or no
rooms.
2025-04-15 12:00:59 +00:00
Daniel Rusek
d29766fad5 Update Czech translation 2025-04-15 11:20:39 +00:00
Yuri Chornoivan
930ab34755 Update Ukrainian translation 2025-04-15 10:11:02 +00:00
Kévin Commaille
25c79797d1
account-settings: Reorganize
The main goal here is to move safety-related settings to a new tab so
we can add more in the future.

Since we do not want more tabs, we have to:

- Move the sessions to a subpage accessible with a button in the
"General" tab. While we are here, we reorder most of this tab.
- Move the settings that were in the "Privacy" section of the "Security"
tab to a new "Safety" tab.
- Rename the "Security" tab to "Encryption", to avoid confusion between
"Security" and "Safety".
2025-04-14 18:08:16 +02:00
Daniel Rusek
f07d350628 Update Czech translation 2025-04-13 11:14:37 +00:00
Kévin Commaille
5c9f9a2aff
Upgrade protobuf-c
Use new release.
2025-04-11 12:36:27 +02:00
Kévin Commaille
69da78094c
matrix: Disable event cache storage 2025-04-11 12:15:03 +02:00
Kévin Commaille
163fe968f2
Upgrade matrix-sdk
Use new release
2025-04-11 12:10:52 +02:00
Álvaro Burns
d702e0bb56 Update Brazilian Portuguese translation 2025-04-09 12:44:19 +00:00
Kévin Commaille
2c66f77be7
notifications: Use same algorithm as libadwaita to find initials
To avoid avatar discrepancies between the window and the notifications.
2025-04-08 17:30:30 +02:00
Kévin Commaille
15f21d1467
timeline: Filter timeline start item if we have room create event
The code was removed when the SDK was updated recently, because the SDK
now provides the timeline start item, so the logic had to change. This
re-adds the old code and adapts it to filter the SDK items.
2025-04-08 16:42:13 +02:00
Kévin Commaille
d870c1497d
misc: Use SingleItemListModel where possible
Instead of GListStore.
2025-04-08 16:03:37 +02:00
Ekaterine Papava
7a1d8ffa19 Update Georgian translation 2025-04-08 02:38:26 +00:00
Kévin Commaille
a2cc7999c3
verification: Refactor and clean up 2025-04-07 16:19:10 +02:00
Kévin Commaille
8e623c55c4
notifications: Refactor and clean up
Fixes a regression where clicking on notifications would not open the
app anymore.
2025-04-07 15:40:42 +02:00
Kévin Commaille
834a06612a
Upgrade crates
Gets rid of tokio advisory
2025-04-07 14:01:35 +02:00
Kévin Commaille
d63a96c509
utils: Allow to get the JoinHandle of the spawn! macro
That way the result of the task can be `.await`ed if wanted.
2025-04-06 12:10:11 +02:00
Kévin Commaille
3dc3333d99
Bump Rust version
To match the version from the matrix-sdk crates.
2025-04-06 12:10:10 +02:00
Kévin Commaille
c46404cbbf
utils: Refactor toast macro
Simplify the rules for using the macro:

- The message must always implement `AsRef<str>`,
- The variables values must implement `ToString`,
- Trailing commas are always optional.

Use functions for code that doesn't actually need to be in the macro,
it allows to have linting of the code.
2025-04-06 12:10:10 +02:00
Kévin Commaille
b2dd3acd08
system-settings: Refactor 2025-04-06 12:10:10 +02:00
Kévin Commaille
da8fb3b112
room-details: Refactor and clean up 2025-04-06 12:10:10 +02:00
Kévin Commaille
065e139126
utils: Refactor and clean up 2025-04-06 12:10:10 +02:00
Kévin Commaille
25b7b1603b
remote-room: Refactor and clean up 2025-04-06 12:10:10 +02:00
Kévin Commaille
3a6416f1b3
failed-session: Refactor 2025-04-06 12:10:10 +02:00
Kévin Commaille
194beff585
account-settings: Refactor and clean up 2025-04-06 12:10:10 +02:00
Yuri Chornoivan
3d0c9a78e7 Update Ukrainian translation 2025-04-06 06:52:04 +00:00
Martin
77d1c8a846 Update Slovenian translation 2025-04-06 06:45:42 +00:00
Luming Zh
b7eaa606bc Update Chinese (China) translation 2025-04-06 03:16:26 +00:00
Kévin Commaille
b577acb584
Add support for logging in with the OAuth 2.0 API 2025-04-05 20:28:26 +02:00
Kévin Commaille
9f9b0129f0
Upgrade crate dependencies
To get rid of the cargo-deny advisory.
2025-04-05 19:38:15 +02:00
Martin
c1a669a9a2 Update Slovenian translation 2025-04-05 16:30:42 +00:00
Yuri Chornoivan
14edc8d9fa Update Ukrainian translation 2025-04-05 14:42:18 +00:00
Titouan Real
41ab799c37 user-session-page: Fix toast string 2025-04-05 07:00:21 +00:00
Titouan Real
d7b79251e1 general: Remove debug repr in error log 2025-04-05 07:00:21 +00:00
Titouan Real
d427026b5b user-session-page: Allow the user to set the display name 2025-04-05 07:00:21 +00:00
Titouan Real
49f2f71e61 misc: Fix new clippy lint 2025-04-04 22:26:30 +02:00
Titouan Real
8af7a922e3 Address RUSTSEC-2025-0022
https://rustsec.org/advisories/RUSTSEC-2025-0022
2025-04-04 22:22:26 +02:00
Kévin Commaille
a263904386
explore: Adapt header if the window is too narrow
If the window is too narrow, the search entry moves below the servers
button.
2025-04-01 15:30:54 +02:00
Kévin Commaille
e0f8bd5c28
explore: Refactor and clean up 2025-04-01 12:35:39 +02:00
Kévin Commaille
8a78a7a3bf Revert "utils: Do not enable event cache storage"
This reverts commit 37fc796c9ce979cb0c23876be9425322df10024b.
2025-03-31 09:06:35 +00:00
Kévin Commaille
5c66a39c0c build: Clean up flatpak manifest 2025-03-31 09:06:35 +00:00
Kévin Commaille
48f569f327 account-settings: Use SDK's OAuth methods rather than implementing our own 2025-03-31 09:06:35 +00:00
Kévin Commaille
a137928496 Upgrade matrix-sdk 2025-03-31 09:06:35 +00:00
Artur S0
8285bc794b Update Russian translation 2025-03-30 08:40:46 +00:00
Brage Fuglseth
fa51da6393 Update Norwegian Bokmål translation 2025-03-29 17:24:31 +00:00
Daniel Rusek
e708570703 Update Czech translation 2025-03-28 23:02:44 +00:00
Álvaro Burns
d63d5c229b Update Brazilian Portuguese translation 2025-03-28 12:42:43 +00:00
Kévin Commaille
9566d14940
join-room-dialog: Rename to RoomPreviewDialog 2025-03-27 16:29:04 +01:00
Kévin Commaille
121219e539
create-dm-dialog: Rename to CreateDirectChatDialog, refactor and clean up 2025-03-27 16:29:04 +01:00
Kévin Commaille
2c84f96d46
room-creation: Rename to CreateRoomDialog, refactor and clean up 2025-03-27 16:29:04 +01:00
Kévin Commaille
a0fb433fd2
room-list: Refactor and clean up 2025-03-27 16:29:04 +01:00
Kévin Commaille
8eeb955746
window: Refactor and clean up 2025-03-27 16:29:04 +01:00
Kévin Commaille
fba0195977
application: Refactor 2025-03-27 16:29:04 +01:00
Kévin Commaille
d78a59dfed
application: Simplify intents 2025-03-27 16:29:04 +01:00
Kévin Commaille
e7727a4b82
session-view: Refactor and clean up 2025-03-27 11:04:26 +01:00
Kévin Commaille
f513aa5f8b
Release Fractal 11.beta 2025-03-27 09:05:25 +01:00
Kévin Commaille
ed66251c10
session-view: Fix focus behavior when selected item in sidebar changed
Make sure to always focus a widget in the visible page if possible.
2025-03-26 18:54:56 +01:00
Kévin Commaille
7b425eef0e
content: Refactor 2025-03-26 18:54:56 +01:00
Kévin Commaille
2a5da4b12e
event-details-dialog: Add button to open sender profile instead of copying the user ID 2025-03-26 18:54:55 +01:00
Kévin Commaille
2e1bfefde6
timeline: Show sender for unable to decrypt events 2025-03-26 15:44:27 +01:00
Kévin Commaille
cb921ac21e
window: Make sure offline banner is at the top of loading screen 2025-03-26 15:41:18 +01:00
Kévin Commaille
37fc796c9c utils: Do not enable event cache storage
It still has issues that we don't want to have in the beta
2025-03-26 10:36:53 +00:00
Kévin Commaille
384a80afbb Upgrade matrix-sdk 2025-03-26 10:36:53 +00:00
Luming Zh
72ea4095c9 Update Chinese (China) translation 2025-03-26 10:07:02 +00:00
Martin
eab4d059f1 Update Slovenian translation 2025-03-25 22:03:27 +00:00
Kévin Commaille
b57f072c22 session: Log the session ID 2025-03-25 21:21:56 +00:00
Kévin Commaille
b1050a555a session: Make sure a single network check per session is running at a time
If there are a lot of network state changes, we can have several
requests at once. The first will succeed but the other ones will timeout
and we will end up offline although there is nothing wrong with the
network.

To prevent that, we use a Mutex so only one requests is made at a time.

We also schedule another check if the network is fine but the server is
unreachable.
2025-03-25 21:21:56 +00:00
Yuri Chornoivan
73d9a142a8 Update Ukrainian translation 2025-03-25 21:05:23 +00:00
Kévin Commaille
be97fb5d03
identity-verification-view: Use AdwWrapBox
When there are 2 buttons to accept or cancel, use AdwWrapBox to show
them next to each other or one on top of the other, depending on the
available space.
2025-03-25 16:57:16 +01:00
Kévin Commaille
ad8d43667e
auth-dialog: Refactor to keep the dialog open until all stages are done
This is now an AdwDialog that look like an AlertDialog, but with a
GtkStack to switch between the different stages.

It also supports the OAuth 2.0 cross-signing reset stage provided by the
SDK.
2025-03-25 16:04:08 +01:00
Kévin Commaille
c55e39a640
Revert "Downgrade oo7"
This reverts commit 2f107332fd8e537284d9db0637be0c09e2aa6aa4.
2025-03-21 16:56:04 +01:00
Kévin Commaille
cd1b8419dc
Upgrade crate dependencies 2025-03-21 16:53:56 +01:00
Alexandre Franke
af780758e9 Port to libadwaita 1.7 2025-03-20 15:27:41 +01:00
Adrien Plazas
dea4ca177a window: Correctly center a label 2025-03-20 09:06:22 +01:00
Kévin Commaille
a7d41b9f99 ci: Bump GNOME stable version
Use GNOME 48
2025-03-19 17:18:52 +00:00
Harry Bond
aabae3d500 account-switcher: Make the account-switcher button circular 2025-03-19 15:59:14 +00:00
Kévin Commaille
499f9f9370
Upgrade dependencies 2025-03-19 13:19:43 +01:00
Artur S0
54b4540d32 Update Russian translation 2025-03-14 11:29:21 +00:00
Kévin Commaille
5a1cc6497e
Upgrade matrix-sdk 2025-03-14 10:07:15 +01:00
Álvaro Burns
03d27d222d Update Brazilian Portuguese translation 2025-03-11 23:02:32 +00:00
Kévin Commaille
694a07bfec
Upgrade matrix-sdk 2025-03-11 17:43:55 +01:00
Kévin Commaille
84b5d8f50e
ci: Ignore new advisory 2025-03-11 17:43:33 +01:00
Álvaro Burns
b509d80b9f Update Brazilian Portuguese translation 2025-03-11 12:05:56 +00:00
Kévin Commaille
2941169b80
timeline: Add TRACE level log for timeline initial items 2025-03-10 14:41:21 +01:00
Kévin Commaille
33edfe65cf
Upgrade matrix-sdk 2025-03-10 12:54:59 +01:00
Kévin Commaille
6b8c6db53d
Revert "ci: Use a previous commit of rust-nightly for building docs"
This reverts commit 8cc9b6c705f6d8908a2596ef617a0aedf569cc03.
2025-03-09 12:22:59 +01:00
Titouan Real
9ea87bd5a3 misc: Fix new clippy lint 2025-03-09 09:42:55 +00:00
Martin
5aefc3601e Update Slovenian translation 2025-03-09 09:12:49 +00:00
Ekaterine Papava
901690e77f Update Georgian translation 2025-03-09 03:46:50 +00:00
Luming Zh
c58781521d Update Chinese (China) translation 2025-03-09 03:35:33 +00:00
Yuri Chornoivan
32d4dfdaf8 Update Ukrainian translation 2025-03-08 20:31:07 +00:00
Jiri Grönroos
91d66c6654 Update Finnish translation 2025-03-08 20:29:47 +00:00
Titouan Real
10d3c7ec8d user-session: Fix last_seen_datetime_string doc 2025-03-08 18:08:12 +01:00
Titouan Real
4b846fd9d7 user-sessions-page: Redesign 2025-03-08 10:46:33 +00:00
Kévin Commaille
6d383f0a9b
ci: Silence new advisories 2025-03-08 11:10:36 +01:00
Alexandre Franke
126a5daa53 issues: features are better discussed before filing 2025-03-07 14:48:31 +01:00
Alexandre Franke
cc1062b423 issues: make it clear what is supported 2025-03-07 10:54:37 +00:00
Kévin Commaille
2f107332fd
Downgrade oo7
Until we find a solution for the current problem.
2025-03-07 11:05:28 +01:00
Kévin Commaille
cdeee6bffb
camera: Fix unimplemented module imports 2025-03-06 11:43:41 +01:00
Kévin Commaille
8126ce3a40
secret: Fix unimplemented module imports 2025-03-06 11:42:56 +01:00
Kévin Commaille
41efd8b809
location: Use a trait for API implementations instead of GObject subclasses 2025-03-06 11:38:01 +01:00
Kévin Commaille
c2253f2507
Upgrade crate dependencies
In particular upgrade oo7 to 0.4.1 to have an extra log for the current
error.
2025-03-05 14:35:37 +01:00
Kévin Commaille
5564609c99 Upgrade matrix-sdk 2025-03-05 12:00:51 +00:00
Andika Triwidada
be8c021c7f Update Indonesian translation 2025-03-05 11:17:58 +00:00
Artur S0
e3e5a2bf33 Update Russian translation 2025-03-05 09:16:01 +00:00
Kévin Commaille
8cc9b6c705
ci: Use a previous commit of rust-nightly for building docs
There is a regression in the latest commit that prevents the
dependencies from building.
2025-03-02 20:31:18 +01:00
Kévin Commaille
d8cc3eed82
account-settings: Update the items in UserSessionsList rather than replacing them 2025-03-02 18:23:44 +01:00
Brage Fuglseth
95a37306ff Update Norwegian Bokmål translation 2025-03-02 16:23:03 +00:00
Kévin Commaille
d5cbeeef99
Upgrade glycin 2025-03-01 11:49:06 +01:00
Álvaro Burns
d726cbc5a9 Update Brazilian Portuguese translation 2025-02-28 15:21:18 +00:00
Kévin Commaille
c51971f37c
Upgrade matrix-sdk 2025-02-28 13:51:59 +01:00
Kévin Commaille
7c8e4b2577
room: Count our own user's membership changes as activity
That way freshly joined or newly created rooms are at the top of the
list.
2025-02-28 13:34:25 +01:00
Kévin Commaille
0fb493674a timeline: Add TRACE level logs for item changes
To debug an issue with missing items
2025-02-27 14:36:41 +00:00
Kévin Commaille
2cafa29b92 Upgrade matrix-sdk 2025-02-27 14:36:41 +00:00
Titouan Real
7911dd2134 user-sessions-page: React to device disconnections
When a device is disconnected, the server sends us an empty
`DeviceUpdates`. In this case, we need to reload the sessions list.
2025-02-24 16:14:29 +01:00
Kévin Commaille
2b8276c416
secret: Create data directory before storing tokens 2025-02-23 13:48:43 +01:00
Andika Triwidada
b4224653c9 Update Indonesian translation 2025-02-22 11:32:22 +00:00
Martin
6b04bbcf93 Update Slovenian translation 2025-02-22 10:10:54 +00:00
Luming Zh
c0620fbafb Update Chinese (China) translation 2025-02-22 00:09:24 +00:00
Yuri Chornoivan
986491fcaa Update Ukrainian translation 2025-02-21 18:53:13 +00:00
Kévin Commaille
67362776c6
misc: Fix new clippy lints 2025-02-21 11:08:43 +01:00
Kévin Commaille
5fff035bff
session: Handle refreshing tokens 2025-02-20 14:38:21 +01:00
Kévin Commaille
8a6b71e496
secret: Store tokens in a separate file
When we switch to supporting OAuth 2.0, the tokens will need to be
refreshed often. To avoid issues where the secret backend might stop
responding, we store them encrypted in a separate file. The secret
backend now only stores the passphrase.
2025-02-20 13:37:16 +01:00
Kévin Commaille
1d69e8282b
secret: Add the SecretExt trait to implement by backends 2025-02-19 17:27:38 +01:00
Kévin Commaille
3736e2782d
secret: Use SampleString trait
The code looks cleaner like that.
2025-02-19 16:50:56 +01:00
Kévin Commaille
a37e63aecc
Upgrade crate dependencies 2025-02-19 15:19:06 +01:00
Artur S0
8471160d23 Update Russian translation 2025-02-17 13:06:16 +00:00
Aefgh Threenine
2f9908fd07 Update Thai translation 2025-02-17 04:47:56 +00:00
Sabri Ünal
8dc5668ff6 Update Turkish translation 2025-02-16 18:19:07 +00:00
Rafael Fontenelle
df23a0ec3a Update Brazilian Portuguese translation 2025-02-14 01:36:51 +00:00
Ekaterine Papava
49f2ab6677 Update Georgian translation 2025-02-13 04:25:24 +00:00
Kévin Commaille
5f48f0f973
session: Set up periodic media cache cleanups
Avoids to have it grow indefinitely and gets rid of old media.
2025-02-11 12:18:43 +01:00
Kévin Commaille
a005dfea72
chore: Upgrade matrix-sdk 2025-02-11 12:18:43 +01:00
Kévin Commaille
30a764b4e3 room: Rename timeline property to live-timeline 2025-02-10 16:25:14 +00:00
Kévin Commaille
14ec802dfd room-history: Use Timeline as source of data rather than room 2025-02-10 16:25:14 +00:00
Kévin Commaille
ca18d920c1 timeline-item: Add a property to access the Timeline of the item 2025-02-10 16:25:14 +00:00
Kévin Commaille
229a5a1d31 timeline-diff-minimizer: Rename and use a custom trait for timeline items 2025-02-10 16:25:14 +00:00
Kévin Commaille
56d395581b timeline: Prepare support for forward paginating
Until now we assumed that loading events always loaded older events.
If we want to support opening the room history at an arbitrary event,
we need to be able to load newer events too.

This refactors code to clarify that we are currently loading older
events.
2025-02-10 16:25:14 +00:00
Kévin Commaille
b67d763dea
Release Fractal 10.1
This version backports the fixes to the regressions introduced in
Fractal 10.
2025-02-10 17:19:07 +01:00
Kévin Commaille
e9b4ffa5b0 ci: Check Rust dependencies with cargo-deny 2025-02-10 12:12:56 +00:00
Luming Zh
cedc6fc539 Update Chinese (China) translation 2025-02-10 10:57:40 +00:00
Rafael Fontenelle
6246535d5b Update Brazilian Portuguese translation 2025-02-09 05:03:34 +00:00
Martin
a22d09af91 Update Slovenian translation 2025-02-08 10:49:11 +00:00
Yuri Chornoivan
42c8bd045a Update Ukrainian translation 2025-02-07 16:38:55 +00:00
Daniel Rusek
929c12836c Update Czech translation 2025-02-07 13:46:34 +00:00
Alexandre Franke
42b5fddadb about: drop years from copyright 2025-02-07 13:10:56 +01:00
Andika Triwidada
cfbf9ffa61 Update Indonesian translation 2025-02-07 11:30:21 +00:00
Kévin Commaille
3618573f83
build: Require at least OpenSSL 3.0.0
Versions older than that are not supported anymore
2025-02-07 09:31:39 +01:00
Daniel Rusek
e8f4b641b9 Update Czech translation 2025-02-06 22:04:30 +00:00
Yuri Chornoivan
38b6523235 Update Ukrainian translation 2025-02-06 15:19:52 +00:00
Martin
2187ca7146 Update Slovenian translation 2025-02-06 15:12:53 +00:00
Alexandre Franke
53cec746df ui: add ellipses for buttons that open dialogs 2025-02-06 12:19:29 +01:00
Kévin Commaille
be682d69b0 chore: Upgrade matrix-sdk and ruma 2025-02-04 17:31:31 +00:00
Sabri Ünal
81181b3dad Update Turkish translation 2025-02-04 17:31:23 +00:00
Rafael Fontenelle
e5683ed537 Update Brazilian Portuguese translation 2025-02-04 16:19:02 +00:00
Artur S0
7ba8a2d98e Update Russian translation 2025-02-04 13:06:47 +00:00
Luming Zh
85c63d9a62 Update Chinese (China) translation 2025-02-04 02:08:34 +00:00
Daniel Rusek
a3df283fa3 Update Czech translation 2025-02-03 11:38:59 +00:00
Kévin Commaille
f8ce19f33b
room: Construct timeline right away
A recent change made us wait for the category to be loaded before
constructing the Timeline, to know if we should preload it.

However the timeline property of Room assumes that there is always a
timeline available after the construction, which was not true anymore.

So we construct the Timeline during construction again, and use a
property to preload it when both the category and the matrix timeline
are ready.
2025-02-01 12:19:31 +01:00
Martin
9280b05b9f Update Slovenian translation 2025-02-01 08:41:41 +00:00
Rafael Fontenelle
0a105f5b83 Update Brazilian Portuguese translation 2025-02-01 02:23:08 +00:00
Yuri Chornoivan
b882606bf8 Update Ukrainian translation 2025-01-31 15:47:37 +00:00
twlvnn kraftwerk
5af9cf7e9b Update Bulgarian translation 2025-01-31 13:44:00 +00:00
Alexandre Franke
e1c9658d34 RELEASING: add process to add branch on DL 2025-01-31 12:00:05 +01:00
Maximiliano Sandoval
11b42442aa application: Add accel to close window via ctrl+w 2025-01-31 10:02:47 +00:00
Maximiliano Sandoval
129b841c47
app: Chain up activate
All vfuncs should chain up to prevent undefined behavior.
2025-01-30 20:21:27 +01:00
Maximiliano Sandoval
407fbba876
app: Set default icon name
This is used in x11 by certain DEs.
2025-01-30 20:21:13 +01:00
Daniel Rusek
94c333f8a0 Update Czech translation 2025-01-30 18:32:36 +00:00
Alexandre Franke
a04dc4cd69 style: adjust border radii
Following GNOME/libadwaita change d450cb30c59694f604d4396993281797035bc51c

Fixes #1538
2025-01-30 16:20:11 +01:00
Guillaume Girol
f50c06b5fe add keyboard shortcuts to navigate between rooms
They were previously added in https://gitlab.gnome.org/World/fractal/-/merge_requests/424
but lost in a rewrite.

These keybindings conflict with the default ones of TextView so a
ShortcutController with propagation phase capture is needed.
2025-01-30 13:47:25 +00:00
Kévin Commaille
c5955bbc74
Release Fractal 10 2025-01-30 10:20:48 +01:00
Kévin Commaille
55ce058dc5
docs: Improve release docs for screenshots 2025-01-30 09:44:24 +01:00
Kévin Commaille
1250725930
sidebar: Bundle icon for direct chats 2025-01-28 15:15:32 +01:00
Kévin Commaille
3a22a65549
room: Make sure to preload timeline only after it was initialized
This avoids a possible race condition where we try to load the timeline
before it is initialized, which is a noop.
2025-01-28 14:59:44 +01:00
Kévin Commaille
fcb4b80194
timeline: Fixes
Fix the position when removing the last item, and when truncating the
list.

Also add a check that we are removing the proper event from the map, in
case we have created the same event several times.
2025-01-28 02:57:42 +01:00
Kévin Commaille
edb65a3d14
room-details: Remove context for "_Edit" string
With the context, the string change breaks the string freeze, and it is
not necessary since it has the same meaning as the other string with the
mnemonic.
2025-01-27 12:26:11 +01:00
Artur S0
6f699fa949 Update Russian translation 2025-01-27 09:14:04 +00:00
Ekaterine Papava
98d0113460 Update Georgian translation 2025-01-27 01:53:22 +00:00
Rafael Fontenelle
86237c09ff Update Brazilian Portuguese translation 2025-01-25 16:58:32 +00:00
Yuri Chornoivan
274c0cc1a6 Update Ukrainian translation 2025-01-25 13:22:56 +00:00
Martin
5357575947 Update Slovenian translation 2025-01-25 13:09:20 +00:00
Maximiliano Sandoval
61d5e1bd13
room_details: Use AdwButtonContent on edit button 2025-01-24 20:09:04 +01:00
Kévin Commaille
46f6a77a6c
auth-dialog: Build UIAA fallback URL according to supported Matrix versions 2025-01-24 18:20:35 +01:00
Kévin Commaille
7cd95632de
utils: Log auth_issuer error at warn level
Unless it is not found, which can be expected.
2025-01-24 18:07:46 +01:00
Kévin Commaille
f480a232a8
utils: Rename most mentions of OIDC to OAuth 2.0
Since the MSCs have been updated to be based solely on OAuth 2.0
2025-01-24 18:02:43 +01:00
Kévin Commaille
63b4fe073b
chore: Upgrade matrix-sdk 2025-01-24 17:36:49 +01:00
Ekaterine Papava
5bd51cf27d Update Georgian translation 2025-01-21 03:32:00 +00:00
Kévin Commaille
07f36e2184
room-history: Refactor MessageContent
Reduce duplication to avoir errors, and group the functions to build
the content under a trait to make it look nicer.
2025-01-19 18:41:46 +01:00
Kévin Commaille
a4dec0503c
sidebar: Refactor and fix visibility 2025-01-18 16:00:18 +01:00
Kévin Commaille
2ff346f3fd
account-switcher: Refactor and fix visibility 2025-01-18 15:10:10 +01:00
Kévin Commaille
c23ded9f55
account-switcher: Allow labels to ellipsize
Should allow the popover to have a smaller minimum size if necessary.
2025-01-18 14:34:21 +01:00
Daniel Rusek
b64ad3bbec Update Czech translation 2025-01-18 00:46:23 +00:00
Kévin Commaille
7d3ea11331
event-details: Do not show edit section if we do not know anything about the edit
In general it shouldn't be the case, but it seems there is a regression
in the SDK and we cannot see the details about edits that were just
sent.
2025-01-17 20:18:09 +01:00
Kévin Commaille
5cec99f599
room-history: Proceed to auto-scrolling when main loop is idle
It seems that sometimes the GtkListView does nothing when we are
notified that its size has changed and we request to focus its last
child.

It might be because the size is allocated before the child is ready, so
we delay the request.
2025-01-17 14:55:35 +01:00
Kévin Commaille
80255955c7
room-history: Add has-popup a11y property to read receipts list 2025-01-17 11:58:24 +01:00
Kévin Commaille
7e40957a5e
room-history: Add key bindings to open context menu of reactions 2025-01-17 11:58:24 +01:00
Kévin Commaille
e59d99e344
utils: Create key_bindings module and move into it and rename add_activate_binding_action 2025-01-17 11:58:24 +01:00
Kévin Commaille
68f9c46559 room-history: Fix behaviour on scroll
Try to be smarter about what we are doing when we get signals from the
vadjustment.

We can ignore the upper and page-size signals when we are already
auto-scrolling, since trying to scroll more will just result in even
more signals later.

Only focus the last child once, then rely on scrolling to the end to
make sure that we are at the bottom.
2025-01-17 10:14:57 +00:00
Martin
54a8eabf64 Update Slovenian translation 2025-01-17 10:03:08 +00:00
Kévin Commaille
97c6c46b18 room: Reduce log noise for invited and knocked rooms
It is expected that we will not be able to access most of the room state
so do not try to load everything and reduce the logging level when a
permission error happens in those states.
2025-01-16 19:18:14 +00:00
Kévin Commaille
f11c57ed5e room: Only preload history for the main categories
Those are the categories that the user is most likely to visit.
Also we should not preload the timeline for categories where we do not
offer to view it.
2025-01-16 19:18:14 +00:00
Kévin Commaille
734c6d6d8c room: Wait for category to be loaded before initializing timeline
Since we do not preload the timeline for all categories
2025-01-16 19:18:14 +00:00
Kévin Commaille
0b6cc2019f room: Rename Room::set_category to change_category
To differentiate change_category which sends data to the homeserver,
with set_category from the private API that only changes the local
category.
2025-01-16 19:18:14 +00:00
Kévin Commaille
706c842d56 room: Introduce TargetRoomCategory for categories that can be targetted by the user
This makes the API more correct as we can't encounter categories that
are dependent of the state of the room.
2025-01-16 19:18:14 +00:00
Kévin Commaille
40af0116fb video-player: Fix visibility of duration
There are two conditions for the visibility so we always need to check
both before changing it.
2025-01-16 15:20:52 +00:00
Kévin Commaille
a5c71dec29 room-history: Return the proper minimum size when measuring visual media messages
It was always returning 0, which would trigger GTK warnings.
2025-01-16 15:20:52 +00:00
Anders Jonsson
8bccf661d4 Update Swedish translation 2025-01-16 13:33:55 +00:00
Brage Fuglseth
3eb5f9b99b Update Norwegian Bokmål translation 2025-01-16 11:30:45 +00:00
Kévin Commaille
37fbb89a26
docs: Update list of runtime dependencies 2025-01-15 18:04:01 +01:00
Kévin Commaille
6508f7411a
docs: Build docs for ruma-events 2025-01-15 18:04:01 +01:00
Kévin Commaille
0ba4b655c0
docs: Use the basic-deploy-docs CI template 2025-01-15 18:04:01 +01:00
Kévin Commaille
2835b999f8 camera: Use aperture library for scanning QR codes
That way we can benefit from improvements upstream.

This also simplifies the camera API in the process by using a trait
instead of a subclassable GObject.
2025-01-15 15:54:29 +00:00
Artur S0
10be4b5a6e Update Russian translation 2025-01-15 14:16:30 +00:00
Yuri Chornoivan
321232e005 Update Ukrainian translation 2025-01-14 19:23:02 +00:00
Alexandre Franke
a57e25c304 Update French translation 2025-01-14 13:06:32 +00:00
Kévin Commaille
a849341e3a Release Fractal 10.rc 2025-01-14 09:25:52 +00:00
Luming Zh
7d64667c90 Update Chinese (China) translation 2025-01-14 04:56:02 +00:00
Rafael Fontenelle
7407ce97ae Update Brazilian Portuguese translation 2025-01-14 01:34:27 +00:00
Kévin Commaille
ebd5fbc1cf
image: Set and use the is_animated flag
If the image is marked as animated we download the original instead of a
thumbnail to be able to play it in the room history.
2025-01-13 16:30:01 +01:00
Kévin Commaille
06471e66b9
chore: Upgrade matrix-sdk
Stop using a private branch.
2025-01-13 15:26:08 +01:00
Kévin Commaille
47d47b290e
auth-dialog: Fix crash and rename button to open browser to "Continue"
That way we are consistent with the login screen.
2025-01-13 14:52:24 +01:00
Kévin Commaille
ff12986452
login: Move away from SSO term and add "Continue" button
Moving away from the SSO term allows us to transition seemlessly towards
OIDC.

Adding a "Continue" button avoids to surprise the user by opening a URL
without warning.

Fixes SSO identity provider login in the process.
2025-01-13 14:52:24 +01:00
Danial Behzadi
d6388dfc97 Update Persian translation 2025-01-13 12:45:25 +00:00
Kévin Commaille
ffed9ac679
message-row: Always allocate space for messsage state
It avoids reflows in the UI when the state changes.
2025-01-13 10:33:00 +01:00
Ekaterine Papava
42f7dba972 Update Georgian translation 2025-01-12 19:57:24 +00:00
Kévin Commaille
d1b1f4ad3f timeline: Refactor code to minimize diff and add tests 2025-01-12 15:05:50 +00:00
Alexandre Franke
5116bb49d8 Update French translation 2025-01-12 09:31:23 +00:00
Martin
e6f2e59fe5 Update Slovenian translation 2025-01-11 18:33:09 +00:00
Sabri Ünal
0f5d6e9831 Update Turkish translation 2025-01-11 12:43:55 +00:00
Yuri Chornoivan
e744adbe32 Update Ukrainian translation 2025-01-11 11:00:25 +00:00
Kévin Commaille
0ee4286ff2
timeline: Refactor to reduce duplicate code
And hopefully avoid code duplication errors.
2025-01-10 19:03:25 +01:00
Kévin Commaille
f8bde01838
chore: Fix new clippy lint 2025-01-10 12:42:43 +01:00
Kévin Commaille
f98f3a046b
build: Remove meson subprojects
They are not necessary when building the Flatpak and we don't even keep
them up to date.
2025-01-10 12:42:42 +01:00
Kévin Commaille
f293b5ef60
chore: Upgrade matrix-sdk (ter)
Adds a patch to fix decryption errors.
2025-01-09 19:19:37 +01:00
Kévin Commaille
b2b48e7a64
chore: Upgrade matrix-sdk (bis)
This time with a real fix for the timeline start issue.
2025-01-09 17:52:54 +01:00
Kévin Commaille
8123065122
timeline: Fix code to optimize diff (bis)
When changing the code we forgot to copy the code to update the headers
so no header would show up.
2025-01-09 16:52:13 +01:00
Kévin Commaille
01a3835641
chore: Upgrade matrix-sdk
Should fix issue with erroneous "This is the start of the visibile
timeline" in the room history.
2025-01-09 16:02:13 +01:00
Kévin Commaille
50430263c9
timeline: Fix code to optimize diff
The previous code wrongly assumed that only updated items could be
inserted in the optimized diff.

Now instead of rebuilding `VectorDiffs` we update items as we process
the diff and only handle removals or insertions after that.
2025-01-09 15:03:30 +01:00
Kévin Commaille
fd48e88fcc
Add oidc-aware compatibility
It requires a few changes during login to only offer SSO when OIDC
compatability is detected,
and most actions that require UIAA in account details must now occur
in the account management UI of MAS.
2025-01-08 17:24:52 +01:00
Kévin Commaille
c32ba2efad
recovery-setup-view: Fix resetting cross-signing keys
Calling bootstrap_cross_signing seemed to work but doesn't actually
upload new keys.
2025-01-08 17:23:09 +01:00
Kévin Commaille
0c144bcfb5
login: Refactor and fix visibility 2025-01-08 17:22:05 +01:00
Kévin Commaille
ea1a12763b
video-player: Use gstgtk4 library installed on system
We do not need to compile it as part of our binary since it is available
in the GNOME platform runtime.
2025-01-07 22:59:49 +01:00
Kévin Commaille
f0cb618fd7
message-toolbar: Use send queue to send attachments
Allows to benefit from its built-in features: local echos, sending
messages in the right order, stopping the queue when an error occurs…
2025-01-07 11:47:12 +01:00
Kévin Commaille
2d0552b74d
timeline: Attempt to minimize the diff batches from the SDK
A recent change in the SDK made them less optimized than before,
it creates jumps in the room history when sending a message.

We try to work around that by optimizing the batch ourselves.
2025-01-07 11:45:39 +01:00
Kévin Commaille
cb784482b7
chore: Upgrade matrix-sdk 2025-01-07 11:45:39 +01:00
Yuri Chornoivan
44c387f74c Update Ukrainian translation 2025-01-07 06:32:11 +00:00
Martin
cccc676bdd Update Slovenian translation 2025-01-06 14:05:50 +00:00
Alexandre Franke
87f5205c8e Update French translation 2025-01-06 13:38:29 +00:00
Brage Fuglseth
de8ccf8007 Update Norwegian Bokmål translation 2025-01-05 22:06:55 +00:00
Kévin Commaille
aee4319640
room-history: Add quick reaction chooser dynamically
Avoids to have duplicate menus just to add or remove it. It will avoid
possible duplication errors when changing the menu.
2025-01-05 16:56:40 +01:00
Kévin Commaille
c8345ac4b1
room-history: Refactor and fix message actions
Make sure that we use the same rules everywhere to decide if an action
is possible on a message.
2025-01-05 12:56:53 +01:00
Kévin Commaille
a81dd8400e
pill: Fix action when clicking on an activatable pill
This is a recent regression after refactoring.
2025-01-05 10:48:22 +01:00
Kévin Commaille
0298b69f12
room-history: Do not switch copy-image action if media is compact
When it is the preview of a replied to message, the media does not have
action of its own so it should not affect the actions the row.
2025-01-03 14:14:48 +01:00
Kévin Commaille
8a463486c9
components: Only disable vhomogeneous for LoadingRow
For other uses of LoadingBin, vhomogeneous is actually better.
2025-01-02 10:38:13 +01:00
Kévin Commaille
63e3562bea
sender-avatar: Do not show action to open direct chat when in direct chat 2024-12-30 15:13:40 +01:00
Kévin Commaille
28e17f4379
user-page: Show button to open direct chat except if opened from a direct chat 2024-12-30 15:12:47 +01:00
Kévin Commaille
3ea780bfe1
room-history: Remove unnecessary debug level log. 2024-12-30 12:47:22 +01:00
Kévin Commaille
49d04959d2
room-details: Separate stable and experimental room versions in sections
Appending "(unstable)" to the room version does not work well because it
might be ellipsized, especially considering that unstable room versions
usually have a long name.
2024-12-30 12:45:22 +01:00
Brage Fuglseth
4461c28d0a Update Norwegian Bokmål translation 2024-12-29 22:27:59 +00:00
Kévin Commaille
aab3a13c35
room-history: Do not offer to copy the thumbnail until it is loaded 2024-12-29 10:39:34 +01:00
Kévin Commaille
04bc8c6aef
room-history: Do not show scroll button when context menu is open 2024-12-29 09:55:39 +01:00
Kévin Commaille
573e15d8a7
room-history: Refactor and fix visibility 2024-12-28 15:32:39 +01:00
Kévin Commaille
9627e8e862
item-row: Refactor and fix visibility 2024-12-28 15:17:43 +01:00
Kévin Commaille
b4efcb049a
state-row: Refactor and fix visibility 2024-12-28 15:17:09 +01:00
Kévin Commaille
24dddb3043
sender-avatar: Refactor and fix visibility 2024-12-28 14:24:55 +01:00
Kévin Commaille
e7bf640b21
read-receipt-list: Refactor and fix visibility 2024-12-28 14:24:24 +01:00
Kévin Commaille
5f8ca2e66a
member-timestamp: Refactor and fix visibility 2024-12-28 13:38:33 +01:00
Kévin Commaille
076298a71b
chore: Fix gettext comment
It should be on the lines right above the string to be picked up by
xgettext.
2024-12-28 13:33:36 +01:00
Kévin Commaille
e577d1c1b6
label-with-widgets: Simplify API
Remove unused properties, and force label and widgets to be set together
to reduce the number of calls to invalidate_widgets.

We also make sure to set use-markup before the label and widgets to
avoid a potentially expensive reallocation.
2024-12-28 11:44:36 +01:00
Evan Paterakis
b6c074b768
label-with-widgets: invalidate widgets on use-markup change 2024-12-28 06:09:15 +02:00
Kévin Commaille
332fcefbe0
Release Fractal 10.beta 2024-12-26 11:02:20 +01:00
Alexandre Franke
a65ffc1b08 window: Add fetching text on startup 2024-12-26 08:29:08 +00:00
twlvnn kraftwerk
e0b528125b Add Bulgarian translation 2024-12-25 17:34:45 +00:00
Alexandre Franke
2cface3adb window: Add About button on startup screen 2024-12-24 11:04:52 +00:00
Kévin Commaille
daf6a01d1f
build: Remove sandboxed-build meson option
Since we only need this to use vendored dependencies for Flathub,
we can just modify the Cargo config file in Flathub's flatpak manifest
for that.
2024-12-23 15:46:44 +01:00
Kévin Commaille
33f46ac49f
chore: Upgrade glycin-loaders 2024-12-23 15:43:48 +01:00
Guillaume Girol
7ce6d404e8 hooks: do not assume location of bash
On NixOS (and BSD) bash is not at /bin/bash.
Change the shebang to use bash from PATH.
2024-12-23 12:00:00 +00:00
Kévin Commaille
efc6565076
message-row: Refactor and clean up 2024-12-22 14:15:02 +01:00
Kévin Commaille
15902b31d9
message-toolbar: Refactor and cleanup 2024-12-21 15:42:18 +01:00
Kévin Commaille
4d820c01f0
notifications: Do not (un)realize the renderer since we did not construct it 2024-12-20 17:36:28 +01:00
Lukáš Tyrychtr
2a5157b1df sender-avatar: Add the has-popup property for it
In Orca commit 6105519dc837 Orca started ignoring buttons with the has popup
 state when reading list items during navigation.
Use that behavior to make reading a chat room history less verbose.
2024-12-20 13:13:17 +00:00
Kévin Commaille
07bc3302fc
image: Request only 2 different sizes for avatars
Allows to avoid to fill the media cache with almost a different size for
every view,
and to optimize the cache hits.

Should also fix blurry or missing avatars in notifications.
2024-12-20 13:11:30 +01:00
Kévin Commaille
1741a99b93
image: Generate a thumbnail at the same size as we will download later
It should optimize the cache hits when the media is cached upon sending.
2024-12-19 11:25:46 +01:00
Kévin Commaille
9048261ccd
chore: Upgrade crate dependencies 2024-12-18 16:37:26 +01:00
Kévin Commaille
9c330d3114
qr-code-detector: Do not use image crate
It is not needed, we can just construct another type that rqrr accepts
as input for its API.

Gets rid of the image crate in the dependency tree.
2024-12-17 18:20:33 +01:00
Kévin Commaille
37be41c8ca
qr-code-detector: Fix visibility and formatting 2024-12-17 17:44:47 +01:00
Kévin Commaille
023494813a
image: Use GTK APIs instead of image crate to generate thumbnails 2024-12-17 17:36:44 +01:00
Alexandre Franke
8d9093c70b doap: add useful fields 2024-12-15 15:41:58 +01:00
Kévin Commaille
1fd5ec42c7
components: Refactor and clean up 2024-12-14 16:38:05 +01:00
Kévin Commaille
c58cb065d2
rows: Refactor and fix visibility 2024-12-14 16:38:04 +01:00
Kévin Commaille
3d0dbf5319
power-level-selection: Refactor and fix visibility 2024-12-14 16:38:04 +01:00
Kévin Commaille
87bc3dc4fd
pill: Refactor and fix visibility 2024-12-14 16:38:04 +01:00
Kévin Commaille
076119eda7
media: Refactor and fix visibility 2024-12-14 16:38:04 +01:00
Kévin Commaille
5f176df711
loading: Fix visibility 2024-12-14 16:38:03 +01:00
Kévin Commaille
2de11e9cae
recovery-setup-view: Refactor and fix visibility 2024-12-14 16:38:03 +01:00
Kévin Commaille
b11baa03d1
identity-setup-view: Fix visibility and refactor 2024-12-14 16:38:03 +01:00
Kévin Commaille
c795f87c2f
avatar: Fix visibility 2024-12-14 16:38:03 +01:00
Kévin Commaille
28a3d36052
ci: Take metainfo from flatpak repo
Avoids issues with build artifacts.
2024-12-14 15:43:00 +01:00
Kévin Commaille
eaf1220d36
user-profile-dialog: Refactor 2024-12-14 11:00:31 +01:00
Kévin Commaille
5e95a23b76
toastable-dialog: Refactor 2024-12-14 11:00:31 +01:00
Kévin Commaille
5aee42ce1c
message-dialogs: Fix visibility 2024-12-14 11:00:30 +01:00
Kévin Commaille
a8cf08531f
join-room-dialog: Refactor and clean up 2024-12-12 03:09:47 +01:00
Kévin Commaille
16020e849a
auth-dialog: Refactor and clean up 2024-12-12 02:47:54 +01:00
Kévin Commaille
8c7e12ee0a
chore: Fix new clippy warnings 2024-12-09 12:13:54 +01:00
Kévin Commaille
bf631bc323
session-list: Refactor and clean up 2024-11-26 01:38:05 +01:00
Kévin Commaille
c0d0ce935b
session: Refactor and clean up 2024-11-26 01:25:41 +01:00
Kévin Commaille
eabf884352
typing-list: Refactor 2024-11-25 03:44:04 +01:00
Kévin Commaille
e2e12bfb8f
permissions: Refactor and clean up 2024-11-25 03:43:40 +01:00
Kévin Commaille
560f1e7a64
member: Refactor and clean up 2024-11-25 03:35:06 +01:00
Kévin Commaille
f35a5c96cc
member-list: Refactor and clean up 2024-11-25 04:51:44 +01:00
Kévin Commaille
10e854f782
join-rule: Fix visibility 2024-11-25 04:38:10 +01:00
Kévin Commaille
79010ba8b3
room-category: Fix visibility 2024-11-25 04:26:17 +01:00
Kévin Commaille
3dfc710c30
room-aliases: Fix visibility 2024-11-25 04:23:55 +01:00
Kévin Commaille
7bf6b52c56
reaction-list: Refactor and clean up 2024-11-25 04:18:43 +01:00
Kévin Commaille
130dfee8a1
reaction-group: Refactor and clean up 2024-11-25 04:02:13 +01:00
Kévin Commaille
2e0060effa
event: Simplify try_update_with 2024-11-25 03:48:37 +01:00
Kévin Commaille
bfd6aa9008
item-row: Log errors when activating actions 2024-11-24 17:37:56 +01:00
Kévin Commaille
43cd8b5052
room-history: Log errors when activating actions 2024-11-24 17:37:26 +01:00
Kévin Commaille
09d8a1b1b5
timeline: Always try to find an Event with its two possible identifiers
Given that the identifier changes after an Event has been sent, we need
to match both possibilities, depending on the identifier we get.
2024-11-24 17:15:10 +01:00
Kévin Commaille
162ce7dacb
docs: Remove mention of old version of KWallet 2024-11-24 14:55:45 +01:00
Kévin Commaille
405c308552
docs: Add KWallet as backend for secret portal 2024-11-24 14:37:58 +01:00
Kévin Commaille
805c6adf44
build: Update build and runtime dependencies 2024-11-24 14:25:44 +01:00
Kévin Commaille
760e5e0b40 virtual-timeline-item: Fix visibility 2024-11-23 11:43:41 +00:00
Kévin Commaille
89162d4ac1 timeline-item: Fix visibility and clean up 2024-11-23 11:43:41 +00:00
Kévin Commaille
fd570510ae room: Fix methods visibility and clean up 2024-11-23 11:43:41 +00:00
Kévin Commaille
ae1ca01f97 event: Refactor and clean up 2024-11-23 11:43:41 +00:00
Kévin Commaille
752f8941c0 chore: Upgrade matrix-sdk and ruma
And run `cargo update`.
2024-11-23 11:43:41 +00:00
Kévin Commaille
a7aa573373
Add help file for making a new release 2024-11-21 11:08:12 +01:00
Kévin Commaille
df8a020776
room-details: Refactor PermissionsMembersSubpage 2024-11-13 18:04:15 +01:00
Kévin Commaille
c7b29cd8ac
room-details: Fix focus chain of PermissionsMembersSubpage 2024-11-13 17:23:36 +01:00
Kévin Commaille
fcbdb5da1c
components: Rename ReactionChooser to QuickReactionChooser and refactor 2024-11-13 15:51:13 +01:00
Kévin Commaille
65a5db9166
utils: Refactor OverlappingAvatars 2024-11-13 14:16:31 +01:00
Kévin Commaille
a1957981ee
components: Fix measuring of OverlappingAvatars 2024-11-13 14:16:10 +01:00
Kévin Commaille
9e5f1f4a4a
utils: Remove trace level logs for ImageQueue 2024-11-13 12:06:24 +01:00
Kévin Commaille
55724695ce
style: Use SASS to organize styles
We now require a SASS compiler at build time.
2024-11-12 18:57:28 +01:00
Jiri Grönroos
34af3e2a0d Update Finnish translation 2024-11-11 18:54:07 +00:00
Artur S0
2b5b537f9e Update Russian translation 2024-11-11 15:46:23 +00:00
Kévin Commaille
55e0d13615
room-history: Fix untranslatable error message for video events
Even if in theory this error should never happen.
2024-11-11 15:16:08 +01:00
Kévin Commaille
23d0960389
utils: Use $XDG_RUNTIME_DIR for temporary files and remove them after use
Using $XDG_RUNTIME_DIR instead of $TMPDIR means that the temporary files
are scoped to the user.
And since those folders are usually backed by a tmpfs in memory, we need
to remove the files as soon as possible to release space.
2024-11-10 15:07:29 +01:00
Kévin Commaille
efeb245066
media-viewer: Use the type of the event as the content type of the media 2024-11-05 15:09:51 +01:00
Kévin Commaille
53cb04cdc7
media-content-viewer: Refactor and document 2024-11-05 14:57:23 +01:00
Kévin Commaille
0fea602ec9
media-viewer: Refactor and document 2024-11-05 14:18:17 +01:00
Kévin Commaille
73745fe94e
room-history: Display errors for videos
Also fix the sizing of visual media by preferring their intrinsic size
over the size declared in the event.
2024-11-05 11:46:07 +01:00
Kévin Commaille
a911a13eed
video-player: Fix video not playing automatically 2024-11-04 14:44:12 +01:00
Kévin Commaille
68af0e23c5
video-player: Refactoring 2024-11-04 14:43:43 +01:00
Kévin Commaille
1f2dd7a8cf
chore: Rename ImageDimensions to FrameDimensions and other refactoring 2024-11-04 13:19:05 +01:00
Kévin Commaille
72bee09a8c
visual-media: Refactoring 2024-11-04 10:48:44 +01:00
Rafael Fontenelle
0446069a3f Update Brazilian Portuguese translation 2024-11-04 01:35:02 +00:00
Kévin Commaille
b97530a327
chore: Enable most of Clippy's pedantic lints 2024-11-03 15:47:19 +01:00
Ali Galal
94d531602b room-history: Fix message-reactions alignment in RTL 2024-11-03 13:32:16 +00:00
Ali Galal
a0df0592cb room-history: Fix Pill content alignment in RTL 2024-11-03 13:32:16 +00:00
Martin
3c5eadb988 Update Slovenian translation 2024-11-03 09:43:41 +00:00
Luming Zh
c6327c6a74 Update Chinese (China) translation 2024-11-03 01:35:08 +00:00
Yuri Chornoivan
e739c979ce Update Ukrainian translation 2024-11-02 16:07:20 +00:00
Daniel Rusek
e19ef66d11 Update Czech translation 2024-11-02 12:48:21 +00:00
Kévin Commaille
44311dfbe1
chore: Replace "OK" and "Dismiss" strings with "Done" 2024-11-02 12:00:13 +01:00
Kévin Commaille
efebc94ecf
chore: Remove once_cell dependency
Use the types in std instead. Bumps the MSRV to 1.80.
2024-11-02 11:35:54 +01:00
Filipe Motta
e9f581e450 Update Brazilian Portuguese translation 2024-10-31 11:19:51 +00:00
Kévin Commaille
cb26488cc1
Release Fractal 9 2024-10-30 11:49:09 +01:00
Kévin Commaille
8891505584
Revert "cause: Set accent color to pink for Breast Cancer Awareness Month"
This reverts commit f3fcfdbd7f7bcbef9dc36869f82d0cf68fff849f.
2024-10-30 10:07:19 +01:00
Yaron Shahrabani
f4664ce701 Update Hebrew translation 2024-10-29 07:43:50 +00:00
Aefgh Threenine
e190a20be7 Update Thai translation 2024-10-28 18:42:33 +00:00
Artur S0
58fad0a138 Update Russian translation 2024-10-28 13:15:23 +00:00
Kévin Commaille
6deef7148f
utils: Remove ImageError::None
It is only here to be able to use it as a GEnum for simplicity in a few
types, but is doesn't make sense.
2024-10-23 19:15:26 +02:00
Kévin Commaille
b3b59c555c
utils: Add a queue for image requests
Allows to limit the number of concurrent requests and keep track of slow
requests.
2024-10-22 18:33:04 +02:00
Kévin Commaille
933d74ec81
chore: Ignore Zed IDE config directory 2024-10-22 17:27:37 +02:00
Quentin PAGÈS
0ad6656b34 Update Occitan translation 2024-10-21 19:46:25 +00:00
Tim Sabsch
b847a13f77 Update German translation 2024-10-20 18:30:40 +00:00
Aefgh Threenine
cabb46ccdc Update Thai translation 2024-10-19 02:53:46 +00:00
Anders Jonsson
6aacd5c1b9 Update Swedish translation 2024-10-18 11:14:58 +00:00
Aefgh Threenine
17bbf1a6a5 Update Thai translation 2024-10-18 09:40:28 +00:00
Aefgh Threenine
ddcc69dd55 Add Thai translation 2024-10-18 09:39:18 +00:00
Ekaterine Papava
e38140adb8 Update Georgian translation 2024-10-18 04:25:32 +00:00
Kévin Commaille
8b7aa4f429
Release Fractal 9.rc 2024-10-17 11:13:30 +02:00
Kévin Commaille
f3fcfdbd7f
cause: Set accent color to pink for Breast Cancer Awareness Month 2024-10-17 11:02:58 +02:00
Alexandre Franke
63fca01cfc Update French translation 2024-10-17 07:29:48 +00:00
Brage Fuglseth
aa0a8be796 Update Norwegian Bokmål translation 2024-10-16 18:39:33 +00:00
Kévin Commaille
f751d58ec5
chore: Upgrade matrix-sdk, ruma and rqrr 2024-10-15 17:47:08 +02:00
Kévin Commaille
f3d8673913
timeline: Remove unused method
To detect unused code, pass all methods as pub(crate).
2024-10-15 14:56:02 +02:00
Luming Zh
4e2f271038 Update Chinese (China) translation 2024-10-15 10:22:24 +00:00
Yuri Chornoivan
5665f77a99 Update Ukrainian translation 2024-10-14 19:25:35 +00:00
Martin
0c08892570 Update Slovenian translation 2024-10-14 14:09:13 +00:00
Kévin Commaille
d349ce4983 components: Do not allocate height of child in LoadingBin
It can look weird with a lot of extra space if the child is a lot bigger
than the spinner.
2024-10-13 11:55:13 +00:00
Kévin Commaille
20b5ded557 room-details: Fix members count of left rooms
We must remove ourself from the server-provided members count.
2024-10-13 11:55:13 +00:00
Kévin Commaille
c3242b1080 room-details: Handle all states of room members list 2024-10-13 11:55:13 +00:00
Rafael Fontenelle
c4b2420bd8 Update Brazilian Portuguese translation 2024-10-13 01:26:26 +00:00
Kévin Commaille
1fdcd73be2
room-title: Fix height of button
When there is no subtitle, use the default button padding an use
gtk::Align::Center for valign.
When there is a subtitle, remove the button padding, reduce the space
taken by the labels and use gtk::Align::Fill for valign.

Co-authored-by: Alexandre Franke <afranke@gnome.org>
2024-10-11 13:02:40 +02:00
Kévin Commaille
9859e4c800
build: Remove NO_POINTER_VIEWPORT environment variable
It doesn't do anything anymore.
2024-10-10 09:53:36 +02:00
Kévin Commaille
c96609ff8a
remote-room: Downgrade errors to the WARN level
Since RemoteRoom is used for unknown room mentions, it does not make
sense to have errors in the logs for those.
2024-10-09 11:40:26 +02:00
Kévin Commaille
473c5d53bf
room: Do not log about state change during initialization 2024-10-09 11:37:04 +02:00
Kévin Commaille
78cd7b057d
room: Use RoomInfo to watch whether a room is direct 2024-10-09 11:31:30 +02:00
Artur S0
dd5b1c9335 Update Russian translation 2024-10-08 09:23:14 +00:00
Kévin Commaille
0b044491a1
chore: Upgrade matrix-sdk crate
Should get rid of unwanted verbose warnings in the SDK.
2024-10-07 14:50:54 +02:00
Luming Zh
0fed338255 Update Chinese (China) translation 2024-10-07 02:43:14 +00:00
Anders Jonsson
9ddbf96e2a Update Swedish translation 2024-10-06 19:27:53 +00:00
Yuri Chornoivan
4650c2d22c Update Ukrainian translation 2024-10-06 15:52:45 +00:00
Martin
bf7cb9024e Update Slovenian translation 2024-10-06 14:57:54 +00:00
Kévin Commaille
4a8625b5fe
room-history: Do not offer to invite members in direct chat 2024-10-06 13:33:04 +02:00
Kévin Commaille
113c97d5f2
room-details: Present members directly in general page for direct chats 2024-10-06 13:33:04 +02:00
Kévin Commaille
b4118978df
room-details: Hide some sections and actions for direct chats 2024-10-06 13:33:04 +02:00
Kévin Commaille
f535b931a8
crypto-recovery-setup-view: Fix resetting recovery when backup exists on homeserver
We force the API to delete the backup instead of disabling recovery.
2024-10-05 13:06:16 +02:00
Kévin Commaille
25e7ee4cb7
session: Split security API in a separate type 2024-10-05 11:57:56 +02:00
Kévin Commaille
f94357ebe8
account-settings: Fix user sessions page
AdwPreferencesPage only allows AdwPreferencesGroup as children so only
provide that.
We only use the GtkStack for the other active sessions by initializing
the current session early.

Includes other refactoring around user sessions.
2024-10-05 10:55:54 +02:00
Luming Zh
4f4085ada4 Update Chinese (China) translation 2024-10-05 00:23:34 +00:00
Kévin Commaille
857cf0d75c timeline: Ignore room member events where the content has not changed 2024-10-04 16:08:15 +00:00
Yuri Chornoivan
52d6b66329 Update Ukrainian translation 2024-10-04 16:05:03 +00:00
Kévin Commaille
478dab3ecd
room-history: Fix style of new messages divider 2024-10-04 14:54:49 +02:00
Kévin Commaille
8e38f554e3
chore: Upgrade matrix-sdk 2024-10-04 13:09:32 +02:00
Martin
cae850afd2 Update Slovenian translation 2024-10-04 10:34:29 +00:00
Kévin Commaille
3400931fb3
session-list: Only restore sessions with a data directory on the system
This is necessary to avoid issues for users sharing their secrets
between devices.
2024-10-04 11:33:36 +02:00
Kévin Commaille
a58b71f15a
room-history: Do not use italics for typing row
Use dim-label instead.
2024-10-04 10:19:32 +02:00
Kévin Commaille
7f99225953
room: Fix typing list sometimes not showing 2024-10-04 10:06:53 +02:00
Kévin Commaille
662b590a0b
room-history: Make sure that we scroll to the end in scroll_down
Previously me only made sure that we were scrolling to the last item and
focusing it,
but sometimes when the item is partly into view, it does not scroll to
the bottom.
2024-10-03 17:36:28 +02:00
Kévin Commaille
7e2f334d41
room-history: Make sure history loading does not stop until view is filled, when possible
And other refactoring.
2024-10-03 17:25:18 +02:00
Kévin Commaille
098a03ef81
room-details: Fix loading state of media history viewers
Show the loading stack page if there are no other items than the loading
row.
Keep the timeline state to Loading until we have enough items according
to the viewer.
2024-10-03 14:18:57 +02:00
Danial Behzadi
488ed24fe9 Update Persian translation 2024-10-03 10:44:58 +00:00
Kévin Commaille
71d492ea6f
media-viewer: Remove arrow of context menu 2024-10-03 11:01:57 +02:00
Kévin Commaille
f1d2fce121
message-toolbar: Add a send guard
To prevent sending the same message several times.
2024-10-02 15:32:54 +02:00
Juliano de Souza Camargo
bd248f9df7 Update Brazilian Portuguese translation 2024-10-02 00:50:14 +00:00
Satrujit Behera
e9d9ae44da notifications: Set im.received category for notifications 2024-10-01 15:15:06 +00:00
Brage Fuglseth
2a86f44038 Update Norwegian Bokmål translation 2024-09-30 21:53:50 +00:00
Yuri Chornoivan
5795a59547 Update Ukrainian translation 2024-09-30 20:02:54 +00:00
Martin
e112fa3d96 Update Slovenian translation 2024-09-30 13:20:50 +00:00
Luming Zh
92fc80f90a Update Chinese (China) translation 2024-09-30 12:54:47 +00:00
Kévin Commaille
16ade07284 misc: Remove "Try again later" from toast messages 2024-09-30 09:58:39 +00:00
Kévin Commaille
63404476b5 sidebar-row: Use better toast messages for failed room actions 2024-09-30 09:58:39 +00:00
Kévin Commaille
5fe52ce014 sidebar: Use "decline" instead of "reject"
We already changed it in the Invite view, but not in the context menu.
2024-09-30 09:58:39 +00:00
Kévin Commaille
b0356547ef room: Remove (accept/decline)_invite methods
They are only used by the Invite view, other places do the same thing
with set_category.
2024-09-30 09:58:39 +00:00
Juliano de Souza Camargo
553881fcc7 Update Brazilian Portuguese translation 2024-09-29 17:06:53 +00:00
Daniel Rusek
74a2a1fe26 Update Czech translation 2024-09-29 15:22:17 +00:00
Artur S0
f19552dbb6 Update Russian translation 2024-09-29 12:53:46 +00:00
Kévin Commaille
7cbdedfabd
room: Rely more on RoomInfo for updating room data
Removes update_for_events and related methods.
2024-09-28 16:40:41 +02:00
Kévin Commaille
1a144e4b58
sidebar: Rename Category to SidebarSection
Rename CategoryType to SidebarSectionName and remove unused variants.
Rename CategoryFilter to RoomCategoryFilter.
Use Option<RoomCategory> instead of CategoryType for drag-n-drop
operations, preventing us from using GObject properties.
2024-09-28 16:40:41 +02:00
Kévin Commaille
1f123518dc
room: Rename RoomType to RoomCategory
There is already a meaning for room types in the Matrix spec.
Besides the property is named `category`, so stick with it.
2024-09-28 16:40:41 +02:00
Kévin Commaille
3e303b7910
room: Refactoring
Put private methods on the imp type and try to group fields and methods
sensibly.
2024-09-28 16:40:41 +02:00
Alexandre Franke
091b55fc8a hook: check for unused deps with machete 2024-09-28 08:53:01 +00:00
Kévin Commaille
18f863d70a
room: Set bold highlight even if there are no notifications
New regression.
2024-09-27 20:22:06 +02:00
Kévin Commaille
ba47397def
room-history: Fix size of spinners and error icons for visual media messages and location 2024-09-27 11:03:13 +02:00
Kévin Commaille
4ec71c2541
sidebar: Do not show notification count if the room is read
Workaround a bug in Synapse that sends a non-zero unread notifications
count sometimes even if our user was the last one to send a message.
2024-09-27 09:44:39 +02:00
Brage Fuglseth
0f509a20be Update Norwegian Bokmål translation 2024-09-26 19:33:18 +00:00
Brage Fuglseth
39c7d8b1c7 Update Norwegian Bokmål translation 2024-09-26 19:30:42 +00:00
Brage Fuglseth
8e6edd2793 Update Norwegian Bokmål translation 2024-09-26 19:27:16 +00:00
Kévin Commaille
467e40b6c9 metainfo: Use "snapshot" type for development releases
"development" is more for beta releases.
2024-09-26 13:42:36 +00:00
Juliano de Souza Camargo
c1c9f7a587 Update Brazilian Portuguese translation 2024-09-26 12:40:28 +00:00
Martin
b397ae55e7 Update Slovenian translation 2024-09-26 09:42:54 +00:00
Kévin Commaille
7e672a7bab
Release Fractal 9.beta 2024-09-26 09:47:25 +02:00
Yuri Chornoivan
3e82e98057 Update Ukrainian translation 2024-09-25 16:37:28 +00:00
Tim Sabsch
50a5852df8 Update German translation 2024-09-25 14:50:06 +00:00
Kévin Commaille
a8faf271b9 metainfo: Link to stable branch for screenshots 2024-09-25 13:46:28 +00:00
Luming Zh
be2b2906b0 Update Chinese (China) translation 2024-09-25 13:16:51 +00:00
Kévin Commaille
ae8fed98cf
ci: Use GNOME 47 Flatpak runtime for the build test job 2024-09-25 12:34:32 +02:00
Kévin Commaille
919d1ae985
room: Add trace-level logs for debugging notification count 2024-09-25 12:19:49 +02:00
Kévin Commaille
1f19619df0
room: Remove trace-level logs to debug unread status 2024-09-25 12:09:29 +02:00
Kévin Commaille
3f7a98c4c1
room-history: Use local time for day dividers
They used UTC time, which is why sometimes the date that they show was
wrong.
2024-09-25 12:00:36 +02:00
Kévin Commaille
6fbc12cddd
chore: Upgrade matrix-sdk and ruma crates 2024-09-25 11:21:11 +02:00
Kévin Commaille
8d25e9c4ef
application: Log for network changes in a single place
And only log when the network state has actually changed.
To reduce the noise in the logs.
2024-09-25 10:03:56 +02:00
Kévin Commaille
82ea97945a room-history: Spawn event cancellation on tokio runtime
The methods called need by Timeline::redact need access to a tokio
runtime.
2024-09-25 07:50:26 +00:00
Guillaume Girol
a58016e64e sidebar: scroll to the selected room when switching room
it might be invisible when switching with ctrl+*
2024-09-25 08:42:59 +02:00
Guillaume Girol
bfafa8c1f3 session: add a keyboard shortcut to go to an unread room
Pressing ctrl+* switches to a room with
- a mention (actually a notification count)
- or any unread message (a room in bold)
- and distinct from the current one

In case rooms with mentions and unread messages are both present,
mentions are preferred.

Favorites sections are also chosen preferentially.

this enables the following workflow:
repeatedly pressing ctrl+* visits all channels with something to be read,
starting with mentions and favorite rooms.

This feature is present in weechat and nheko (bound to alt+A)
2024-09-25 08:42:49 +02:00
Luming Zh
e6cad63983 Update Chinese (China) translation 2024-09-25 01:16:05 +00:00
Martin
7514c4ff66 Update Slovenian translation 2024-09-24 19:35:45 +00:00
Yuri Chornoivan
5be38a3b02 Update Ukrainian translation 2024-09-24 16:24:59 +00:00
Kévin Commaille
90354ff788 misc: Change "unknown" to "unexpected" in error messages
It is not true that the errors are unknown. We just don't handle them
because they are not expected to occur.
2024-09-24 14:26:01 +00:00
Martin
e79e408baa Update Slovenian translation 2024-09-24 13:36:29 +00:00
Kévin Commaille
8969c51976
account-settings: Do not offer to edit avatar or display name when disabled on homeserver 2024-09-24 12:55:54 +02:00
Kévin Commaille
a06e5c6e61
editable-avatar: Show an error if avatar could not be loaded 2024-09-24 12:55:54 +02:00
Kévin Commaille
2090a8b59e
completion-popover: Use the correct count for the number of rows 2024-09-24 12:46:56 +02:00
Kévin Commaille
acd319da16
media-viewer: Add a context menu to copy or save the media 2024-09-24 12:07:40 +02:00
Kévin Commaille
4e145419e7 offline-banner: Log when network is not available 2024-09-24 09:55:46 +00:00
Kévin Commaille
a28744f34b session: Log when network is not available 2024-09-24 09:55:46 +00:00
Alexandre Franke
bca4665e36 style: add padding below room filter bar
Fixes #1499+
2024-09-24 09:29:46 +02:00
Alexandre Franke
28a9c8855b style: remove leftover from popover 2024-09-24 09:29:45 +02:00
Luming Zh
3f4948eb39 Update Chinese (China) translation 2024-09-21 12:11:35 +00:00
Asier Sarasua Garmendia
7ac839fad6 Update Basque translation 2024-09-21 08:09:12 +00:00
Rafael Fontenelle
d38272e67a Update Brazilian Portuguese translation 2024-09-21 02:42:00 +00:00
Yuri Chornoivan
904a6da4df Update Ukrainian translation 2024-09-20 18:57:05 +00:00
Martin
a66e5bb100 Update Slovenian translation 2024-09-20 17:19:24 +00:00
Kévin Commaille
cbc84a25d4
auth-dialog: Shorten string 2024-09-20 11:06:47 +02:00
Kévin Commaille
e661afc1cf
session: Offer to reset backup instead of enabling it if it exists on the server
Because enabling it will fail if it already exists.
2024-09-20 10:28:28 +02:00
Alexandre Franke
f7109daa59 gitlab: add bug label to issue template 2024-09-18 19:51:17 +02:00
Kévin Commaille
cc5a737f21
components: Rename ButtonRow to LoadingButtonRow and prefer AdwButtonRow where possible 2024-09-18 18:20:09 +02:00
Kévin Commaille
4a26fca3b7
components: Replace Spinner with AdwSpinner 2024-09-18 15:31:57 +02:00
Kévin Commaille
09cb50ce4b
misc: Enable libadwaita 1.6 cargo feature 2024-09-18 14:58:29 +02:00
Kévin Commaille
b4bbba2d37
style: Use CSS variables and functions
That were added in GTK 4.16 and libadwaita 1.6.
2024-09-18 12:18:13 +02:00
Kévin Commaille
25d861f7e0
build: Use ffmpeg-full extension instead of building libheif manually
It already includes libheif.
2024-09-17 18:17:36 +02:00
Kévin Commaille
62fa87e272
chore: Upgrade libshumate and glycin 2024-09-17 17:56:16 +02:00
Kévin Commaille
2003b7bfae
ci: Do not duplicate Flatpak manifest for CI
Instead use commands to modify the manifest before using it.
2024-09-17 16:22:02 +02:00
Kévin Commaille
6c67393d88
chore: Upgrade matrix-sdk and ruma crates 2024-09-17 16:22:02 +02:00
Kévin Commaille
7e64373340
ci: Use mold from rust-nightly extension in docs job 2024-09-17 13:11:44 +02:00
Kévin Commaille
17890b5d8e
chore: Fix new clippy warnings 2024-09-17 13:11:43 +02:00
Kévin Commaille
2aec255fcd
chore: Use 24.08 branch of freedesktop.org Flatpak extensions 2024-09-17 11:44:49 +02:00
Yuri Chornoivan
ffae75bc34 Update Ukrainian translation 2024-09-15 16:40:32 +00:00
Juliano de Souza Camargo
d4b36a7d4c Update Brazilian Portuguese translation 2024-09-11 11:58:59 +00:00
Jürgen Benvenuti
ba5901168d Update German translation 2024-09-11 09:25:05 +00:00
Daniel Rusek
05898dc06c Update Czech translation 2024-09-10 16:18:09 +00:00
Artur S0
12492b7084 Update Russian translation 2024-09-10 14:03:54 +00:00
Kévin Commaille
acb74e6ace
chore: Upgrade matrix-sdk and ruma 2024-09-10 10:12:35 +02:00
Yaron Shahrabani
ff890596c7 Update Hebrew translation 2024-09-08 18:36:47 +00:00
Jiri Grönroos
0a59e3581b Update Finnish translation 2024-09-08 10:45:32 +00:00
Danial Behzadi
71b843464b Update Persian translation 2024-09-07 12:10:41 +00:00
Luming Zh
298e933373 Update Chinese (China) translation 2024-09-06 11:54:35 +00:00
Yuri Chornoivan
b232414407 Update Ukrainian translation 2024-09-05 18:54:37 +00:00
Martin
049d66a936 Update Slovenian translation 2024-09-05 15:39:26 +00:00
Veronika Bušová
dbbc5f457d sidebar: Add a 'Mark as Read' button to the context menu for rooms 2024-09-05 13:03:09 +00:00
Kévin Commaille
b04471e693
room: Use timeline to watch read status change triggers
Should avoid a race condition where the data in the timeline is
not updated yet when we check if receipts have changed.
2024-09-03 12:47:43 +02:00
Kévin Commaille
cb5b350b66
secret: Avoid some allocations 2024-09-03 11:59:47 +02:00
Kévin Commaille
419d0f036c
secret: Use constants for keys
To avoid errors in strings
2024-09-03 11:43:12 +02:00
Kévin Commaille
f6abd0cb55
secret: Do not translate strings that are not presented in the UI 2024-09-03 11:32:12 +02:00
Kévin Commaille
f543ba5477
window: Truncate current session ID to be compatible with StoredSession migration 2024-09-03 11:19:09 +02:00
Luming Zh
79f85e92b0 Update Chinese (China) translation 2024-09-03 00:17:35 +00:00
Martin
42041f3663 Update Slovenian translation 2024-09-02 19:23:02 +00:00
Yuri Chornoivan
1c9754f02f Update Ukrainian translation 2024-09-02 18:40:55 +00:00
Kévin Commaille
7c34c27d3e
session: Use a different path for the media cache
Since this requires a migration of the secret module,
we also truncate the session IDs that are needlessly long,
to be able to log them without adding too much noise.
2024-09-02 18:29:16 +02:00
Kévin Commaille
97fb610569
secret: Do not support secret versions from before Fractal 5 anymore
These would only have been for users of the nightly version so
it should be fine to drop support for them.
2024-09-02 18:29:15 +02:00
Kévin Commaille
59a62b8552
chore: Upgrade matrix-sdk crate
And run `cargo update`.
2024-09-02 18:29:05 +02:00
Tobias Kuendig
20a2342de1 room-history: Minor UI tweaks
Center the send message icon visually and increase the right margin of sender avatars.
2024-09-02 10:20:03 +00:00
Feliks Weber
006aa1196c Update German translation 2024-08-30 16:10:41 +00:00
Alexandre Franke
b05d19ebda Update French translation 2024-08-30 09:40:30 +00:00
Kévin Commaille
12b9dc6cc3
utils: Remove unnecessary debug logging 2024-08-27 11:34:10 +02:00
Kévin Commaille
1abe1cfef1
readme: Improve alt text and set dimensions of screenshot 2024-08-25 12:27:06 +02:00
Kévin Commaille
2b3b0403fe
cargo: Disable image default features
We do not need to encode or decode to specific formats so we do not
need those features.
2024-08-22 16:36:20 +02:00
Kévin Commaille
e5e172b69a
misc: Only animate animated paintables when they are displayed
Relies on whether the widgets that show the paintable are mapped.
2024-08-22 16:22:28 +02:00
Kévin Commaille
acc625cd20
utils: Allow to provide the requested size when loading an image
Useful for SVGs, so the renderer can render it at the size we want,
instead of returning the texture at the default size which we resize
later and that might result in a blurry image, defeating the purpose
of using a vector image.
2024-08-21 12:07:50 +02:00
Kévin Commaille
7ac70efecd
utils: Refactor image module
Try to avoid duplication of logic
2024-08-21 11:02:42 +02:00
Kévin Commaille
7d000f97f2
utils: Generate thumbnails for videos 2024-08-18 14:30:09 +02:00
Kévin Commaille
23d903e0eb
utils: Rename methods with load prefix rather than get 2024-08-18 10:09:43 +02:00
Kévin Commaille
e862909a1b
gitlab: Add environment variable to enable line wrapping in journalctl for logs 2024-08-17 11:22:47 +02:00
Kévin Commaille
f3ea74df83
avatar-image: Be smarter when downloading thumbnail
Use the same logic as other thumbnails, but prefer to get a thumbnail
rather than the original when dimesions are unknown.
Fixes SVG avatars not working.
2024-08-17 11:05:54 +02:00
Kévin Commaille
598544e422
media: Be smarter when downloading thumbnails
Prefer the original if it's not too big.
Also prefer thumbnails of the original rather than thumbnails of the
thumbnail.
2024-08-14 12:59:44 +02:00
Kévin Commaille
95eab61130
utils: Split image methods into a separate module 2024-08-14 10:39:51 +02:00
Kévin Commaille
d0ec5dacaf
message-toolbar: Be smarter about generated thumbnail
Always use WebP to generate thumbnails, as it is known to be widely
supported and have a good compression ratio.
Only generate thumbnails when the bandwith savings make sense.
2024-08-14 10:10:58 +02:00
Kévin Commaille
9ff06b8a2f
media: Use glycin to load images
It is sandboxed so loading unknown media is safer.
It also supports more formats than image-rs.
2024-08-12 12:25:02 +02:00
Kévin Commaille
96d55e3ffb
utils: Create VisualMediaMessage to refactor image and video message codes
And other refactoring.
2024-08-11 13:00:03 +02:00
Kévin Commaille
dd9539e93f
utils: Create MediaMessage to simplify interactions with media messages 2024-08-10 17:20:33 +02:00
Kévin Commaille
996590deeb
room-details: Rename MediaHistroyViewer to VisualMediaHistoryViewer
This is more correct as audio and file are also media messages.
2024-08-10 16:10:19 +02:00
Kévin Commaille
05c24c418e
message-row: Rename MessageMedia to MessageVisualMedia
This is more correct as audio and file are also media messages.
2024-08-10 15:43:37 +02:00
Kévin Commaille
95bd26d6cd
message-row: Replace MediaState with LoadingState 2024-08-10 15:33:15 +02:00
Juliano de Souza Camargo
2b211360a6 Update Brazilian Portuguese translation 2024-08-09 17:38:28 +00:00
Johannes Zellner
b697a2dd7e room-history: Hide reaction count label if it is 1 2024-08-08 10:18:51 +00:00
Martin
e96c1301d3 Update Slovenian translation 2024-08-04 09:53:04 +00:00
Martin
90c1f1125d Update Slovenian translation 2024-08-03 10:44:36 +00:00
Kévin Commaille
4782f43007
room: Improved debugging details for read receipts 2024-08-03 10:58:09 +02:00
Martin
f99d65b8d3 Update Slovenian translation 2024-08-02 17:46:19 +00:00
Martin
278a8eace5 Update Slovenian translation 2024-08-02 17:31:24 +00:00
Martin
9e011c16b1 Update Slovenian translation 2024-08-02 16:59:54 +00:00
Alexandre Franke
f9c48e5e1f Update French translation 2024-08-02 12:12:15 +00:00
Kévin Commaille
60fdd7fa78
chore: Fix new clippy warnings 2024-08-02 11:08:21 +02:00
Kévin Commaille
012d01f5c7
build: Rename sandboxed option to sandboxed-build
To make its purpose clearer
2024-08-02 10:33:28 +02:00
Martin
10f614e4a3 Update Slovenian translation 2024-08-01 22:23:40 +00:00
Martin
2b430e15dd Update Slovenian translation 2024-08-01 17:00:15 +00:00
Kévin Commaille
787260bae6
room-history: Make read receipts button round when there is a single user 2024-08-01 12:18:36 +02:00
Kévin Commaille
d3377424ce
room-history: Add trace logs to debug sticky fails 2024-08-01 11:36:15 +02:00
Kévin Commaille
d447bfb875
sidebar: Add trace logs to debug wrongly unread rooms 2024-08-01 11:35:22 +02:00
Kévin Commaille
10611e379e
Release Fractal 8 2024-08-01 09:49:42 +02:00
Alexandre Franke
a815ce84d2 Update French translation 2024-07-31 09:12:42 +00:00
Scrambled 777
10e5f914d7 Update Hindi translation 2024-07-29 17:46:37 +00:00
Martin
62edebc451 Update Slovenian translation 2024-07-28 11:09:34 +00:00
Kévin Commaille
bf370d4102
account-details: Add translator comments about deactivation 2024-07-27 15:13:28 +02:00
Martin
e8b18dddae Update Slovenian translation 2024-07-27 10:01:51 +00:00
Kévin Commaille
e4acd03c02
docs: Simplify fenv instructions 2024-07-26 12:42:13 +02:00
Daniel Rusek
29f0c3dcf9 Update Czech translation 2024-07-24 17:56:12 +00:00
Yosef Or Boczko
6b243592c6 Update Hebrew translation 2024-07-24 08:51:42 +00:00
Brage Fuglseth
f66af4b9f8 Update Norwegian Bokmål translation 2024-07-22 16:15:09 +00:00
Artur S0
4138d08227 Update Russian translation 2024-07-22 12:40:57 +00:00
Martin
6a82e60dc2 Update Slovenian translation 2024-07-22 05:40:03 +00:00
Ekaterine Papava
63e16cf7e3 Update Georgian translation 2024-07-22 04:36:36 +00:00
Martin
8fdfc5beaf Update Slovenian translation 2024-07-21 10:29:23 +00:00
Yuri Chornoivan
9c686151c1 Update Ukrainian translation 2024-07-20 13:22:06 +00:00
Anders Jonsson
7cf8ec8f96 Update Swedish translation 2024-07-20 11:23:39 +00:00
Luming Zh
4af5d94c52 Update Chinese (China) translation 2024-07-20 10:26:08 +00:00
Lukáš Tyrychtr
11f36a6b71 sidebar: Add number of notifications to room a11y label 2024-07-20 09:31:19 +00:00
Kévin Commaille
e96a8532d4
misc: Intercept activation of Matrix URIs in room descriptions 2024-07-19 16:11:21 +02:00
Kévin Commaille
ff64385e0d
utils: Detect Matrix identifiers with the linkifier 2024-07-19 16:11:21 +02:00
Scrambled 777
022fba49d2 Update Hindi translation 2024-07-19 10:30:59 +00:00
Brage Fuglseth
8ecaee041d Update Norwegian Bokmål translation 2024-07-18 17:17:02 +00:00
Luming Zh
ebb42f0227 Update Chinese (China) translation 2024-07-18 11:22:38 +00:00
Kévin Commaille
d87059b16f
chore: Release Fractal 8.rc 2024-07-18 11:02:34 +02:00
Kévin Commaille
a9d360b1bd chore: Upgrade matrix-sdk 2024-07-18 08:36:54 +00:00
Maximiliano Sandoval
566c9f0d02 icon_item_row: Align icon
Fixes: https://gitlab.gnome.org/World/fractal/-/issues/1319
2024-07-17 18:27:14 +00:00
Yuri Chornoivan
90bf7ca1ce Update Ukrainian translation 2024-07-17 17:58:33 +00:00
Kévin Commaille
62d0c54d03
room-details: Remove title popover 2024-07-17 17:32:11 +02:00
Kévin Commaille
7ba4b0b980
ci: Run Rust tests in a separate job 2024-07-17 17:31:25 +02:00
Kévin Commaille
84c3e6df70
ci: Rename pages.yaml to docs.yml 2024-07-17 17:31:25 +02:00
Kévin Commaille
099dcc9ccf
ci: Rename Flatpak manifest for build-stable jobs
And convert to YAML
2024-07-17 17:31:25 +02:00
Kévin Commaille
038682b6b0 join-room: Replace "permalink" with "link" in UI string 2024-07-17 15:01:51 +00:00
Yuri Chornoivan
65089be0a6 Update Ukrainian translation 2024-07-17 11:07:47 +00:00
Luming Zh
456d22bf6a Update Chinese (China) translation 2024-07-17 10:23:00 +00:00
Kévin Commaille
b9e4a5da60
room-creation: Change "topic" to "description" and use a text view for the field 2024-07-17 10:17:16 +02:00
Kévin Commaille
0cc17d8c85
room-details: Replace "topic" with "description" in UI string 2024-07-17 10:03:14 +02:00
Kévin Commaille
a8f40acb9a
misc: Linkify room topics in more places 2024-07-17 09:58:04 +02:00
Yuri Chornoivan
f2d30fd573 Update Ukrainian translation 2024-07-17 06:39:28 +00:00
Kévin Commaille
aec018d627
ci: Fix pages job 2024-07-16 22:36:34 +02:00
Kévin Commaille
5acfd1305f
ci: Depend on rust nightly for docs generation again
Also add a job to test docs generation for MRs
2024-07-16 22:06:39 +02:00
Kévin Commaille
93f16b945c
room-details: Edit main room details in a subpage 2024-07-16 20:26:28 +02:00
Kévin Commaille
c375b29602
room-details: Move files 2024-07-16 20:19:47 +02:00
Kévin Commaille
a4c4dcf1fa
chore: Upgrade gtk-rs crates and dependants 2024-07-16 18:56:54 +02:00
Kévin Commaille
7bf868c498 sidebar: Allow to change whether a room is a direct chat 2024-07-16 13:54:59 +00:00
Luming Zh
b06104ecf6 Update Chinese (China) translation 2024-07-16 11:13:58 +00:00
Kévin Commaille
0d45fb6204 chore: Upgrade crate dependencies 2024-07-16 10:46:09 +00:00
Anders Jonsson
a9ecc9b88e Update Swedish translation 2024-07-16 10:44:39 +00:00
Yuri Chornoivan
0bb4cc20b5 Update Ukrainian translation 2024-07-16 06:01:20 +00:00
Kévin Commaille
3d24258692 login: Show more info during initial sync 2024-07-15 15:36:15 +00:00
Kévin Commaille
c066d4efe7
misc: Remove "to clipboard" for tooltips for copy actions
A tooltip is supposed to be short and this part should be obvious.
2024-07-15 16:27:44 +02:00
Ekaterine Papava
4ed24aa859 Update Georgian translation 2024-07-15 03:52:41 +00:00
Kévin Commaille
be6e8516b4
user-profile: Fix size, spacing and duplicate title 2024-07-14 16:58:14 +02:00
Kévin Commaille
354668568e
ci: Do not run tests for CiTest builds
Given that they are built in release mode, they already take longer to
compile.
If we run cargo test, they will be compiled again in debug mode and are
very likely to reach the timeout.
2024-07-13 23:09:48 +02:00
Kévin Commaille
479005909c
ci: Disable building protoc-c in CiTest flatpak too 2024-07-13 16:54:44 +02:00
Kévin Commaille
64d514cfc7
room-history: Visual fixes to the title 2024-07-13 16:20:56 +02:00
Kévin Commaille
a11204394f build: Do not build protoc-c with protobuf-c
It is not needed to build or use libshumate.
2024-07-13 13:29:27 +00:00
Luming Zh
134d0e96dc Update Chinese (China) translation 2024-07-13 12:43:36 +00:00
Yuri Chornoivan
a42fe6344f Update Ukrainian translation 2024-07-13 06:21:38 +00:00
Kévin Commaille
411774bd5b
misc: Change wording around permalinks 2024-07-12 16:43:25 +02:00
Kévin Commaille
773623a6b8
room-history: Reactions and receipts UI fixes
Remove the hover effect on the reaction container due to a change in
libawaita.
Make receipts button rounded and center avatars vertically.
2024-07-12 15:55:32 +02:00
Kévin Commaille
bbc0d9ba17
room-history: Move menu entry to copy room permalink to room details 2024-07-12 12:48:08 +02:00
Kévin Commaille
76872115fd
sidebar: Fix room filter 2024-07-12 12:14:08 +02:00
Kévin Commaille
711a1ba259 sidebar: Restore the expanded state of categories
Requires to replace GtkTreeListModel, as it doesn't allow us to set
the initial expanded state per item.
2024-07-12 09:16:11 +00:00
Kévin Commaille
c236c91de1 sidebar: Rename ItemList to SidebarItemList 2024-07-12 09:16:11 +00:00
Luming Zh
7b6b360357 Update Chinese (China) translation 2024-07-11 10:57:07 +00:00
Kévin Commaille
51fe880533
build: Add cargo tests 2024-07-11 09:57:34 +02:00
Kévin Commaille
fb1f4b3c96
completion-popover: Show autocompletion when hashtag is entered 2024-07-10 17:14:01 +02:00
Kévin Commaille
dfc4a052de
linkifier: Detect also URLs that do not have a scheme and matrix: URIs 2024-07-10 16:10:55 +02:00
Yuri Chornoivan
4856854e17 Update Ukrainian translation 2024-07-10 03:50:44 +00:00
Brage Fuglseth
979aa38318 Update Norwegian Bokmål translation 2024-07-09 22:39:40 +00:00
Kévin Commaille
9f796716f3
room-details: Support more states for the media history viewers
Show when the list is loading more items, when there is an error, and
show a different state when the list is empty.
2024-07-09 18:37:12 +02:00
Kévin Commaille
d29f86c7ba
room-title: Deactivate markup in header bar
There is not supposed to be markup in a room name or topic so don't
enable it otherwise Pango complains about characters like `&`.
2024-07-09 17:24:18 +02:00
Luming Zh
5f71d65914 Update Chinese (China) translation 2024-07-09 11:23:05 +00:00
Yuri Chornoivan
b33352a426 Update Ukrainian translation 2024-07-09 04:47:29 +00:00
Kévin Commaille
40c9ec24ad
room: Fix setting ignored category
Since the method did not return early, the category would always be
overwritten.
2024-07-08 12:42:40 +02:00
Kévin Commaille
2089a3c929
invite: Allow to ignore the user when declining an invite 2024-07-08 12:42:30 +02:00
Kévin Commaille
0073b0da44
invite: Show more details about room and inviter
So the user can make a more informed choice.
2024-07-08 12:13:52 +02:00
Kévin Commaille
8893e9bbaa
session: Make sure that send queues have access to a tokio executor on construction
They might need it.
2024-07-08 10:49:11 +02:00
Yuri Chornoivan
f0d0b75753 Update Ukrainian translation 2024-07-07 15:14:22 +00:00
Kévin Commaille
28e8395182
room: Restart the send queue regularly when an error that disabled it is encountered 2024-07-07 15:14:26 +02:00
Kévin Commaille
3d511e9ef0
session: Restart send queues when session is not offline anymore 2024-07-07 14:30:18 +02:00
Kévin Commaille
fd95fe304c
session: Respawn tasks of send queue during session initialization 2024-07-07 14:18:56 +02:00
Kévin Commaille
36aa3a25eb
session: Mark session as offline when sync fails 2024-07-07 14:18:09 +02:00
Kévin Commaille
4d0f22f36e
room-history: Allow to view full room title and description in a popover
Also allows to click any link.
2024-07-07 11:05:53 +02:00
Kévin Commaille
d147ab0e28
identity-verification-view: Make sure all buttons have can-shrink set
Avoids sizing issues on small screens
2024-07-06 10:34:03 +02:00
Kévin Commaille
3d5c16d284
message-toolbar: Refactor buffer anchor creation
Centralize the creation in ComposerState::add_widget to reduce code
duplication.
2024-07-05 17:39:31 +02:00
Kévin Commaille
285ae92852
message-toolbar: Persist drafts in the database 2024-07-05 16:38:41 +02:00
Kévin Commaille
ed3dca6cb0
message-toolbar: Ensure ComposerStates are unique per room and per session 2024-07-05 15:12:36 +02:00
Kévin Commaille
3244d34c57
message-toolbar: Make sure we don't reinsert widgets that have been removed 2024-07-05 15:11:39 +02:00
Kévin Commaille
fd05688c97
message-toolbar: Refactor message buffer iterator 2024-07-05 15:06:00 +02:00
Kévin Commaille
41a7038be1
room: Only expose room aliases with the RoomAliases object 2024-07-05 14:45:36 +02:00
Kévin Commaille
7e6c3a1798
utils: Get rid of MatrixRoomId
It turns out we can do everything with OwnedRoomOrAliasId
2024-07-05 14:39:36 +02:00
Brage Fuglseth
dfdaadcf05 Update Norwegian Bokmål translation 2024-07-03 20:02:46 +00:00
Kévin Commaille
c0ffcbd407
chore: Release Fractal 8.beta 2024-07-03 15:16:10 +02:00
Kévin Commaille
213eca3074
ci: Do not depend on rust nightly for docs generation
The rust-nightly Flatpak SDK extension is deprecated, and my attempts
to bundle it in a Flatpak manifest have failed.

This removes a few nice features like the index page, or types linking
to their docs in the corresponding crate's docs.
2024-07-03 12:34:45 +02:00
Kévin Commaille
de02f09465
user: Clean up debug logs
They should not have been merged.
2024-07-02 18:36:13 +02:00
Kévin Commaille
59e4555215
message-toolbar: Keep track of the composer state between room switches 2024-07-02 18:33:50 +02:00
Scrambled 777
a0a2b8ae9d Update Hindi translation 2024-07-02 07:49:29 +00:00
Yuri Chornoivan
abc3d9aaf6 Update Ukrainian translation 2024-07-01 19:16:10 +00:00
Kévin Commaille
48e1867aa3
ci: Add manual job to test Flatpak build against stable runtime 2024-07-01 14:19:44 +02:00
Kévin Commaille
dbfbef8684 chore: Update gnome-nightly runtime extensions to 24.08beta 2024-07-01 11:39:38 +00:00
Luming Zh
bccf5c1330 Update Chinese (China) translation 2024-07-01 11:05:00 +00:00
Kévin Commaille
d2c7639d3c
verification: Get user crypto identity remotely if we do not have it locally 2024-06-30 12:27:36 +02:00
Kévin Commaille
cfcadaaf7f
chore: Upgrade matrix-sdk crate 2024-06-29 10:50:37 +02:00
Kévin Commaille
fd759155b3
chore: Use new glib::clone! macro syntax 2024-06-26 13:09:47 +02:00
Kévin Commaille
0a3f59b0f6
chore: Upgrade crate dependencies 2024-06-26 09:25:31 +02:00
Alexandre Franke
1548cc5c2f Add translator comments 2024-06-22 18:56:09 +02:00
Luming Zh
29af084d11 Update Chinese (China) translation 2024-06-18 12:11:40 +00:00
Yuri Chornoivan
0a74a89f38 Update Ukrainian translation 2024-06-17 16:47:29 +00:00
Kévin Commaille
cb2c72b7bb
notifications: Show notifications for new identity verification requests
Also makes sure that clicking on a notification for an in-room
verification
opens the verification rather than the room.
2024-06-17 15:10:50 +02:00
Kévin Commaille
b43dd41cc2
chore: Fix clippy warning 2024-06-17 11:44:23 +02:00
Kévin Commaille
3fc350abc5
verification: Allow to dismiss verification when room was left 2024-06-17 11:44:23 +02:00
Scrambled 777
a14a92b017 Add Hindi translation 2024-06-15 14:12:15 +00:00
Kévin Commaille
19f1c54856
chore: Upgrade libshumate and protobuf-c dependencies 2024-06-10 15:13:36 +02:00
Brage Fuglseth
9982260c51 Update Norwegian Bokmål translation 2024-06-04 17:38:05 +00:00
Brage Fuglseth
b4f551b49c Update Norwegian Bokmål translation 2024-06-04 17:32:46 +00:00
Ekaterine Papava
75240c6686 Update Georgian translation 2024-06-02 21:26:31 +00:00
Luming Zh
dc25cbf0ee Update Chinese (China) translation 2024-05-30 10:52:20 +00:00
Yuri Chornoivan
9dd278aa98 Update Ukrainian translation 2024-05-29 16:38:07 +00:00
Kévin Commaille
59b06567fc account-settings: Allow to force the logout of the session 2024-05-29 14:17:57 +00:00
Luming Zh
53c2017538 Update Chinese (China) translation 2024-05-29 12:36:44 +00:00
Kévin Commaille
a70a12db15
account-settings: Allow to reset completely account recovery to fix any issue with it 2024-05-29 11:14:01 +02:00
Jiri Grönroos
9a417e54dc Update Finnish translation 2024-05-25 16:48:55 +00:00
Boyuan Yang
c30320111e Update Chinese (China) translation 2024-05-25 16:32:56 +00:00
Luming Zh
54a35e162f Update Chinese (China) translation 2024-05-24 12:28:42 +00:00
Kévin Commaille
9dfb90c94e
components: Remove Components prefix in widget classes 2024-05-23 15:23:12 +02:00
Kévin Commaille
105f0745b7
components: Group media components 2024-05-23 15:20:51 +02:00
Kévin Commaille
362d4f5a7c
components: Group dialog components 2024-05-23 15:05:35 +02:00
Kévin Commaille
ae553500c3
components: Rename loading property of LoadingButton to is-loading 2024-05-23 13:05:02 +02:00
Kévin Commaille
31cb11d152
components: Rename SpinnerButton to LoadingButton 2024-05-23 12:20:25 +02:00
Kévin Commaille
8f7c7de8d4
components: Group loading components 2024-05-23 12:17:30 +02:00
Kévin Commaille
a03924ea0e
components: Group avatar components 2024-05-23 12:17:14 +02:00
Kévin Commaille
246082803d
room-details: Watch expressions so members list gets updated correctly 2024-05-22 13:05:32 +02:00
Kévin Commaille
488362bd6d
utils: Take an impl IsA<gio::ListModel> for ExpressionListModel
Then we only need to upcast in one place.
2024-05-22 13:05:32 +02:00
Kévin Commaille
8ad56b88e7
room-details: Pop proper navigation view when user page is closed, 2024-05-22 13:05:32 +02:00
Kévin Commaille
69022e9b09
room-history: Allow to copy and open media with caption 2024-05-22 12:12:21 +02:00
Yuri Chornoivan
19e90e210f Update Ukrainian translation 2024-05-22 06:45:17 +00:00
Kévin Commaille
f4e6a887f9
error: Improve secret portal error instructions 2024-05-21 17:04:18 +02:00
Kévin Commaille
764ccb5946
chore: Upgrade crates
Less syn 1 dependencies!
2024-05-21 15:31:02 +02:00
Luming Zh
f5a690a5fc Update Chinese (China) translation 2024-05-20 12:04:35 +00:00
Boyuan Yang
ecfada11ef Update Chinese (China) translation 2024-05-19 15:56:17 +00:00
Kévin Commaille
01432f796d
message-toolbar: Refactoring 2024-05-15 14:46:04 +02:00
Kévin Commaille
223724c043
message-toolbar: Use intentional mentions for text messages 2024-05-15 14:46:04 +02:00
Kévin Commaille
1b0a746fbb
chore: Upgrade matrix-sdk and ruma crates 2024-05-15 14:46:04 +02:00
Kévin Commaille
664cc0c58f
room-history: Fix plain text emotes updates
The name of the sender was not passed when the emote was updated.
2024-05-13 11:30:02 +02:00
Yuri Chornoivan
fdd55f4af4 Update Ukrainian translation 2024-05-12 14:55:08 +00:00
Kévin Commaille
5e4efe2de8
room-history: Display @room mentions as pills
Only works if the user should be able to trigger the notification.
2024-05-11 16:06:45 +02:00
Kévin Commaille
18050acb14
message-toolbar: Detect @room mentions for editing a message 2024-05-11 16:06:45 +02:00
Kévin Commaille
08284e53e6
message-toolbar: Add @room auto-completion 2024-05-11 16:06:45 +02:00
Kévin Commaille
80a5a0dfc4
chore: Upgrade matrix-sdk crate 2024-05-11 16:06:45 +02:00
Rodrigo Lledó
3755d4edfb Update Spanish translation 2024-05-10 18:37:25 +00:00
Rodrigo Lledó
7fddffb94b Update Spanish translation 2024-05-10 18:32:42 +00:00
Yuri Chornoivan
2b4fe1b19e Update Ukrainian translation 2024-05-10 16:36:29 +00:00
Kévin Commaille
247b802109
explore: Avoid unnecessary clone 2024-05-10 18:00:05 +02:00
Kévin Commaille
3405ed347e
room-history: Add support for HTML details element 2024-05-10 15:58:30 +02:00
Kévin Commaille
7f438ac104
misc: Use ruma-html to sanitize and render HTML instead of html2pango 2024-05-09 20:25:00 +02:00
Kévin Commaille
5f81203659 chore: Upgrade crate deps (again) 2024-05-09 16:49:50 +00:00
Yuri Chornoivan
c3fa5c6a98 Update Ukrainian translation 2024-05-09 16:38:37 +00:00
Kévin Commaille
704213557d room-details: Refactor InviteSubpage 2024-05-09 14:56:41 +00:00
Alexandre Franke
b209eb6841 Update French translation 2024-05-09 14:18:08 +00:00
Danial Behzadi
fb00ec7f37 Update Persian translation 2024-05-08 14:06:34 +00:00
Kévin Commaille
3da6f5822a
room-history: Try routing via room ID's server when joining successor 2024-05-08 12:29:59 +02:00
Kévin Commaille
e4ecc68b4e
about: Open support room in Fractal if a session is connected 2024-05-07 11:15:17 +02:00
Kévin Commaille
a16f0cb060
message-toolbar: Properly send emote replies 2024-05-07 10:33:01 +02:00
Kévin Commaille
32fe805c19
secret: Remove unused error type 2024-05-06 17:43:39 +02:00
Kévin Commaille
e14269a7e8
label-with-widgets: Declare DEFAULT_PLACEHOLDER as an associated const
It doesn't really make sense on its own.
2024-05-06 17:38:02 +02:00
Kévin Commaille
d66a7689c2
chore: Upgrade crate dependencies 2024-05-06 17:34:48 +02:00
Kévin Commaille
3bf069f84c
build: Use id instead of app-id in Flatpak manifest
Even though I couldn't find any information about it,
`app-id` is marked as deprecated in the JSON schema of
Flatpak manifests, so it triggers a warning in my IDE.

Since `id` seems to be supported everywhere, let's just use it.
2024-05-04 19:40:09 +02:00
Kévin Commaille
d472ff1375
docs: Simplify instructions to install fenv 2024-05-04 19:36:11 +02:00
Kévin Commaille
714ef36829
secret: Improve error logs
Log the original error instead of the user-facing error.
2024-05-04 19:19:51 +02:00
Hugo Carvalho
60d1222bca Update Portuguese translation 2024-05-03 21:51:45 +00:00
Martin
192c0ddfdf Update Slovenian translation 2024-05-03 17:17:03 +00:00
Kévin Commaille
48a0c9261e
chore: Upgrade crate dependencies 2024-05-03 13:12:24 +02:00
Martin
d3b0592298 Update Slovenian translation 2024-05-03 06:05:52 +00:00
Alexandre Franke
dec825bbf4 Release Fractal 7 2024-05-02 13:59:55 +00:00
Hari Rana
451ba42638 user-page: Port ID elements to GtkCenterBox
This ports the user ID label and copy user ID button from GtkBox
to GtkCenterBox. While the GtkBox approach worked, it required us
to use magic numbers (in this case `46`) to center the label.
GtkCenterBox addresses that with a proper mechanism to center
the label, and place the copy user ID button to the end of the
widget, with a margin-start of 6. Visually, both implementations
should look nearly identical.
2024-05-02 11:21:21 +00:00
Hari Rana
7c05c71fa3
user-page: Center display name 2024-05-01 23:20:18 -04:00
Alexandre Franke
84357b6fc3 Update French translation 2024-05-01 13:03:09 +00:00
Martin
ba2bdd9e4e Update Slovenian translation 2024-04-29 15:02:09 +00:00
Artur S0
ff7dec6d78 Update Russian translation 2024-04-29 11:57:38 +00:00
Anders Jonsson
e2e44ff425 Update Swedish translation 2024-04-28 13:39:08 +00:00
Martin
481d7f9cca Update Slovenian translation 2024-04-27 22:36:49 +00:00
Philipp Kiemle
4d84923f64 Update German translation 2024-04-22 17:21:13 +00:00
Bart Piotrowski
3f79768ef6 doap: Fix syntax error, re-order maintainers 2024-04-19 07:09:08 +00:00
Andi Chandler
bbbb2cfbd7 Update British English translation 2024-04-18 20:05:10 +00:00
Kévin Commaille
5b38895ca7
Release Fractal 7.rc 2024-04-18 14:11:45 +02:00
Yuri Chornoivan
6273a3efc3 Update Ukrainian translation 2024-04-16 17:10:46 +00:00
Kévin Commaille
ee8628b1f5
utils: Avoid possible panic for notifications 2024-04-15 19:01:57 +02:00
Kévin Commaille
403d147118
identity-verification-view: Add sentence about having a secure verification 2024-04-15 18:59:23 +02:00
Kévin Commaille
6acc5d4498
room-history: Do not show verification requests in the timeline
The banner should be enough.
2024-04-15 18:09:58 +02:00
Kévin Commaille
207d1fa22f
room-history: Fix VerificationInfoBar
It would not show up anymore. Also more fixes around removal and visual
feedback.
2024-04-15 18:04:46 +02:00
Kévin Commaille
5404e92058
sidebar: Fix styling of verification row dot 2024-04-15 15:47:27 +02:00
Kévin Commaille
1a279e0b8e
typing-row: Move formatting outside of translatable string 2024-04-15 15:38:15 +02:00
Kévin Commaille
5e0e34e7da
room-history: Reduce number of avatars in typing indicator
There is the risk that a high number of avatars will make the indicator
take too much space in narrow screens.
2024-04-15 15:23:31 +02:00
Kévin Commaille
881cd55424
room-history: Reduce number of avatars for read receipts
Makes the interface a little less busy and reduces resources
consumption.
2024-04-15 15:22:19 +02:00
Kévin Commaille
3568cf2028
overlapping-avatars: Crop avatars instead of using borders
Avoids issues when the background color behind the avatars changes.
2024-04-15 13:28:06 +02:00
Kévin Commaille
a39c34bbde
components: Pill does not subclass AdwBin anymore 2024-04-15 12:07:13 +02:00
Yuri Chornoivan
25b4b05f77 Update Ukrainian translation 2024-04-14 15:15:22 +00:00
Kévin Commaille
2450c440a8 recovery-setup-view: Add screen to explain how to solve incomplete recovery 2024-04-14 09:12:19 +00:00
Kévin Commaille
46b2854004
message-toolbar: Show location dialog after obtaining permission
When the location services are disabled, a kind of race condition seems
to happen where the error is returned immediately and calling close on
the dialog does nothing.
The permission request should appear quickly, if it appears, so let's
show the dialog after that.
2024-04-13 17:32:31 +02:00
Kévin Commaille
404910dd67
sender-avatar: Do not subclass AdwBin to fix focus 2024-04-13 17:11:05 +02:00
Kévin Commaille
732678303d
pill: Fix activatable behavior, focus and add hover effect 2024-04-13 17:03:21 +02:00
Kévin Commaille
2254a505d5
read-receipts-list: Do not subclass AdwBin to fix keyboard focus 2024-04-13 16:20:46 +02:00
Kévin Commaille
5799c32120
context-menu-bin: Do not subclass AdwBin to fix keyboard focus
AdwBin overrides the GtkWidget::focus virtual method by only checking
if the children can be focused.
Not allowing the bin itself to be focused with tab navigation.
2024-04-13 16:16:48 +02:00
Kévin Commaille
eed598113e
build: Enable NO_POINTER_VIEWPORT workaround for nightly 2024-04-12 20:23:39 +02:00
Tobias Bernard
ced1a80c19 metaindo: update brand colors 2024-04-12 12:38:28 +02:00
Kévin Commaille
fe75a3f639
chore: Upgrade image rqrr and qrcode dependencies
Requires to upgrade matrix-sdk too.
And run cargo update.
2024-04-11 12:26:41 +02:00
Kévin Commaille
e81e65a8c2
session: Cache session profile to load it faster at startup
Avoids to have the fallback avatar and name for a while in certain cases
2024-04-11 11:45:04 +02:00
Sabri Ünal
04f7e8bf92 Update Turkish translation 2024-04-09 09:40:44 +00:00
Kévin Commaille
756fab832a account-settings: Do not send display name when entry is activated if it has not changed 2024-04-08 10:57:03 +00:00
Kévin Commaille
cafe822c1a account-settings: Refactoring 2024-04-08 10:57:03 +00:00
Alexandre Franke
2dfe996cf6 Update French translation 2024-04-08 10:47:48 +00:00
Bruce Cowan
752125a479 Update British English translation 2024-04-07 17:34:58 +00:00
Kévin Commaille
b6c719e920
ci: Move scripts/checks.sh to hooks
Avoids having 2 folders with a single file in it.
2024-04-05 17:34:36 +02:00
Kévin Commaille
cb392256bf
build: Add support for when the build is sandboxed
When using flatpak-cargo-generator, the crates cannot be placed in the
build dir before the build happens, so we must change the CARGO_HOME env
variable.
2024-04-05 17:25:07 +02:00
Kévin Commaille
26d7b2cb34
build: Target meson 1.1
It has been released almost a year ago so it should be fine
2024-04-05 17:21:15 +02:00
Kévin Commaille
01b49bffe5
ci: Do not create tarball for releases
Instead we will use the flatpak-cargo-generator script from
flatpak-builder-tools for Flathub builds.
This is not a problem for reproducible builds since everything has a
hash (commit or Cargo.lock).
2024-04-05 17:16:23 +02:00
Artur S0
b3a1b29aa9 Update Russian translation 2024-04-04 15:25:28 +00:00
Hugo Carvalho
c3c558a150 Update Portuguese translation 2024-04-03 19:56:09 +00:00
Nathan Follens
6458f99cf5 Update Dutch translation 2024-04-02 18:26:05 +00:00
Asier Sarasua Garmendia
ef97c6e160 Update Basque translation 2024-04-02 10:14:37 +00:00
Yuri Chornoivan
7c448ca64e Update Ukrainian translation 2024-03-28 19:48:51 +00:00
Alexandre Franke
c7c640aa22 string: disambiguate wording 2024-03-28 20:20:34 +01:00
Kévin Commaille
7b3a099aaa
Release Fractal 7.beta 2024-03-28 16:07:19 +01:00
Kévin Commaille
9485bde593 ci: Use GNOME 46 image and runtime 2024-03-28 15:06:14 +00:00
Alexandre Franke
7399346c57 string: remove redundant part 2024-03-28 14:07:04 +00:00
Kévin Commaille
4dd34ebe90
build: Upgrade libshumate to 1.2 2024-03-28 14:45:53 +01:00
Kévin Commaille
bc957b879e user-page: Set power level row as read-only instead of insensitive 2024-03-28 12:19:52 +00:00
Kévin Commaille
83db1d511f room-details: Set rows as read-only instead of insensitive 2024-03-28 12:19:52 +00:00
Kévin Commaille
cc35ebf4d1 location: Handle specifically when the location services are disabled 2024-03-28 11:23:47 +00:00
Kévin Commaille
b680980984
create-dm-dialog: Always set the display name, as PillSource expects it 2024-03-28 11:31:05 +01:00
Kévin Commaille
f9bfdfb249 room-history: Allow to copy text of media captions 2024-03-28 09:46:56 +00:00
Kévin Commaille
5e70a7172c attachment-dialog: Make Send button focused by default 2024-03-28 09:15:35 +00:00
Kévin Commaille
6c69e0042c
sender-avatar: Add a little brightness effect to avatar on hover
To make it clearer that you can interact with it.
2024-03-27 18:20:13 +01:00
Kévin Commaille
4f65409807 history-viewer: Get filenames in the right place 2024-03-27 15:30:04 +00:00
Kévin Commaille
f4116abd1b room-history: Display media captions 2024-03-27 15:30:04 +00:00
Kévin Commaille
23af5d38ca
room-history: Avoid panic when timeline is empty 2024-03-27 11:16:13 +01:00
Kévin Commaille
d5f9a5b7da
login: Focus default page widget after transition 2024-03-27 10:51:38 +01:00
Kévin Commaille
ac102bb805
login: Cleanup 2024-03-27 10:44:44 +01:00
Ekaterine Papava
5b80a74567 Update Georgian translation 2024-03-27 07:07:02 +00:00
Yuri Chornoivan
82f69b5827 Update Ukrainian translation 2024-03-26 21:16:43 +00:00
Kévin Commaille
3211b2d5d5 misc: Remove/replace warnings about Fractal not supporting online backup 2024-03-26 17:17:21 +00:00
Kévin Commaille
22c56c4e56 sidebar: Show a banner when there is a security issue 2024-03-26 17:17:21 +00:00
Kévin Commaille
98e68bb934
chore: Upgrade matrix-sdk 2024-03-26 17:59:05 +01:00
Kévin Commaille
7ee749cf54
account-settings: Add support for account recovery 2024-03-26 14:30:15 +01:00
Kévin Commaille
ad7a35f27e
session-setup-view: Add support for account recovery 2024-03-26 14:29:03 +01:00
Kévin Commaille
c3a98dc13f sender-avatar: Add menu action to (un)mute the sender 2024-03-26 11:42:28 +00:00
Alexandre Franke
3ccfb536a0 Readd periods for strings on error screens 2024-03-26 11:20:44 +00:00
Alexandre Franke
1f8e1dc459 strings: harmonize to “will not” 2024-03-26 11:20:44 +00:00
Alexandre Franke
ebe41c5178 strings: remove periods 2024-03-26 11:20:44 +00:00
Yuri Chornoivan
bd565de7e2 Update Ukrainian translation 2024-03-25 20:31:01 +00:00
Kévin Commaille
064dfef7b4
room-creation: Use SubstringEntryRow and fix strings 2024-03-25 14:52:15 +01:00
Kévin Commaille
a11e2788df
room-history: Use Timeline::mark_as_read() when at the bottom
It should send a receipt for the latest event of the timeline,
even if it is not a visible event.
2024-03-25 14:52:15 +01:00
Kévin Commaille
64b4a8a93d
event: Cleanup 2024-03-25 14:52:15 +01:00
Kévin Commaille
0340d3094e
event-details-dialog: Show even if event does not has a source
Useful for redacted messages
2024-03-25 14:52:14 +01:00
Kévin Commaille
455bf81bf2
sender-avatar: Align user ID to the left in context menu 2024-03-25 14:51:42 +01:00
Kévin Commaille
142d1e4595 user-page: Use ButtonRow for destructive actions 2024-03-25 10:50:49 +00:00
Kévin Commaille
33a8a08e5d components: Add loading state to ButtonRow
And simplify its GTK type name
2024-03-25 10:50:49 +00:00
Kévin Commaille
54066a0e51
item-row: Add context menu actions to cancel or retry sending a message 2024-03-25 09:47:17 +01:00
Kévin Commaille
ca409e70e8
main: Set default logging level to INFO for Fractal and WARN for the rest 2024-03-23 20:03:33 +01:00
Kévin Commaille
795fefb1bb
docs: Bump MSRV to 1.76
To match the one of matrix-sdk
2024-03-23 19:57:12 +01:00
Kévin Commaille
33c5d8b519
chore: Remove unnecessary clones with spawn! 2024-03-23 19:55:06 +01:00
Kévin Commaille
e529b6e77b
chore: template_callback can be async 2024-03-23 19:27:45 +01:00
Kévin Commaille
3f7f0cfdb2
chore: Remove unnecessary move with install_action 2024-03-23 18:29:00 +01:00
Kévin Commaille
c1f919b738
chore: Use install_action_async instead of install_action and spawn! 2024-03-23 18:19:42 +01:00
Kévin Commaille
a5e9c94009
chore: Use ensure_type instead of static_type
When we actually want to ensure that the type is registered.
2024-03-23 17:52:56 +01:00
Kévin Commaille
406249d62d
chore: Upgrade matrix-sdk and ruma crates
And run `cargo upgrade` for other crates
2024-03-23 17:12:11 +01:00
Ekaterine Papava
66730803e3 Add Georgian translation 2024-03-21 14:37:58 +00:00
Lukáš Tyrychtr
0e6486054a room-history: When scrolling to an item, focus it as well 2024-03-21 14:37:33 +00:00
Yuri Chornoivan
462b5cd576 Update Ukrainian translation 2024-03-20 10:15:34 +00:00
Monster
e9a7c90880 ui: Correct strings to comply with HIG
Move titles in the application to title case, remove periods from single
sentence descriptions, remove unnecessary words
2024-03-19 16:31:39 +01:00
Yuri Chornoivan
4317b035cd Update Ukrainian translation 2024-03-17 16:42:12 +00:00
Jiri Grönroos
6c87933f29 Update Finnish translation 2024-03-17 13:25:09 +00:00
Kévin Commaille
ec6a025679
login: Use AdwNavigationView 2024-03-17 12:26:41 +01:00
Kévin Commaille
da376d1fb8
components: Create OfflineBanner 2024-03-16 16:01:09 +01:00
Kévin Commaille
c79863f837
verification-view: Rename SessionVerificationView to SessionSetupView
And move everything outside of verification-view
2024-03-16 16:00:25 +01:00
Andika Triwidada
69d0a2ad47 Update Indonesian translation 2024-03-13 15:54:23 +00:00
Brage Fuglseth
f7b90812a7 assets: Update copy symbolic 2024-03-11 17:04:46 +01:00
Baurzhan Muftakhidinov
f4feaae718 Update Kazakh translation 2024-03-08 06:24:26 +00:00
Sabri Ünal
aa21cc6b63 Update Turkish translation 2024-03-07 09:35:18 +00:00
Kévin Commaille
05302e4a45
ci: Always run metainfo job
`changes` rule does not work as wanted with forks.
2024-03-06 11:40:14 +01:00
Kévin Commaille
4ad0508c2a
ci: Do not let publish_docs job block the pipeline when it is manual 2024-03-06 10:08:38 +01:00
Kévin Commaille
7fd6381e9e
room-details: Fix clippy warnings 2024-03-06 09:56:57 +01:00
Yuri Chornoivan
84881fc428 Update Ukrainian translation 2024-03-05 20:45:24 +00:00
Kévin Commaille
a4178fef62
room-details: Add translator comment 2024-03-05 12:38:33 +01:00
Kévin Commaille
9c76d9a93b
ci: Make manual test job non-blocking 2024-03-05 11:58:40 +01:00
Alexandre Franke
24c89d0a20 menus: add ellipses where necessary 2024-03-05 09:00:17 +00:00
Alexandre Franke
9bbd67c291 strings: use the proper verb 2024-03-05 00:33:51 +01:00
Alexandre Franke
ff9dcb6ce1 strings: harmonize term for failures 2024-03-05 00:28:14 +01:00
Kévin Commaille
6f0aedf037 room-details: Allow to view and change permissions 2024-03-04 16:03:16 +00:00
Kévin Commaille
b95ddc9dfb
metainfo: Lowercase developer ID
appstreamcli prefers lowercase IDs, even if just at the info level.
2024-03-04 16:41:43 +01:00
Kévin Commaille
ed3d85bc8e
ci: Test metainfo when it changes
Avoids bad surprises with Flathub after a release is tagged.
2024-03-04 16:41:30 +01:00
Sabri Ünal
e644e163bc Update Turkish translation 2024-03-04 01:12:53 +00:00
Luming Zh
17ef62753f Update Chinese (China) translation 2024-03-01 11:04:20 +00:00
Kévin Commaille
6c1d4eecad
docs: Improve DOAP 2024-02-29 18:59:55 +01:00
Kévin Commaille
6d1da582d1
docs: Improve CONTRIBUTING.md
And remove all links to wiki.gnome.org
2024-02-29 18:59:55 +01:00
Kévin Commaille
844b6c9002
metainfo: Use app ID as developer ID
Since the team is unique
2024-02-29 17:34:29 +01:00
Yuri Chornoivan
4e090e970d Update Ukrainian translation 2024-02-29 06:53:51 +00:00
Daniel Mustieles
3201545f25 Update Spanish translation 2024-02-28 13:25:36 +00:00
Kévin Commaille
b05bdfcc7e
user-page: Allow to change the role of a room member 2024-02-28 13:17:30 +01:00
Alexandre Franke
8ac67e3aa3 metainfo: add branding colors 2024-02-26 19:14:58 +01:00
Daniel Mustieles
c36dd3e818 Update Spanish translation 2024-02-26 16:13:22 +00:00
Daniel Mustieles
14bb26cefb Update Spanish translation 2024-02-26 15:55:39 +00:00
Asier Sarasua Garmendia
103e07839d Update Basque translation 2024-02-25 19:41:32 +00:00
Sabri Ünal
085b811874 Update Turkish translation 2024-02-25 16:41:40 +00:00
Kévin Commaille
9c328f3709
user: Use only the localpart instead of the whole user ID when there is no display name 2024-02-23 11:39:34 +01:00
fabrixxm
29aebf0933 components: correct stride to gdk::MemoryTexture
To calculate it we pass "bytes per pixel" value to `texture_from_data()`
2024-02-21 18:34:22 +00:00
Kévin Commaille
a09cb48cac
misc: Remove rust-toolchain.toml
It's not stictly necessary and makes the CI run `rustup update`, which
does not work.
2024-02-21 18:37:14 +01:00
Luming Zh
a84a6035a9 Update Chinese (China) translation 2024-02-20 14:04:22 +00:00
Yuri Chornoivan
fb3306acc6 Update Ukrainian translation 2024-02-18 19:15:55 +00:00
Kévin Commaille
8e9ccbb93d
chore: Upgrade crates 2024-02-18 17:45:06 +01:00
Kévin Commaille
af8c5f324d
components: Add ButtonCountRow 2024-02-18 11:27:32 +01:00
Kévin Commaille
6b6a7d5594
components: Move subclasses of GtkListBoxRow to their own module 2024-02-18 11:27:32 +01:00
Kévin Commaille
2944740de6 room-details: Allow to enable room encryption 2024-02-18 10:04:09 +00:00
Kévin Commaille
92fc660b1f room-details: Allow to change the history visibility 2024-02-18 10:04:09 +00:00
Kévin Commaille
7140270ce1 room-details: Allow to (un)publish a room in the directory 2024-02-18 10:04:09 +00:00
Kévin Commaille
d645b405bb room-details: Allow to change guest access 2024-02-18 10:04:09 +00:00
Kévin Commaille
c1a9abe971 room-details: Allow to change who can join a room 2024-02-18 10:04:09 +00:00
Kévin Commaille
1c2de9139f
account-settings: Make sure button is updated on entry change in import mode
And other refactoring
2024-02-18 10:41:23 +01:00
Boyuan Yang
3f429febb8 Update Chinese (China) translation 2024-02-17 14:48:57 +00:00
David Runge
d788c0dbda Use developer instead of developer_name element in appstream metainfo
The `developer_name` element is deprecated, so we use the `developer`
element instead.

Signed-off-by: David Runge <dave@sleepmap.de>
2024-02-17 08:35:14 +00:00
Kévin Commaille
5986343c92
misc: Switch uses of AdwMessageDialog to AdwAlertDialog 2024-02-16 15:44:17 +01:00
Paul van Tilburg
a98dd9d05b
room-history: Show member details when clicking on a reaction sender 2024-02-15 21:49:55 +01:00
Paul van Tilburg
8cb59dc4c3
room-history: Show member details when clicking on a read receipt 2024-02-15 21:49:37 +01:00
Kévin Commaille
0ad558e0b8 room-history: Disambiguate members display names 2024-02-14 11:27:26 +00:00
Kévin Commaille
30172cd487 chore: Upgrade matrix-sdk and ruma crates 2024-02-14 11:27:26 +00:00
Sabri Ünal
515c8ddf7a Update Turkish translation 2024-02-14 11:12:14 +00:00
Kévin Commaille
2cceb4fcdd
event-details-dialog: Use CopyableRow 2024-02-13 16:13:32 +01:00
Kévin Commaille
010e0b2049
login: Port LoginAdvancedDialog to AdwPreferencesDialog 2024-02-13 15:27:12 +01:00
Kévin Commaille
d9c8ca9206
macros: Restore toast! code path for AdwPreferencesWindow
RoomDetails is not ported yet so it triggers the panic.
2024-02-13 15:10:14 +01:00
Yuri Chornoivan
ff260986c8 Update Ukrainian translation 2024-02-13 13:43:53 +00:00
Kévin Commaille
48e54022b1 auth-dialog: Port to AdwAlertDialog 2024-02-13 13:08:44 +00:00
Kévin Commaille
feb0f4117d
components: Port ToastableWindow to AdwDialog
Rename it to ToastableDialog and port the dialogs that subclass it.
2024-02-13 13:05:48 +01:00
Yuri Chornoivan
a87da5849c Update Ukrainian translation 2024-02-12 18:37:42 +00:00
Danial Behzadi
0d439be5fa Update Persian translation 2024-02-12 16:49:22 +00:00
Kévin Commaille
b5e76a3b3e
room-details: Allow to view and change room addresses 2024-02-12 15:03:01 +01:00
Kévin Commaille
dac1d7d549
components: Add Removable row, an action row with a remove button 2024-02-12 15:03:01 +01:00
Kévin Commaille
363a7ff0aa
components: Add EntryAddRow for an entry row with an add button 2024-02-12 15:03:01 +01:00
Kévin Commaille
3c99eca667
components: Don't override GtkButton properties in SpinnerButton
It does not work when calling methods from ButtonExt.
Use new properties instead.
Also add support for icons to SpinnerButton.
2024-02-12 15:03:01 +01:00
Kévin Commaille
180586ee3f
components: Create CopyableRow for preferences rows where the data can be copied 2024-02-12 15:02:58 +01:00
Kévin Commaille
7f00f1ccfe create-dm-dialog: Switch to AdwDialog 2024-02-12 13:39:12 +00:00
Kévin Commaille
68f36c1f4d attachment-dialog: Switch to AdwDialog 2024-02-12 13:39:12 +00:00
Kévin Commaille
adb5206ed8 account-chooser-dialog: Switch to AdwDialog 2024-02-12 13:39:12 +00:00
Kévin Commaille
fbfa46f5be account-settings: Switch to AdwPreferencesDialog 2024-02-12 13:39:12 +00:00
Kévin Commaille
cc8670f3b4 app: Enable libadwaita 1.5 features and use AdwAboutDialog 2024-02-12 13:39:12 +00:00
Vojtěch Perník
81e1af20cc Update Czech translation 2024-02-11 10:51:11 +00:00
Kévin Commaille
5a69082cff
chore: Fix new lint warnings 2024-02-09 11:48:23 +01:00
Veronika Bušová
671f3e8771 room-history: Adjust spacing between messages
Making the padding between messages and between the message and the
username smaller makes it looks nicer in my opinion, it could also
make the messages slightly easier to read.

Closes #1391
2024-02-09 10:14:29 +00:00
Kévin Commaille
287cfe5fa7
chore: Upgrade curve25519-dalek crate
Fixes a bug with rust nightly. Fixes pages job in CI.
2024-02-09 10:39:20 +01:00
Kévin Commaille
70f8444785
chore: Upgrade gtk-rs crates and dependants 2024-02-09 10:27:33 +01:00
Sabri Ünal
7a35b0ac59 Update Turkish translation 2024-02-03 15:48:13 +00:00
Alexandre Franke
ada1b9de5f readme: add Flathub badge 2024-02-03 12:02:21 +00:00
Yuri Chornoivan
4d7eab891c Update Ukrainian translation 2024-02-01 17:18:11 +00:00
Kévin Commaille
8489c25e4b
misc: Offer to remove messages when banning a user 2024-02-01 15:02:49 +01:00
Kévin Commaille
3d24b31bf1
sender-avatar: Allow to redact all the known events of a user 2024-02-01 15:02:49 +01:00
Kévin Commaille
4b278c5011
user-page: Allow to redact all the known events of a user 2024-02-01 15:02:46 +01:00
Kévin Commaille
e59aa6844b
permissions: Use Ruma types and methods 2024-02-01 14:40:36 +01:00
Kévin Commaille
8c15c4968b
misc: Allow to ban a member that has left the room 2024-02-01 14:40:35 +01:00
Kévin Commaille
102de038ac
gitlab: Remove outdated instructions in issue templates 2024-02-01 12:26:48 +01:00
Kévin Commaille
0400cc59c9
gitlab: Add link to stack traces guide in default issue template 2024-02-01 12:26:45 +01:00
Kévin Commaille
3f0a6dd294
readme: Link to website for Code of Conduct 2024-02-01 10:34:18 +01:00
Kévin Commaille
0801f12bf4
contributing: Update link to commit message guidelines 2024-02-01 10:34:18 +01:00
Kévin Commaille
529066581e
pill: Ellipsize display name manually
GtkTextView uses the minimum width so when setting ellipsize the label
is completely hidden.
2024-01-31 18:42:00 +01:00
Kévin Commaille
970a20893c
user: Make sure display name is set as soon as we have user ID
Otherwise it can be blank for a few seconds while we load member info.
2024-01-31 18:08:06 +01:00
Kévin Commaille
7c17555510
room-history: Open room or user profile when clicking on a Pill 2024-01-30 17:12:41 +01:00
Kévin Commaille
88a95f2e63
misc: Make PillSource subclassable type and use it for Room and User 2024-01-30 16:02:37 +01:00
Kévin Commaille
bc1253cfb9
sidebar-data: Do not use SidebarItem as a parent class
It should actually be an interface, but there is no way to create one,
so just use a simple struct.
2024-01-30 11:13:53 +01:00
Kévin Commaille
08d6ead36b
attachment-dialog: Use MediaContentViewer's loading page instead of LoadingBin 2024-01-28 19:53:10 +01:00
Kévin Commaille
91b6fee25c
media-content-viewer: Make location map fill all available space 2024-01-28 19:52:41 +01:00
Kévin Commaille
c6834093ef
room-history: Make location map fill all allocated space 2024-01-28 19:51:54 +01:00
Alexandre Franke
7df7dcffc0 room-history: switch to vector tiles for maps 2024-01-28 18:31:45 +00:00
Alexandre Franke
3c4a90ec8c verification: don't check .png files for typos 2024-01-28 18:31:45 +00:00
Kévin Commaille
d9c455a5e6
create-dm-dialog: Use PillSourceRow 2024-01-28 15:15:12 +01:00
Kévin Commaille
41ba392b96
room-history: Make CompletionRow a reusable component and rename it to PillSourceRow 2024-01-28 12:48:20 +01:00
Kévin Commaille
b1cc1989d8
create-dm-dialog: Fix construction of DmUser 2024-01-28 11:25:36 +01:00
Kévin Commaille
762f6b3c67 sender-avatar: Fix spacing 2024-01-28 10:03:12 +00:00
Kévin Commaille
c3ed6f24ba sender-avatar: Always remove user ID button when unparenting 2024-01-28 10:03:12 +00:00
Asier Sarasua Garmendia
5dd48540e6 Update Basque translation 2024-01-28 10:01:11 +00:00
Yuri Chornoivan
4b4d1cbbf3 Update Ukrainian translation 2024-01-27 20:24:48 +00:00
Kévin Commaille
75366c37d0
read-receipts-list: Fix action name 2024-01-27 19:47:18 +01:00
Kévin Commaille
6968115e73 account-settings: Add privacy setting to not send typing notifications 2024-01-27 13:04:39 +00:00
Kévin Commaille
67bb1dfd1c account-settings: Add privacy setting to not send read receipts 2024-01-27 13:04:39 +00:00
Kévin Commaille
1f5fa3e1cc
room-details: Allow to upgrade a room 2024-01-27 10:37:09 +01:00
Kévin Commaille
8fdda9deb0
account-settings: Use SDK method to get homeserver capabilities 2024-01-27 10:37:09 +01:00
Jürgen Benvenuti
e3affbf06b Update German translation 2024-01-26 22:28:43 +00:00
Yuri Chornoivan
f794fb8a98 Update Ukrainian translation 2024-01-26 13:27:03 +00:00
Kévin Commaille
0945b18831
room-history: Show a menu when clicking on sender avatar
Offers the same actions as member profile, and mention and permalink
2024-01-25 18:17:55 +01:00
Kévin Commaille
f6a23551de
context-menu-bin: Refactoring 2024-01-25 18:17:55 +01:00
Kévin Commaille
6666d1d07d
account-switcher-button: Only connect to popover closed once
Listen to it when the popover is added rather than every time the
popover is presented
2024-01-25 18:17:55 +01:00
Kévin Commaille
f04282ad5f
room-list: Do not check again the number of members
It should already be computed to get the direct member
2024-01-25 18:17:55 +01:00
Kévin Commaille
4725de5dc3
login: Allow to login via SSO if there are no providers 2024-01-25 17:02:25 +01:00
Yuri Chornoivan
047f7c41a5 Update Ukrainian translation 2024-01-23 21:02:23 +00:00
Alexandre Franke
0f2c2d3f1c ci: only autorun pages for docs changes 2024-01-23 17:39:04 +00:00
Daniel Rusek
3ba0917dfd Update Czech translation 2024-01-23 16:56:39 +00:00
Kévin Commaille
0e0f5c0627 event-details-dialog: Show source in a subpage
Instead of as a child of an expander. It makes it easier to view and
resize.
2024-01-23 16:34:17 +00:00
Marcus Fihlon
166b833585 contributing: Add missing toolchain install command
When newcomers follow the build instructions und use the pre-commit
hook, they can face an error message about toolchain not installed. I
added install instructions to fix this.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2024-01-23 16:07:14 +00:00
Daniel Rusek
c5e12cd438 Update Czech translation 2024-01-23 15:52:40 +00:00
Kévin Commaille
2db94526eb
room-history: Allow to report content 2024-01-23 15:35:56 +01:00
Kévin Commaille
592273ee48
room-history: Use SDK method to toggle reactions
Gives an instant local echo in the timeline
2024-01-23 12:51:45 +01:00
Kévin Commaille
df92df5a93
secret: Fix compilation of unimplemented API 2024-01-23 12:34:16 +01:00
Kévin Commaille
d0ae64cd87 metainfo: Update summary 2024-01-23 10:54:47 +00:00
Kévin Commaille
f2dadd8eee
join-room-dialog: Improve accessibility 2024-01-23 11:25:40 +01:00
Kévin Commaille
c715a56eb3
room-details: Improve accessibility 2024-01-23 11:25:39 +01:00
Kévin Commaille
c4d63e1a50
account-settings: Improve accessibility 2024-01-23 11:24:45 +01:00
Kévin Commaille
bfd398ac1d
room-details: Fix string to Files 2024-01-22 18:30:34 +01:00
Kévin Commaille
43cb85e99d
room-details: Allow to toggle fullscreen for MediaViewer 2024-01-22 17:32:13 +01:00
Kévin Commaille
1cc441a718
chore: Upgrade crate dependencies 2024-01-22 16:41:13 +01:00
Kévin Commaille
23b6f0688b
room-history: Improve accessibility 2024-01-22 12:43:50 +01:00
Kévin Commaille
65e9db4dcb
explore: Improve accessibility 2024-01-22 12:43:50 +01:00
Kévin Commaille
44bcc4b6c5
content: Improve accessibility 2024-01-22 12:43:50 +01:00
Kévin Commaille
dcd04598d4
sidebar: Improve accessibility 2024-01-22 12:43:50 +01:00
Kévin Commaille
6ce0205ab3
account-switcher: Improve accessibility 2024-01-22 12:43:50 +01:00
Kévin Commaille
efaa3b2625
session-verification: Improve accessibility 2024-01-22 12:43:49 +01:00
Kévin Commaille
6979fdbb5a
login: Improve accessibility 2024-01-22 12:43:49 +01:00
Emin Tufan Çetin
6828c42322 Update Turkish translation 2024-01-22 08:17:47 +00:00
Artur S0
6aa2919eed Update Russian translation 2024-01-20 19:08:03 +00:00
Danial Behzadi
59a1962d19 Update Persian translation 2024-01-20 14:14:28 +00:00
Brage Fuglseth
3788712b16 Update Norwegian Bokmål translation 2024-01-19 07:09:42 +00:00
Yuri Chornoivan
ad11529ea9 Update Ukrainian translation 2024-01-18 17:40:46 +00:00
Kévin Commaille
1caaa224a2
chore: Release Fractal 6 2024-01-18 11:59:11 +01:00
Sabri Ünal
835f8caf47 Update Turkish translation 2024-01-18 10:16:47 +00:00
Alexandre Franke
06cf37d16b Update French translation 2024-01-18 09:27:30 +00:00
Brage Fuglseth
ed4cb2ae10 Update Norwegian Bokmål translation 2024-01-14 23:17:07 +00:00
Brage Fuglseth
da29e93a55 Add Norwegian Bokmål translation 2024-01-14 23:14:18 +00:00
Kévin Commaille
1d93c586ad
room: Expose predecessor ID as a property 2024-01-13 17:21:44 +01:00
Luming Zh
d91d1b4358 Update Chinese (China) translation 2024-01-13 14:07:23 +00:00
Kévin Commaille
dc021fe26e
readme: Use buttons for Flathub Beta too
And improve instructions
2024-01-13 14:41:47 +01:00
Alexandre Franke
7a7e2e13f5 readme: fix documentation link 2024-01-13 13:30:39 +01:00
Kévin Commaille
bf4ebf4da1
room-history: Fix room completion 2024-01-13 12:21:19 +01:00
Kévin Commaille
b4d782e068
identity-verification: Check if a request is finished before cancelling it 2024-01-12 19:06:02 +01:00
Kévin Commaille
e509cb2328
chore: Update URLs pointing to Gitlab repo 2024-01-12 11:07:40 +01:00
Yuri Chornoivan
c61193c0e9 Update Ukrainian translation 2024-01-11 19:28:44 +00:00
Kévin Commaille
265e6b8237 chore: Bump MSRV
Because of use of `async` in traits.
2024-01-11 11:54:47 +00:00
Kévin Commaille
7d9f158f84 secret: Support implementing the module per-OS 2024-01-11 11:54:47 +00:00
Artur S0
d35502c1c7 Update Russian translation 2024-01-11 10:11:53 +00:00
Kévin Commaille
fe72cf4602
content: Fix dismissal of verifications 2024-01-10 18:31:13 +01:00
Kévin Commaille
27a42cb523
message-row: Show the sent icon for 3 seconds
According to the HIG, anything that shows up for less than 3 seconds is
confusing for the user.
2024-01-10 18:31:13 +01:00
Kévin Commaille
c92e9360fc
user-page: Show button to copy user ID
Instead of making it selectable, that selects it by default.
2024-01-10 18:31:13 +01:00
Anders Jonsson
28a0cf8b20 Update Swedish translation 2024-01-10 17:27:59 +00:00
Kévin Commaille
ca4ac67c53
completion: Fix constant name 2024-01-10 17:55:52 +01:00
Kévin Commaille
8b97fac2c5
completion: Support room completion 2024-01-10 17:44:39 +01:00
Kévin Commaille
7e57051216
completion: Move member list filtering logic to its own type 2024-01-10 16:04:47 +01:00
Kévin Commaille
2349f5d1d8
misc: Streamline code to know if user is our own user 2024-01-10 15:39:04 +01:00
Kévin Commaille
066db95347
misc: Streamline how matrix URIs are generated 2024-01-09 19:45:47 +01:00
Kévin Commaille
ba4cf07234
room-history: Support mentions of unknown rooms 2024-01-09 19:45:47 +01:00
Kévin Commaille
73eaa240a1
session: Create RemoteRoom to handle room lookup logic 2024-01-09 19:45:47 +01:00
Kévin Commaille
e5be4ef305
about: Update copyright date 2024-01-09 13:58:01 +01:00
Kévin Commaille
2ff48e43c8
chore: Reorganize comment 2024-01-09 13:57:39 +01:00
Kévin Commaille
9bea858f1a
chore: Fix docs 2024-01-09 13:55:58 +01:00
Kévin Commaille
4332c8a413
misc: Prefer connect_*_notify to connect_notify_local 2024-01-09 13:31:42 +01:00
Kévin Commaille
64fa2062c4 category: Rename type property to category-type 2024-01-09 11:40:53 +00:00
Kévin Commaille
b1e6726a2b sidebar: Rename IconItem to SidebarIconItem
And other refactoring
2024-01-09 11:40:53 +00:00
Luming Zh
eadb41de4f Update Chinese (China) translation 2024-01-08 20:18:01 +00:00
Kévin Commaille
5150ca8e20
room-history: Show menu for left rooms too 2024-01-08 18:52:08 +01:00
Kévin Commaille
61c3db0284
room-row: Cleanup 2024-01-08 17:18:28 +01:00
Kévin Commaille
f9f8ef8e9d
sidebar: Only offer to join a room again if it is possible 2024-01-08 17:11:11 +01:00
Kévin Commaille
aacd99b544
room: Properly compute if we can join a room 2024-01-08 17:10:47 +01:00
Kévin Commaille
fda4016cf9
misc: Prefer connect_closure over connect_local 2024-01-08 16:57:31 +01:00
Kévin Commaille
553ca48588
room-history: Update messages even if source did not change
Related events don't trigger changes in the source.
2024-01-08 15:57:52 +01:00
Kévin Commaille
1c427e1edf
user-sessions-list: Watch changes in user sessions 2024-01-08 15:15:44 +01:00
Kévin Commaille
07e1cb2da4
session: Always keep the list of user sessions
Can be used later to detect new sessions
2024-01-08 14:35:36 +01:00
Kévin Commaille
6b321a4e3d
account-details: Refactor UserSessionsPage
Use a stack to represent the list states rather than items.
2024-01-08 13:11:52 +01:00
Kévin Commaille
2c80517970
style: Rename class for large spinners 2024-01-08 12:56:17 +01:00
Kévin Commaille
9a0d8db024
account-settings: Rename DevicesPage to UserSessionsPage
To be closer to what is shown in the UI
2024-01-07 21:23:03 +01:00
Kévin Commaille
bd1032bf4e
misc: Fix parent class of subclassable classes 2024-01-07 18:26:25 +01:00
Kévin Commaille
9f147c5430
system-settings: Make subclassable per-OS 2024-01-07 18:24:47 +01:00
Kévin Commaille
1f2648f48c qr-code-scanner: Make Camera and CameraPaintable subclassable per-OS 2024-01-07 16:41:44 +00:00
Kévin Commaille
55f5a2d938
notifications: Strip the reply fallback 2024-01-07 16:19:38 +01:00
Kévin Commaille
a9007ad7bf
notifications: Do not show sender's name for notifications in direct rooms 2024-01-07 16:11:08 +01:00
Kévin Commaille
45d176d33c
room: Keep track of the direct member 2024-01-07 15:57:32 +01:00
Kévin Commaille
66a1df3228
room-history: Hide timeline start item if there is the room creation event 2024-01-07 13:31:17 +01:00
Kévin Commaille
ddef925d08
room-history: Only show sender of replied-to events if we would show it on the original event 2024-01-07 12:00:59 +01:00
Kévin Commaille
03e1efd363
message-toolbar: Refactor code for sending location
A Location module is created in utils, that can be implemented for each
platform.
The location is kept up-to-date while the dialog is opened.
The location portal session is closed each time so the user can send
their location again later.
2024-01-06 18:58:29 +01:00
Kévin Commaille
968ab4c36c
attachment-dialog: Show a spinner while the location is loading 2024-01-06 13:48:07 +01:00
Anders Jonsson
c7c54969fa Update Swedish translation 2024-01-06 12:43:02 +00:00
Kévin Commaille
d353ec78bd
room-list: Make sure to select the latest room by alias 2024-01-06 12:21:53 +01:00
Kévin Commaille
d9d3b057c8
room-details: Disconnect signals from proper object
Fixes errors in the logs
2024-01-06 11:43:53 +01:00
Kévin Commaille
61984ad3ba
room: Keep the power levels of the members up-to-date 2024-01-05 18:48:12 +01:00
Kévin Commaille
f6988639bd
room-history: Fix event actions according to permissions
Some actions would show up in left rooms, although it's not possible
to do anything in these rooms.
Also fixes the "View Details" entry for state events.
2024-01-05 18:00:49 +01:00
Kévin Commaille
ca6f5b8149
room: Refactor tracking of user permissions 2024-01-05 16:53:21 +01:00
Kévin Commaille
f49037e3bb
event: Keep a strong reference to Room 2024-01-05 14:55:08 +01:00
Kévin Commaille
76165c181d
Release Fractal 6.rc 2024-01-04 14:32:03 +01:00
Yuri Chornoivan
a5774c8977 Update Ukrainian translation 2024-01-04 08:30:57 +00:00
Luming Zh
34bbbdcf27 Update Chinese (China) translation 2024-01-03 22:44:54 +00:00
Kévin Commaille
576e3b2e8b room-history: Use strict centering for header bar 2024-01-03 18:33:17 +00:00
Kévin Commaille
055de57d18 room-members: Change list title according to count 2024-01-03 18:21:41 +00:00
Kévin Commaille
3a067cd564 room-members: Change icons 2024-01-03 18:21:41 +00:00
Kévin Commaille
501d036431 room-members: Use default AdwClampScrollable settings 2024-01-03 18:21:41 +00:00
Alexandre Franke
1aedede3e2 readme: be specific about KWallet version 2024-01-03 17:55:25 +01:00
Kévin Commaille
f319fc8cb9
user-page: Show room member information and possible actions 2024-01-03 13:23:51 +01:00
Kévin Commaille
76294c3599 power-level-badge: Use warning and error colors from libadwaita 2024-01-03 11:46:38 +00:00
Kévin Commaille
e54d8d00aa components: Rename Badge to PowerLevelBadge
And some refactoring
2024-01-03 11:46:38 +00:00
Christian Kirbach
dc0f72e8f8 Update German translation 2024-01-03 11:10:16 +00:00
Kévin Commaille
e406fe0a5c
room-details: Add a few advanced details 2024-01-03 11:45:29 +01:00
Kévin Commaille
2d628295d7
room-details: Do not show remove avatar button when room avatar URL is not set 2024-01-03 11:45:26 +01:00
Kévin Commaille
54d42a6cd8
room-details: Normalize strings in members list filter 2024-01-03 10:53:58 +01:00
Kévin Commaille
fa4307abbb
sidebar: Normalize strings in room list filter 2024-01-03 10:53:57 +01:00
Kévin Commaille
ada9d44434
utils: Add expression to normalize string 2024-01-03 10:53:57 +01:00
Kévin Commaille
ae57952382
completion-popover: Use normalized_lower_lay_string
lower_lay_string doesn't normalize unicode characters
2024-01-03 10:53:57 +01:00
Kévin Commaille
cb4de68a60
utils: Move expressions to their own module 2024-01-03 10:53:57 +01:00
Kévin Commaille
d83b4aa332
sidebar: Make sure collapsed rooms can show up in room list search results
This uses a duplicate GtkTreeListModel with all items expanded and
switches to it when search is active.
2024-01-03 10:45:24 +01:00
Yuri Chornoivan
033bba5d65 Update Ukrainian translation 2024-01-02 10:46:21 +00:00
Kévin Commaille
86cff00cb7 app: Add support for opening matrix URIs
Handles `matrix:` and `https://matrix.to/` URIs from the command line
and registers as a `matrix:` scheme handler.
2024-01-02 09:59:59 +00:00
Kévin Commaille
dcdfed4008 user-page: Allow to set user after construction 2024-01-02 09:59:59 +00:00
harshit933
c8fd88c24b login : update the login UIs
- update the homeserver to be a child of `GtkListBox`.
- update the method_page to be a child of `GtkListBox`.

Both having the same style as of `boxed-list`
2024-01-02 09:31:25 +00:00
harshit933
0614646a86 login : update the home-symbolic icon 2024-01-02 09:31:25 +00:00
Yuri Chornoivan
1f87fed6f3 Update Ukrainian translation 2024-01-01 12:19:49 +00:00
Kévin Commaille
455306eb37 session: Allow to manage ignored users
View and manage ignored users from the account settings
and the room member page.
2023-12-31 14:07:26 +00:00
Kévin Commaille
4908bc84bc
event: Compare raw sources rather than pretty-printed ones
Should be more performant.
2023-12-30 12:39:39 +01:00
Kévin Commaille
8feda2e85d
event: Do not expose set_item in the public API
try_update_with should be used instead
2023-12-30 12:34:02 +01:00
Kévin Commaille
7362f78ca3
room-history: Fix messages not updated with live edits 2023-12-30 12:28:45 +01:00
Yuri Chornoivan
a24fa555c8 Update Ukrainian translation 2023-12-29 19:02:27 +00:00
Kévin Commaille
0d9c21e19e join-room-dialog: Add step to see details of the room 2023-12-29 14:01:52 +00:00
Boyuan Yang
4994ec74ea Update Chinese (China) translation 2023-12-28 19:58:08 +00:00
Kévin Commaille
8e7fb3365b
contrib: Refactor Camera
Simplify the public API and make sure we log all errors internally.
Also do not request access to cameras when checking if there are some.
It seems to work fine now.
2023-12-28 19:06:24 +01:00
Kévin Commaille
1b8567143f
misc: Reduce conversions of string types
Prefer to use `&OwnedType` rather than `&Type` that needs to create
a new `Arc` with `ToOwned`.
To better keep track of those conversions, prefer `.clone` when cloning
from a reference.
Expose `_string` properties rather than convert the owned type to a
string,
then parse it back to the owned type.
2023-12-28 17:00:28 +01:00
Harshit Verma
a852624708 icons: Update the edit-symbolic icon 2023-12-28 12:44:00 +00:00
Yuri Chornoivan
e5cbcbe617 Update Ukrainian translation 2023-12-28 12:16:58 +00:00
Kévin Commaille
d3b1dd6106
app: Handle actions when the app is launched.
Wait for the session to be ready to process the intent.
Adds initial support for more intents.
2023-12-27 18:32:52 +01:00
Kévin Commaille
d054d072a2
app: Make D-Bus-activatable
Allows to launch the app from a notification.
2023-12-27 18:19:57 +01:00
Kévin Commaille
00a4ec8570
contributing: Update GNOME newcomers workflow URL
The old URL is redirected to a website that is not as helpful for us.
2023-12-27 18:08:12 +01:00
Kévin Commaille
cae05ae882
session-verification: Refactoring 2023-12-27 16:27:58 +01:00
Kévin Commaille
cf0460607f
verification: Use the SDK's changes streams 2023-12-27 14:42:59 +01:00
Kévin Commaille
9de408091d
verification-view: Move and port to glib::Properties macro 2023-12-27 14:42:59 +01:00
Kévin Commaille
299323804d
verification: Port to glib::Properties macro 2023-12-27 14:42:59 +01:00
Kévin Commaille
b2a3d55fd2
ci: Generate also ASHPD docs
Upstream docs are generated without the pipewire feature.
2023-12-26 15:26:29 +01:00
Yuri Chornoivan
662e5df804 Update Ukrainian translation 2023-12-24 20:09:03 +00:00
Kévin Commaille
7a29dd401b event-source-dialog: Rename to EventDetailsDialog and add more details 2023-12-24 16:38:48 +00:00
Anders Jonsson
dbe6d9f1fd Update Swedish translation 2023-12-24 13:38:17 +00:00
Luming Zh
541f4fa19c Update Chinese (China) translation 2023-12-22 18:59:28 +00:00
Kévin Commaille
6ab0cfd33a
history-viewer: Use a single timeline for all the viewers
Reduces the number of requests to the server.
2023-12-22 17:43:46 +01:00
Kévin Commaille
1bac6724ad
room-details: Use glib::Variant macro 2023-12-22 15:15:36 +01:00
Kévin Commaille
da91255fd5
a11y: Don't navigate through items with Tab in GtkListViews
When there are other widgets to navigate to outside of the list view.
Arrow keys can be used instead to navigate between items.
2023-12-22 14:59:22 +01:00
Kévin Commaille
94f28cd980
expression-list-model: Do not use one weak reference per item
Use strong references instead. Otherwise dropping the item watches for
each member of a big room takes too long.
2023-12-22 14:40:20 +01:00
Kévin Commaille
37f3a3ee63
room-history: Use OnceCell from std and BoundObject 2023-12-22 14:15:41 +01:00
Kévin Commaille
707b12b7f5
misc: Use OnceCell from std 2023-12-22 14:15:22 +01:00
Kévin Commaille
deaa6e6166
session: Move room encryption event handler to Room 2023-12-21 23:54:06 +01:00
Kévin Commaille
ad9deced91
room: Always keep own member
This is useful to always have the proper room membership, among other
things
2023-12-21 23:48:00 +01:00
Kévin Commaille
7cd80c2b0c
room: Refactoring 2023-12-21 23:40:53 +01:00
Kévin Commaille
afdf502e08
room: Require the Matrix room during construction
Removes an unwrap
2023-12-21 23:34:53 +01:00
Yuri Chornoivan
a53c63970d Update Ukrainian translation 2023-12-21 15:56:58 +00:00
Alexandre Franke
8fd746033f Release Fractal 6.beta 2023-12-21 15:50:00 +00:00
Alexandre Franke
0df580c207 window: make default size larger 2023-12-21 15:17:29 +00:00
Alexandre Franke
350d2dacc5 account-settings: make default size larger 2023-12-21 15:17:29 +00:00
Alexandre Franke
3f46054c27 room-details: make default size larger 2023-12-21 15:17:29 +00:00
Kévin Commaille
2028f590ca
css: Scope h* title styles
Avoids interfering if they are used by upstream libraries in other
places.
2023-12-21 15:31:24 +01:00
Kévin Commaille
5293f9308c
message-toolbar: Replace toolbar with text when user can't send message
Instead of disabling the toolbar.
Works around an issue where the input doesn't send the text input enter
Wayland signal after it has been deactivated.
2023-12-21 15:01:56 +01:00
Kévin Commaille
7c3f7f83f9
login: Update Twitter SSO IdP to X 2023-12-21 11:32:52 +01:00
Kévin Commaille
0f13d447d9
login: Add tooltip on SSO providers buttons 2023-12-21 11:22:43 +01:00
Luming Zh
e0de9d1eea Update Chinese (China) translation 2023-12-20 20:58:14 +00:00
Kévin Commaille
c0eab643b4
misc: Use deref operator for RefCell instead of clone or as_ref 2023-12-20 17:36:15 +01:00
Kévin Commaille
af547243a7
misc: Use is_some_and instead of map_or 2023-12-20 17:13:37 +01:00
Kévin Commaille
9d2d8c389c
misc: Always use generated connect_{*}_notify() method
Avoids possible errors in the name of properties and helps in case they
are renamed.
2023-12-20 16:52:51 +01:00
Kévin Commaille
e5f82d2fe2
misc: Always use generated notify_{*}() method
Avoids possible errors in the name of properties and helps in case they
are renamed.
2023-12-20 16:35:03 +01:00
Kévin Commaille
0ebcb8cbeb
misc: Use more compact typed None format 2023-12-20 16:30:30 +01:00
Kévin Commaille
045dd8369f
content: Finish porting to glib::Properties macro 2023-12-19 22:21:54 +01:00
Kévin Commaille
ca4ec3100d
account-settings: Port to glib::Properties macro 2023-12-19 21:48:30 +01:00
Kévin Commaille
118f4ca1b0
room-history: Port to glib::Properties macro 2023-12-19 19:25:42 +01:00
Kévin Commaille
db339a476a
room-details: Add notifications setting 2023-12-19 16:23:00 +01:00
Kévin Commaille
f42688b225
notifications-settings: Refactor update_keywords_list 2023-12-19 16:22:54 +01:00
Kévin Commaille
f85bd2a612
room-details: Port to glib::Properties macro 2023-12-18 20:42:04 +01:00
Kévin Commaille
f366b02137
explore: Port to glib::Properties macro 2023-12-18 18:46:05 +01:00
Luming Zh
bffd9463f7 Update Chinese (China) translation 2023-12-18 17:32:35 +00:00
Yuri Chornoivan
0da96b26da Update Ukrainian translation 2023-12-18 15:02:54 +00:00
Kévin Commaille
8db11bf5a6
notifications-page: Add keywords settings 2023-12-18 11:37:46 +01:00
Kévin Commaille
cd708d637d
notifications-page: Add global rooms setting 2023-12-18 11:37:43 +01:00
Kévin Commaille
59262cc141
session: Add struct to manage notifications settings 2023-12-18 11:08:43 +01:00
Kévin Commaille
e510f98b86
components: Add widget that shows its child or a spinner 2023-12-18 11:08:43 +01:00
Kévin Commaille
49b894cc20
chore: Upgrade matrix-sdk
Brings fixes and new APIs for notifications settings
2023-12-18 11:08:43 +01:00
Kévin Commaille
c7511a0a46
user-page: Port to glib::Properties macro 2023-12-17 23:06:59 +01:00
Kévin Commaille
9d51d57fed
session-view: Port to glib::Properties macro 2023-12-17 22:59:58 +01:00
Kévin Commaille
47072ab2c2
room-creation: Port to glib::Properties macro 2023-12-17 22:56:50 +01:00
Kévin Commaille
68af2ee00b
media-viewer: Port to glib::Properties macro 2023-12-17 22:44:37 +01:00
Kévin Commaille
20882366b9
join-room-dialog: Port to glib::Properties macro 2023-12-17 22:33:52 +01:00
Kévin Commaille
cf0f9d6f78
event-source-dialog: Port to glib::Properties macro 2023-12-17 22:29:11 +01:00
Kévin Commaille
7db1e462d4
create-dm-dialog: Port to glib::Properties 2023-12-17 22:23:24 +01:00
Kévin Commaille
e4daec38d6
sidebar: Port to glib::Properties macro 2023-12-17 21:44:43 +01:00
Kévin Commaille
7b8cc7db87
user-page: Add button to open or create direct chat 2023-12-17 16:02:46 +01:00
Kévin Commaille
182c64773b
create-dm-dialog: Refactor to be able to reuse the logic elsewhere 2023-12-17 16:02:44 +01:00
Yuri Chornoivan
0cb3012999 Update Ukrainian translation 2023-12-16 21:22:54 +00:00
Kévin Commaille
452ee75448
chore: Upgrade crates 2023-12-16 12:57:15 +01:00
Seth Falco
a640e6dcc8 room-history: disable context menu for redacted messages 2023-12-16 11:31:59 +00:00
Lukáš Tyrychtr
43363669c8 sidebar: Fix a11y
This allows to read the sidebar with Orca, by doing the following:
* It changes the role for sidebar rows to something which can have a11y labels
* It actually computes the labels and sets them on the rows
2023-12-16 11:16:22 +00:00
Kévin Commaille
15adbfecbe
room: Port to glib::Properties macro 2023-12-14 12:13:50 +01:00
Jonathan Lin
a6d10c65e5 Fix media timeline to load in encrypted rooms
When loading the timeline, the messages retrieved were always filtered by the event type `RoomMessage` and by those with URLs. However, when encryption is used, the event type for all messages are 'RoomEncrypted' and the contents cannot be filtered by URL. The fix changed to filter for events of type `RoomEncrypted` and `RoomMessage` when the room has encryption enabled, and leaving the filter unchanged otherwise.

Fixes #1322.
2023-12-14 09:50:15 +00:00
Luming Zh
77459b05da Update Chinese (China) translation 2023-12-13 20:11:44 +00:00
Alexandre Franke
0912f82a19 readme: add link to nightly 2023-12-13 16:08:48 +01:00
Kévin Commaille
4491976599 category: Fix filtering 2023-12-13 10:06:44 +00:00
Alexandre Franke
6d29f08c81 Update French translation 2023-12-13 09:08:28 +00:00
Danial Behzadi
86ed2541a3 Update Persian translation 2023-12-13 08:49:47 +00:00
Kévin Commaille
0b7662b8d1
user: Port to glib::Properties macro 2023-12-12 23:53:23 +01:00
Kévin Commaille
7869be72c1
session: Port to glib::Properties macro 2023-12-12 23:00:02 +01:00
Kévin Commaille
46d585b185
session-settings: Port to glib::Properties macro 2023-12-12 21:59:58 +01:00
Kévin Commaille
5d9b9e61b3
sidebar-data: Port to glib::Properties macro 2023-12-12 21:43:25 +01:00
Kévin Commaille
f1a923f402
room-list: Port to glib::Properties macro 2023-12-12 20:24:12 +01:00
Kévin Commaille
deaee7393d
avatar-data: Port to glib::Properties macro 2023-12-12 20:09:41 +01:00
Artur S0
cd93b65ebe Update Russian translation 2023-12-11 12:16:02 +00:00
Kévin Commaille
51f03cd850
chore: Upgrade crate dependencies 2023-12-10 11:22:28 +01:00
Kévin Commaille
1bfeb7a5cb
qr-code: Port to glib::Properties macro 2023-12-10 09:47:40 +01:00
Kévin Commaille
0241d7f3f2
window: Port to glib::Properties macro 2023-12-10 09:47:39 +01:00
Kévin Commaille
a2e5af0e84
system-settings: Port to glib::Properties macro 2023-12-10 09:47:39 +01:00
Kévin Commaille
a110e89056
expression-list-model: Port to glib::Properties macro 2023-12-10 09:47:39 +01:00
Kévin Commaille
39412bcd3b
session-list: Port to glib::Properties macro 2023-12-10 09:47:39 +01:00
Kévin Commaille
e13604e5bc
login: Port to glib::Properties macro 2023-12-10 09:47:39 +01:00
Kévin Commaille
122484d3e1
account-switcher: Port to glib::Properties macro 2023-12-10 09:47:39 +01:00
Yuri Chornoivan
1e2401231f Update Ukrainian translation 2023-12-09 20:50:34 +00:00
Kévin Commaille
8cfa4bfde5
components: Port to the glib::Properties macro 2023-12-09 17:33:31 +01:00
Kévin Commaille
e6ad5558f8
account-details: Put user ID before homeserver
It is probably the most useful advanced information for a regular user.
2023-12-09 13:15:56 +01:00
Kévin Commaille
2043c6dc8f
misc: Always use the 'success' class with the 'verified' shield
The reason we show them is because it's a good thing. This makes it
clearer.
2023-12-09 13:13:10 +01:00
Kévin Commaille
8d8e5848b0
misc: Be consistent in the time formats 2023-12-08 21:45:43 +01:00
Kévin Commaille
41a8106460
app: Follow system setting for clock format
i.e. 12h or 24h time format.
2023-12-08 21:45:43 +01:00
Kévin Commaille
c6c3c73c3b
members-list: Open user details page on click
Replaces the toggle button with the menu.
2023-12-08 20:29:51 +01:00
Kévin Commaille
81660826c2
verification: Set flow ID as optional
Since it is not set if an error happens when trying to create one.
We might forget to check whether creation failed or not.
2023-12-08 20:01:04 +01:00
Kévin Commaille
556d470074
members-list-view: Refactor list items
Have a more consistent styling accross items.
2023-12-08 20:01:04 +01:00
Kévin Commaille
0d2a1d25e5
account-settings: Rename UserPage to GeneralPage
This is more consistent with the strings in the interface.
Furthermore, I would like to user that name for a page showing a Matrix
User
2023-12-08 20:01:04 +01:00
Kévin Commaille
929ae724a3
readme: Separate TOC from app description 2023-12-08 14:42:28 +01:00
Kévin Commaille
1a0ecad177
meson: Restore hack profile
It's the same as 'development' only with a different app ID.
Allows to use the nightly Flatpak and develop using a custom flatpak
manifest at the same time.
2023-12-07 13:32:18 +01:00
Kévin Commaille
6557a8b62a
session: Fix constructor for new session
glib::Boxed panics if not provided with construct_only.
2023-12-05 14:49:15 +01:00
Kévin Commaille
6e4abaa591
timeline: Do not use channels to pass data from streams
Even with a buffer of 100 values, sometimes it is not enough during
startup. That makes the task panic, and no more diffs are received in
the timeline.
Instead of growing the buffer to an arbitrary value that might be
way too much or that might break in some cases, let's just use
glib::SendWeakRef and upgrade them when the diff arrives.
2023-12-05 10:57:51 +01:00
Kévin Commaille
f64aadb39a
login: Remove link to reset password
It only works for matrix.org accounts by default as it's not possible
to change the homeserver on that page.
There is no easy solution to fix this.
2023-12-05 10:01:27 +01:00
Alexandre Franke
0916f76360 README: add ToC 2023-12-03 11:57:17 +00:00
Luming Zh
f0cea21f0d Update Chinese (China) translation 2023-11-30 18:40:28 +00:00
Kévin Commaille
66d3e84010
notifications: Show notifications for rooms other than the active one
Prior to this, we would only show notifications for sessions other than
the active one.
The expectation should be to have notifications for any room that is
not currently opened.
2023-11-30 11:55:18 +01:00
David Runge
23ccd87258
Use current appstreamcli option for not accessing the network
In current `appstreamcli` (>= 1.0.0) the option for not accessing the
network is `--no-net`.

Signed-off-by: David Runge <dave@sleepmap.de>
2023-11-30 00:45:04 +01:00
Kévin Commaille
6754e9653f
session-list: Make sure sessions are always listed in the same order 2023-11-29 18:59:47 +01:00
Kévin Commaille
589ae9b840
session-list: Create SessionListSettings to manage session settings 2023-11-29 18:59:47 +01:00
Yuri Chornoivan
a8aed19530 Update Ukrainian translation 2023-11-29 17:35:36 +00:00
Kévin Commaille
57f7b6663c
account-switcher: Bind AccountSwitcherButton's visibility in Rust code
Somehow if it's done in the UI file it triggers a critical error when
closing the app.
2023-11-29 16:43:06 +01:00
Kévin Commaille
0b8709ee25
chore: Upgrade openssl crate
Due to a RustSec advisory
2023-11-29 15:33:16 +01:00
Kévin Commaille
6390f1e984
application: Move the SessionList to the application
Necessary to run the app in the background or to split sessions between
several windows.
2023-11-29 14:57:52 +01:00
Kévin Commaille
efabeea00c
application: Don't keep reference to main window
GtkApplication already does that.
Includes also some refactoring.
2023-11-29 14:45:36 +01:00
Kévin Commaille
c993377ed1
session-list: Handle restoring sessions in SessionList 2023-11-29 14:45:31 +01:00
Kévin Commaille
56da95ee68
window: Show account switcher on loading and error pages
If there are any sessions
2023-11-28 16:09:13 +01:00
Kévin Commaille
bed14c3b99
account-switcher: Create AccountSwitcherButton
That is compatible with any SessionInfo
2023-11-28 16:09:13 +01:00
Kévin Commaille
741f1dc5e0
account-switcher: Rename AccountSwitcher to AccountSwitcherPopover 2023-11-28 16:09:13 +01:00
Kévin Commaille
8955b92463
window: Support failed and initializing sessions 2023-11-28 16:09:13 +01:00
Kévin Commaille
51797294dc
avatar-data: Allow to construct without AvatarImage
We might need to show an avatar without having a Session.
2023-11-28 16:09:13 +01:00
Luming Zh
a88ff226af Update Chinese (China) translation 2023-11-28 14:33:33 +00:00
Yuri Chornoivan
5596a352ce Update Ukrainian translation 2023-11-27 20:42:38 +00:00
Alexandre Franke
fe00603f56 metainfo: put features in description 2023-11-27 18:03:22 +00:00
Kévin Commaille
7a4af244c5
readme: Move Flathub setup instructions to parent section 2023-11-27 18:22:21 +01:00
Kévin Commaille
3c97cb5525
readme: Update remaining pre-v5 instructions 2023-11-27 18:22:21 +01:00
Kévin Commaille
34dc72699e meson: Do not create new cargo config file with dist script
Instead append to the existing one.
2023-11-27 16:51:20 +00:00
Artur S0
f5dd08d114 Update Russian translation 2023-11-27 16:29:00 +00:00
Kévin Commaille
2e86784161 secret: Serialize secret as JSON
MessagePack creates issues with Secret Service providers that expect a
valid string.
We don't really care about saving a few bytes when storing secrets.
2023-11-27 12:17:28 +00:00
Yuri Chornoivan
d534071ad2 Update Ukrainian translation 2023-11-26 19:55:03 +00:00
Kévin Commaille
a4bd482e8c
misc: Be consistent for setting the key binding to close dialogs 2023-11-26 14:47:53 +01:00
Felipe Kinoshita
654ef1b4e6 event_source_dialog: Close dialog on Escape
Fixes #1292
2023-11-26 13:32:44 +00:00
Felipe Kinoshita
f28021fce3
sidebar: Use standard padding values
GNOME apps usually use multiples of 6 for padding/margin so let's stick
with that.

Fixes #1308
2023-11-26 06:44:27 -03:00
Kévin Commaille
c276b1b2bd
ci: Fix docs job 2023-11-25 17:19:39 +01:00
Kévin Commaille
68291d7abc
build: Remove Hack manifest and profile
Now that the stable release is on the same codebase, it should be less
necessary to have 2 development builds.
Also since most performance issues have been fixed, it should not be
necessary anymore to build the nightly version in release mode.
2023-11-25 15:22:22 +01:00
Kévin Commaille
5e9e7600f4
ci: Run tests
There are tests to make sure our data is valid for Flathub
2023-11-25 14:08:37 +01:00
Kévin Commaille
635e7e13c3
account-settings: Add buttons to copy advanced information 2023-11-25 13:48:04 +01:00
Automeris naranja
8292b2e37d account_settings: Use .property style class in rows from user page
Closes https://gitlab.gnome.org/GNOME/fractal/-/issues/1301
2023-11-25 10:11:39 +00:00
Kévin Commaille
a9ac0d482c
ci: Allow dirty folder when running meson dist
The build directory is not ignored.
2023-11-24 21:46:36 +01:00
Kévin Commaille
81868ed463
metainfo: Remove final dots in captions
Flathub (aka `appstream-cli validate`) doesn't like them.
2023-11-24 21:45:00 +01:00
Kévin Commaille
091a311f51
meson: Fix meson dist directory 2023-11-24 21:44:07 +01:00
Alexandre Franke
6c48cde678
Release 5 2023-11-24 19:05:09 +01:00
Kévin Commaille
78aaef60ff
meson: Make sure everything works without a pre-release version 2023-11-24 15:14:39 +01:00
Daniel Rusek
b64f1dced2 Update Czech translation 2023-11-23 21:06:46 +00:00
Daniel Rusek
3700bc7036 Update Czech translation 2023-11-23 19:01:50 +00:00
Kévin Commaille
6daa803a5e
join-room-dialog: Fix action when dialog closes 2023-11-21 10:51:37 +01:00
Kévin Commaille
9d0409124c
misc: Do not change line height
It makes the text blurry on non-HiDPI screens.
This change is temporary for the Fractal 5 release.
2023-11-21 10:34:17 +01:00
Kévin Commaille
d6d2c43c71
sidebar: Rename Entry to IconItem
Entry is confusing because GtkEntry is where we input text.
2023-11-19 17:58:22 +01:00
Kévin Commaille
eeb9d6f5ae
misc: Fix positioning of popovers
Align the corner to the pointer (to the bottom right in LTR languages).
2023-11-19 17:03:17 +01:00
Kévin Commaille
d5d84fdb3f
sidebar: Fix positioning of sidebar entries
Rename CSS class to sidebar-entry to avoid getting the style from
GtkEntry.
Align text of entry with room names.
2023-11-19 17:01:26 +01:00
Kévin Commaille
e0fd735622
message-row: Use the default button style for reactions 2023-11-19 14:29:24 +01:00
Alexandre Franke
24c720518f Update French translation 2023-11-19 12:42:19 +00:00
Kévin Commaille
05adb8408b user-facing-error: Do not consume errors
Some errors do not implement Clone and we might want to keep them
around.
2023-11-19 11:46:09 +00:00
Kévin Commaille
1c4d275394 components: Move LoadingState into utils 2023-11-19 11:46:09 +00:00
Kévin Commaille
5e03a39f41 secret: Handle per-session errors and migrations
Per-session errors should never happen in practice, it should be fine
to just log them.
Migrations already swallow any errors.
2023-11-19 11:46:09 +00:00
Kévin Commaille
d26c313542 application: Do not assume we always have a main window
Prepares the case where we run the application in the background
2023-11-19 11:46:09 +00:00
Kévin Commaille
fd37835049 application: Move some actions to the main window
They are only useful if there is a main window.
2023-11-19 11:46:09 +00:00
Anders Jonsson
de6c8af2f3 Update Swedish translation 2023-11-19 11:45:11 +00:00
Luming Zh
03f19a30aa Update Chinese (China) translation 2023-11-18 00:34:49 +00:00
Sabri Ünal
b03bb3ed95 Update Turkish translation 2023-11-17 17:51:09 +00:00
Kévin Commaille
f25bf6ef77
utils: Disconnect signals on drop for BoundObject(WeakRef)
This is always something we need to do anyway.
2023-11-17 15:48:03 +01:00
Kévin Commaille
992fbaeda6
chore: Fix clippy warnings 2023-11-17 13:04:58 +01:00
Kévin Commaille
6bf5280f42
room-creation: Use ToastableWindow 2023-11-17 13:04:29 +01:00
Yuri Chornoivan
04080ab740 Update Ukrainian translation 2023-11-16 19:59:20 +00:00
Kévin Commaille
47b2d9fc10
secret: Prefix the data directory with "fractal"
This is more appropriate outside of Flatpak.
2023-11-16 15:49:44 +01:00
Kévin Commaille
71611bc34e
message-row: Show the sending status of messages
Also logs if a sending error is encountered
2023-11-16 12:43:06 +01:00
Kévin Commaille
b1de0cee42
chore: Upgrade ruma crates
Brings in some bug fixes
2023-11-16 12:10:37 +01:00
Sabri Ünal
ed9e09253c Update Turkish translation 2023-11-16 00:38:40 +00:00
Paul van Tilburg
be9551c2a3
Update the beta installation instructions
The instructions in the README assumed that the Flathub base/default
repository is configured. However, when this is not the case, installing
Fractal from Flathub Beta fails because it tries to pull the GNOME
runtime from Flathub base/default.
This adds instructions to install the Flathub base/default repository,
which is harmless if it is already there.
2023-11-15 20:52:01 +01:00
Kévin Commaille
724c7deeff
members-page: Make sure search entry is focused after it is revealed 2023-11-15 14:17:30 +01:00
Kévin Commaille
98a7fc4c42
members-page: Use AdwNavigationView
Allows to use the default back button behavior of AdwHeaderBar
2023-11-15 14:04:43 +01:00
Kévin Commaille
96b870bd3f
room-details: Rename MemberPage to MembersPage 2023-11-15 11:07:27 +01:00
Kévin Commaille
09fb83a27c
message-toolbar: Prevent sending empty messages 2023-11-15 10:14:10 +01:00
Alexandre Franke
f358b0bb25 Update French translation 2023-11-14 11:01:44 +00:00
Yuri Chornoivan
467dfce9b7 Update Ukrainian translation 2023-11-14 07:45:22 +00:00
Kévin Commaille
31c42f76f2
macros: Fix docs 2023-11-13 16:44:38 +01:00
Kévin Commaille
e3b8542cf8
ci: Make docs warnings fail CI 2023-11-13 16:44:38 +01:00
Kévin Commaille
0a54ec2679
explore: Remove unused field 2023-11-13 14:51:19 +01:00
Kévin Commaille
9b7bd5bb5e
explore: Do not initialize the list if it is already loading 2023-11-13 14:44:38 +01:00
Kévin Commaille
971e1c2c33
read-receipts-list: Implement as a toggle button instead of using a child
Improves the location where the popover points to.
Improves the a11y by removing children from the tree.
2023-11-13 14:00:54 +01:00
Kévin Commaille
d70e8d3f4e
components: Specialize OverlappingBox to only handle avatars
Rename it to OverlappingAvatars.

It's the only use case for it in the foreseeable future.
It deduplicates code and facilitates a11y.
2023-11-13 14:00:53 +01:00
Sabri Ünal
9c01de9682 Update Turkish translation 2023-11-13 11:33:24 +00:00
Kévin Commaille
d61c3ebc97 camera-paintable: Do not unwrap channel errors 2023-11-13 09:12:34 +00:00
Alexandre Franke
3be4f968a0 misc: Solve plural issue for some languages 2023-11-13 01:11:48 +01:00
Kévin Commaille
63423a8e1e
sidebar: Set EntryRow icon's a11y role as presentational 2023-11-12 13:04:19 +01:00
Kévin Commaille
2c94eee666
a11y: Set Avatar role as presentational when it is next to a label 2023-11-12 12:34:47 +01:00
Kévin Commaille
9b822fb47c
components: Set default accessible role of Avatar as an image
And hide children from the a11y tree.
2023-11-12 12:34:47 +01:00
Kévin Commaille
0391911e3e video-player: Only play when the player is mapped 2023-11-12 10:36:35 +00:00
Kévin Commaille
1530a68d7b
contributing: Add meson profile for fenv instructions 2023-11-12 11:17:58 +01:00
Sabri Ünal
593cc455df Update Turkish translation 2023-11-12 06:30:08 +00:00
Kévin Commaille
a1f7524392
drag-overlay: Set revealer has hidden by default
Because the child is not revealed by default
2023-11-11 12:05:47 +01:00
Kévin Commaille
24660e232d
misc: Reduce width request of popovers
They look weird with a lot of free space
2023-11-10 15:31:32 +01:00
Kévin Commaille
2587f0e9ed
member-timestamp: Align timestamp to the left 2023-11-10 15:24:24 +01:00
Kévin Commaille
ff776f02a6
misc: Do not show arrows on some popovers 2023-11-10 15:23:25 +01:00
Maximiliano Sandoval R
0c3879622e
room-title: Add missing CSS from libadwaita
Partially fixes #1219, it is not reproducible when setting the text
scaling factor to 1.25 (Larger Text from Settings),
it only starts to be visible at 1.5.
2023-11-10 09:51:58 +01:00
Maximiliano Sandoval R
4a93dc0417 Set accessible-role presentation in some images
These are images which do not require additional info, like a label,
they could be hidden from the UI and the UI would still make sense.
2023-11-10 08:30:08 +00:00
Maximiliano Sandoval R
41e96536ca window: Add title 2023-11-10 08:30:08 +00:00
Asier Sarasua Garmendia
f07ed167e7 Update Basque translation 2023-11-10 06:52:10 +00:00
Anders Jonsson
ea73b6cfda Update Swedish translation 2023-11-09 21:34:26 +00:00
Kévin Commaille
4e498903df
video-player: Flush message bus on dispose
Otherwise we might leak the GstPlay
2023-11-09 14:45:25 +01:00
Kévin Commaille
b87b9dc12b
room-history: Hide scroll button overlay when button is not visible
Otherwise it prevents click on widgets that are under it.
2023-11-09 12:43:35 +01:00
Kévin Commaille
6b1502f513
drag-overlay: Hide revealer when not in use
Allows to select other widgets in the history with the GTK Inspector.
2023-11-09 12:34:40 +01:00
Kévin Commaille
349a2783f1
drag-overlay: Don't subclass AdwBin
We override all its APIs
2023-11-09 12:22:40 +01:00
Kévin Commaille
7f8dc352b4
data: Bundle all the icons we use
Relying on the ones available on the system might not work on all
systems
2023-11-09 12:01:31 +01:00
Kévin Commaille
af8469d1f8
member-timestamp: Timestamps are in seconds
We provide timestamps in seconds but they are treated as milliseconds so
the formatted date and time are wrong
2023-11-09 09:55:23 +01:00
Kévin Commaille
3c50632c9e
readme: Update for Fractal 5.rc1 2023-11-08 20:43:10 +01:00
Kévin Commaille
863546c23a
ci: Trigger workflow when there is a commit tag
Should hopefully finally fix the release workflow
2023-11-08 18:53:48 +01:00
Kévin Commaille
918a7179f3
chore: Prepare release of Fractal 5.rc1 2023-11-08 15:29:01 +01:00
Luming Zh
079273380b Update Chinese (China) translation 2023-11-08 00:41:07 +00:00
Maximiliano Sandoval R
e119082877 member_list: Do not use borrow_mut for a long time
Fixes: GNOME/fractal#1278
2023-11-07 19:55:03 +00:00
Yuri Chornoivan
840d108ea9 Update Ukrainian translation 2023-11-07 18:13:02 +00:00
Brage Fuglseth
b199d1ae8d room details: add .pill to save button 2023-11-07 16:31:43 +00:00
Brage Fuglseth
cd21c5c35b room details: decrease window width to match AdwAboutWindow 2023-11-07 16:31:43 +00:00
Brage Fuglseth
e621651f4d room details: Add .pill class to edit button 2023-11-07 16:31:43 +00:00
Brage Fuglseth
7ededd1cfe room-details: style cleanups
Ideally we'd have two separate views for viewing and editing room
details, but this makes the current implementation look a little nicer.

- Update the room title to match the .title-1 style class when
insensitive
- Add a 24px margin above room title to match AdwStatusPage
- Disable search since the page has a rather small amount of elements
2023-11-07 16:31:43 +00:00
Kévin Commaille
002f93ef2e
explore: Join a room by its canonical alias if possible
Otherwise, ensure we provide routing to join a room by its ID.
2023-11-07 17:07:32 +01:00
Kévin Commaille
53571ec265
sidebar: Show icon next to DMs name 2023-11-07 15:47:07 +01:00
Kévin Commaille
64e865cdce
room: Remove people/direct category 2023-11-07 15:45:02 +01:00
Kévin Commaille
4d42051906
completion-popover: Use same avatar size as other places in room history 2023-11-07 15:21:18 +01:00
Kévin Commaille
2eeb44aaae
chore: Remove extra spaces in front of single-digit dates and times 2023-11-07 15:21:18 +01:00
Kévin Commaille
198b22618f
room-history: Show popover with list of read receipts on right click 2023-11-07 15:21:17 +01:00
Kévin Commaille
4fcaa2da7f
room-history: Show tooltip for read receipts details 2023-11-07 14:09:03 +01:00
Kévin Commaille
24d6a7ce32
event: Provide more data for read receipts 2023-11-07 14:09:01 +01:00
Kévin Commaille
33d06a93e8
chore: Upgrade crates 2023-11-07 13:21:09 +01:00
Kévin Commaille
e81d125998
attachment-dialog: Fix resource path 2023-11-07 12:33:35 +01:00
Luming Zh
eea7c45396 Update Chinese (China) translation 2023-11-07 03:52:33 +00:00
Yuri Chornoivan
00ab7d496f Update Ukrainian translation 2023-11-06 20:55:26 +00:00
Paul van Tilburg
cd1911fce8
room-history: Add popover to show senders of a reaction
The popover will show for a reaction the list of people that have sent
it and when they did.

* Add a `ReactionPopover` object for the popover
* Add a `ReactionSenderRow` object for senders as rows of the popover
* Add a `MemberReactionSender` object to represent a room member that
  sent a reaction
2023-11-06 20:57:20 +01:00
Paul van Tilburg
7bb3790d7a
event: Add ListModel implementation to ReactionGroup 2023-11-06 20:40:23 +01:00
Kévin Commaille
9cd1a91984
style: Rename completion-popover class to list-popover
And make compatible with popovers containing GtkListViews
2023-11-06 20:17:15 +01:00
Kévin Commaille
4dbe94fcb5
room-history: Set room menu as primary menu when the sidebar is hidden
i.e. when the window is narrow.
2023-11-06 14:18:44 +01:00
Kévin Commaille
227e9e9076
sidebar: Set main menu as primary menu 2023-11-06 14:18:44 +01:00
Kévin Commaille
1cbe892fce
media-viewer: Grab focus when revealed 2023-11-06 12:55:22 +01:00
Maximiliano Sandoval R
4ee0a60b6c media_viewer: Allow opening menu with F10 2023-11-06 10:58:20 +00:00
Yuri Chornoivan
3311f44add Update Ukrainian translation 2023-11-05 18:24:42 +00:00
Kévin Commaille
58a5057b98
misc: Ensure most icons have a tooltip/accessibility label 2023-11-05 15:34:50 +01:00
Kévin Commaille
3a973fc80a
misc: Various improvements to strings 2023-11-05 14:04:20 +01:00
Kévin Commaille
f2a2d0cae1
category: Do not implement Display for hidden categories
To no ask for translations that are never shown.
2023-11-05 13:53:47 +01:00
Kévin Commaille
d2def499e0
member: Do not implement Display for Membership
Otherwise we are asking translators to translate strings that will
probable never be used.
Instead just mark for translation the variants we need.
2023-11-05 13:53:47 +01:00
Kévin Commaille
8056b43fe3
event-actions: Remove actions that don't make sense on a state event 2023-11-05 13:53:46 +01:00
Kévin Commaille
2d3a0560ea
room-history: Disable message toolbar when user is not allowed to send messages 2023-11-04 16:47:19 +01:00
Kévin Commaille
52c5f51280
room-history: Move message toolbar to a separate module 2023-11-04 12:56:05 +01:00
Kévin Commaille
08d10991f5
timeline: Fix iter type
`GtkFlattenListModel`'s item type is always `GObject`
2023-11-04 12:36:12 +01:00
Kévin Commaille
bcee8bfd9f
Revert "room-history: Add spell checker to message entry"
This reverts commit 2295e8a9d19690ae62cf93141a5d486ec6543405.
2023-11-04 11:23:59 +01:00
Kévin Commaille
ace6c07fda
Revert "room-details: Add spell checker to room topic entry"
This reverts commit b7e4c059e76d8a05844450660496537fe99e8e9b.
2023-11-04 11:22:57 +01:00
Kévin Commaille
7faaff93f3
Revert "room: Expose the language of a room"
This reverts commit c4c74c8abac5300210981426dc14274b5cb10568.
2023-11-04 11:22:55 +01:00
Kévin Commaille
938c6765f7
Revert "room-history: Use the room's language for the spell checker"
This reverts commit 57b0fc87497dca8c05e0b8e98e158fc53b65527d.
2023-11-04 11:22:51 +01:00
Kévin Commaille
b6ebdf23d8
Revert "room-details: Use the room's language for the spell checker"
This reverts commit 4e09079624053e7f0821bf62e0aa72ac87e8acdd.
2023-11-04 11:22:40 +01:00
Artur S0
46ea1c3870 Update Russian translation 2023-11-04 02:02:53 +00:00
Kévin Commaille
63425ad545
chore: Upgrade gtk4 and its dependencies
Includes a fix for a memory leak in gio
2023-11-03 15:17:02 +01:00
Kévin Commaille
dde84675c2
typing-row: Use cutout instead of border to separate avatars
If part of the avatar is transparent, the cutout looks better.
2023-11-02 17:31:25 +01:00
Kévin Commaille
f11c1fd6d7
read-receipts-list: Add a border between avatars
Uses a round cutout rather than a border to have a better visual
if part of the avatar is transparent.
2023-11-02 17:26:33 +01:00
Kévin Commaille
0c652f24d9
editable-avatar: Make cutout style match less generic 2023-11-02 17:21:18 +01:00
Alexandre Franke
d66d527518 Update French translation 2023-11-02 10:25:52 +00:00
Luming Zh
91712b28d6 Update Chinese (China) translation 2023-11-02 01:21:19 +00:00
Yuri Chornoivan
a00bfb8e46 Update Ukrainian translation 2023-11-01 20:52:02 +00:00
Luming Zh
4e8ee2da93 Update Chinese (China) translation 2023-11-01 13:10:41 +00:00
Kévin Commaille
eecdf29d36
greeter: Make sure button uses header capitalization 2023-11-01 12:52:04 +01:00
Kévin Commaille
750b60559c
error-page: Make sure button text is short
And uses header capitalization
2023-11-01 12:52:04 +01:00
Kévin Commaille
8339ebd8c6
chore: Allow most of text buttons to shrink
This should avoid adaptiveness issues in case translations are too long
2023-11-01 11:07:56 +01:00
Kévin Commaille
ae53aa5fc8
greeter: Hide Create Account button
It is not actually implemented
2023-11-01 10:36:29 +01:00
Yuri Chornoivan
3916072f1e Update Ukrainian translation 2023-10-31 19:28:03 +00:00
Kévin Commaille
8f72c26748
completion-popover: Use ExpressionListModel
Fixes memory leak in code that was implementing the same functionality.
2023-10-31 16:14:56 +01:00
Kévin Commaille
d69d2c0afe
utils: Allow ExpressionListModel to watch several expressions 2023-10-31 16:13:36 +01:00
Kévin Commaille
476d114dc0 room-history: Change the style of emotes 2023-10-30 18:12:50 +00:00
Kévin Commaille
59c29c070e
chore: Upgrade matrix-sdk 2023-10-30 18:49:14 +01:00
Kévin Commaille
4e09079624
room-details: Use the room's language for the spell checker 2023-10-30 12:45:47 +01:00
Kévin Commaille
57b0fc8749
room-history: Use the room's language for the spell checker 2023-10-30 12:45:46 +01:00
Kévin Commaille
c4c74c8aba
room: Expose the language of a room 2023-10-30 12:44:12 +01:00
Kévin Commaille
b7e4c059e7
room-details: Add spell checker to room topic entry 2023-10-29 17:16:36 +01:00
Kévin Commaille
2295e8a9d1
room-history: Add spell checker to message entry 2023-10-29 17:16:35 +01:00
Kévin Commaille
24fe938cae
meson: Sort dependencies 2023-10-29 12:33:36 +01:00
Kévin Commaille
f1a3490444
room-history: Refactor setup code 2023-10-29 11:52:59 +01:00
Kévin Commaille
1bb8be3725
cargo: Remove ashpd's gtk4 feature
It is not actually used.
2023-10-29 11:27:57 +01:00
Kévin Commaille
d015fa9bbe
cargo: Group dependencies from gtk-rs and their dependents
Should make it easier to know which dependencies to update when gtk-rs
has new releases.
2023-10-29 11:26:23 +01:00
Anders Jonsson
302868fdd1 utils: Fix message dialog typo 2023-10-28 22:30:04 +02:00
Yuri Chornoivan
f0f9b8a8f7 Update Ukrainian translation 2023-10-27 18:13:31 +00:00
Kévin Commaille
3661f449fb
room-details: Ask for confirmation to remove avatar
Otherwise it's a single-click destructive action
2023-10-27 16:18:38 +02:00
Kévin Commaille
141e3ff3cc
account-settings: Ask for confirmation to remove avatar
Otherwise it's a destructive single-click action.
Besides it's an intrusive action that sends an event to each room
that the user has joined.
2023-10-27 15:18:29 +02:00
Kévin Commaille
405b97cef8
invite: Ask for confirmation to decline invite 2023-10-27 13:55:49 +02:00
Kévin Commaille
4a84f2a9f2
invite: Use install_action_async 2023-10-27 13:52:15 +02:00
Kévin Commaille
1ab9502e15
sidebar: Ask for confirmation to leave the room 2023-10-27 13:47:45 +02:00
Kévin Commaille
8f6c0f4ade
room-history: Ask for confirmation to leave the room 2023-10-27 13:46:48 +02:00
Kévin Commaille
1e8f1fe769
utils: Add message dialog to confirm leaving a room 2023-10-27 13:46:16 +02:00
Kévin Commaille
28b2a45477
room: Expose if the join rule is public 2023-10-27 12:07:12 +02:00
Kévin Commaille
d6979e50ff item-row: Show toast when some actions fail 2023-10-27 09:50:17 +00:00
Kévin Commaille
cb8c680df9 item-row: Ask for confirmation when removing message 2023-10-27 09:50:17 +00:00
Kévin Commaille
15b88318db item-row: Do not add any action on redacted events 2023-10-27 09:50:17 +00:00
Yuri Chornoivan
200092f5fa Update Ukrainian translation 2023-10-26 20:20:41 +00:00
Kévin Commaille
2e62541bef
room-details: Display the members list loading state 2023-10-26 13:37:16 +02:00
Kévin Commaille
bd156606e3
loading-row: Remove set_loading
It can lead to an inconsistent state where loading is false but the
spinner is showing.
Let's stick with a single API to show the spinner, when there is no
error.
2023-10-26 13:37:16 +02:00
Kévin Commaille
85c874ed04
components: Rename LoadingListBoxRow to LoadingRow 2023-10-26 13:37:16 +02:00
Kévin Commaille
f30379cc6a
room-details: Use homeserver joined members count instead of local count 2023-10-26 13:37:15 +02:00
Kévin Commaille
d175f73aa9
room: Expose joined members count provided by homeserver 2023-10-26 13:37:15 +02:00
Kévin Commaille
ae645dac99
room: Remove unnecessary async 2023-10-26 13:37:15 +02:00
Kévin Commaille
71a293168a
room-details: Disconnect signals and expression watches on dispose 2023-10-26 13:37:15 +02:00
Kévin Commaille
54f30627a5
message-text: Set hexpand on GtkSourceviews
Otherwise they just take the same width as rows of text in the same
GtkGrid.
2023-10-26 12:11:26 +02:00
Kévin Commaille
a50333bc8d
member-list: Load only local data first
In big rooms that should make tab auto-completion work sooner.
2023-10-24 14:07:22 +02:00
Kévin Commaille
d9ca96bba1
room-history: Fix spacing of messages 2023-10-24 10:52:52 +02:00
Kévin Commaille
42aa302670
chore: Upgrade SDK 2023-10-23 18:01:41 +02:00
Kévin Commaille
f40692f975
room-list: Persist Room metainfo between restarts
Allows to restore the RoomList in the exact same state, even without
waiting for the rooms timelines to be loaded
2023-10-22 11:52:14 +02:00
Kévin Commaille
350f5164ae room: Improve tracking of room read state
Using new API from the SDK
2023-10-20 13:29:26 +00:00
Kévin Commaille
33470209b7 room: Rename latest_unread to latest_activity 2023-10-20 13:29:26 +00:00
Kévin Commaille
e4225577fd chore: Update matrix-sdk 2023-10-20 13:29:26 +00:00
Kévin Commaille
251dd38aa5
item-row: Merge with event_actions
Since it's the only file to use it, it does not make sense to implement
event actions as a trait anymore.
2023-10-20 10:17:12 +02:00
Kévin Commaille
2b46670dfb
chore: Update Cargo.lock
Cargo insists to update this line so here we go.
2023-10-20 10:17:11 +02:00
Kévin Commaille
a070b295c2
chore: Upgrade strum crate 2023-10-19 09:39:53 +02:00
Kévin Commaille
20c5242427
chore: Upgrade rustix crate
Due to a security vulnerability
2023-10-19 09:30:10 +02:00
Kévin Commaille
5ebba615b3
text: Use GtkGrid instead of GtkBox 2023-10-18 10:43:11 +02:00
Kévin Commaille
e5593f51e9
reply: Use GtkGrid instead of GtkBox 2023-10-18 10:42:54 +02:00
Kévin Commaille
2633a15a56
message-content: Use a GtkGrid instead of nested GtkBoxes
The nested GtkBoxes measuring causes a lot of extra calls to `measure`,
which freezes the interface noticeably.
2023-10-17 15:47:08 +02:00
Alan Mortensen
81813a9553 Update Danish translation 2023-10-16 16:56:25 +00:00
Artur S0
d727ad52cd Update Russian translation 2023-10-16 11:58:31 +00:00
Kévin Commaille
0012b84fc9
completion-popover: Do not create 2 GWeakRefs to CompletionPopover per member
The reason is the same as the 2 previous commits.
2023-10-15 11:19:49 +02:00
Kévin Commaille
dc36de6ac7
avatar: Do not hold a GWeakRef to Session
The reason is the same as in the previous commit
2023-10-15 11:19:37 +02:00
Kévin Commaille
483eb7a28e
user: Do not hold a GWeakRef to Session
GObject uses a singly-linked list to keep track of GWeakRefs to an
object.
When a GWeakRef is dropped, the list needs to be iterated to find the
right one.
In a room with 10k members, it means a list of at least 10k GWeakRefs,
so dropping them all at once takes too much time.

We don't have this issue with strong references.
2023-10-15 11:19:31 +02:00
Kévin Commaille
e1976cd4e1
metainfo: Put controls in supports instead of recommends 2023-10-13 09:42:06 +02:00
Luming Zh
898ff8dc86 Update Chinese (China) translation 2023-10-05 18:47:32 +00:00
Yuri Chornoivan
801b670748 Update Ukrainian translation 2023-10-05 17:01:55 +00:00
Kévin Commaille
43fb19e9ba
media-history-viewer: Remove CSS classes with no effect 2023-10-05 10:34:51 +02:00
Kévin Commaille
8927bbbabe
media-viewer: Fix colors of headerbar in light mode 2023-10-05 10:34:40 +02:00
Kévin Commaille
d8830120b7
message-row: Support redacted messages in the timeline
We are not supposed to show them but when an event is redacted while
the client is running, the redacted event does not go through the
event filter in the SDK so it doesn't disappear from the timeline.
2023-10-04 14:47:13 +02:00
Kévin Commaille
884691cc26
room-history: Make sure clicks on message entry do not have unexpected behavior
If it is not included as a toolbar, there is no GtkWindowHandle behind
it,
so clicks don't have a side effect.
2023-10-04 11:54:03 +02:00
Kévin Commaille
f09770186d
metainfo: Remove Purism::form-factor custom keys
They don't pass appstreamcli validation for being duplicates.
They should have been replaced by control and display_length anyway.
2023-10-03 18:10:55 +02:00
Kévin Commaille
b647462090
build: Use appstreamcli instead of appstream-util
appstream-glib is in maintenance mode
2023-10-03 17:48:45 +02:00
Kévin Commaille
2c4b97b658
build: Remove unused variables 2023-10-03 17:48:45 +02:00
Kévin Commaille
013691b973
ci: Fix release workflow 2023-10-03 17:48:45 +02:00
Kévin Commaille
f00eb5855a
ci: Split definition in multiple files 2023-10-03 12:37:03 +02:00
Kévin Commaille
5bd7c6ccca
message-row: HTML escape values of HTML tag attributes 2023-10-03 10:42:51 +02:00
Kévin Commaille
bbe46860cd
chore: Upgrade html2pango crate 2023-10-03 10:42:51 +02:00
Kévin Commaille
2fd2ec1249
state-row: Use the provided name in display name changes 2023-10-02 15:16:07 +02:00
Kévin Commaille
a7d9c3e1d7
room-history: Only wait 5 seconds to mark a message as read 2023-10-02 15:16:07 +02:00
Kévin Commaille
1d9c82a703
sidebar: Expand horizontally search entry
Looks better, especially when window is narrow
2023-10-02 15:16:06 +02:00
Alexandre Franke
3ce4a23846 room-history: put frame around code blocks 2023-10-02 14:44:28 +02:00
Kévin Commaille
9655abbcae
message-row: Get the proper widget to show media
It was using the child of the widget, while it could be deeper in the
hierarchy because of replies.
2023-10-02 10:22:43 +02:00
Balázs Úr
9f5ddd9ee1 Update Hungarian translation 2023-09-25 16:11:01 +00:00
Luming Zh
512bddc552 Update Chinese (China) translation 2023-09-24 17:36:52 +00:00
Piotr Drąg
603687be59 Update Polish translation 2023-09-24 13:45:39 +02:00
Kévin Commaille
675a270ac4
data: Update sas-emoji translations 2023-09-21 21:58:19 +02:00
Kévin Commaille
840d038e5a
build: Upgrade libshumate module to 1.1.0 2023-09-21 21:22:13 +02:00
Kévin Commaille
3614fffd2d
window: Add missing type="top"
Without it the headerbar won't show up
2023-09-21 15:53:47 +02:00
Daniel Mustieles
a2f2fb6b43 Update Spanish translation 2023-09-21 09:42:09 +00:00
Kévin Commaille
e0c30f451b
build: Log cargo and rustc version in build messages 2023-09-20 20:30:30 +02:00
Kévin Commaille
de175f16ca
room: Reload room name on member events
Members names might be used to calculate the name.
2023-09-18 14:18:23 +02:00
Kévin Commaille
eb4e64d7e2
member-list: Fix tracking of Members activity 2023-09-18 13:46:52 +02:00
Kévin Commaille
fe3fba326e
chore: Use AdwSwitchRow wherever possible 2023-09-18 10:55:41 +02:00
Kévin Commaille
d560572193 chore: Use AdwToolbarView wherever possible 2023-09-18 08:38:10 +00:00
Yuri Chornoivan
4b98c9caef Update Ukrainian translation 2023-09-17 18:03:07 +00:00
Kévin Commaille
6895d4cbfc
explore: use same colors as room history 2023-09-17 19:36:00 +02:00
Kévin Commaille
32ac368bba
room-history: Fix toolbars colors and only use flat style 2023-09-17 19:35:46 +02:00
Kévin Commaille
f93b794f5f
room-details: Use the new libadawaita 1.4 APIs
Now that it handles navigation with push and pop, we can reuse
AdwPreferencesWindow. Use also AdwNavigationPage and AdwToolbarView.
2023-09-17 18:11:35 +02:00
Kévin Commaille
be2ca38828
session-view: Use AdwNavigationSplitView and AdwToolbarView
Replaces the deprecated AdwLeaflet.
2023-09-17 14:13:41 +02:00
Kévin Commaille
ccdc93be93
media-viewer: Use AdwToolbarView
Replaces deprecated AdwFlap
2023-09-17 14:01:24 +02:00
Kévin Commaille
edc23fb4be
account-settings: Use AdwNavigationPage and AdwToolbarView for subpages
Removes the use of deprecated APIs
2023-09-17 12:47:24 +02:00
Kévin Commaille
e03b52c119
chore: Use version 1.4 of libadwaita 2023-09-17 12:47:24 +02:00
Kévin Commaille
f3565530ce
room: Only keep MemberList in memory when Room is shown
It avoids to keep a lot of members and their avatar in memory when
switching from big rooms
2023-09-16 07:47:11 +02:00
Kévin Commaille
03e96d4452
timeline-item: Use the sender ID instead of a Member
Do not expect that the members list of a room is always available.
2023-09-15 17:06:17 +02:00
Kévin Commaille
a932e59e09
rood: Load room members from SDK
Do not expect that the members list of a room is always available.
2023-09-15 15:51:32 +02:00
Kévin Commaille
2d6aaadbd6
dm-user-list: Load room members from SDK
Do not expect that the members list of a room is always available.
2023-09-15 15:43:43 +02:00
Kévin Commaille
6ebb231995
event-actions: Do not get member unnecessarily 2023-09-15 15:06:12 +02:00
Kévin Commaille
5fc08ef971
verification-list: Load user to verify from SDK
Do not expect that the members list of a room is always available.
2023-09-15 14:54:02 +02:00
Kévin Commaille
c749ab0cc2
notifications: Get user display name from SDK
Do not expect that the members list of a room is always available.
2023-09-15 14:54:02 +02:00
Kévin Commaille
0e0f0ed20a
event: Keep list of user IDs for read receipts
Do not expect that the members list of a room is always available.
2023-09-15 14:54:02 +02:00
Kévin Commaille
6756e7343f
room: Move load_members to MemberList 2023-09-15 14:54:01 +02:00
Kévin Commaille
521afbe0b1
docs: Fix typo 2023-09-14 14:46:03 +02:00
Kévin Commaille
ba15c5b12a
chore: Update gtk crate and associated dependencies 2023-09-14 13:25:32 +02:00
Kévin Commaille
350a65cb0a
chore: Update freedesktop runtime to 23.08 2023-09-14 11:23:27 +02:00
Kévin Commaille
cd982b03c4 room-history: Properly style HTML titles in messages 2023-09-12 12:44:50 +00:00
Kukuh Syafaat
c50076b77a Update Indonesian translation 2023-08-30 04:46:12 +00:00
Kévin Commaille
deee7e3552
room-history: Remove supposed guard against loading
The purpose seems to be to guard when calling load because the timeline
is ready, but the items are not yet loaded in the history.
However that also prevents to load more items when the view is not full.
It is more of a bug to not be able to load events when the view is not
full, than to make one extra request.
2023-08-28 15:04:18 +02:00
Danial Behzadi
11d47ce854 Update Persian translation 2023-08-28 09:18:59 +00:00
Jiri Grönroos
2933b4cd75 Update Finnish translation 2023-08-27 17:20:03 +00:00
Philipp Kiemle
38f85fc839 Update German translation 2023-08-27 10:04:27 +00:00
Artur S0
1f5bf03da2 Update Russian translation 2023-08-26 15:46:59 +00:00
Sabri Ünal
616d780b2f Update Turkish translation 2023-08-25 05:13:06 +00:00
Asier Sarasua Garmendia
99d7e2f5b0 Update Basque translation 2023-08-20 06:48:17 +00:00
Piotr Drąg
533cb48b9f Update Polish translation 2023-08-19 19:51:22 +02:00
Kukuh Syafaat
bb5ae3eb45 Update Indonesian translation 2023-08-18 14:36:28 +00:00
Kévin Commaille
cbcee005de docs: Update README for version 5.beta2 2023-08-17 17:25:04 +00:00
Luming Zh
c0651801c5 Update Chinese (China) translation 2023-08-17 15:48:53 +00:00
Yuri Chornoivan
7f07b48f28 Update Ukrainian translation 2023-08-17 14:19:17 +00:00
Anders Jonsson
1c8448dd54 Update Swedish translation 2023-08-17 09:44:52 +00:00
Kévin Commaille
d8efac8b6d
chore: Release Fractal 5.beta2 2023-08-17 10:36:49 +02:00
Kévin Commaille
99394c950b
invite: Use "decline" instead of "reject" 2023-08-17 10:10:36 +02:00
Kévin Commaille
1707a9f778
invite: Center horizontally the text for the inviter 2023-08-17 09:59:55 +02:00
Kévin Commaille
13300196c7
room: Fix updating category when room state changes
Now that the Room struct doesn't change, we need to match with the
category.
2023-08-17 09:56:37 +02:00
Kévin Commaille
6ba96d46b6
utils: Re-encode HTML special characters when rebuilding HMTL
Otherwise Pango complains about those characters
2023-08-16 16:48:52 +02:00
Kévin Commaille
4d778e8dfe
timeline: Expose method to know if we can load more events 2023-08-16 15:17:31 +02:00
Kévin Commaille
60098f930c room-history: Always check if we need to load more items when timeline is ready 2023-08-16 10:19:45 +00:00
Kévin Commaille
9e6f1afce2 timeline: Use current back pagination status to set state after initialization 2023-08-16 10:19:45 +00:00
Kévin Commaille
c363a18e5f timeline: Don't change state when Timeline is cleared.
It is not really in its initial state since it should be ready to load
more events.
2023-08-16 10:19:45 +00:00
Luming Zh
848822aa1f Update Chinese (China) translation 2023-08-15 11:55:18 +00:00
Kévin Commaille
adab4e4f60
utils: Fix rebuilding HTML in extract_mentions 2023-08-14 16:57:29 +02:00
Yuri Chornoivan
58f58f20ce Update Ukrainian translation 2023-08-14 10:14:27 +00:00
Kévin Commaille
f9fcc0df3f
ci: Pin rust-nightly image 2023-08-14 11:24:22 +02:00
Kévin Commaille
65a471416e
room-history: Allow to edit messages. 2023-08-13 19:47:46 +02:00
Kévin Commaille
e62042dd82
utils: Add function to extract mentions from HTML
It is more versatile than the precedent one that was simple string
searching, expecting the HTML in a special format, at the cost of
an added dependency.
2023-08-13 18:18:24 +02:00
Kévin Commaille
be5e2784e5
main: Use tracing-subscriber's EnvFilter
It is more powerful than the default filter.
This syntax also allows to add other layers.
2023-08-13 15:03:35 +02:00
Kévin Commaille
97de17ce62
misc: Use tracing for logging 2023-08-13 14:54:20 +02:00
Boyuan Yang
12842bbe7c Update Chinese (China) translation 2023-08-12 20:01:49 +00:00
Kévin Commaille
ba09929fe6
chore: Upgrade matrix-sdk and other cargo dependencies 2023-08-12 11:59:25 +02:00
Kévin Commaille
fa61ca6b69
secret: Try to unlock collection and item with DBus backend 2023-08-12 10:06:16 +02:00
Kévin Commaille
71f04c86e0
chore: Upgrade oo7 crate 2023-08-12 10:04:21 +02:00
Kévin Commaille
92f667b5b1 content: Fix room not unselected in sidebar when clicking on back button 2023-08-11 09:04:39 +00:00
Kévin Commaille
450631e5bf docs: Build docs for matrix-sdk-ui
Since the latest SDK update, the types that moved there are not resolved
in our docs.
2023-08-11 08:40:55 +00:00
Piotr Drąg
f01c350869 Update Polish translation 2023-08-06 15:11:24 +02:00
Yuri Chornoivan
dc66180a44 Update Ukrainian translation 2023-07-28 13:56:21 +00:00
Kévin Commaille
3e95d105d1
timeline: Add TimelineItem "ID" as a property
For debug purposes
2023-07-27 15:34:17 +02:00
Kévin Commaille
0712abd51c
timeline: Put pagination status at start of timeline 2023-07-27 15:32:36 +02:00
Kévin Commaille
c0a78fdf19 login: Check if server is a valid homeserver URL when auto-discovery fails 2023-07-27 13:02:28 +00:00
Kévin Commaille
8069076438 login: Use SDK method to sanitize server name 2023-07-27 13:02:28 +00:00
Kévin Commaille
8877b24e84 room-list: Don't load room invites twice
The issue that was in the SDK has been fixed so the invited rooms
appear twice in the list, which makes the `added` count invalid since
they are deduplicated in the list, and causes a crash.
2023-07-25 09:44:25 +00:00
Asier Sarasua Garmendia
b7bc845259 Update Basque translation 2023-07-25 09:02:49 +00:00
Kévin Commaille
5252af0722
chore: Use binding builder fns instead of glib::BindingFlags 2023-07-19 13:52:29 +02:00
Kévin Commaille
6db42e80dd
chore: Use and_(downcast/upcast)(_ref) where possible 2023-07-19 12:55:58 +02:00
Kévin Commaille
e197bfb4ef
room-details: Allow to scroll and fix margins for small form factors 2023-07-19 11:58:26 +02:00
Kévin Commaille
f4eb60a71d
explore: Filter out spaces 2023-07-19 11:30:48 +02:00
Kévin Commaille
25cadbc6e6
room: Prevent load_tombstone from being called several times 2023-07-19 11:12:10 +02:00
Kévin Commaille
b8928e82f0
session: Keep tokio runtime alive until Client is dropped 2023-07-18 18:42:31 +02:00
Kévin Commaille
bc07d95321
login: Don't nest tokio EnterGuard
Due to a fix in tokio 1.29.0, the thread would panic because the
guards are not dropped in the correct order.
2023-07-18 18:40:18 +02:00
Kévin Commaille
44be7288a5
auth-dialog: Improve type docs 2023-07-18 15:04:26 +02:00
Kévin Commaille
3b44870d9e
auth-dialog: Derive Error for AuthError 2023-07-18 15:01:27 +02:00
Kévin Commaille
62ef569458
auth-dialog: Cleanup imports 2023-07-18 14:51:59 +02:00
Kévin Commaille
ec317a0d77
auth-dialog: Implement dummy stage
It is not supposed to require user interaction so it's a waste to use
the fallback URL.
2023-07-18 14:49:56 +02:00
Kévin Commaille
e8ed5a99a5
auth-dialog: Set SSO as a preferred stage
Avoids unknown auth types to take precedence
2023-07-18 14:49:29 +02:00
Kévin Commaille
7014d4e0b8
timeline: Use GtkFlattenListModel
Simplifies the handling of extra items at the start or end of the
timeline.
2023-07-15 15:25:56 +02:00
Kévin Commaille
52100f00d7
timeline: Use SDK timeline event filter
Drop the is-visible property of TimelineItem
2023-07-15 13:50:10 +02:00
Kévin Commaille
f903fff31f
docs: Bump required Rust version to 1.70
This is the version required by matrix-sdk
2023-07-15 12:47:16 +02:00
Kévin Commaille
d06d78fe80
chore: Update matrix-sdk and ruma dependencies 2023-07-15 12:47:16 +02:00
Kévin Commaille
5b8cc97ea9
components: Fix audio player template path 2023-07-15 12:47:15 +02:00
Kévin Commaille
72e547c525
room: Make MemberRole an enum instead of bitflags
A user can only have one role at a time so it doesn't make sense to
declare it as a bitflag.

Fixes a clippy lint because the value 0 for a bitflag is the lack of any
flag.
2023-07-15 12:47:15 +02:00
Kévin Commaille
6375881df7
chore: Update cargo deps
Run cargo update
2023-07-14 13:06:43 +02:00
Kévin Commaille
7c9f0676ac
chore: Run rustfmt
Fixes formatting of let-else statements.
2023-07-14 12:08:19 +02:00
Kévin Commaille
f7069f9883
chore: Fix typos in comments 2023-06-22 10:58:56 +02:00
Kévin Commaille
5f3857e87b
docs: Use meson setup explicitly
Avoids a warning when running the command
2023-06-22 10:24:28 +02:00
Kévin Commaille
acb872f0b9
chore: Update cargo dependencies 2023-06-22 10:21:40 +02:00
Kévin Commaille
93412a754f
chore: Update Flatpak SDK extensions for 23.08beta 2023-06-22 10:20:56 +02:00
Sabri Ünal
50232f62f7 UI: Mark translatable strings yes
It appeares that using "yes" is a common practice for translatable strings in GNOME apps.
2023-06-07 21:50:42 +03:00
Sergej A
7d09c8132e Update Russian translation 2023-06-07 15:24:24 +00:00
Kukuh Syafaat
c6dfe4f473 Update Indonesian translation 2023-06-05 03:27:13 +00:00
Kévin Commaille
c3d77b792a
message-text: Trim spaces at the end of labels
This is a dirty hack but prevents some criticals and bugs when
displaying them.
2023-05-30 13:20:20 +02:00
Kévin Commaille
0ca1959885
message-text: Only use LabelWithWidgets when necessary 2023-05-30 13:07:53 +02:00
Kévin Commaille
c495d381c4
message-text: Don't use GtkBox for HTML is there is a single block
Seems to fix Gtk-CRITICALS for ContentMessageContent
2023-05-30 13:07:53 +02:00
Kévin Commaille
9d59cbac8d
message-text: Don't re-build children if text hasn't changed 2023-05-30 13:07:53 +02:00
Kévin Commaille
ca2a6c3762
message-text: Remove strip_reply
The SDK already takes care of removing the reply fallbacks
2023-05-30 13:07:53 +02:00
Kévin Commaille
b95f3477bb
message-text: Rename constructors using the with_ prefix 2023-05-30 13:07:53 +02:00
Kévin Commaille
3f8a7e8bd0
label-with-widgets: Only invalidate children when necessary 2023-05-30 13:07:53 +02:00
Kévin Commaille
7c73e0e0f4
label-with-widgets: Fix ParamSpec types 2023-05-30 13:07:53 +02:00
Nobody
b4f4874ac5 chore: Update dependencies
Fix docs generation error.
2023-05-29 08:07:12 +00:00
Piotr Drąg
314731a9b8 Update Polish translation 2023-05-28 12:35:14 +02:00
Kévin Commaille
2c657f8696
session: Only start listening to notifications when session is ready to be shown 2023-05-27 10:55:28 +02:00
Kévin Commaille
466748570a
session: Remove unnecessary spawn! 2023-05-27 10:37:29 +02:00
Kévin Commaille
f7985b0d10
room: Close room when invite is rejected 2023-05-26 17:01:42 +02:00
Kévin Commaille
1eac942c17
content: Minor refactoring 2023-05-26 16:14:23 +02:00
Kévin Commaille
3e8b615dbb
invite: Minor refactoring 2023-05-26 16:03:38 +02:00
Kévin Commaille
0211f83751
room: Use other user's avatar for 1-to-1 invited rooms too 2023-05-26 15:56:22 +02:00
Kévin Commaille
db792b75c7
room: Invalidate member list if the room state changed 2023-05-26 15:00:20 +02:00
Kévin Commaille
82bacca9a1
room: Also show other user avatar if they are alone in room 2023-05-26 14:59:23 +02:00
Kévin Commaille
ae02a70e7b
member-list: Rename member_by_id to get_or_create 2023-05-26 14:57:42 +02:00
Kévin Commaille
e9df66d6c7
room: Refactor sync handlers 2023-05-26 14:57:42 +02:00
Kévin Commaille
adbc39871c
room: Make sure inviter is always loaded 2023-05-26 14:57:42 +02:00
Kévin Commaille
4dfcb74451
room-list: Make sure invited rooms are loaded 2023-05-26 14:57:42 +02:00
Kévin Commaille
8308f8bd89
invite: Fix the inviter Pill 2023-05-26 14:57:42 +02:00
Yuri Chornoivan
7d28a6b942 Update Ukrainian translation 2023-05-23 19:58:34 +00:00
Kévin Commaille
7382b23ec5
room-history: Change tombstoned banner according to available data 2023-05-23 17:43:19 +02:00
Kévin Commaille
fba419e947
room-history: Use Vecs for handlers 2023-05-23 13:36:04 +02:00
Kévin Commaille
28b04cba57
room: Don't allow to change the room's category if it is Outdated 2023-05-23 13:36:03 +02:00
Kévin Commaille
e72d6a203d
room: Fix obtaining room's successor
Use the successor's predecessor ID rather than the predecessor's
successor ID to find the successor Room, according to the Matrix spec.
2023-05-23 13:36:03 +02:00
Kévin Commaille
daab7138cd
room: Rename predecessor and successor to predecessor-id and successor-id 2023-05-23 13:36:03 +02:00
Kévin Commaille
56dc2d982d
chore: Enable Ruma compat features
Otherwise some events might get rejected.
2023-05-23 12:56:22 +02:00
Kévin Commaille
e881ea9001
readme: Clarify secret service D-Bus access command
Clarify the difference for the command between the beta and the nightly
versions.
2023-05-22 22:05:51 +02:00
Yuri Chornoivan
4e978e95c6 Update Ukrainian translation 2023-05-22 17:10:53 +00:00
Sergej A
adf7b8e75d Update Russian translation 2023-05-22 12:19:39 +00:00
Kévin Commaille
60736235dc
account-switcher: Fix selection at startup
If GtkSingleSelection selects a row via autoselect, selection-changed is
not triggered.
Use selected-item instead, which is enough if we keep track of the
previously selected row.
2023-05-22 11:58:14 +02:00
Kévin Commaille
6cd166071e
account-switcher: Fix style 2023-05-22 11:57:33 +02:00
Kévin Commaille
d13b03a85e
misc: Put UI files next to the corresponding Rust files 2023-05-21 23:38:58 +02:00
Yuri Chornoivan
ed1ed2bead Update Ukrainian translation 2023-05-21 18:44:41 +00:00
Kévin Commaille
b15c5f0c8b
session: Reorganize submodules between model and view 2023-05-21 17:09:17 +02:00
Kévin Commaille
14ff518929 session: Move under session::model module 2023-05-21 14:56:36 +00:00
Kévin Commaille
aca5adab8b session-view: Move under session::view module 2023-05-21 14:56:36 +00:00
Piotr Drąg
bdbe1bd1d7 Update Polish translation 2023-05-21 15:33:11 +02:00
Kévin Commaille
e0dd94a105
session: Split between view and model 2023-05-21 13:46:02 +02:00
Kévin Commaille
faea2b4532
identity-verification: Use widget to show errors 2023-05-21 11:20:34 +02:00
Kévin Commaille
af92711df0
notifications: Don't use Session as the helper widget 2023-05-21 11:16:04 +02:00
Kévin Commaille
4afba6e736
session: Do not use Session to show toasts
This usually means we are trying to show a toast from a model Object,
which is not right.
2023-05-20 23:43:28 +02:00
Kévin Commaille
e77fa4fedc
session: Remove unused action 2023-05-20 23:43:28 +02:00
Kévin Commaille
cf27bd22c6
window: Use a new GListModel to manage sessions
Allows to use GtkListBox::bind_model and prepares a futures change
where the session is split between view and model.
2023-05-20 14:20:06 +02:00
Kévin Commaille
6b261d7ee8
account-switcher: Remove adw::BinImpl implementation for SessionItemRow
It is not a subclass of AdwBin.
2023-05-20 14:20:06 +02:00
Kévin Commaille
2c842bef47
account-switcher: Replace the "user" and "entry" terms
Use "session" and "item" instead.

"User" is not exact as we allow the same user to log in several
sessions.
"Entry" is easily associated with GtkEntry and can be confusing.
2023-05-20 14:20:06 +02:00
Anders Jonsson
928b5085b6 Update Swedish translation 2023-05-20 09:48:13 +00:00
Kévin Commaille
624f179f9b
readme: Fix beta remote installation command 2023-05-19 20:40:08 +02:00
Julian Sparber
a051ee2f2f create-dm: Fix search for users without existing direct chat
Fixes: https://gitlab.gnome.org/GNOME/fractal/-/issues/1208
2023-05-19 11:10:36 +02:00
Jiri Grönroos
f390615211 Update Finnish translation 2023-05-18 18:12:13 +00:00
Kukuh Syafaat
5816bdbbb9 Update Indonesian translation 2023-05-18 06:04:34 +00:00
Kévin Commaille
0cdd3f69ca
secret: Fix v3 migration
If the migration is not needed, the migration would go in a loop.
2023-05-17 19:12:31 +02:00
Kévin Commaille
c8ac0623a7
secret: Fix database profile migration 2023-05-17 16:55:48 +02:00
Kévin Commaille
fb1dba1a00
secret: Implement more methods on StoredSession 2023-05-17 16:45:10 +02:00
Kévin Commaille
5cfcdf81e9 readme: Update for beta release 2023-05-16 18:26:19 +00:00
Yuri Chornoivan
80b5df937e Update Ukrainian translation 2023-05-16 17:05:23 +00:00
Kévin Commaille
b4bb04c448
chore: Release version 5.beta1 2023-05-16 15:42:48 +02:00
Kévin Commaille
f714c4d87b build: Use libshumate tarball instead of git 2023-05-16 13:14:14 +00:00
Julian Sparber
d6decbebaa create-dm: Add dialog to create DM room 2023-05-16 12:18:28 +00:00
Julian Sparber
c8236dd0f0 minor: Use Room::active_members_count() directly 2023-05-16 12:18:28 +00:00
Kévin Commaille
a40eebb8ab
contributing: Update LLVM flatpak dependency 2023-05-16 13:51:18 +02:00
Kévin Commaille
ab4f74d9a0
contributing: Add flatpak-builder requirement 2023-05-16 13:51:18 +02:00
Kévin Commaille
5d54239cbd
build: Be consistent in version naming
Use a dot between the major version and the pre-release version, where
possible.
Go back to using a dash before the commit hash.
2023-05-16 13:28:32 +02:00
Kévin Commaille
9727991b4a room-details: Add translator comments 2023-05-16 09:09:31 +00:00
Marco Melorio
36017efffb history-viewer: Load more items when scrolling 2023-05-16 09:09:31 +00:00
Marco Melorio
93015294ed audio-history-viewer: Add ability to listen to audio 2023-05-16 09:09:31 +00:00
Marco Melorio
a98d40fc7a media-history-viewer: Show MediaViewer on item press 2023-05-16 09:09:31 +00:00
Marco Melorio
9cc78a3301 file-history-viewer: Add ability to save files 2023-05-16 09:09:31 +00:00
Marco Melorio
a5ef975ff3 history-viewer: Implement AudioHistoryViewer
Also add it as a RoomDetails' subpage.
2023-05-16 09:09:31 +00:00
Marco Melorio
89ed564822 history-viewer: Implement FileHistoryViewer
Also add it as a RoomDetails' subpage.
2023-05-16 09:09:31 +00:00
Marco Melorio
063b1b318c history-viewer: Implement MediaHistoryViewer
Also add it as a RoomDetails' subpage.
2023-05-16 09:09:31 +00:00
Marco Melorio
5528492801 history-viewer: Add Timeline to load history viewer messages
This is the first step towards implementing the history viewers.
2023-05-16 09:09:31 +00:00
Yuri Chornoivan
6f5fa1d40c Update Ukrainian translation 2023-05-15 18:51:51 +00:00
Kévin Commaille
4606d2e4eb
media-viewer: Don't use Event
We can only construct Event from timeline items, which we don't have
if we request events manually.
2023-05-14 20:06:11 +02:00
Kévin Commaille
8a5c5f6934
chore: Update libshumate bundled in flatpak 2023-05-14 17:14:37 +02:00
Kévin Commaille
675e39c6fb login: Add SessionVerification as a step of logging in 2023-05-14 13:59:12 +00:00
Kévin Commaille
094cd9244f login: Use an enum for stack pages names
Avoids errors when using static strings
2023-05-14 13:59:12 +00:00
Kévin Commaille
a84d8e9e52 login: Move code to restore session to Window 2023-05-14 13:59:12 +00:00
Kévin Commaille
2e514e0a50 session: Make persisted client creation a part of constructing Session 2023-05-14 13:59:12 +00:00
Kévin Commaille
925af0ec43 login: Use temporary client for logging in
Avoids having to clean up when we need to reset it.
2023-05-14 13:59:12 +00:00
Piotr Drąg
65d73ddcbc Update Polish translation 2023-05-14 15:38:23 +02:00
Yuri Chornoivan
8151b6218b Update Ukrainian translation 2023-05-14 11:20:01 +00:00
Kévin Commaille
1c1a52080e login: Split logic for each page
And move "Next" button to each page instead of in the header bar.
2023-05-13 08:54:15 +00:00
Yuri Chornoivan
ea4d05669e Update Ukrainian translation 2023-05-12 18:01:44 +00:00
Sabri Ünal
19e8a2ba27 Update Turkish translation 2023-05-11 19:09:58 +00:00
Kévin Commaille
aaef680fb5
account-settings: Subpages don't have a "transient-for" property 2023-05-11 12:54:42 +02:00
Kévin Commaille
beac89dc79
account-settings: Show availability of cross-signing keys 2023-05-11 12:54:42 +02:00
Kévin Commaille
462d2ff99e
session-verification: Don't send verification requests if no devices are available 2023-05-11 12:54:42 +02:00
Kévin Commaille
38f0ba11c9
session: Fix creation of new encryption user identity after login 2023-05-11 12:54:42 +02:00
Kévin Commaille
b5339b2cd6
session: Do not require cross-signing keys to be present after verification 2023-05-11 12:54:42 +02:00
Kévin Commaille
57bb433bde
chore: Update matrix-sdk dependency 2023-05-11 12:54:40 +02:00
Yuri Chornoivan
c4d417d694 Update Ukrainian translation 2023-05-10 19:30:49 +00:00
Kévin Commaille
019e749e30
room-details: Simplify ExtraLists by using GtkFlattenListModel
And fix error where the banned list would appear twice if the invite
list is hidden.
2023-05-10 18:22:22 +02:00
Sabri Ünal
7f2019745e Mark some strings translatable
- Log In
- Error
- Secret Service Error
- File
2023-05-10 17:44:30 +03:00
Piotr Drąg
37420f5167 Update Polish translation 2023-05-07 15:51:13 +02:00
Kévin Commaille
64cffbba77 greeter: Remove development warning banner 2023-05-07 09:25:20 +00:00
Kévin Commaille
bd845d105e room-list: Make sure list is not borrowed mutably when creating a Room 2023-05-07 08:14:27 +00:00
Kévin Commaille
349fd02e4d chore: Update matrix-sdk dependency 2023-05-07 08:14:27 +00:00
Yuri Chornoivan
b46af84365 Update Ukrainian translation 2023-05-06 14:30:28 +00:00
Georges Basile Stavracas Neto
7f5ce14c12 sidebar: Set tooltip of room rows
Room names can be large in some circumstances. Usually in dynamic
lists like this, where the textual content can be unpredictable,
adding a tooltip text is helpful.

Add that.
2023-05-06 10:57:11 +00:00
Kévin Commaille
03e0c4f18f
greeter: Add about button 2023-05-06 12:38:04 +02:00
Yuri Chornoivan
8ba1a199d3 Update Ukrainian translation 2023-05-05 18:36:20 +00:00
Kévin Commaille
aa08d47fc6
readme: Update download badges
Uses SVGs and use new Fractal icon
2023-05-05 18:20:18 +02:00
Kévin Commaille
a0aa4d323c
ci: Make pages job not download artifacts 2023-05-05 15:11:33 +02:00
Kévin Commaille
427cb37755 room: Use other user's avatar as fallback in 1-to-1 rooms 2023-05-05 12:23:27 +00:00
Kévin Commaille
15b9932383 session: Split avatar image data from AvatarData
Allows to use the same avatar image for several rooms and users.
2023-05-05 12:23:27 +00:00
Kévin Commaille
840a53b0fb session: Rename Avatar to AvatarData
Avoid confusion with the Avatar in components and avoid to have
to rename it to AvatarItem.
2023-05-05 12:23:27 +00:00
Kévin Commaille
da3438c4d8
build: Use '+' to separate tagged version and commit hash
That way, even if we switch `-` for `~` in the metainfo version,
it treats development versions as being bigger (newer) than the
tagged versions.
2023-05-05 13:21:13 +02:00
Kévin Commaille
67dfd13714
session: Refactor settings
Should be easier to work with.
2023-05-05 13:21:13 +02:00
Kévin Commaille
54bd7aad84
app: Separate data per profile
Puts the database in a subdirectory and uses a different path for the
settings.
2023-05-05 13:21:13 +02:00
Kévin Commaille
f7dfbcceda
build: Set flatpak version the same as in-app version 2023-05-05 13:21:13 +02:00
Kévin Commaille
ec02e35b45
app: Use an enum for the profile 2023-05-05 13:21:13 +02:00
Kévin Commaille
bebc5f9bab
build: Avoid the need for duplicate development icon 2023-05-05 13:21:13 +02:00
Kévin Commaille
a85644cad5
build: Add beta profile 2023-05-05 13:21:13 +02:00
Kévin Commaille
6471cb9675
build: Refactor profile variables 2023-05-05 13:21:12 +02:00
Kévin Commaille
d248af475c room-history: Allow to join or view the successor in a tombstone event 2023-05-05 10:44:33 +00:00
Kévin Commaille
af90c33a68 room-history: Add banner to join a tombstoned room's successor 2023-05-05 10:44:33 +00:00
Kévin Commaille
b24344e05a room-list: Add join_or_view method 2023-05-05 10:44:33 +00:00
Kévin Commaille
3af8399698 room: Don't move room to outdated category if successor was not joined 2023-05-05 10:44:33 +00:00
Kévin Commaille
24749cb43c room: Refactor load_successor
Avoid returning an unused Option.
2023-05-05 10:44:33 +00:00
Kévin Commaille
d4a115cbaa build: Add missing dependencies to meson.build 2023-05-05 10:23:01 +00:00
Kévin Commaille
55d355c066 event: Don't return unused uid from get_media_content 2023-05-05 09:57:19 +00:00
Kévin Commaille
6466d76ad1 media: Use gio::File::new_tmp() to store temp files 2023-05-05 09:57:19 +00:00
Kévin Commaille
a9f5781825
member-page: Use Member::this_expression when possible 2023-05-05 11:23:35 +02:00
Kévin Commaille
d98cfff347
room-history: Use emit_scroll_child instead or emit_by_name 2023-05-05 11:23:35 +02:00
Kévin Commaille
a26779790f
room-history: Add comment for translators 2023-05-05 11:23:35 +02:00
Kévin Commaille
f911443773
room-history: Fix typo in docs 2023-05-05 11:23:35 +02:00
Kévin Commaille
c0d88c36f8
room: Use upstream methods to check action permission 2023-05-05 11:23:35 +02:00
Kévin Commaille
79ae15d7a9
ci: Fix pages container image 2023-05-05 10:54:15 +02:00
Julian Sparber
88b880f707 ci: Use template and clean up 2023-05-05 08:04:06 +00:00
Kévin Commaille
5dc35b1bc0
chore: Update matrix-sdk and ruma 2023-05-04 15:37:24 +02:00
Fran Dieguez
c0bc4078bb Update Galician translation 2023-05-01 09:07:29 +00:00
Charles Monzat
af767d62d2 Update French translation 2023-04-30 16:31:29 +00:00
Piotr Drąg
9746ff5f63 Update Polish translation 2023-04-30 12:23:31 +02:00
Yuri Chornoivan
349edff614 Update Ukrainian translation 2023-04-29 16:27:41 +00:00
Kévin Commaille
e964430dba
ci: Fix docs generation 2023-04-27 12:11:40 +02:00
Kévin Commaille
e1b5eb56ae secret: Store secret in MessagePack format
Should be more compact and efficient
2023-04-27 08:20:33 +00:00
Kévin Commaille
0987b89be3 secret: Remove workaround for old libsecret sessions
We have switched for a long time now and we are changing the schema
anyway.
2023-04-27 08:20:33 +00:00
Kévin Commaille
5b644adeb4 secret: Add stored session versioning 2023-04-27 08:20:33 +00:00
Kévin Commaille
8844b9a81e utils: Add methods to create Matrix client 2023-04-27 08:20:33 +00:00
Kévin Commaille
2b510f690b secret: Make SecretError::CorruptSession more explicit with named fields 2023-04-27 08:20:33 +00:00
Kévin Commaille
92f551d6da chore: Update matrix-sdk and switch to SQLite store 2023-04-27 08:20:33 +00:00
Fran Dieguez
aec7643b70 Update Galician translation 2023-04-26 22:25:57 +00:00
Fran Dieguez
2aaba9c683 Update Galician translation 2023-04-26 20:42:07 +00:00
Kévin Commaille
991ca3f847
chore: Update cargo dependencies 2023-04-25 09:55:47 +02:00
Kévin Commaille
6c85471907
room-history: Make list view recycle items when room changes
Instead of deleting all items and re-building everything.
2023-04-24 14:55:57 +02:00
Kévin Commaille
83f2dbd6c7
room-history: Make sure auto-scrolling scrolls all the way down
Seems to be an issue otherwise when we switch rooms.
2023-04-24 14:55:57 +02:00
Kévin Commaille
9d7b31e502
room: Generate human-readable ID for logs 2023-04-24 14:55:57 +02:00
Kévin Commaille
b064698a27
room-history: Don't try to load history before everything is ready
Should avoid some panics when initializing the timeline takes more time
than usual.
Also avoids loading more history because the adjustment is at 0 when
it is loading items in the listview.
2023-04-24 14:55:53 +02:00
Kévin Commaille
dd81ec2b07
timeline: Fix timeline states 2023-04-24 11:50:55 +02:00
Kévin Commaille
2a07a1b67c
timeline: Group virtual items in a single type
Now that the SDK timeline API handles most of the logic, there is just a
lot of boilerplate code for little to no gain.
2023-04-24 11:46:19 +02:00
Yuki Okushi
cfeae158ad Add Japanese translation 2023-04-15 03:16:14 +00:00
Kévin Commaille
9019e64772
chore: Update dependencies 2023-04-14 08:42:23 +02:00
Alan Mortensen
2e251e5c9d Update Danish translation 2023-04-13 17:37:17 +00:00
Kévin Commaille
499b5dccbc
session: Use an enum for the session state
Instead of various fields and signals.
2023-04-11 15:27:19 +02:00
Maximiliano Sandoval R
b28ae1b8a7
public_room_row: Stop spinners when idle 2023-04-10 16:39:38 +02:00
Maximiliano Sandoval R
d4d9217c4a
item_row: Stop spinners when idle 2023-04-10 16:39:37 +02:00
Maximiliano Sandoval R
d3a9732cae
message_media: Stop spinners when idle 2023-04-10 16:37:21 +02:00
Maximiliano Sandoval R
59c6fc2441
loading_listbox_row: Stop spinners when idle 2023-04-10 16:37:21 +02:00
Maximiliano Sandoval R
61ae6820ac
message_audio: Stop spinners when idle 2023-04-10 16:37:20 +02:00
Maximiliano Sandoval R
6cc917f3c3
invite_subpage: Stop spinners when idle 2023-04-10 16:37:20 +02:00
Maximiliano Sandoval R
09b4b08d8d
room_history: Stop spinners when idle 2023-04-10 16:37:20 +02:00
Maximiliano Sandoval R
c8d3d67d81
content_explore: Stop spinners when idle 2023-04-10 16:37:20 +02:00
Maximiliano Sandoval R
ef368e740a
media_content_viewer: Stop spinners when idle 2023-04-10 16:37:20 +02:00
Maximiliano Sandoval R
ada8a79ca3
action_button: Stop spinners when idle 2023-04-10 16:37:20 +02:00
Maximiliano Sandoval R
56b78a4d36
window: Stop spinner when idle 2023-04-10 16:37:20 +02:00
Maximiliano Sandoval R
36f50ab260
spinner_button: Stop spinners when idle 2023-04-10 16:37:19 +02:00
Maximiliano Sandoval R
4e3675e286
Add a spinner component 2023-04-10 16:37:19 +02:00
Kévin Commaille
3f1ee31404
join-room: Don't try to join room on cancel 2023-04-10 14:38:13 +02:00
Kévin Commaille
e1cf9049be
session: Split notifications in a separate type 2023-04-10 11:47:02 +02:00
Kévin Commaille
cee8a6b8c7
app: Rename get_main_window to main_window
To respect the usual naming of getters in Rust.
2023-04-10 11:42:29 +02:00
Kévin Commaille
3541be94eb
session: Create JoinRoomDialog instead of building it in Session 2023-04-10 10:54:57 +02:00
Kévin Commaille
686de7b5b6
sidebar: Fix room highlight 2023-04-07 20:51:24 +02:00
Kévin Commaille
92d15ff4de
readme: Update latest stable version 2023-04-06 15:50:10 +02:00
Kévin Commaille
7e99002cfd
docs: Don't document private items
It's confusing for ruma and matrix-sdk as we see all the private stuff
we can't access.
It's fine for Fractal because since it's a binary, the private items are
documented anyway.
2023-04-06 11:25:31 +02:00
Asier Sarasua Garmendia
4bba567cd5 Update Basque translation 2023-04-06 08:54:10 +00:00
Kévin Commaille
71cb666f17
room-type: Don't take RoomType by reference
Usually we don't take types that implement Copy by reference
2023-04-05 16:23:12 +02:00
Kévin Commaille
640b286cb6
misc: Remove num_enum dependency
Use the glib::Variant derive macro instead if needed
2023-04-05 15:53:02 +02:00
Kévin Commaille
8506064d31
sidebar: Replace order-changed signal by watching expressions
Triggers fewer updates
2023-04-05 15:36:02 +02:00
Kévin Commaille
acb8ed26a2
room: Fix tracking of room's latest activity 2023-04-05 14:52:16 +02:00
Kévin Commaille
b41d953e1b
sidebar: Move category types into a subfolder 2023-04-05 14:52:16 +02:00
Kévin Commaille
545467878b
category: Change the default CategoryType
The previous default value was unused and needed overriding in a few
places.
2023-04-05 14:52:10 +02:00
Kévin Commaille
8a4750c9bf
sidebar: Simplify GtkExpression 2023-04-05 14:46:39 +02:00
Kévin Commaille
cedc02b878
room: Remove unused new-encryption-keys signal 2023-04-05 14:46:38 +02:00
Kévin Commaille
26222e2b24
room-history: Don't access GtkListItemWidget
Don't set CSS classes and bind to RoomHistory properties
2023-04-05 12:43:07 +02:00
Kévin Commaille
6452915c55
sidebar: Don't use actions on sidebar for drag-n-drop
Access and bind to the sidebar from the rows instead.
Avoid having to go through the private widgets of GtkListView.
2023-04-05 11:42:55 +02:00
Kévin Commaille
d4b74e00bd
sidebar: Don't set GtkListItemWidget CSS classes 2023-04-05 11:42:34 +02:00
Kévin Commaille
1577c8a701
utils: Simplify use of BoundObjectWeakRef
Avoid to have to wrap it in a `RefCell<Option<T>>`.
2023-04-05 11:42:34 +02:00
Kévin Commaille
c6b8ac7abc
room-list: Remove binding between visibility of widget and sidebar item
It shouldn't be necessary since we update the item list according to the
visibility of the items.
2023-04-05 11:42:26 +02:00
Aleksandr Melman
cddade871c Update Russian translation 2023-04-03 07:52:14 +00:00
Piotr Drąg
e716b424f8 Update Polish translation 2023-04-02 13:10:21 +02:00
Kévin Commaille
d92d2953ff
build: Use thin LTO for release builds
Fat LTO makes the debug symbols unusable due to a bug in rustc:
https://github.com/rust-lang/rust/issues/66118.
2023-03-31 16:02:41 +02:00
Kévin Commaille
123ac8661b
chore: Update matrix-sdk 2023-03-30 16:46:46 +02:00
Kévin Commaille
7154cd1275
session: Use accessor to get client api error kind 2023-03-30 15:30:36 +02:00
Kévin Commaille
a0b7e73436
avatar: Request size according to scale factor
Improves rendering on high-DPI screens
2023-03-29 16:23:50 +02:00
Kévin Commaille
6f4a00e891
avatar: Re-request avatar when size changes 2023-03-29 16:22:55 +02:00
Kévin Commaille
071bfa9e2a
components: Use Pango const and methods instead of defining our own 2023-03-27 12:58:12 +02:00
Kévin Commaille
aede640446
components: Allocate shapes before measuring LabelWithWidgets
Should reduce the number of warnings for sizing errors.
2023-03-27 12:53:32 +02:00
Kévin Commaille
89ee05c201
chore: Inline variables in format strings when possible 2023-03-26 20:33:06 +02:00
Kévin Commaille
8986937482 build: Add OpenSSL as a dependency
It is required by the native-tls crate, tht depends on the openssl
crate.
The minimum supported version by taht crate is currently 1.0.1.
2023-03-26 16:44:52 +00:00
Kévin Commaille
26013646e9 build: Update glib and gio deps version 2023-03-26 16:44:52 +00:00
Yuri Chornoivan
ab0bf741f7 Update Ukrainian translation 2023-03-26 16:41:11 +00:00
Kévin Commaille
1470dcf92c qr-code: Remove uses of deprecated GtkStyleContext 2023-03-26 12:47:23 +00:00
Kévin Commaille
af85d0b4e5 chore: Replace deprecated gtk::show_uri with GtkUriLauncher 2023-03-26 12:47:23 +00:00
Kévin Commaille
98f982d0a1 chore: Replace deprecated GtkFileChooserNative with GtkFileDialog 2023-03-26 12:47:23 +00:00
Kévin Commaille
4b9d400e65 auth-dialog: AuthDialog doesn't extend GtkDialog 2023-03-26 12:47:23 +00:00
Kévin Commaille
64d9a98f0b chore: Replace deprecated GtkInfoBar with AdwBanner 2023-03-26 12:47:23 +00:00
Kévin Commaille
33e775e9e1 chore: Replace deprecated WidgetExt::show and hide methods 2023-03-26 12:47:23 +00:00
Kévin Commaille
4ad6907767 misc: Enable GTK 4.10 APIs 2023-03-26 12:47:23 +00:00
Piotr Drąg
4e1d40d7f2 Update Polish translation 2023-03-26 14:37:34 +02:00
Yuri Chornoivan
024d5a1b94 Update Ukrainian translation 2023-03-26 12:22:22 +00:00
Kévin Commaille
bc5829319f
chore: Update all dependencies 2023-03-26 12:52:21 +02:00
Kévin Commaille
b4c27f9e4b room-details: Silence critical when topic is None 2023-03-23 10:53:04 +00:00
Kévin Commaille
314415f4c2 room-details: Refactor code to change details
Use bindings, template callbacks. Expose the errors via toasts.
2023-03-23 10:53:04 +00:00
Kévin Commaille
49f7c78748 chore: Update matrix-sdk to get new method for rooms 2023-03-23 10:53:04 +00:00
Kévin Commaille
beb9dd4e91 room-details: Use EditableAvatar 2023-03-23 10:53:04 +00:00
Kévin Commaille
f9b09cea25 components: Simplify the API of EditableAvatar 2023-03-23 10:53:04 +00:00
Kévin Commaille
7aebe25791 utils: Add type to keep track of ongoing async actions 2023-03-23 10:53:04 +00:00
Kévin Commaille
3310c49c67 room-details: Allow to display toasts 2023-03-23 10:53:04 +00:00
Kévin Commaille
967be21559 utils: Add method to load file content and info 2023-03-23 10:53:04 +00:00
Anders Jonsson
95bf1b8cc3 Update Swedish translation 2023-03-20 17:17:06 +00:00
Piotr Drąg
689ef92fa6 Update Polish translation 2023-03-18 13:31:33 +01:00
Kévin Commaille
08ef839464
misc: Enable LTO for release builds 2023-03-16 10:55:01 +01:00
Kévin Commaille
c9cb82f8f9
room: Use SDK methods to change the avatar 2023-03-15 15:06:10 +01:00
Kévin Commaille
9e8674beb9
verification: Use the constants defined in Ruma 2023-03-15 13:04:00 +01:00
Balázs Úr
40d2071975 Update Hungarian translation 2023-03-14 23:05:31 +00:00
Aleksandr Melman
3e6ba590ac Update Russian translation 2023-03-14 20:56:15 +00:00
Kévin Commaille
1b3ad15124
flatpak: Enable warn log level for all crates
With most of the logic moving to the SDK, we can miss several things
that went wrong.
2023-03-14 21:00:23 +01:00
Kévin Commaille
6dcfeb0e32
room-history: Send read receipt and marker updates 2023-03-14 16:36:39 +01:00
Kévin Commaille
758a8f99cd
room-history: Show highlighted events 2023-03-14 16:10:47 +01:00
Kévin Commaille
eedc456ddd
room-history: Mark replied to event as selected not highlighted 2023-03-14 14:23:53 +01:00
Kévin Commaille
3d6c493680
chore: Update matrix-sdk and ruma 2023-03-14 14:23:46 +01:00
Andre Klapper
0642632e30 Fix invalid markup in German UI translation 2023-03-13 22:03:21 +01:00
Tobias Bernard
9e964c0ca2 app icon: minor style and polish updates, add source svg 2023-03-13 10:07:48 +01:00
Yuri Chornoivan
708da1fa5e Update Ukrainian translation 2023-03-12 17:30:56 +00:00
Kévin Commaille
18bac5797b timeline: Always use the item accessor to get an item by position
The list should never be accessed directly to avoid having mismatches
in indexes.
2023-03-12 16:59:39 +00:00
Kévin Commaille
bc7b46cf2f timeline-item: Add unique ID accessor for debugging purposes 2023-03-12 16:59:39 +00:00
Kévin Commaille
a48b8ea5f4 room-history: Display an icon when a message has been edited 2023-03-12 16:18:17 +00:00
Kévin Commaille
934abcc3cb room-history: Make TypingRow::is_empty code easier to understand 2023-03-12 15:24:11 +00:00
Kévin Commaille
57e61c4043 room-history: Don't update typing row label when list is empty
Would crash the app when the underlying model changes to an empty list.
2023-03-12 15:24:11 +00:00
Piotr Drąg
1be875422b Update Polish translation 2023-03-12 14:58:30 +01:00
Sabri Ünal
6dd37a0593 Update Turkish translation 2023-03-12 06:39:34 +00:00
Anders Jonsson
52ed7d3c58 Update Swedish translation 2023-03-10 15:22:31 +00:00
Philipp Kiemle
012b985650 Update German translation 2023-03-09 20:13:31 +00:00
Yuri Chornoivan
b452d974f2 Update Ukrainian translation 2023-03-07 18:50:48 +00:00
Kévin Commaille
d6e5f60b84
room-creation: Use AdwEntryRow and other fixes
It would not be possible to create a private room without entering a
room address
although it's not used in that case.
2023-03-07 11:34:28 +01:00
Kévin Commaille
0e3d46237a
room-history: Show read receipts on events 2023-03-07 09:36:55 +01:00
Kévin Commaille
31e960a59e
chore: Update matrix-rust-sdk and Ruma 2023-03-07 09:27:47 +01:00
Kévin Commaille
541e94e1bd
components: Use a GListModel to manage OverlappingBox children 2023-03-07 09:20:58 +01:00
Kévin Commaille
b1abfa77af
utils: Create BoundObjectWeakRef to keep track of signal handlers for an object
Allows to disconnect the signals easily.
2023-03-07 09:20:58 +01:00
Kévin Commaille
f7335fa9f0
room-history: Fix typing list not showing 2023-03-07 09:20:58 +01:00
Kévin Commaille
f2e97b94a2
room: Move ReactionGroup and ReactionList to the event module 2023-03-07 09:20:57 +01:00
Kévin Commaille
8380bfa1ee
timeline: Fix item header visibility when an item's header visibility possibly changed
Also only check the event after the last event that changed.
2023-03-07 08:55:16 +01:00
Kévin Commaille
960c74c21d
ci: Sort Cargo.toml and add a check for it 2023-03-07 08:01:41 +01:00
Kévin Commaille
160b648cfe
chore: Remove uses of gtk-macros 2023-03-07 08:01:41 +01:00
Kévin Commaille
8035dca113
chore: Use let-else and early returns to reduce rightward drift 2023-03-07 07:29:36 +01:00
Kévin Commaille
fc49b657e7
chore: Fix clippy nightly warnings 2023-03-07 07:24:42 +01:00
Christopher Davis
5db1d9f902
general: Update to the latest version of the gtk-rs stack 2023-03-07 07:14:51 +01:00
Piotr Drąg
255da89676 Update Polish translation 2023-03-05 16:11:36 +01:00
Aleksandr Melman
7c3d1d9baf Update Russian translation 2023-03-04 14:43:57 +00:00
Kévin Commaille
4a5ab04078
misc: Add myself as a maintainer 2023-02-21 16:59:20 +01:00
Harshil Patel
1715f27472 room-history: Remove search-content button from headerbar
closes GNOME/fractal#1145
2023-02-16 15:33:56 +05:30
Yuri Chornoivan
6eacba53e7 Update Ukrainian translation 2023-02-15 15:06:36 +00:00
prathamgupta44
22bb04d440 room-details: Fix contrast of room name and description on room-details page
Have fixed the contrast of room name and description on room-details page by changing the opacity of the respective widgets.

Fixes: https://gitlab.gnome.org/GNOME/fractal/-/issues/1138
2023-02-15 11:00:20 +00:00
Hari Rana
7f57fb9324 about: Update copyright year 2023-02-15 08:47:52 +00:00
Yuri Chornoivan
bb882ab672 Update Ukrainian translation 2023-02-14 17:58:07 +00:00
Julian Sparber
11b80862d1 account-settings: Add entry and subpage to confirm log out
Fixes: https://gitlab.gnome.org/GNOME/fractal/-/issues/823
Fixes: https://gitlab.gnome.org/GNOME/fractal/-/issues/1083
2023-02-14 08:56:43 +00:00
Julian Sparber
8ffb4cad9c session: Drop unused logout() argument 2023-02-14 08:56:43 +00:00
Julian Sparber
e041b9887a session: Emit logged-out signal after logging out
Ideally we would have atomic log out, since currently we may leave
things in place if something fails.
2023-02-14 08:56:43 +00:00
Yosef Or Boczko
cc92f63bbe Update Hebrew translation 2023-02-14 08:12:20 +00:00
Marco Melorio
5bfdeb449c media-viewer: Implement animated back swipe 2023-02-13 20:01:03 +00:00
Yuri Chornoivan
1fbb862dbb Update Ukrainian translation 2023-02-13 19:25:31 +00:00
Marco Melorio
4efb8f2804 media-viewer: Make it dark and animated
Fixes https://gitlab.gnome.org/GNOME/fractal/-/issues/1019.
2023-02-13 19:56:28 +01:00
Marco Melorio
00d5d6f02c media-viewer: Add scale transition for opening and closing 2023-02-13 19:56:28 +01:00
Marco Melorio
8991a4d838 session: Move MediaViewer in a GtkOverlay
This way we can implement an overlay animation in the next commits. This
currently makes the MediaViewer have a transparent background. This will
be fixed in the next commits.
2023-02-13 19:56:28 +01:00
Marco Melorio
b04eff6c81 room-history: Move item activation code to MessageRow
The previous way of tracking message activation was via `GtkListView`'s
"activate" signal, which was not ideal since it required a complicated
management of each items' "activatable" property. This new
implementation is simpler since it just adds a `GtkClickGesture` to the
message rows that require activation and it handles the activation in
the `MessageRow`. This is also useful for implementing a media viewer
opening animation (which is planned in the next commits) because we can
retrieve the actual widget of the media widget being pressed, which was
not possible previously.
2023-02-13 19:56:27 +01:00
Kévin Commaille
2e1a685e8f room: Move event actions to the event module
Part-of: <https://gitlab.gnome.org/GNOME/fractal/-/merge_requests/1221>
2023-02-13 16:57:42 +00:00
Kévin Commaille
93caf82560 logs: Enable warn level for all crates in .Hack manifest
Part-of: <https://gitlab.gnome.org/GNOME/fractal/-/merge_requests/1221>
2023-02-13 16:57:42 +00:00
Kévin Commaille
5223cbcb95 auth-dialog: Use Ruma's AuthData type
Now that it is owned we can use it instead of having to declare our own
type.

Part-of: <https://gitlab.gnome.org/GNOME/fractal/-/merge_requests/1221>
2023-02-13 16:57:42 +00:00
Harshil Patel
99669d258f room-history: Reorganize buttons of message composer
Fixes GNOME/fractal#1033
2023-02-13 16:07:17 +00:00
Kévin Commaille
7aa35b393b
chore: Update matrix-rust-sdk and Ruma
The branch we used before was merged and has been deleted.
2023-02-12 13:11:03 +01:00
Kévin Commaille
61070c43bc
room-history: Fix sending location
Ashpd complained that no tokio reactor was running.
2023-02-11 18:32:36 +01:00
Yuri Chornoivan
678773b623 Update Ukrainian translation 2023-02-11 16:49:06 +00:00
Kévin Commaille
0484870f25
chore: Update matrix-sdk and ruma
Switch to the new timeline API.
2023-02-10 12:15:08 +01:00
Kévin Commaille
1c199d0b34
chore: Update dependencies
With `cargo update`
2023-02-10 10:11:47 +01:00
Harshil Patel
103fc1927e room-history: Prevent scroll when contextual menu is shown
closes GNOME/fractal#937
2023-02-09 23:18:22 +05:30
Alexandre Franke
4c8f57c827 Add tech used to metadata 2023-02-07 16:53:19 +01:00
Piotr Drąg
fe5346172b Update Polish translation 2023-02-05 14:29:48 +01:00
Paul van Tilburg
ceaf71fcb2
room-history: Replace pill by display name in reply quote
The pill in the reply quote attribution (related content sender) turns
out to be confusing as it looks like a mention. Use the same style as
for the display name in a content message row. The fact that it is in a
quoted block makes it less pronounced and thus more clear.

Also use a binding so the user's display name updates if the user
changes it.
2023-02-02 21:32:08 +01:00
Pratham Gupta
0cd31876e1 shortcuts-window: Add missing accels for keyboard actions 2023-02-02 10:20:46 +00:00
Aleksandr Melman
d0b4e1445d Update Russian translation 2023-01-29 22:54:09 +00:00
Yuri Chornoivan
b0577d2def Update Ukrainian translation 2023-01-13 14:51:12 +00:00
Alan Mortensen
de7f6d14ff Update Danish translation 2023-01-11 15:19:55 +00:00
Kévin Commaille
746edd98ad account-settings: Fix crash on opening
Regression introduced in !1210
2023-01-07 14:30:41 +00:00
Kévin Commaille
03169adf14 chore: Update oo7 dependency 2023-01-07 14:30:41 +00:00
Kévin Commaille
76cf6592ca verification: Fix crash when trying to access the camera 2023-01-07 14:30:41 +00:00
Kévin Commaille
96237c5271 chore: Fix clippy warnings
Triggered by the `uninlined_format_args` lint in nightly
2023-01-07 14:30:41 +00:00
Tobias Bernard
e1fbf9a045 empty-page: update icon to new symbolic style 2023-01-04 12:05:30 +00:00
ShootingStarDragons
e5f6aeef3f chore: update dependencies
Log: fix runtime-break error because glib version
2023-01-01 18:36:33 +08:00
Tobias Bernard
3d53755510 device list: add min width to log out button 2022-12-27 17:58:16 +01:00
Aleksandr Melman
d394badd0b Update Russian translation 2022-12-20 09:57:40 +00:00
Kévin Commaille
601a54bf4f
qr-code-scanner: Pass node ID as a string
The `path` property must be a string, not an unsigned integer.
2022-12-13 16:56:45 +01:00
Kévin Commaille
85672a312f
docs: Fix instructions for secret storage 2022-12-10 10:48:16 +01:00
Asier Sarasua Garmendia
081950b220 Update Basque translation 2022-12-05 08:05:49 +00:00
Kévin Commaille
765e1ee7e9
docs: Don't mention "Do Not Disturb" feature
To avoid confusion with the switch in the notifications panel
2022-12-04 18:00:44 +01:00
Harshil Patel
13d28d4218 Window: Add functinality to save and restore active session 2022-11-30 23:19:37 +05:30
Aleksandr Melman
39860b5129 Update Russian translation 2022-11-28 04:53:46 +00:00
Kévin Commaille
f64cc5d323
secret: Always use the schema attribute to get secrets
Don't rely on whether the app is sandboxed to guess the keyring backend.
Migrate secrets in the file (portal) backend to include the schema
attribute.
2022-11-26 16:59:11 +01:00
Jürgen Benvenuti
6749cfcf31 Update German translation 2022-11-24 22:00:43 +00:00
Kévin Commaille
bf93649824 misc: Make the bug template the default issue template 2022-11-14 18:03:05 +00:00
Piotr Drąg
4b121bcdcc Update Polish translation 2022-11-13 13:29:35 +01:00
Kévin Commaille
593856dcf2
chore: Update matrix-sdk
A RustSec was issued because it can leak secrets in the logs.
2022-11-13 09:47:04 +01:00
Kévin Commaille
8178917fa6
misc: Update Cargo.lock 2022-11-12 14:45:39 +01:00
Kévin Commaille
b8d55c3973
misc: Add tracing feature for oo7 2022-11-12 14:14:25 +01:00
Yuri Chornoivan
7d75e72f47 Update Ukrainian translation 2022-11-10 07:56:24 +00:00
Nathan Follens
812f9f5d00 Update Dutch translation 2022-11-09 19:49:49 +00:00
Kévin Commaille
087391c7ea room-history: Fix random offset for state-like events 2022-11-08 20:32:24 +00:00
Kévin Commaille
b73c149a22
session: Add action to copy an image in event's context menu 2022-11-08 15:03:29 +01:00
Kévin Commaille
4a31e667a3
session-verification: Display the Matrix User ID as the title of the window 2022-11-08 12:07:05 +01:00
Kévin Commaille
dbf73de01d
verification: Don't complete session verification if cross-signing keys are missing 2022-11-08 12:07:04 +01:00
Kévin Commaille
fe01193769
verification: Make label IDs more explicit 2022-11-08 10:39:42 +01:00
Luming Zh
7da4df1d1d Update Chinese (China) translation 2022-11-06 17:55:09 +00:00
Piotr Drąg
466baaf65e Update Polish translation 2022-11-06 15:34:20 +01:00
Kévin Commaille
2450728ade
user-actions: Remove NONE flag
Replace it with calls to `empty()`, as it's not a proper flag.
Could avoid confusion when using bitflags methods like `contains()`.
2022-11-06 12:46:12 +01:00
Kévin Commaille
535b8a9f46
pill: Remove room when setting user and vice-versa 2022-11-06 12:40:13 +01:00
Kévin Commaille
7a98f79d97
misc: Only implement Default when required
Reduces boilerplate
2022-11-06 12:33:09 +01:00
Kévin Commaille
a1385eff0a
misc: Allow clippy::new_without_default at the crate level 2022-11-06 12:32:39 +01:00
Kévin Commaille
98235bd564
invite-subpage: Remove unnecessary uses of clone! 2022-11-06 12:17:29 +01:00
Kévin Commaille
bbe284554a components: Use GstPlay instead of GstPlayer for video player 2022-11-06 09:43:54 +00:00
Yuri Chornoivan
858cea35bf Update Ukrainian translation 2022-11-05 18:41:52 +00:00
Kévin Commaille
16e44db2a0
chore: Use the Default derive for enums 2022-11-05 12:03:38 +01:00
Kévin Commaille
fff8839846
chore: Rename priv_ variables to imp
To be consistent with the method name.
2022-11-05 12:01:57 +01:00
Kévin Commaille
f71961a1b7
chore: Use ParamSpec builders
Use the description of the property to document getters and setters.
2022-11-05 11:57:15 +01:00
Kévin Commaille
fbc9b26d5c
chore: Update gtk and related dependencies 2022-11-05 11:40:26 +01:00
Kévin Commaille
dffcc460cc
account-settings: Add basic notifications settings page 2022-11-05 10:31:52 +01:00
Kévin Commaille
2609c585f2
notifications: Display room avatar 2022-11-05 10:06:59 +01:00
Kévin Commaille
1492956a88
session: Add support for notifications 2022-11-05 10:06:59 +01:00
Kévin Commaille
5bef3b021c
session: Separate action to show content and send ready signal
Otherwise we send the ready signal everytime we want to show the
content.
Move everything that is not about showing content if a new method.
Rename the old mark_ready to mark_loaded because the ready signal is
sent later so it can be confusing.
2022-11-05 10:06:59 +01:00
Kévin Commaille
642790c289
window: Allow to get a Session by ID 2022-11-05 10:06:59 +01:00
Kévin Commaille
9122a7f926
utils: Group matrix-related utils 2022-11-05 10:06:59 +01:00
Kévin Commaille
7301d3ff6e
room-history: Display and send typing notifications 2022-11-05 09:30:53 +01:00
Nathan Follens
4398ab79a3 Update Dutch translation 2022-11-01 21:47:34 +00:00
Piotr Drąg
02359fa915 Update Polish translation 2022-10-30 13:28:48 +01:00
Yuri Chornoivan
0bccbfe478 Update Ukrainian translation 2022-10-29 10:31:14 +00:00
Kévin Commaille
cafc56e14a
hooks: Skip checks when missing a dependency in a non-interactive shell. 2022-10-28 21:18:39 +02:00
Kévin Commaille
4d5791f817 secret: Use oo7 instead of libsecret 2022-10-28 11:12:36 +00:00
Kévin Commaille
b0f51bd1f9
login: Allow to go back to login when cancelling a verification
Also fixes a bug where the database would get deleted when the app
is closed after restoring a session.
2022-10-27 11:51:02 +02:00
Hugo Carvalho
c3d1bd7ac8 Update Portuguese translation 2022-10-26 13:00:46 +00:00
Hugo Carvalho
0d4970c57d Add Portuguese translation 2022-10-25 13:32:33 +00:00
Kévin Commaille
26c182b052
window: Only clean login if a new session is ready 2022-10-22 16:12:46 +02:00
Kévin Commaille
340fff5276
session: fix typo 2022-10-22 15:51:20 +02:00
Kévin Commaille
7ef617bfd9
window: Remove action to show greeter
It's redundant with the one to create a new session and the distinction
between the two isn't really needed.
2022-10-22 15:29:31 +02:00
Kévin Commaille
c533478e2c
login: Remove signal for new session
It is used in a single place and it's easier to call the method of
the window directly.
2022-10-22 15:16:23 +02:00
Kévin Commaille
926926491d
chore: Update Ruma 2022-10-18 10:25:12 +02:00
Julian Sparber
a40829eeb2 docs: Improve runtime dependencies section 2022-10-17 14:00:07 +00:00
Lukáš Tyrychtr
f0ac677121 sidebar: Tell accessibility tools about expanded state of categories 2022-10-14 11:18:58 +02:00
Christopher Davis
c6edc58468 event_actions: Use GtkFileChooserNative for saving
Fractal does not have a full view of the filesystem, which
means that we can't use GtkFileChooserDialog if we want users
to be able to save anywhere. Instead, we need to use the
file chooser portal via GtkFileChooserNative.

Closes https://gitlab.gnome.org/GNOME/fractal/-/issues/1064
2022-10-13 12:38:01 +02:00
Kévin Commaille
e8c3728a95 session: Use image crate to get image metadata 2022-10-12 12:44:48 +00:00
Kévin Commaille
4a0e79642d misc: Use the image crate to load images
Handle more codecs than GDK-Pixbuf and add support for animated images.
2022-10-12 12:44:48 +00:00
Kévin Commaille
7500f4cebc misc: Update image and rqrr dependencies 2022-10-12 12:44:48 +00:00
Kévin Commaille
ba430b50cc login: Handle matrix client creation in Login 2022-10-11 13:33:41 +00:00
Kévin Commaille
0487df15ab login: Split in pages and cleanup 2022-10-11 13:33:41 +00:00
Kévin Commaille
4b7703ba87
room-history: Reset scroll position when switching rooms 2022-10-11 14:16:54 +02:00
Kévin Commaille
27e96f4acb
room-history: Add an icon to files in replies 2022-10-11 14:16:54 +02:00
Kévin Commaille
97933849f4
room-history: Fix width of locations in replies 2022-10-11 14:16:53 +02:00
Kévin Commaille
19d5f87e48
room-history: Fix corners of media messages in replies 2022-10-11 14:16:49 +02:00
Kévin Commaille
cd823e5937
room-history: Request bigger thumbnails
Otherwise they are blurry because we request smaller images than the
available space.
2022-10-11 14:13:48 +02:00
Kévin Commaille
e546769dc7
misc: Fix strings and comments 2022-10-10 15:04:24 +02:00
Kévin Commaille
b0274eaaf2
room-history: Don't loop when new messages are added
The scrollbar has not been updated when the `load()` method returns,
so wait until we get notified of the change if new messages are added.
2022-10-10 14:58:41 +02:00
Kévin Commaille
f0e5d97684
account-settings: UI fixes 2022-10-10 12:49:39 +02:00
Kévin Commaille
6e82ea2f60
account-settings: Use AdwPasswordEntryRow 2022-10-10 12:49:35 +02:00
Kévin Commaille
4270577625
account-settings: Don't use AdwPreferencesPage when not needed 2022-10-10 12:49:04 +02:00
Kévin Commaille
1c891ce5fa
room-history: Add preview tooltips on linkified URLs 2022-10-10 12:06:17 +02:00
Kévin Commaille
f56b28bb44
room-history: Escape HTML entities in URLs tooltips
The tooltips consider that there is markup by default and don't like '&' that
are not escaped.
2022-10-10 12:06:17 +02:00
Kévin Commaille
0225b10ab7
room-history: Fix parsing of matrix.to URIs
ruma_common::serde::urlencoded::de chokes when there are several identical
keys, so replace it with form_urlencoded.

URIs with encoded HTML entities now recognize &amp; in the query.
2022-10-10 12:06:17 +02:00
Kévin Commaille
7e212947fe
room-history: Fix parsing of nested mentions 2022-10-10 12:02:39 +02:00
Kévin Commaille
dd1f5b8246 session: Send media info with attachments
Generate thumbnails for images.

Part-of: <https://gitlab.gnome.org/GNOME/fractal/-/merge_requests/1173>
2022-10-10 08:45:13 +00:00
Kévin Commaille
7706441ee8 utils: Reorganize by creating submodules
Improve the docs.

Part-of: <https://gitlab.gnome.org/GNOME/fractal/-/merge_requests/1173>
2022-10-10 08:45:13 +00:00
Piotr Drąg
49d31bfff4 Update Polish translation 2022-10-09 13:35:05 +02:00
Jiri Grönroos
8e75dbd5f2 Update Finnish translation 2022-10-08 19:17:56 +00:00
Yuri Chornoivan
02235f1694 Update Ukrainian translation 2022-10-07 20:24:09 +00:00
Kévin Commaille
5d7d49a973 session: Allow to join a room by ID, alias or permalink 2022-10-07 17:10:40 +00:00
Kévin Commaille
23691dbf87 room-history: Fix parsing of matrix.to URIs that are not percent-encoded 2022-10-07 17:10:40 +00:00
Yuri Chornoivan
3d4a4b347a Update Ukrainian translation 2022-10-05 19:58:14 +00:00
Kévin Commaille
0232d98dc1
explore: Allow to explore custom matrix servers 2022-10-05 16:37:51 +02:00
Kévin Commaille
a6999bd958
chore: Update Cargo.lock 2022-10-05 16:09:12 +02:00
Kévin Commaille
91085e91df chore: Update matrix-sdk to 0.6.0 and ruma to 0.7.4
Part-of: <https://gitlab.gnome.org/GNOME/fractal/-/merge_requests/1177>
2022-10-05 10:04:40 +00:00
Kévin Commaille
6203ba01b3 chore: Switch to Rust 2021 edition
Part-of: <https://gitlab.gnome.org/GNOME/fractal/-/merge_requests/1176>
2022-10-05 09:36:22 +00:00
Paul van Tilburg
76ddc9c45a
room-history: Show location viewer error when geo URI parsing fails
This is only used for displaying locations. When previewing/sending a
location, it is assumed to be valid, so no error overlay is necessary.

* Pass a `GeoUri` object to the `LoctionViewer` and `MediaContentViewer`
  instead of a geo URI string so it is known to be valid
* Wrap the `LocationViewer` component in a `GtkOverlay` in the
  `ContentMessageLocation` component that can overlay an error message
  over the location viewer if coordinate parsing fails
2022-10-05 08:44:06 +02:00
Paul van Tilburg
85b5af0f37
room-history: Use geo_uri crate for geo URI parsing/generation 2022-10-05 08:44:06 +02:00
Kévin Commaille
ea937599e3
chore: Update libshumate dependency
Switch to the first stable release
2022-10-03 22:08:31 +02:00
Yuri Chornoivan
5b192ca5dd Update Ukrainian translation 2022-10-02 19:32:00 +00:00
Kévin Commaille
5f5ebd5730
room-history: Make title of location preview translatable 2022-10-02 19:51:27 +02:00
Kévin Commaille
4e355341a3
content: Fix unwanted rounded corners in location preview 2022-10-02 17:32:07 +02:00
Kévin Commaille
00b8bcc83a
login: Add message for translators 2022-09-28 18:37:35 +02:00
Kévin Commaille
825580cc41
misc: Don't init widgets that are TemplateChild 2022-09-28 18:14:02 +02:00
Kévin Commaille
7e46ea6a35
misc: Don't specify type if it's not needed 2022-09-28 17:51:56 +02:00
Kévin Commaille
d19bb254d5
misc: Remove RefCell or OnceCell wrapping WeakRefs 2022-09-28 17:32:50 +02:00
Kévin Commaille
4ffcdf1909
misc: Fix comments and docs 2022-09-28 16:47:27 +02:00
Kévin Commaille
3d12e38336
misc: Ensure UI files use enum variant short name consistently 2022-09-28 16:41:46 +02:00
Kévin Commaille
6ae4c6e846
login: Mark strings as translatable 2022-09-28 16:41:00 +02:00
Kévin Commaille
a190f17ea3
account-settings: Mark strings as translatable 2022-09-28 16:26:39 +02:00
Kévin Commaille
77c9c73175
components: Remove EntryRow 2022-09-28 15:29:11 +02:00
Kévin Commaille
ef7010d950
session-verification: Use AdwPasswordEntryRow 2022-09-28 15:29:02 +02:00
Kévin Commaille
09df14ed16
login: Use AdwEntryRow and AdwPasswordEntryRow 2022-09-28 15:28:46 +02:00
Kévin Commaille
0b9519e370
account-settings: Use AdwEntryRow 2022-09-28 15:25:21 +02:00
Kévin Commaille
af1bbba90e
chore: Update libadwaita dependency 2022-09-28 15:24:18 +02:00
Julian Sparber
d6024184c0 docs: Improve explanation of how credentials are stored 2022-09-26 13:41:07 +00:00
803 changed files with 266910 additions and 78278 deletions

1
.gitattributes vendored
View File

@ -1,5 +1,4 @@
build-aux/org.gnome.Fractal.Devel.json export-ignore
build-aux/org.gnome.Fractal.Hack.json export-ignore
build-aux/org.gnome.Fractal.json export-ignore
.editorconfig export-ignore
.gitattributes export-ignore

3
.gitignore vendored
View File

@ -11,4 +11,5 @@ src/config.rs
subprojects/libadwaita
subprojects/gtksourceview
.vscode
.fenv
.fenv
.zed

View File

@ -1,237 +1,25 @@
stages:
- check
- test
- build
- doc
- test
- deploy
- release
variables:
FLATPAK_MODULE: "fractal"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
CI_IMAGE: "quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master"
MANIFEST_PATH: "build-aux/org.gnome.Fractal.Devel.json"
APP_ID: "org.gnome.Fractal.Devel"
.hack:
variables:
MANIFEST_PATH: "build-aux/org.gnome.Fractal.Hack.json"
APP_ID: "org.gnome.Fractal.Hack"
.devel:
variables:
MANIFEST_PATH: "build-aux/org.gnome.Fractal.Devel.json"
APP_ID: "org.gnome.Fractal.Devel"
.build_template:
image: '${CI_IMAGE}'
script:
- >
xvfb-run -a -s "-screen 0 1024x768x24"
flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
- flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID} ${BRANCH}
- mkdir logs
- mv .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/meson-log.txt logs/
- mv .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/testlog.txt logs/
- tar cf repo.tar repo/
artifacts:
name: 'Flatpak artifacts'
expose_as: 'Get Flatpak bundle here'
when: 'always'
paths:
- "${BUNDLE}"
- 'repo.tar'
- 'logs'
expire_in: 14 days
.build_x86_64:
extends: .build_template
tags:
- flatpak
.build_aarch64:
extends: .build_template
tags:
- flatpak-aarch64
.publish_nightly_template:
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:flat-manager-client'
stage: 'deploy'
timeout: '100m'
script:
- tar xf repo.tar
- flatpak build-update-repo --generate-static-deltas repo/
- BUILD_ID=$(flat-manager-client create ${FLAT_MANAGER_URL} ${FLATPAK_REPO})
- flat-manager-client push --commit --publish --wait ${BUILD_ID} repo/ || result=$?
- flat-manager-client purge ${BUILD_ID}
- exit $result
variables:
FLAT_MANAGER_URL: https://flat-manager.gnome.org/
FLATPAK_REPO: nightly
only:
refs:
- main
variables:
- $REPO_TOKEN
# Configure and run code checks
# Exits and fails if an error is encountered
checks:
image: "rustlang/rust:nightly-slim"
stage: check
script:
- scripts/checks.sh --verbose --force-install
# Lint the code
cargo-clippy:
extends: .hack
image: '${CI_IMAGE}'
stage: check
tags:
- flatpak
script:
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
- echo "cargo clippy -- -D warnings" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
# Build a debug version of the flatpak
# Except on main
flatpak:
extends:
- .hack
- .build_x86_64
stage: test
variables:
BUNDLE: "fractal-hack.flatpak"
except:
- main
# Build the nightly version of the flatpak
# Only on main
build-x86_64:
extends:
- .devel
- .build_x86_64
stage: build
variables:
MANIFEST_PATH: "build-aux/org.gnome.Fractal.Devel.json"
APP_ID: "org.gnome.Fractal.Devel"
BUNDLE: "fractal-devel-x86_64.flatpak"
only:
- main
build-aarch64:
extends:
- .devel
- .build_aarch64
stage: build
variables:
MANIFEST_PATH: "build-aux/org.gnome.Fractal.Devel.json"
APP_ID: "org.gnome.Fractal.Devel"
BUNDLE: "fractal-devel-aarch64.flatpak"
only:
- main
# Build the docs
# Only on main
pages:
extends: .devel
image: '${CI_IMAGE}'
stage: doc
tags:
- flatpak
script:
- flatpak install --user --noninteractive org.freedesktop.Sdk.Extension.rust-nightly//22.08
- sed -i 's|rust-stable|rust-nightly|g' ${MANIFEST_PATH}
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
- echo "ninja src/doc" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
- mv .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/src/doc public
- chmod -R a=rwx public
artifacts:
paths:
- 'public'
only:
refs:
- main
# Publish the nightly version
# Only on main
publish_nightly-x86_64:
extends: .publish_nightly_template
dependencies: ['build-x86_64']
needs: ['build-x86_64']
publish_nightly-aarch64:
extends: .publish_nightly_template
dependencies: ['build-aarch64']
needs: ['build-aarch64']
.vars_release:
variables:
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/release-tarballs/${CI_COMMIT_TAG}"
RELEASE_TARBALL: "fractal-${CI_COMMIT_TAG}.tar.xz"
RELEASE_TARBALL_SHA: "fractal-${CI_COMMIT_TAG}.tar.xz.sha256sum"
FLATPAK_MODULE: "fractal"
MANIFEST_PATH: "build-aux/org.gnome.Fractal.json"
APP_ID: "org.gnome.Fractal"
CONFIG_OPTS: "-Dprofile=default"
release-tarball:
stage: release
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
extends:
- .vars_release
tags:
- flatpak
script:
# Create flatpak manifest for release
- sed 's/org.gnome.Fractal.Devel/org.gnome.Fractal/g' build-aux/org.gnome.Fractal.Devel.json > ${MANIFEST_PATH}
- rewrite-flatpak-manifest ${MANIFEST_PATH} ${FLATPAK_MODULE} ${CONFIG_OPTS}
# Build tarball with vendored rust dependencies
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
# FIXME: We need --allow-dirty since the manifest is created in place
- echo "meson dist --allow-dirty" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
- mv .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-dist tarball
# Upload tarball
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file tarball/${RELEASE_TARBALL} "${PACKAGE_REGISTRY_URL}/${RELEASE_TARBALL}"
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file tarball/${RELEASE_TARBALL_SHA} "${PACKAGE_REGISTRY_URL}/${RELEASE_TARBALL_SHA}"
# Extract release notes from appstream
# FIXME: Appstream requires the files name to be `*.metainfo.xml`
- cp data/${APP_ID}.metainfo.xml.in.in data/${APP_ID}.metainfo.xml
- appstream-util appdata-to-news "data/${APP_ID}.metainfo.xml" |
awk '{ x[NR] = $0 } END { for ( i=5 ; i<=NR ; i++ ) { if (x[i] ~ /^$/ && x[i+1] ~ /^Version/ && x[i+2] ~ /^=/ && x[i+3] ~ /^Release/) exit; else print x[i]; }}' >
release_notes.txt
dependencies: []
workflow:
rules:
- if: $CI_COMMIT_TAG
artifacts:
paths:
- tarball
- release_notes.txt
- if: $CI_COMMIT_BRANCH
# https://gitlab.com/gitlab-org/gitlab/-/issues/271534 The default URL needs authentication right now, which is less than optimal...
# Get the package_files ID instead and use that as download URL in the "release" step.
release:
stage: release
extends:
- .vars_release
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- apk add curl jq
- |
export PACKAGE_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages?sort=desc" | jq -c .[0].id)
- |
export RELEASE_TARBALL_DOWNLOAD_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${PACKAGE_ID}/package_files" | jq -c .[0].id)
export RELEASE_TARBALL_SHA_DOWNLOAD_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${PACKAGE_ID}/package_files" | jq -c .[1].id)
- export RELEASE_TARBALL_URL="${CI_PROJECT_URL}/-/package_files/$RELEASE_TARBALL_DOWNLOAD_ID/download"
- export RELEASE_TARBALL_SHA_URL="${CI_PROJECT_URL}/-/package_files/$RELEASE_TARBALL_SHA_DOWNLOAD_ID/download"
- cat release_notes.txt
- |
release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
--assets-link "{\"name\":\"Tarball for ${CI_COMMIT_TAG}\",\"url\":\"${RELEASE_TARBALL_URL}\", \"filepath\": \"/tarball/${RELEASE_TARBALL}\"}" \
--assets-link "{\"name\":\"Checksum for ${CI_COMMIT_TAG}\",\"url\":\"${RELEASE_TARBALL_SHA_URL}\", \"filepath\": \"/tarball/${RELEASE_TARBALL_SHA}\"}" \
--description release_notes.txt
rules:
- if: $CI_COMMIT_TAG
needs: ['release-tarball']
include:
- local: .gitlab-ci/run_checks.yml
- local: .gitlab-ci/build.yml
- local: .gitlab-ci/test.yml
- component: "gitlab.gnome.org/GNOME/citemplates/basic-deploy-docs@master"
inputs:
docs-job-name: "build-docs"
- local: .gitlab-ci/publish_nightly.yml
rules:
- if: $CI_COMMIT_BRANCH == "main"

53
.gitlab-ci/build.yml Normal file
View File

@ -0,0 +1,53 @@
# Build the Flatpak
include:
- project: "GNOME/citemplates"
file: "flatpak/flatpak_ci_initiative.yml"
- local: '.gitlab-ci/utils.yml'
variables:
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
BUNDLE: "${APP_ID}.flatpak"
build@x86_64:
extends:
- .flatpak@x86_64
stage: build
after_script:
# Copy the metainfo file to the current directory.
- cp flatpak_app/files/share/metainfo/*.metainfo.xml .
artifacts:
paths:
- $BUNDLE
- 'repo.tar'
- '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/'
# Add the metainfo file for the corresponding test.
- '${APP_ID}.metainfo.xml'
build@aarch64:
extends:
- .flatpak@aarch64
stage: build
# Test builds with the stable runtime to make sure that the Flatpak will build on Flathub.
# Should be run manually before tagging a new release.
.build_stable:
extends:
- .stable_runtime
variables:
RUNTIME_REPO: "https://flathub.org/repo/flathub.flatpakrepo"
RUN_TESTS: 0
build-stable@x86_64:
extends:
- .flatpak@x86_64
- .build_stable
stage: build
when: manual
build-stable@aarch64:
extends:
- .flatpak@aarch64
- .build_stable
stage: build
when: manual

View File

@ -0,0 +1,17 @@
{
"name": "cargo-nextest",
"buildsystem": "simple",
"sources": [
{
"type": "archive",
"url": "https://github.com/nextest-rs/nextest/releases/download/cargo-nextest-0.9.100/cargo-nextest-0.9.100-x86_64-unknown-linux-gnu.tar.gz",
"sha256": "de8843f9d4cd72ba7ff3995679536b8a5638ebc8f94848cb988c7549d9dc4e7d",
"dest": "cargo-nextest",
"strip-components": 0
}
],
"build-commands": [
"mkdir /app/bin",
"mv cargo-nextest/cargo-nextest /app/bin/"
]
}

5
.gitlab-ci/nextest.toml Normal file
View File

@ -0,0 +1,5 @@
[profile.default]
fail-fast = false
[profile.default.junit]
path = "junit.xml"

View File

@ -0,0 +1,13 @@
# Publish the nightly (Devel) version
include:
- project: "GNOME/citemplates"
file: "flatpak/flatpak_ci_initiative.yml"
publish_nightly@x86_64:
extends: .publish_nightly
needs: ['build@x86_64']
publish_nightly@aarch64:
extends: .publish_nightly
needs: ['build@aarch64']

24
.gitlab-ci/run_checks.yml Normal file
View File

@ -0,0 +1,24 @@
# Configure and run code checks
include: '.gitlab-ci/utils.yml'
# Custom checks and lints
checks:
stage: check
image: "rustlang/rust:nightly-slim"
interruptible: true
script:
- hooks/checks.sh --verbose --force-install
# Lint the code
cargo-clippy:
extends:
- .remove_build_only_modules
stage: check
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
tags:
- flatpak
interruptible: true
script:
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
- echo "cargo clippy -- -D warnings" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}

69
.gitlab-ci/test.yml Normal file
View File

@ -0,0 +1,69 @@
# Tests after the app is built.
include: '.gitlab-ci/utils.yml'
# Validate the metainfo with Flathub's tool.
lint-metainfo:
stage: test
image:
name: "ghcr.io/flathub/flatpak-builder-lint:latest"
entrypoint: [""]
variables:
METAINFO: "${APP_ID}.metainfo.xml"
interruptible: true
script:
# This tool has extra tests on top of appstreamcli and is required to pass for Flathub.
- flatpak-builder-lint appstream ${METAINFO}
# Test also with the pedantic and strict flags.
- appstreamcli validate --pedantic --explain --strict ${METAINFO}
needs: ["build@x86_64"]
# Run the Rust tests.
rust-tests:
extends:
- .remove_build_only_modules
stage: test
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
tags:
- flatpak
interruptible: true
script:
# Create a temporary file.
- TMP_FILE=$(mktemp)
# Add a module for nextest to the Flatpak manifest and write it to the temporary file.
- jq --slurpfile nextest .gitlab-ci/nextest.module.json '.modules = [$nextest[], .modules[]]' ${MANIFEST_PATH} > ${TMP_FILE}
# Replace the manifest with the temporary file.
- mv $TMP_FILE ${MANIFEST_PATH}
# Initialize the Flatpak sandbox.
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
# Run the tests.
- echo "cargo-nextest nextest run --config-file ../.gitlab-ci/nextest.toml" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
dependencies: []
artifacts:
reports:
junit: '.flatpak-builder/build/${FLATPAK_MODULE}/target/nextest/default/junit.xml'
# Test that there are no errors in the docs.
build-docs:
extends:
- .remove_build_only_modules
- .stable_runtime
stage: test
tags:
- flatpak
interruptible: true
before_script:
- !reference [.remove_build_only_modules, before_script]
- !reference [.stable_runtime, before_script]
script:
- flatpak install --user --noninteractive org.freedesktop.Sdk.Extension.rust-nightly//${FREEDESKTOP_RUNTIME_BRANCH}
# We want to use the nightly toolchain inside the build terminal.
- sed -i 's|"org.freedesktop.Sdk.Extension.rust-stable"|"org.freedesktop.Sdk.Extension.rust-nightly"|g' ${MANIFEST_PATH}
- sed -i 's|/rust-stable/bin|/rust-nightly/extra/sdk/rust-nightly/bin|g' ${MANIFEST_PATH}
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
- echo "ninja src/doc" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
- tar --auto-compress --create --file "${CI_PROJECT_DIR}/${CI_PROJECT_NAME}-docs.tar.gz" --directory ".flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/src/doc" .
dependencies: []
artifacts:
paths:
- ${CI_PROJECT_NAME}-docs.tar.gz

34
.gitlab-ci/utils.yml Normal file
View File

@ -0,0 +1,34 @@
# Utilities to include in other jobs.
# Remove the Flatpak modules that are only necessary when building the app with meson.
.remove_build_only_modules:
variables:
# JSON array of the names of the Flatpak modules to remove.
MODULES_TO_REMOVE: '["grass", "glycin-loaders"]'
before_script:
# Create a temporary file.
- TMP_FILE=$(mktemp)
# Remove the modules in the manifest and write the output to the temporary file.
- jq --argjson modules_to_remove "${MODULES_TO_REMOVE}" 'del(.modules[] | select(IN(.name; $modules_to_remove | .[])))' ${MANIFEST_PATH} > $TMP_FILE
# Replace the manifest with the temporary file.
- mv $TMP_FILE ${MANIFEST_PATH}
# Use meson's build-env profile.
- sed -i "s|-Dprofile=development|-Dprofile=build-env|g" ${MANIFEST_PATH}
# Update the Flatpak manifest to use the latest stable GNOME runtime and use the corresponding
# container image.
#
# To get a list of available GNOME and LLVM versions, see:
# https://gitlab.gnome.org/GNOME/gnome-runtime-images/-/blob/master/.gitlab-ci.yml
.stable_runtime:
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-${GNOME_STABLE_VERSION}'
variables:
GNOME_STABLE_VERSION: "48"
FREEDESKTOP_RUNTIME_BRANCH: "24.08"
LLVM_NIGHTLY_VERSION: "20"
LLVM_STABLE_VERSION: "20"
before_script:
# We want to use the latest stable GNOME runtime instead of the nightly runtime.
- sed -i "s|master|${GNOME_STABLE_VERSION}|g" ${MANIFEST_PATH}
# We want to use the latest LLVM extension for the stable runtime.
- sed -i "s|llvm${LLVM_NIGHTLY_VERSION}|llvm${LLVM_STABLE_VERSION}|g" ${MANIFEST_PATH}

View File

@ -1,28 +0,0 @@
<!-- Please note that Fractal was rewritten from scratch and our current focus is on the main branch
or the latest nightly build, so issues with the stable release are unlikely to be fixed. -->
Detailed description of the issue. Provide as much information as you can, potentially with images
or videos showing the issue.
## Steps to reproduce
1. Open Fractal
2. Enter a room
3. ...
## Information
* [ ] This bug is reproducible from the latest nightly build <!-- Check this box if the bug happens on Fractal's development version -->
* **Fractal Version**: <!-- The version of Fractal you were using when the bug occurred. Check the "About Fractal" dialog for this information -->
* **OS Version**: <!-- Operating system version, e.g. Fedora 36 -->
* **Installation Source**: <!-- Where you installed Fractal from, e.g. Flathub, GNOME Apps Nightly, AUR, or distro repositories -->
* **Homeserver**: <!-- The homeserver for your matrix account, e.g. matrix.org, gnome.org, … You can mention several of them if this is reproducible on multiple ones. -->
<!-- If you have a crash report, use the "Attach A File" button in the issue editor to attach it, or paste it in a code block below. -->
<!-- To create a code block, you surround the code with two lines with three "`" characters like so:
```
code goes here
```
-->

View File

@ -0,0 +1,35 @@
<!-- This is a template to report bugs, select the corresponding template to request a new feature. -->
Detailed description of the issue. Provide as much information as you can, potentially with images
or videos showing the issue.
## Steps to reproduce
1. Open Fractal
2. Enter a room
3. ...
## Information
* [ ] This bug is reproducible from the latest nightly build <!-- Check this box if the bug happens on Fractal's development version -->
* [ ] This bug is reproducible with an [officially supported flatpak](https://gitlab.gnome.org/World/fractal#installation-instructions)
<!-- ⚠️ Issue with third party packages (distribution repository, AUR, snap, Fedora flatpak…) should be reported to your distributor -->
* **Fractal Version**: <!-- The version of Fractal you were using when the bug occurred. Check the "About Fractal" dialog for this information -->
* **OS Version**: <!-- Operating system version, e.g. Fedora 36 -->
* **Homeserver**: <!-- The homeserver for your matrix account, e.g. matrix.org, gnome.org, … You can mention several of them if this is reproducible on multiple ones. -->
<!-- If you have error logs or a crash report, use the "Attach A File" button in the issue editor to attach it, or paste it in a code block below.
To access the logs, you can run `SYSTEMD_LESS=FRXMK journalctl -e -o cat _COMM=fractal`
To generate a stack trace in case of a crash, you can follow this guide: https://handbook.gnome.org/issues/stack-traces.html
To create a code block, surround the code with two lines with three "`" characters like so:
```
code goes here
```
-->
/label ~"1. Bug"

View File

@ -1,7 +1,10 @@
<!-- Please note that Fractal was rewritten from scratch and our current focus is on the main branch
or the latest nightly build. Some features missing in the stable release are already available
in the development version. To avoid duplicates and unnecessary issues, please check that your
request is for something that is not yet implemented and doesnt have an existing issue open. -->
<!-- Please note that some features missing in the stable release are already available in the
development version. To avoid duplicates and unnecessary issues, please check that your request is
for something that is not yet implemented, and doesnt have an existing issue that is open or that
was closed as out of scope.
We also recommend talking to us in the #fractal:gnome.org Matrix room first. We do not intend to
implement everything and dont want our issue tracker to become a giant wishlist, but rather a
curated list of known problems and planned features. -->
Detailed description of the feature. Provide as much information as you can.

View File

@ -1,6 +1,8 @@
[default.extend-words]
gir = "gir"
inout = "inout"
numer = "numer" # Short for numerator in GStreamer
ue = "ue" # End of word after mnemonic
[type.po]
extend-glob = ["*.po"]
@ -9,3 +11,7 @@ check-file = false
[type.json]
extend-glob = ["*.json"]
check-file = false
[type.png]
extend-glob = ["*.png"]
check-file = false

View File

@ -1,56 +1,62 @@
# Contributing
## Newcomers
On this page you can learn how to contribute to [Fractal](https://gitlab.gnome.org/World/fractal/)
by working on the code.
[Fractal](https://gitlab.gnome.org/GNOME/fractal/) follows the [GNOME Newcomers workflow](https://wiki.gnome.org/Newcomers/).
Follow these pages to learn how to contribute.
## Getting Started
Here are also a few links to help you get started with Rust and the GTK Rust bindings:
Here are a few links to help you get started with Rust and the GTK Rust bindings:
- [Learn Rust](https://www.rust-lang.org/learn)
- [GUI development with Rust and GTK 4](https://gtk-rs.org/gtk4-rs/stable/latest/book)
- [gtk-rs website](https://gtk-rs.org/)
[The Rust docs of our application](https://gnome.pages.gitlab.gnome.org/fractal/) might also be
useful.
[The Rust docs of our application](https://gnome.pages.gitlab.gnome.org/fractal/) and the [GNOME Development Center](https://developer.gnome.org/)
might also be useful.
Don't hesitate to join [our Matrix room](https://matrix.to/#/#fractal:gnome.org) to come talk to us
and ask us any questions you might have.
and ask us any questions you might have. The [“Rust ❤️ GNOME” room](https://matrix.to/#/#rust:gnome.org)
can also provide general help about using Rust in GNOME.
## Build Instructions
### Prerequisites
Fractal is written in Rust, so you will need to have at least Rust 1.60 and Cargo available on your
Fractal is written in Rust, so you will need to have at least Rust 1.80 and Cargo available on your
system. You will also need to install the Rust nightly toolchain to be able to run our
[pre-commit hook](#pre-commit).
[pre-commit hook](#pre-commit), which can be done with:
```sh
rustup toolchain install nightly
```
If you're building Fractal with Flatpak (via GNOME Builder or the command line), you will need to
manually add the necessary remotes and install the required FreeDesktop extensions:
manually add the necessary remotes and install the required freedesktop.org extensions:
```sh
# Add Flathub and the gnome-nightly repo
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
# Install the gnome-nightly Sdk and Platform runtime
flatpak install --user gnome-nightly org.gnome.Sdk//master org.gnome.Platform//master
# Install the required rust-stable extension from Flathub
flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//22.08
flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//25.08beta
# Install the required llvm extension from Flathub
flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm14//22.08
flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm20//25.08beta
```
If you are building the flatpak manually you will also need flatpak-builder on your system, or the
`org.flatpak.Builder` flatpak from Flathub.
### GNOME Builder
Using [GNOME Builder](https://wiki.gnome.org/Apps/Builder) with [flatpak](https://flatpak.org/) is
Using [GNOME Builder](https://apps.gnome.org/Builder/) with [flatpak](https://flatpak.org/) is
the recommended way of building and installing Fractal.
By default, GNOME Builder should select the `org.gnome.Fractal.Devel.json` manifest, which is the
manifest used for building the nightly version. It is recommended to switch to the
`org.gnome.Fractal.Hack.json` manifest which will build much faster.
You can find help on cloning and building a project in the [docs of Builder](https://builder.readthedocs.io/).
### Flatpak via fenv
@ -60,59 +66,55 @@ environment from the command line and execute commands in that environment.
First, install fenv:
```sh
# Clone the project somewhere on your system
git clone https://gitlab.gnome.org/ZanderBrown/fenv.git
# Move into the folder
cd fenv
# Install fenv with Cargo
cargo install --path .
cargo install --git https://gitlab.gnome.org/ZanderBrown/fenv fenv
```
You can now discard the `fenv` directory if you want.
After that, move into the directory where you cloned Fractal and setup the project:
After that, setup the project:
```sh
# Setup the flatpak environment
fenv gen build-aux/org.gnome.Fractal.Hack.json
# Initialize the build system
fenv exec -- meson --prefix=/app _build
# Set up the flatpak environment
fenv gen build-aux/org.gnome.Fractal.Devel.json
```
Finally, build and run the application:
```sh
# Build the project
fenv exec -- ninja -C _build
# Install the application in the flatpak environment
fenv exec -- ninja -C _build install
fenv build
# Launch Fractal
fenv exec ./_build/src/fractal
fenv run
```
To test changes you make to the code, re-run these three last commands.
_Note that fenv will use `_build` as build directory._
To test changes you make to the code, re-run these two last commands.
### Install the flatpak
Some features that interact with the system require the app to be installed to test them (i.e.
notifications, command line arguments, etc.).
Move inside the `build-aux` folder and then build and install the app:
GNOME Builder can export a flatpak of the app after it has been successfully built.
Fractal can then be installed with:
```sh
cd build-aux
flatpak-builder --user --install app org.gnome.Fractal.Hack.json
flatpak install --user --bundle path/to/org.gnome.Fractal.Devel.flatpak
```
Alternatively, it can be built and installed with flatpak-builder:
```sh
flatpak-builder --user --install app build-aux/org.gnome.Fractal.Devel.json
```
_Note that the `flatpak-builder` command can be replaced with `flatpak run org.flatpak.Builder`._
It can then be entirely removed from your system with:
```sh
flatpak remove --delete-data org.gnome.Fractal.Hack
flatpak remove --delete-data org.gnome.Fractal.Devel
```
### GNU/Linux
@ -121,7 +123,7 @@ If you decide to ignore our recommendation and build on your host system, outsid
will need Meson and Ninja.
```sh
meson . _build --prefix=/usr/local
meson setup --prefix=/usr/local _build
ninja -C _build
sudo ninja -C _build install
```
@ -129,7 +131,7 @@ sudo ninja -C _build install
## Pre-commit
We expect all code contributions to be correctly formatted. To help with that, a pre-commit hook
should get installed as part of the building process. It runs the `scripts/checks.sh` script. It's a
should get installed as part of the building process. It runs the `hooks/checks.sh` script. It's a
quick script that makes sure that the code is correctly formatted with `rustfmt`, among other
things. Make sure that this script is effectively run before submitting your merge request,
otherwise CI will probably fail right away.
@ -139,10 +141,14 @@ submissions and is once again checked by our CI.
## Commit
Please follow the [GNOME commit message guidelines](https://wiki.gnome.org/Git/CommitMessages).
Please follow the [GNOME commit message guidelines](https://handbook.gnome.org/development/commit-messages.html).
We enforce the use of a tag as a prefix for the summary line. It should be the area of the app that
is changed.
## Merge Request
You must pass all the prerequisites of the [Change Submission Guide](https://handbook.gnome.org/development/change-submission.html).
Before submitting a merge request, make sure that [your fork is available publicly](https://gitlab.gnome.org/help/user/public_access.md),
otherwise CI won't be able to run.

5778
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,18 @@
[package]
name = "fractal"
version = "5.0.0-alpha1"
version = "12.0.0"
authors = ["Julian Sparber <julian@sparber.net>"]
edition = "2018"
rust-version = "1.60"
edition = "2024"
rust-version = "1.85"
publish = false
[package.metadata.cargo-machete]
ignored = ["serde_bytes"] # Used by the SecretFile API.
[profile.release]
debug = true
lto = "thin"
codegen-units = 1
[profile.dev.package."*"]
opt-level = 3
@ -16,70 +22,112 @@ overflow-checks = false
incremental = false
codegen-units = 16
# Please keep dependencies sorted.
[dependencies]
async-stream = "0.3"
log = "0.4"
mime = "0.3.16"
tracing-subscriber = "0.3"
blurhash = "0.2"
cfg-if = "1"
diff = "0.1"
djb_hash = "0.1"
futures-channel = "0.3"
futures-util = "0.3"
geo-uri = "0.2"
gettext-rs = { version = "0.7", features = ["gettext-system"] }
gtk-macros = "0.3"
once_cell = "1.5"
serde = "1.0.130"
serde_json = "1.0"
tokio = { version = "1.15", features = ["rt", "rt-multi-thread", "sync"] }
url = "2.2"
libsecret = { version = "0.1.4", features = ["v0_19"] }
html2pango = "0.5.0"
futures = "0.3"
rand = "0.8"
indexmap = "1.6.2"
qrcode = "0.12.0"
ashpd = { version = "0.3", features = [
"feature_gtk4",
"feature_pipewire",
"log",
] }
gst = { version = "0.18", package = "gstreamer" }
gst_base = { version = "0.18", package = "gstreamer-base" }
gst_video = { version = "0.18", package = "gstreamer-video" }
gst_player = { version = "0.18", package = "gstreamer-player" }
gst_gtk = { version = "0.1.0", package = "gst-plugin-gtk4" }
image = { version = "0.23", default-features = false, features = ["png"] }
regex = "1.5.4"
mime_guess = "2.0.3"
num_enum = "0.5.6"
thiserror = "1.0.25"
rqrr = "0.4.0"
secular = { version = "1.0.1", features = ["bmp", "normalization"] }
pulldown-cmark = "0.9.2"
indexmap = "2"
linkify = "0.10.0"
mime = "0.3"
mime_guess = "2"
numeric-sort = "0.1"
pulldown-cmark = "0.13"
qrcode = { version = "0.14", default-features = false }
rand = "0.9"
regex = "1"
rmp-serde = "1"
secular = { version = "1", features = ["bmp", "normalization"] }
serde = "1"
serde_bytes = "0.11"
serde_json = "1"
strum = { version = "0.27.1", features = ["derive"] }
tempfile = "3"
thiserror = "2"
tld = "2"
tokio = { version = "1", features = ["rt", "rt-multi-thread", "sync"] }
tokio-stream = { version = "0.1", features = ["sync"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
url = "2"
webp = { version = "0.3", default-features = false }
wtinylfu = "0.2"
zeroize = "1"
[dependencies.sourceview]
package = "sourceview5"
version = "0.4.1"
[dependencies.gtk]
package = "gtk4"
version = "0.4.6"
features = ["v4_6"]
[dependencies.adw]
package = "libadwaita"
version = "0.2.0-alpha.2"
features = ["v1_2"]
[dependencies.shumate]
package = "libshumate"
version = "0.1.0-alpha.4"
# gtk-rs project and dependents. These usually need to be updated together.
adw = { package = "libadwaita", version = "0.7", features = ["v1_7"] }
glycin = { version = "2", default-features = false, features = ["tokio", "gdk4"] }
gst = { version = "0.23", package = "gstreamer" }
gst_app = { version = "0.23", package = "gstreamer-app" }
gst_pbutils = { version = "0.23", package = "gstreamer-pbutils" }
gst_play = { version = "0.23", package = "gstreamer-play" }
gst_video = { version = "0.23", package = "gstreamer-video" }
gtk = { package = "gtk4", version = "0.9", features = ["gnome_47"] }
shumate = { package = "libshumate", version = "0.6" }
sourceview = { package = "sourceview5", version = "0.9" }
[dependencies.matrix-sdk]
# version = "0.13"
git = "https://github.com/matrix-org/matrix-rust-sdk.git"
features = ["socks", "sso-login", "markdown", "qrcode", "experimental-timeline"]
rev = "872713c4bc024ac9246dfa72f834584ebe92a3d7"
features = ["socks", "sso-login", "markdown", "qrcode"]
[dependencies.matrix-sdk-store-encryption]
# version = "0.13"
git = "https://github.com/matrix-org/matrix-rust-sdk.git"
rev = "872713c4bc024ac9246dfa72f834584ebe92a3d7"
[dependencies.matrix-sdk-ui]
# version = "0.13"
git = "https://github.com/matrix-org/matrix-rust-sdk.git"
rev = "872713c4bc024ac9246dfa72f834584ebe92a3d7"
[dependencies.ruma]
version = "0.7.1"
# version = "0.12.5"
git = "https://github.com/ruma/ruma.git"
rev = "e73f302e4df7f5f0511fca1aa43853d4cf8416c8"
features = [
"unstable-pre-spec",
"client-api-c",
"unstable-msc3440",
"unstable-sanitize",
"markdown",
"html-matrix",
"compat-arbitrary-length-ids",
"compat-server-signing-key-version",
"compat-empty-string-null",
"compat-null",
"compat-optional",
"compat-unset-avatar",
"compat-lax-room-create-deser",
"compat-lax-room-topic-deser",
]
# Linux-only dependencies.
[target.'cfg(target_os = "linux")'.dependencies]
aperture = "0.9"
ashpd = { version = "0.11", default-features = false, features = [
"tracing",
"tokio",
] }
oo7 = { version = "0.4", default-features = false, features = [
"openssl_crypto",
"tokio",
"tracing",
] }
[dev-dependencies]
assert_matches2 = "0.1"
[lints.clippy]
pedantic = { level = "warn", priority = -1 }
cast_possible_truncation = "allow"
cast_precision_loss = "allow"
default_trait_access = "allow"
module_name_repetitions = "allow"
new_without_default = "allow"
struct_field_names = "allow"
unsafe_derive_deserialize = "allow"
wildcard_imports = "allow"

191
README.md
View File

@ -1,59 +1,121 @@
[![Our chat room](https://img.shields.io/matrix/fractal-gtk:matrix.org?color=blue&label=%23fractal%3Agnome.org&logo=matrix)](https://matrix.to/#/#fractal:gnome.org)
[![Our Gitlab project](https://img.shields.io/badge/gitlab.gnome.org%2F-GNOME%2FFractal-green?logo=gitlab)](https://gitlab.gnome.org/GNOME/fractal/)
[![Our documentation](https://img.shields.io/badge/%F0%9F%95%AE-Docs-B7410E?logo=rust)](https://gnome.pages.gitlab.gnome.org/fractal/)
[![Our Gitlab project](https://img.shields.io/badge/gitlab.gnome.org%2F-World%2FFractal-green?logo=gitlab)](https://gitlab.gnome.org/World/fractal/)
[![Our documentation](https://img.shields.io/badge/%F0%9F%95%AE-Docs-B7410E?logo=rust)](https://world.pages.gitlab.gnome.org/fractal/)
[![Official package](https://img.shields.io/flathub/downloads/org.gnome.Fractal?logo=flathub)](https://flathub.org/apps/org.gnome.Fractal)
# Fractal
Fractal is a Matrix messaging app for GNOME written in Rust. Its interface is optimized for
collaboration in large groups, such as free software projects.
collaboration in large groups, such as free software projects, and will fit all screens, big or small.
![screenshot](https://gitlab.gnome.org/GNOME/fractal/raw/main/screenshots/fractal.png)
<img
src="https://gitlab.gnome.org/World/fractal/raw/main/screenshots/main.png"
alt="Fractals main window"
width="882"
height="672"
/>
## Work in Progress
Highlights:
We already talked several times in the past about rewriting the application, but for different
reasons we didn't do it. Now that the [matrix-rust-sdk](https://github.com/matrix-org/matrix-rust-sdk)
exists, which does a lot of the heavy lifting for us, we have a good starting point to build Fractal
without the need to implement every single feature from the Matrix API. Finally with the release of
GTK4 we would need to rework most of Fractal's code anyways. Therefore, it just makes sense to start
over and build Fractal with all the features (e.g end-to-end encryption) we have in mind.
* Find rooms to discuss your favorite topics, or talk privately to people, securely thanks to end-to-end encryption
* Send rich formatted messages, files, or your current location
* Reply to specific messages, react with emoji, edit or remove messages
* View images, and play audio and video directly in the conversation
* See who has read messages, and who is typing
* Log into multiple accounts at once (with Single-Sign On support)
A year ago we started working on rewriting [Fractal](https://gitlab.gnome.org/GNOME/fractal/) from
scratch using [GTK4](https://www.gtk.org/) and the [matrix-rust-sdk](https://github.com/matrix-org/matrix-rust-sdk).
This effort was called Fractal Next.
## Contents
Fractal Next now replaced our previous codebase, and has become the new nightly version. It isn't
yet ready for a release and you can follow along our progress towards it by looking at the
[Fractal v5 (Fractal-next)](https://gitlab.gnome.org/GNOME/fractal/-/milestones/18) milestone.
[TOC]
## Installation instructions
Flatpak is the recommended installation method. For installing any of our Flatpaks, you need to
make sure your system is [set up with the Flathub remote](https://flathub.org/setup).
All of our Flatpaks can be installed in parallel, offering you the opportunity to try out the
development version while keeping the stable release around for daily use.
### Stable version
The current stable version is 4.4.0 (released August 2020).
The current stable version is 12 (released August 11th 2025).
Flatpak is the recommended installation method.
Until our next iteration is ready, you can get the official Fractal Flatpak on Flathub.
You can get the official Fractal Flatpak from Flathub.
<a href="https://flathub.org/apps/details/org.gnome.Fractal">
<img
src="https://flathub.org/assets/badges/flathub-badge-i-en.png"
src="https://flathub.org/assets/badges/flathub-badge-i-en.svg"
alt="Download Fractal on Flathub"
width="240px"
height="80px"
/>
</a>
### Beta version
The current beta version is 12 (same as stable).
It is available as a Flatpak on Flathub Beta.
To get it, first set up the Flathub Beta remote:
<a href="https://flathub.org/beta-repo/flathub-beta.flatpakrepo">
<img
src="https://gitlab.gnome.org/World/fractal/uploads/81944cf92504343a03121a58722345a2/flathub-beta-badge.svg"
alt="Add Flathub Beta repository"
width="240px"
height="80px"
/>
</a>
Then install the application.
<a href="https://flathub.org/beta-repo/appstream/org.gnome.Fractal.flatpakref">
<img
src="https://gitlab.gnome.org/World/fractal/uploads/31a40da5d71a30c47f135e78ffef3df5/fractal-beta-badge.svg"
alt="Download Fractal Beta"
width="240px"
height="80px"
/>
</a>
Or from the command line:
```sh
# Add the Flathub Beta repo
flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
# Install Fractal Beta
flatpak install --user flathub-beta org.gnome.Fractal
```
Finally, run the application:
```sh
flatpak run org.gnome.Fractal//beta
```
If you have both the stable and beta versions installed, your system will only show one icon in the
apps list and launch the stable version by default. If you want to run the beta version by default,
use this command:
```sh
flatpak make-current org.gnome.Fractal beta
```
_Note that you can go back to using the stable version by default by using the same command and
replacing `beta` with `stable`._
### Development version
If you want to try Fractal Next without building it yourself, it is available as a nightly Flatpak
in the gnome-nightly repo.
If you want to try the upcoming version of Fractal without building it yourself, it is available as a nightly Flatpak
in [the gnome-nightly repo](https://nightly.gnome.org/).
First, setup the GNOME nightlies.
First, set up the GNOME nightlies.
<a href="https://nightly.gnome.org/gnome-nightly.flatpakrepo ">
<a href="https://nightly.gnome.org/gnome-nightly.flatpakrepo">
<img
src="https://gitlab.gnome.org/GNOME/fractal/uploads/447997cccc862eb27483b9c61b8a8a12/gnome-nightly.png"
src="https://gitlab.gnome.org/World/fractal/uploads/c276f92660dcf50067714ac08e193fea/gnome-nightly-badge.svg"
alt="Add gnome-nightly repository"
width="240px"
height="80px"
@ -64,7 +126,7 @@ Then install the application.
<a href="https://nightly.gnome.org/repo/appstream/org.gnome.Fractal.Devel.flatpakref">
<img
src="https://gitlab.gnome.org/GNOME/fractal/uploads/a688e9176e8e76d630993869c13a0222/download-fractal-nightly.png"
src="https://gitlab.gnome.org/World/fractal/uploads/5e42d322eaacc7da2a52bfda9f7a4e53/fractal-nightly-badge.svg"
alt="Download Fractal Nightly"
width="240px"
height="80px"
@ -83,10 +145,60 @@ flatpak install --user gnome-nightly org.gnome.Fractal.Devel
### Runtime Dependencies
Fractal doesn't store your **password** but uses [Secret Service](https://www.freedesktop.org/wiki/Specifications/secret-storage-spec/)
to store your other **credentials** so you should have something providing that service on your
system. If you're using GNOME or KDE this should work for you out of the box with gnome-keyring or
ksecretservice.
On top of the dependencies required at build time and checked by Meson, Fractal depends on the
following dependencies at runtime:
* xdg-desktop-portal and its backends: some functionalities are dependant on the following portals,
and a permission will be asked when necessary, but Fractal should work without them:
* Secret: this portal or a Secret Service is required, see [storing secrets](#storing-secrets).
* Camera: scan QR codes during verification.
* Location: send the users location in a conversation.
* Settings: get the 12h/24h time format system preference.
* GStreamer plugins:
* gst-plugin-gtk4 (gstgtk4): required to preview videos in the timeline and to present the output
of the camera.
* libgstpipewire with the `pipewiredeviceprovider`: used to list and access the cameras.
* glycin: all images are loaded with this library so loaders for the different image formats need to
be installed.
#### Storing secrets
Fractal doesnt store your **password**, but it stores your **access token** and the **passphrase**
used to encrypt the database and the local cache.
The Fractal Flatpaks use the [Secret **Portal**](https://docs.flatpak.org/en/latest/portal-api-reference.html#gdbus-org.freedesktop.portal.Secret)
to store those secrets. If you are using GNOME this should just work. If you are using a different
desktop environment or are facing issues, make sure `xdg-desktop-portal` is installed along with a
service that provides the [Secret portal backend interface](https://docs.flatpak.org/en/latest/portal-api-reference.html#gdbus-org.freedesktop.impl.portal.Secret),
like gnome-keyring or KWallet (since version 6.2).
Any version that is not sandboxed relies on software that implements the [Secret **Service** API](https://www.freedesktop.org/wiki/Specifications/secret-storage-spec/)
to store those secrets. Therefore, you need to have software providing that service on your system,
like gnome-keyring, KeepassXC ([setup guide](https://avaldes.co/2020/01/28/secret-service-keepassxc.html)),
or KWallet. Once again, if you are using GNOME this should just work.
If you prefer to use software that only implements the Secret Service API while using the Flatpaks,
you need to make sure that no service implementing the Secret portal backend interface is running,
and you need to allow Fractal to access the D-Bus service with this command:
```sh
flatpak override --user --talk-name=org.freedesktop.secrets org.gnome.Fractal
```
_For the nightly version, change the application name to `org.gnome.Fractal.Devel`._
Or with [Flatseal](https://flathub.org/apps/details/com.github.tchx84.Flatseal), by adding
`org.freedesktop.secrets` in the **Session Bus** > **Talk** list of Fractal.
## Security Best Practices
You should use a strong **password** that is hard to guess to protect the secrets stored on your
device, whether the password is used directly to unlock your secrets (with a password manager for
example) or if it is used to open your user session and your secrets are unlocked automatically
(which is normally the case with a GNOME session).
Furthermore, make sure to lock your system when stepping away from the computer since an unlocked
computer can allow other people to access your private communications and your secrets.
## Contributing
@ -105,23 +217,24 @@ They are translated on [Elements translation platform](https://translate.elem
## Frequently Asked Questions
* Does Fractal have encryption support? Will it ever?
* Does Fractal have encryption support?
Yes, the current development version (`main` branch) has encryption support using Cross-Signing. See
<https://gitlab.gnome.org/GNOME/fractal/-/issues/717> for more info on the state of encryption.
**Yes**, since Fractal 5, encryption is supported using Cross-Signing. See
<https://gitlab.gnome.org/World/fractal/-/issues/717> for more info on the state of encryption.
* Can I run Fractal with the window closed?
Currently Fractal does not support this. Fractal is a GNOME application, and accordingly adheres GNOME
guidelines and paradigms. This will be revisited if or when GNOME gets a "Do Not Disturb" feature.
Currently Fractal does not support this. Fractal is a GNOME application, and accordingly adheres to
the GNOME guidelines and paradigms. This will be revisited if or when GNOME gets a proper paradigm
to interact with apps running in the background.
## The origin of Fractal
The development version is a complete rewrite of Fractal built on top of the
The current version is a complete rewrite of Fractal built on top of the
[matrix-rust-sdk](https://github.com/matrix-org/matrix-rust-sdk) using [GTK4](https://gtk.org/).
The previous version of Fractal was using GTK3 and its own backend to talk to a matrix homeserver,
the code can be found in the [`legacy` branch](https://gitlab.gnome.org/GNOME/fractal/-/tree/legacy).
the code can be found in the [`legacy` branch](https://gitlab.gnome.org/World/fractal/-/tree/legacy).
Initial versions were based on Fest <https://github.com/fest-im/fest>, formerly called ruma-gtk.
In the origins of the project it was called guillotine, based on French revolution, in relation with
@ -131,4 +244,4 @@ The name Fractal was proposed by Regina Bíró.
## Code of Conduct
Fractal follows the official GNOME Foundation code of conduct. You can read it [here](/code-of-conduct.md).
Fractal follows the official [GNOME Code of Conduct](https://conduct.gnome.org/).

115
RELEASING.md Normal file
View File

@ -0,0 +1,115 @@
# Releasing Fractal
## Before making a new release
- Update the dependencies (crates or system libraries) and migrate from deprecated APIs.
- Make the `build-stable` CI jobs use the latest stable GNOME runtime.
## Making a new stable release
1. If this is a new major version, create a new `fractal-M` branch, where `M` is the major version
number.
2. Create a [release merge request](#release-merge-request-content) against the major version
branch.
3. After the MR is merged, [create a tag](#creating-a-signed-tag) on the last commit of the major
version branch.
4. Create a release on GitLab for that tag.
5. Make a fast-forward merge of the major version branch to `main`.
6. [Publish the new version on Flathub and Flathub beta](#publishing-a-version-on-flathub).
7. [Get the stable branch added to Damned Lies](#getting-a-branch-added-to-damned-lies).
## Making a new beta release
1. Create a [release merge request](#release-merge-request-content) against `main`.
2. After the MR is merged, [create a tag](#creating-a-signed-tag) on the last commit of `main`.
3. Create a release on GitLab for that tag.
4. [Publish the new version on Flathub beta](#publishing-a-version-on-flathub).
## Release merge request content
_To represent conditional list items, this section will start items with "**stable.**" to mean "if
this is a stable release"._
Make a single release commit containing the following changes:
- Update `/meson.build`:
- Change the version on L3, it must look the same as it would in the app, with a
`major_version.pre_release_version` format.
- Change the `major_version` and `pre_release_version` on L13-14. For stable versions,
`pre_release_version` should be an empty string.
- Update `/Cargo.toml`: change the `version`, using a semver format.
- Update `/README.md`:
- **stable.** update the current stable version and its release date.
- Update the current beta version. For stable versions, put `(same as stable)` instead of the
release date.
- Update `/data/org.gnome.Fractal.metainfo.xml.in.in`:
- Add a new `release` entry at the top of the `releases`:
- Its `version` should use the `major_version~pre_release_version` format.
- For stable versions, its `type` should be `stable`, otherwise it should be `development`.
- **stable.** remove all the `development` entries.
- **stable.** update the paths of the screenshots to point to the major version branch.
- **stable.** If there were visible changes in the UI, update the screenshots in `/screenshots`.
They should follow [Flathub's quality guidelines](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots),
with the following window sizes:
- `main.png`: 760×550.
- `adaptive.png`: 360×600.
- `media-history.png`: 500×540.
A good practice in this merge request is to launch the `build-stable` CI jobs to make sure that
Fractal builds with the stable Flatpak runtime.
## Creating a signed tag
Creating a signed tag is not mandatory but is good practice. To do so, use this command:
```sh
git tag -s V
```
With `V` being the version to tag, in the format `major_version.pre_release_version`.
You will be prompted for a tag message. This message doesn't really matter so something like
`Release Fractal V` should suffice.
## Publishing a version on Flathub
Publishing a version of Fractal on Flathub is done via its [Flathub repository on GitHub](https://github.com/flathub/org.gnome.Fractal/).
A permission from the Flathub team granted to your GitHub account is necessary to merge PRs on this
repository, but anyone can open a PR.
1. Open a PR against the correct branch. For a stable build, work against the `master` branch, for a
beta build, work against the `beta` branch.
It must contain a commit that updates the manifest to:
- Use the latest GNOME runtime.
- Make sure that the Flatpak dependencies are the same as in the nightly manifest, and using the
same version.
- Build the latest version of Fractal, identified by its tag _and_ commit hash.
If the list of Rust modules to build changes, the `MODULES` variable in the
`update-cargo-sources.sh` script must also be updated.
2. When the PR is opened, a CI job will update the `*-cargo-sources.json` files with the latest
dependencies for the Rust modules and add a commit to the PR if necessary.
3. Trigger a test build by posting a comment saying `bot, build`.
If the build succeeds, test the generated Flatpak as instructed and watch for obvious errors. If
there are no issues, merge the PR.
4. Merging the PR will trigger an "official" build that will then be published on Flathub or Flathub
beta within 1 to 2 hours. If this build fails, an issue will be opened on the GitHub repository.
The Flathub admins need to be contacted to launch it again.
More details about these steps can be found in the Flathub docs about [maintenance](https://docs.flathub.org/docs/for-app-authors/maintenance)
and [updates](https://docs.flathub.org/docs/for-app-authors/updates).
## Getting a branch added to Damned Lies
Damned Lies is the GNOME translation management platform. It provides translation workflows, but
also statistics. Even though we dont publish any release from stable branches after the initial
one, we add them there so we can keep track of the evolution of translation coverage.
1. Go to https://l10n.gnome.org/module/fractal/ and log in.
2. Click on the pencil icon next to the branch list.
3. In the entry at the bottom, type in the name of the new branch, then click on the Save button.
4. Assign the newly added branch to the “Other Apps (stable)” Release, unassign the previous one.
5. Hit Save again for the assignments to take effect.

View File

@ -1,10 +0,0 @@
#!/bin/bash
export DIST="$1"
export SOURCE_ROOT="$2"
cd "$SOURCE_ROOT"
mkdir "$DIST"/.cargo
cargo vendor | sed 's/^directory = ".*"/directory = "vendor"/g' > $DIST/.cargo/config
# Move vendor into dist tarball directory
mv vendor "$DIST"

View File

@ -1,11 +1,11 @@
{
"app-id": "org.gnome.Fractal.Devel",
"id": "org.gnome.Fractal.Devel",
"runtime": "org.gnome.Platform",
"runtime-version": "master",
"sdk": "org.gnome.Sdk",
"sdk-extensions": [
"org.freedesktop.Sdk.Extension.rust-stable",
"org.freedesktop.Sdk.Extension.llvm14"
"org.freedesktop.Sdk.Extension.llvm20"
],
"command": "fractal",
"finish-args": [
@ -15,13 +15,20 @@
"--share=network",
"--share=ipc",
"--device=dri",
"--env=RUST_LOG=fractal=debug",
"--env=RUST_LOG=fractal=debug,warn",
"--env=G_MESSAGES_DEBUG=none",
"--env=RUST_BACKTRACE=1"
],
"build-options": {
"append-ld-library-path": "/usr/lib/sdk/llvm14/lib",
"append-path": "/usr/lib/sdk/llvm14/bin:/usr/lib/sdk/rust-stable/bin",
"append-ld-library-path": "/usr/lib/sdk/llvm20/lib",
"append-path": "/usr/lib/sdk/llvm20/bin:/usr/lib/sdk/rust-stable/bin",
"env": {
"RUSTFLAGS": "-C force-frame-pointers=yes",
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER": "clang",
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold --cfg=ruma_identifiers_storage=\"Arc\"",
"CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER": "clang",
"CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold --cfg=ruma_identifiers_storage=\"Arc\""
},
"build-args": [
"--share=network"
],
@ -31,19 +38,81 @@
]
},
"modules": [
{
"name": "grass",
"buildsystem": "simple",
"build-options": {
"env": {
"CARGO_HOME": "/run/build/grass/cargo"
}
},
"build-commands": [
"cargo build --release --locked",
"mkdir -p /app/bin",
"install -D ./target/release/grass /app/bin/"
],
"cleanup": ["*"],
"sources": [
{
"type": "git",
"url": "https://github.com/connorskees/grass",
"tag": "0.13.4",
"commit": "e0bb9e2eabfc3a58e42b03089cd7b22c68d09d0b",
"disable-submodules": true
}
]
},
{
"name": "protobuf-c",
"buildsystem": "autotools",
"config-opts": [
"--disable-protoc"
],
"sources": [
{
"type": "git",
"url": "https://github.com/protobuf-c/protobuf-c.git",
"tag": "v1.5.2",
"commit": "4719fdd7760624388c2c5b9d6759eb6a47490626"
}
]
},
{
"name": "libshumate",
"buildsystem": "meson",
"config-opts": [
"-Dgir=false",
"-Dvapi=false",
"-Dgtk_doc=false"
"-Dgtk_doc=false",
"-Dvector_renderer=true"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.gnome.org/GNOME/libshumate/",
"tag": "1.0.0.alpha.1"
"url": "https://gitlab.gnome.org/GNOME/libshumate.git",
"tag": "1.4.0",
"commit": "06021e35f0d479612fb1a3af91a73ba562175e03"
}
]
},
{
"name": "glycin-loaders",
"buildsystem": "meson",
"config-opts": [
"-Dtests=false",
"-Dlibglycin=false",
"-Dintrospection=false",
"-Dvapi=false",
"-Dcapi_docs=false",
"-Dpython_tests=false"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.gnome.org/sophie-h/glycin.git",
"tag": "1.2.2",
"commit": "c7d362287303944721cf583d4d9e9f7721bfa407",
"disable-submodules": true
}
]
},

View File

@ -1,71 +0,0 @@
{
"app-id": "org.gnome.Fractal.Hack",
"runtime": "org.gnome.Platform",
"runtime-version": "master",
"sdk": "org.gnome.Sdk",
"sdk-extensions": [
"org.freedesktop.Sdk.Extension.rust-stable",
"org.freedesktop.Sdk.Extension.llvm14"
],
"command": "fractal",
"finish-args": [
"--socket=fallback-x11",
"--socket=wayland",
"--socket=pulseaudio",
"--share=network",
"--share=ipc",
"--device=dri",
"--env=RUST_LOG=fractal=debug",
"--env=G_MESSAGES_DEBUG=none",
"--env=RUST_BACKTRACE=1"
],
"build-options": {
"append-ld-library-path": "/usr/lib/sdk/llvm14/lib",
"append-path": "/usr/lib/sdk/llvm14/bin:/usr/lib/sdk/rust-stable/bin",
"env": {
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER": "clang",
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold --cfg=ruma_identifiers_storage=\"Arc\"",
"CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER": "clang",
"CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold --cfg=ruma_identifiers_storage=\"Arc\""
},
"build-args": [
"--share=network"
],
"test-args": [
"--socket=x11",
"--share=network"
]
},
"modules": [
{
"name": "libshumate",
"buildsystem": "meson",
"config-opts": [
"-Dgir=false",
"-Dvapi=false",
"-Dgtk_doc=false"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.gnome.org/GNOME/libshumate/",
"tag": "1.0.0.alpha.1"
}
]
},
{
"name": "fractal",
"buildsystem": "meson",
"run-tests": true,
"config-opts": [
"-Dprofile=hack"
],
"sources": [
{
"type": "dir",
"path": "../"
}
]
}
]
}

View File

@ -1,126 +0,0 @@
# GNOME Code of Conduct
Thank you for being a part of the GNOME project. We value your participation and want everyone to have an enjoyable and fulfilling experience. Accordingly, all participants are expected to follow this Code of Conduct, and to show respect, understanding, and consideration to one another. Thank you for helping make this a welcoming, friendly community for everyone.
## Scope
This Code of Conduct applies to all online GNOME community spaces, including, but not limited to:
* Issue tracking systems - bugzilla.gnome.org
* Documentation and tutorials - developer.gnome.org
* Code repositories - git.gnome.org and gitlab.gnome.org
* Mailing lists - mail.gnome.org
* Wikis - wiki.gnome.org
* Chat and forums - irc.gnome.org, discourse.gnome.org, GNOME Telegram channels, and GNOME groups and channels on Matrix.org (including bridges to GNOME IRC channels)
* Community spaces hosted on gnome.org infrastructure
* Any other channels or groups which exist in order to discuss GNOME project activities
Communication channels and private conversations that are normally out of scope may be considered in scope if a GNOME participant is being stalked or harassed. Social media conversations may be considered in-scope if the incident occurred under a GNOME event hashtag, or when an official GNOME account on social media is tagged, or within any other discussion about GNOME. The GNOME Foundation reserves the right to take actions against behaviors that happen in any context, if they are deemed to be relevant to the GNOME project and its participants.
All participants in GNOME online community spaces are subject to the Code of Conduct. This includes GNOME Foundation board members, corporate sponsors, and paid employees. This also includes volunteers, maintainers, leaders, contributors, contribution reviewers, issue reporters, GNOME users, and anyone participating in discussion in GNOME online spaces.
## Reporting an Incident
If you believe that someone is violating the Code of Conduct, or have
any other concerns, please [contact the Code of Conduct committee](https://wiki.gnome.org/Foundation/CodeOfConduct/ReporterGuide).
## Our Standards
The GNOME online community is dedicated to providing a positive experience for everyone, regardless of:
* age
* body size
* caste
* citizenship
* disability
* education
* ethnicity
* familial status
* gender expression
* gender identity
* genetic information
* immigration status
* level of experience
* nationality
* personal appearance
* pregnancy
* race
* religion
* sex characteristics
* sexual orientation
* sexual identity
* socio-economic status
* tribe
* veteran status
### Community Guidelines
Examples of behavior that contributes to creating a positive environment include:
* **Be friendly.** Use welcoming and inclusive language.
* **Be empathetic.** Be respectful of differing viewpoints and experiences.
* **Be respectful.** When we disagree, we do so in a polite and constructive manner.
* **Be considerate.** Remember that decisions are often a difficult choice between competing priorities. Focus on what is best for the community. Keep discussions around technology choices constructive and respectful.
* **Be patient and generous.** If someone asks for help it is because they need it. When documentation is available that answers the question, politely point them to it. If the question is off-topic, suggest a more appropriate online space to seek help.
* **Try to be concise.** Read the discussion before commenting in order to not repeat a point that has been made.
### Inappropriate Behavior
Community members asked to stop any inappropriate behavior are expected to comply immediately.
We want all participants in the GNOME community have the best possible experience they can. In order to be clear what that means, we've provided a list of examples of behaviors that are inappropriate for GNOME community spaces:
* **Deliberate intimidation, stalking, or following.**
* **Sustained disruption of online discussion, talks, or other events.** Sustained disruption of events, online discussions, or meetings, including talks and presentations, will not be tolerated. This includes 'Talking over' or 'heckling' event speakers or influencing crowd actions that cause hostility in event sessions. Sustained disruption also includes drinking alcohol to excess or using recreational drugs to excess, or pushing others to do so.
* **Harassment of people who don't drink alcohol.** We do not tolerate derogatory comments about those who abstain from alcohol or other substances. We do not tolerate pushing people to drink, talking about their abstinence or preferences to others, or pressuring them to drink - physically or through jeering.
* **Sexist, racist, homophobic, transphobic, ableist language or otherwise exclusionary language.** This includes deliberately referring to someone by a gender that they do not identify with, and/or questioning the legitimacy of an individual's gender identity. If you're unsure if a word is derogatory, don't use it. This also includes repeated subtle and/or indirect discrimination.
* **Unwelcome sexual attention or behavior that contributes to a sexualized environment.** This includes sexualized comments, jokes or imagery in interactions, communications or presentation materials, as well as inappropriate touching, groping, or sexual advances. Sponsors should not use sexualized images, activities, or other material. Meetup organizing staff and other volunteer organizers should not use sexualized clothing/uniforms/costumes, or otherwise create a sexualized environment.
* **Unwelcome physical contact.** This includes touching a person without permission, including sensitive areas such as their hair, pregnant stomach, mobility device (wheelchair, scooter, etc) or tattoos. This also includes physically blocking or intimidating another person. Physical contact or simulated physical contact (such as emojis like "kiss") without affirmative consent is not acceptable. This includes sharing or distribution of sexualized images or text.
* **Violence or threats of violence.** Violence and threats of violence are not acceptable - online or offline. This includes incitement of violence toward any individual, including encouraging a person to commit self-harm. This also includes posting or threatening to post other people's personally identifying information ("doxxing") online.
* **Influencing or encouraging inappropriate behavior.** If you influence or encourage another person to violate the Code of Conduct, you may face the same consequences as if you had violated the Code of Conduct.
* **Possession of an offensive weapon at a GNOME event.** This includes anything deemed to be a weapon by the event organizers.
The GNOME community prioritizes marginalized people's safety over privileged people's comfort. The committee will not act on complaints regarding:
* "Reverse"-isms, including "reverse racism," "reverse sexism," and "cisphobia"
* Reasonable communication of boundaries, such as "leave me alone," "go away," or "I'm not discussing this with you."
* Criticizing racist, sexist, cissexist, or otherwise oppressive behavior or assumptions
* Communicating boundaries or criticizing oppressive behavior in a "tone" you don't find congenial
The examples listed above are not against the Code of Conduct. If you have questions about the above statements, please [read this document](https://github.com/sagesharp/code-of-conduct-template/blob/master/code-of-conduct/example-reversisms.md#supporting-diversity).
If a participant engages in behavior that violates this code of conduct, the GNOME Code of Conduct committee may take any action they deem appropriate. Examples of consequences are outlined in the [Committee Procedures Guide](https://wiki.gnome.org/Foundation/CodeOfConduct/CommitteeProcedures).
## Procedure for Handling Incidents
* [Reporter Guide](https://wiki.gnome.org/Foundation/CodeOfConduct/ReporterGuide)
* [Moderator Procedures](https://wiki.gnome.org/Foundation/CodeOfConduct/ModeratorProcedures)
* [Committee Procedures Guide](https://wiki.gnome.org/Foundation/CodeOfConduct/CommitteeProcedures)
## License
The GNOME Online Code of Conduct is licensed under a [Creative Commons Attribution Share-Alike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/)
![Creative Commons License](http://i.creativecommons.org/l/by-sa/3.0/88x31.png)
## Attribution
The GNOME Online Code of Conduct was forked from the example policy from the [Geek Feminism wiki, created by the Ada Initiative and other volunteers](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy), which is under a Creative Commons Zero license.
Additional language was incorporated and modified from the following Codes of Conduct:
* [Citizen Code of Conduct](http://citizencodeofconduct.org/) is licensed [Creative Commons Attribution Share-Alike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/).
* [Code of Conduct template](https://github.com/sagesharp/code-of-conduct-template/) is licensed [Creative Commons Attribution Share-Alike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/) by [Otter Tech](https://otter.technology/code-of-conduct-training)
* [Contributor Covenant version 1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct) (licensed [CC BY 4.0](https://github.com/ContributorCovenant/contributor_covenant/blob/master/LICENSE.md))
* [Data Carpentry Code of Conduct](https://docs.carpentries.org/topic_folders/policies/index_coc.html) is licensed [Creative Commons Attribution 4.0 License](https://creativecommons.org/licenses/by/4.0/)
* [Django Project Code of Conduct](https://www.djangoproject.com/conduct/) is licensed under a [Creative Commons Attribution 3.0 Unported License](http://creativecommons.org/licenses/by/3.0/)
* [Fedora Code of Conduct](http://fedoraproject.org/code-of-conduct)
* [Geek Feminism Anti-harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy) which is under a [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/)
* [Previous GNOME Foundation Code of Conduct](https://wiki.gnome.org/action/recall/Foundation/CodeOfConduct/Old)
* [LGBTQ in Technology Slack Code of Conduct](https://lgbtq.technology/coc.html) licensed [Creative Commons Zero](https://creativecommons.org/publicdomain/zero/1.0/)
* [Mozilla Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/) is licensed [Creative Commons Attribution-ShareAlike 3.0 Unported License](https://creativecommons.org/licenses/by-sa/3.0/).
* [Python Mentors Code of Conduct](http://pythonmentors.com/)
* [Speak Up! Community Code of Conduct](http://web.archive.org/web/20141109123859/http://speakup.io/coc.html), licensed under a [Creative Commons Attribution 3.0 Unported License](http://creativecommons.org/licenses/by/3.0/)

View File

@ -1,6 +1,13 @@
if profile == 'Devel'
icon_id = base_id + '.Devel'
else
icon_id = base_id
endif
install_data(
'@0@.svg'.format(application_id),
install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps'
'@0@.svg'.format(icon_id),
install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps',
rename: '@0@.svg'.format(application_id)
)
install_data(

View File

@ -1 +1,72 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M1.984 1c-1.109 0-2 .848-2 1.902v8.196c0 1.054.891 1.902 2 1.902H3v3h.984l3-3h7c1.106 0 2-.848 2-1.902V2.902c0-1.054-.894-1.902-2-1.902zm4.079 1h7.921a1 1 0 011 1v8a1 1 0 01-1 1h-1.812c1.707-2.035 2.066-5.145.2-7.234-1.43-1.598-4.04-2.079-5.704-.547-1.106 1.015-1.434 2.855-.336 4.008.707.742 1.973.957 2.75.191.48-.477.621-1.32.098-1.824-.309-.301-.856-.383-1.168-.04-.18.192-.227.528-.012.716.117.097.313.12.418-.008.047-.063.062-.172-.012-.227-.035-.023-.09-.027-.113.012-.008.016-.008.039.012.05.008.005.027-.003.02-.003v-.008c-.012-.004 0-.004 0-.008.003 0 .015.008.015.012.004.02-.016.035-.031.043-.047.008-.079-.035-.09-.074-.016-.09.07-.157.152-.168.164-.02.29.14.3.293.02.28-.25.488-.51.5-.466.02-.79-.426-.802-.86-.011-.722.684-1.222 1.364-1.219 1.09.004 1.836 1.051 1.808 2.079-.039 1.59-1.574 2.66-3.078 2.597-2.254-.094-3.762-2.277-3.64-4.418.09-1.648.988-2.988 2.25-3.863zm0 0" fill="#68676b"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16px"
viewBox="0 0 16 16"
width="16px"
version="1.1"
id="svg2419"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2423" />
<filter
id="a"
height="1"
width="1"
x="0"
y="0">
<feColorMatrix
in="SourceGraphic"
type="matrix"
values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
id="feColorMatrix2398" />
</filter>
<mask
id="b">
<g
filter="url(#a)"
id="g2403">
<rect
fill-opacity="0.35"
height="16"
width="16"
id="rect2401" />
</g>
</mask>
<clipPath
id="c">
<rect
height="152"
width="192"
id="rect2406" />
</clipPath>
<g
clip-path="url(#c)"
mask="url(#b)"
transform="matrix(1 0 0 1 -168 -16)"
id="g2411">
<path
d="m 173 17 h 8 c 1.65625 0 3 1.34375 3 3 v 7 c 0 1.65625 -1.34375 3 -3 3 h -8 c -1.65625 0 -3 -1.34375 -3 -3 v -7 c 0 -1.65625 1.34375 -3 3 -3 z m 0 0"
fill="#241f31"
id="path2409" />
</g>
<g
fill="#241f31"
id="g2417">
<path
d="m 4 12 v 4 h 1 l 4 -4 z m 0 0"
id="path2413" />
<path
d="m 3 1 c -1.660156 0 -3 1.339844 -3 3 v 7 c 0 1.660156 1.339844 3 3 3 h 6.558594 c 0.660156 -0.410156 1.328125 -0.878906 1.992187 -1.429688 c 2.207031 -1.921874 2.878907 -5.460937 0.832031 -7.75 c -1.398437 -1.566406 -3.957031 -2.035156 -5.589843 -0.539062 c -1.082031 1 -1.40625 2.804688 -0.332031 3.929688 c 0.695312 0.730468 1.9375 0.941406 2.695312 0.1875 c 0.472656 -0.464844 0.609375 -1.292969 0.097656 -1.785157 c -0.304687 -0.296875 -0.835937 -0.378906 -1.144531 -0.039062 c -0.175781 0.1875 -0.222656 0.515625 -0.011719 0.699219 c 0.113282 0.097656 0.308594 0.121093 0.410156 -0.003907 c 0.046876 -0.066406 0.0625 -0.171875 -0.011718 -0.222656 c -0.035156 -0.023437 -0.089844 -0.027344 -0.109375 0.007813 c -0.007813 0.015624 -0.007813 0.042968 0.007812 0.050781 c 0.007813 0.003906 0.019531 0.003906 0.019531 0 v -0.007813 c -0.011718 -0.003906 0 -0.003906 0 -0.003906 c 0.007813 -0.003906 0.015626 0.003906 0.015626 0.011719 c 0.007812 0.015625 -0.011719 0.03125 -0.03125 0.039062 c -0.042969 0.007813 -0.070313 -0.035156 -0.082032 -0.070312 c -0.015625 -0.089844 0.070313 -0.15625 0.148438 -0.167969 c 0.160156 -0.015625 0.28125 0.136719 0.292968 0.285156 c 0.019532 0.277344 -0.246093 0.480469 -0.503906 0.488282 c -0.457031 0.023437 -0.769531 -0.414063 -0.78125 -0.835938 c -0.011718 -0.710938 0.667969 -1.203125 1.332032 -1.199219 c 1.070312 0.007813 1.796874 1.035157 1.773437 2.039063 c -0.039063 1.558594 -1.542969 2.605468 -3.015625 2.546875 c -2.210938 -0.09375 -3.6875 -2.234375 -3.570312 -4.332031 c 0.160156 -2.859376 2.773437 -4.816407 5.496093 -4.898438 z m 0 0"
id="path2415" />
</g>
<rect
style="display:inline;opacity:0.35;fill:#241f31;fill-opacity:1;stroke-width:0.25;enable-background:new"
id="rect28104"
width="14"
height="13"
x="2.0000005"
y="1"
rx="3"
ry="3" />
</svg>

Before

Width:  |  Height:  |  Size: 986 B

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -0,0 +1,929 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="Template.png"
width="192"
height="152"
id="svg11300"
sodipodi:version="0.32"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="org.gnome.Fractal.Source.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0"
style="display:inline;enable-background:new"
viewBox="0 0 192 152"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<title
id="title4162">Adwaita Icon Template</title>
<defs
id="defs3">
<linearGradient
inkscape:collect="always"
id="linearGradient14463">
<stop
style="stop-color:#81dffe;stop-opacity:1;"
offset="0"
id="stop14459" />
<stop
style="stop-color:#9bf8fe;stop-opacity:1;"
offset="1"
id="stop14461" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient13401">
<stop
style="stop-color:#1a5fb4;stop-opacity:1;"
offset="0"
id="stop13395" />
<stop
style="stop-color:#4296ff;stop-opacity:1;"
offset="0.5"
id="stop13397" />
<stop
style="stop-color:#1a5fb4;stop-opacity:1;"
offset="1"
id="stop13399" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7154">
<stop
style="stop-color:#4aaac9;stop-opacity:1;"
offset="0"
id="stop7146" />
<stop
style="stop-color:#74d7f7;stop-opacity:1;"
offset="0.46931836"
id="stop7148" />
<stop
style="stop-color:#4aaac9;stop-opacity:1;"
offset="1"
id="stop7152" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7130">
<stop
style="stop-color:#4aaac9;stop-opacity:1;"
offset="0"
id="stop7126" />
<stop
style="stop-color:#8bddf7;stop-opacity:1;"
offset="0.16"
id="stop7134" />
<stop
style="stop-color:#4aaac9;stop-opacity:1;"
offset="0.31999999"
id="stop7136" />
<stop
style="stop-color:#4aaac9;stop-opacity:1;"
offset="1"
id="stop7128" />
</linearGradient>
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect4025"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.9999771,0,1 @ F,0,0,1,0,11.54938,0,1 @ F,0,0,1,0,2.8239471,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="0"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect4017"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.9999771,0,1 @ F,0,0,1,0,11.54938,0,1 @ F,0,0,1,0,2.8239471,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="0"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3066">
<rect
style="display:inline;opacity:1;fill:#4fd2fd;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"
id="rect3068"
width="112"
height="80"
x="8"
y="196"
rx="16"
ry="16" />
</clipPath>
<linearGradient
inkscape:collect="always"
id="linearGradient2135">
<stop
style="stop-color:#53bde0;stop-opacity:1;"
offset="0"
id="stop2131" />
<stop
id="stop2143"
offset="0.03566921"
style="stop-color:#b4e2f1;stop-opacity:1" />
<stop
style="stop-color:#53bde0;stop-opacity:1;"
offset="0.07026742"
id="stop2145" />
<stop
id="stop2147"
offset="0.21535669"
style="stop-color:#24a0c9;stop-opacity:1" />
<stop
style="stop-color:#4ab4d7;stop-opacity:1"
offset="0.24995492"
id="stop2167" />
<stop
style="stop-color:#2589a9;stop-opacity:1"
offset="0.24995492"
id="stop2165" />
<stop
style="stop-color:#40b6dd;stop-opacity:1"
offset="0.35709774"
id="stop2149" />
<stop
id="stop2151"
offset="0.35709774"
style="stop-color:#239bc3;stop-opacity:1" />
<stop
id="stop2141"
offset="0.91290128"
style="stop-color:#53bde0;stop-opacity:1;" />
<stop
id="stop2139"
offset="0.95419592"
style="stop-color:#8ed4eb;stop-opacity:1" />
<stop
style="stop-color:#53bde0;stop-opacity:1"
offset="1"
id="stop2133" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2157">
<stop
style="stop-color:#1a5fb4;stop-opacity:1;"
offset="0"
id="stop2153" />
<stop
id="stop2163"
offset="0.74988323"
style="stop-color:#1a5fb4;stop-opacity:1;" />
<stop
id="stop2161"
offset="0.88832325"
style="stop-color:#3e88e3;stop-opacity:1" />
<stop
style="stop-color:#1a5fb4;stop-opacity:1"
offset="1"
id="stop2155" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2135"
id="linearGradient2544"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0.0174039)"
x1="8.0050468"
y1="252"
x2="120.00505"
y2="252" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2157"
id="linearGradient2546"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0.0174039)"
x1="87"
y1="267"
x2="119.50505"
y2="267" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath2749">
<rect
style="display:inline;opacity:0.5;fill:#1c71d8;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"
id="rect2751"
width="112"
height="84.000015"
x="8"
y="195.99998"
rx="16"
ry="16" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient13401"
id="linearGradient5789"
x1="104"
y1="256"
x2="120"
y2="256"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7130"
id="linearGradient7132"
x1="8"
y1="241.99999"
x2="58"
y2="241.99998"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7154"
id="linearGradient7144"
x1="31.462524"
y1="285.99725"
x2="39"
y2="285.99725"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient14463"
id="linearGradient14465"
x1="55.608135"
y1="272"
x2="71.783539"
y2="220.53293"
gradientUnits="userSpaceOnUse" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath39491">
<rect
style="opacity:0.35;fill:#241f31;fill-opacity:1;stroke-width:0.25"
id="rect39493"
width="16"
height="13"
x="160"
y="173"
rx="3"
ry="3" />
</clipPath>
</defs>
<sodipodi:namedview
stroke="#ef2929"
fill="#f57900"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.25490196"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4024271"
inkscape:cx="-85.565946"
inkscape:cy="22.104536"
inkscape:current-layer="layer9"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:showpageshadow="false"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="0"
inkscape:window-y="27"
width="400px"
height="300px"
inkscape:snap-nodes="true"
inkscape:snap-bbox="true"
objecttolerance="7"
gridtolerance="12"
guidetolerance="13"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="false"
showguides="false"
inkscape:guide-bbox="true"
inkscape:locked="false"
inkscape:measure-start="0,0"
inkscape:measure-end="0,0"
inkscape:object-nodes="true"
inkscape:bbox-nodes="true"
inkscape:snap-global="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
showborder="true"
inkscape:snap-center="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-midpoints="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-text-baseline="true"
borderlayer="true"
inkscape:deskcolor="#d1d1d1">
<inkscape:grid
type="xygrid"
id="grid5883"
spacingx="2"
spacingy="2"
enabled="true"
visible="true"
empspacing="4"
originx="8"
originy="8" />
<sodipodi:guide
position="72,16"
orientation="0,1"
id="guide1073"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="20,72"
orientation="1,0"
id="guide1075"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,112"
orientation="0,1"
id="guide1099"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,136"
orientation="0,1"
id="guide993"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="112,72"
orientation="1,0"
id="guide995"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="8.0000001,72"
orientation="1,0"
id="guide867"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="128,72"
orientation="1,0"
id="guide869"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,124"
orientation="0,1"
id="guide871"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<inkscape:grid
type="xygrid"
id="grid873"
spacingx="1"
spacingy="1"
empspacing="8"
color="#000000"
opacity="0.49019608"
empcolor="#000000"
empopacity="0.08627451"
dotted="true"
originx="8"
originy="8" />
<sodipodi:guide
position="32,72"
orientation="1,0"
id="guide877"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="124,72"
orientation="1,0"
id="guide879"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,128"
orientation="0,1"
id="guide881"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,20"
orientation="0,1"
id="guide883"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="16,72"
orientation="1,0"
id="guide885"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="136,72"
orientation="1,0"
id="guide887"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,8"
orientation="0,1"
id="guide897"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,32"
orientation="0,1"
id="guide899"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="264,264"
orientation="-0.70710678,0.70710678"
id="guide950"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="72,72"
orientation="0.70710678,0.70710678"
id="guide952"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
</sodipodi:namedview>
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>GNOME Design Team</dc:title>
</cc:Agent>
</dc:creator>
<dc:source />
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
<dc:title>Adwaita Icon Template</dc:title>
<dc:subject>
<rdf:Bag />
</dc:subject>
<dc:date />
<dc:rights>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:publisher>
<dc:identifier />
<dc:relation />
<dc:language />
<dc:coverage />
<dc:description />
<dc:contributor>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:contributor>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="App Icon"
inkscape:groupmode="layer"
style="display:inline"
transform="translate(8,-156)">
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="template"
style="display:inline"
sodipodi:insensitive="true">
<rect
inkscape:label="0"
y="172"
x="9.2651362e-08"
height="128"
width="128"
id="hicolor"
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate"
id="symbolic"
width="16"
height="16"
x="160"
y="172"
inkscape:label="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="baseplate"
style="display:inline"
sodipodi:insensitive="true">
<g
style="display:inline;fill:#000000;enable-background:new"
transform="matrix(7.9911709,0,0,8.0036407,-167.7909,-4846.0776)"
id="g12027"
inkscape:export-xdpi="12"
inkscape:export-ydpi="12" />
<rect
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate"
id="128"
width="128"
height="128"
x="9.2651362e-08"
y="172"
inkscape:label="0" />
<g
id="g883"
style="fill:none;fill-opacity:0.25098;stroke:#a579b3;stroke-opacity:1"
transform="translate(-24,24)" />
<g
id="g900"
style="fill:none;fill-opacity:0.25098;stroke:#a579b3;stroke-opacity:1"
transform="translate(-24,24)" />
<rect
inkscape:label=""
y="172"
x="160"
height="16"
width="16"
id="16"
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.332649;enable-background:new"
x="0"
y="167"
id="text863"
inkscape:label="icon-name"><tspan
style="font-size:4px;stroke-width:0.332649"
sodipodi:role="line"
id="tspan861"
x="0"
y="167">Hicolor</tspan></text>
<text
inkscape:label="icon-name"
id="text867"
y="167"
x="160"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.332649;enable-background:new"
xml:space="preserve"><tspan
y="167"
x="160"
id="tspan865"
sodipodi:role="line"
style="font-size:4px;stroke-width:0.332649">Symbolic</tspan></text>
</g>
<g
inkscape:groupmode="layer"
id="layer9"
inkscape:label="icons"
style="display:inline">
<rect
style="display:inline;opacity:1;fill:url(#linearGradient7132);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"
id="rect1586"
width="104"
height="83.999977"
x="8"
y="200"
rx="16"
ry="16" />
<g
id="g2542"
transform="translate(-310)"
style="display:inline;enable-background:new">
<rect
ry="8"
rx="8"
y="208"
x="24.022446"
height="80"
width="96"
id="rect2530"
style="display:inline;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
<path
style="display:inline;fill:url(#linearGradient2544);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"
d="m 16.022454,200 c -4.432,0 -8.0000001,3.568 -8.0000001,8 v 4 68 c 0,4.432 3.5680001,8 8.0000001,8 h 16 l -0.005,12 h 4 l 12.00505,-12 h 38 25.999996 c 4.432,0 8,-3.568 8,-8 v -72 c 0,-4.432 -3.568,-8 -8,-8 z"
id="path2532"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsscccccsssss" />
<path
style="display:inline;vector-effect:none;fill:url(#linearGradient2546);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
d="m 86.172844,204 v 84 h 25.849606 c 4.432,0 8,-3.568 8,-8 v -68 c 0,-4.432 -3.568,-8 -8,-8 z"
id="path2534"
inkscape:connector-curvature="0" />
<rect
style="display:inline;vector-effect:none;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
id="rect2536"
width="111.50504"
height="84.065857"
x="8.5174112"
y="199.93414"
ry="7.9999995"
rx="8" />
<path
style="display:inline;fill:#81dffe;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
d="m 32.022454,276 -0.005,20 h 4 l 20.00505,-20 z"
id="path2538"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#81dffe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.29452;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
mask="none"
clip-path="none"
d="m 16.023264,200 c -4.432,0 -8.0000001,3.568 -8.0000001,8 v 68 c 0,4.432 3.5680001,8 8.0000001,8 h 70.14062 c 1.54521,-1.16079 3.09042,-2.37352 4.63672,-3.65625 14.596576,-12.69418 19.037186,-36.12007 5.50196,-51.25977 -9.25704,-10.35393 -26.18594,-13.46097 -36.96875,-3.55273 -7.17449,6.59402 -9.30165,18.53144 -2.19141,25.99805 4.58469,4.81548 12.80032,6.21651 17.83203,1.24609 3.1265,-3.09069 4.01952,-8.56667 0.63672,-11.83203 -2.01295,-1.94455 -5.54432,-2.48482 -7.58203,-0.26172 -1.1624,1.25689 -1.47435,3.43452 -0.0684,4.63867 0.74615,0.64078 2.02611,0.80453 2.69531,-0.041 0.3346,-0.4145 0.42211,-1.11964 -0.0664,-1.46094 -0.2215,-0.14859 -0.57655,-0.18326 -0.73047,0.0684 -0.0401,0.0977 -0.0474,0.26402 0.0664,0.32422 0.0401,0.0202 0.12696,0.0215 0.12696,-0.0254 v -0.0312 -0.002 -0.004 c -0.0669,-0.0134 0,-0.0302 0,-0.0332 0.0401,-0.0208 0.10742,0.0282 0.10742,0.0684 0.0335,0.12648 -0.0874,0.23502 -0.20117,0.26172 -0.29445,0.0669 -0.49363,-0.21177 -0.56055,-0.46875 -0.0977,-0.57933 0.45376,-1.02378 0.98242,-1.08398 1.07139,-0.12514 1.86194,0.89609 1.93555,1.875 0.14187,1.84451 -1.61916,3.16593 -3.32227,3.24023 -3.01474,0.1329 -5.10886,-2.74302 -5.17578,-5.54101 -0.0803,-4.69912 4.42618,-7.94272 8.82617,-7.91602 7.07478,0.0397 11.89387,6.83592 11.72657,13.48047 -0.25765,10.3028 -10.20902,17.24282 -19.94922,16.83594 -14.6354,-0.61114 -24.40668,-14.76908 -23.62305,-28.63082 0,-18.81058 18.93522,-35.10667 37.10938,-36.23633 z"
id="path2540"
inkscape:connector-curvature="0" />
</g>
<path
id="path2810"
overflow="visible"
style="color:#000000;display:inline;overflow:visible;fill:#241f31;marker:none;enable-background:new"
d="m 342,173 c -1.108,0 -2,0.848 -2,1.902 v 8.196 c 0,1.054 0.892,1.902 2,1.902 h 1.0174 v 3 H 344 l 3,-3 h 7 c 1.108,0 2,-0.848 2,-1.902 v -8.196 C 356,173.848 355.108,173 354,173 h -5.564 z m 4.079,1 H 354 c 0.554,0 1,0.446 1,1 v 8 c 0,0.554 -0.446,1 -1,1 h -1.812 c 1.71,-2.034 2.068,-5.146 0.2,-7.236 -1.428,-1.597 -4.04,-2.075 -5.702,-0.547 -1.106,1.017 -1.434,2.858 -0.338,4.01 0.707,0.742 1.974,0.957 2.75,0.191 0.483,-0.477 0.621,-1.32 0.1,-1.824 -0.31,-0.3 -0.856,-0.384 -1.17,-0.041 -0.179,0.194 -0.227,0.529 -0.01,0.715 0.115,0.098 0.313,0.124 0.416,-0.006 0.05,-0.064 0.063,-0.174 -0.012,-0.227 -0.034,-0.023 -0.087,-0.027 -0.111,0.012 -0.007,0.015 -0.01,0.039 0.01,0.049 0.007,0.004 0.027,-0.002 0.02,-0.004 v -0.006 c -0.01,-0.003 0,-0.005 0,-0.006 0.006,-0.003 0.017,0.005 0.017,0.011 0.004,0.02 -0.016,0.035 -0.033,0.04 -0.046,0.01 -0.079,-0.033 -0.088,-0.073 -0.015,-0.09 0.07,-0.156 0.152,-0.166 0.165,-0.02 0.287,0.138 0.299,0.29 0.022,0.284 -0.25,0.488 -0.512,0.5 -0.465,0.02 -0.789,-0.425 -0.799,-0.856 -0.012,-0.726 0.683,-1.226 1.363,-1.221 1.09,0.006 1.835,1.053 1.808,2.078 -0.04,1.589 -1.574,2.66 -3.076,2.598 -2.257,-0.095 -3.765,-2.279 -3.644,-4.416 0.093,-1.65 0.991,-2.99 2.252,-3.866 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccccsssscscsssscccccccccccccccccccccccccccc" />
<rect
rx="16"
y="200"
x="8"
height="80"
width="112"
id="rect525"
style="display:inline;enable-background:new;vector-effect:none;fill:#53bde0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
ry="16" />
<path
id="path4021"
style="display:inline;fill:url(#linearGradient7144);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
d="m 24,272 v 12 h 4.000023 A 3.9999771,3.9999771 45 0 1 32,287.99998 V 295 a 4.9960602,4.9960602 23.392466 0 0 8.417056,3.64107 L 53.94194,285.93367 A 7.1297371,7.1297371 158.39247 0 1 58.823947,284 H 68 v -12 z"
inkscape:path-effect="#path-effect4025"
inkscape:original-d="m 24,272 v 12 h 8 v 22.54938 L 56,284 h 12 v -12 z"
sodipodi:nodetypes="cccccccc" />
<rect
ry="16"
rx="16"
y="230.56824"
x="86"
height="53.431755"
width="34"
id="rect527"
style="display:inline;enable-background:new;fill:url(#linearGradient5789);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
<rect
style="display:inline;vector-effect:none;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
id="rect529"
width="18"
height="25"
x="86"
y="259" />
<rect
ry="16"
style="display:inline;vector-effect:none;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
id="rect531"
width="88"
height="84"
x="32"
y="196"
rx="16" />
<g
id="g1465"
transform="translate(-310,-180)"
style="display:inline;enable-background:new">
<g
id="g1463"
transform="translate(0.4876,4)">
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path1449"
d="m 31.5124,272 v 24 l 32,-24 z"
style="display:inline;fill:#53bde0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
<rect
rx="16"
y="200"
x="7.5124002"
height="80"
width="112"
id="rect1451"
style="display:inline;vector-effect:none;fill:#53bde0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
ry="16" />
<rect
ry="16"
rx="16"
y="226.56824"
x="85.512398"
height="53.431755"
width="34"
id="rect1453"
style="display:inline;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
<rect
style="vector-effect:none;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1455"
width="18"
height="25"
x="85.512398"
y="255" />
<rect
ry="16"
style="display:inline;vector-effect:none;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
id="rect1457"
width="112"
height="80"
x="7.5124002"
y="196"
rx="16" />
<path
style="display:inline;fill:#81dffe;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
d="m 31.5124,268 v 24 l 32,-24 z"
id="path1459"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
mask="none"
sodipodi:nodetypes="cccsccccccccccccccccccccccccccccccccc"
id="path1461"
d="m 80.444385,188.79637 0.495205,7.07806 c -19.305069,-1.33646 -39.021699,12.09163 -40.164024,32.36115 -0.78363,13.86174 8.98869,28.01959 23.624085,28.63077 9.740205,0.40688 19.691199,-6.53292 19.948849,-16.83572 0.1673,-6.64455 -4.652279,-13.44041 -11.727059,-13.48016 -4.39999,-0.0267 -8.90571,3.21758 -8.825405,7.9167 0.06692,2.79799 2.160845,5.67414 5.17559,5.54124 1.70311,-0.0743 3.464445,-1.39615 3.322575,-3.24066 -0.07361,-0.97891 -0.864605,-1.99937 -1.935995,-1.87423 -0.528665,0.0602 -1.080755,0.50457 -0.983055,1.0839 0.06692,0.25698 0.26768,0.53537 0.56213,0.46844 0.113765,-0.0267 0.23422,-0.13585 0.20076,-0.26233 0,-0.0402 -0.06692,-0.0897 -0.107075,-0.0689 0,0.003 -0.06692,0.02 0,0.0334 v 0.004 -2.1e-4 c -5e-4,-2e-4 0,0 0,-2e-4 v 0.002 -0.002 0.0335 c 0,0.0469 -0.08699,0.0469 -0.127145,0.0267 -0.113765,-0.0602 -0.107075,-0.22686 -0.06692,-0.32456 0.153915,-0.25162 0.50859,-0.21749 0.730095,-0.0689 0.488515,0.3413 0.40152,1.0471 0.06692,1.4616 -0.6692,0.84554 -1.94871,0.68098 -2.694865,0.0402 -1.40599,-1.20415 -1.09548,-3.38225 0.06692,-4.63914 2.03771,-2.2231 5.56908,-1.68291 7.58203,0.26164 3.382805,3.26536 2.49076,8.74223 -0.63574,11.83292 -5.03171,4.97042 -13.248145,3.56985 -17.83283,-1.24563 -7.110245,-7.46661 -4.98286,-19.40452 2.19163,-25.99854 10.78281,-9.90824 27.711549,-6.80102 36.968589,3.55291 13.53523,15.1397 9.09576,38.56491 -5.50081,51.25909 -10.442865,8.66285 -20.890409,14.48723 -30.942459,18.25162 -12.263085,70.84943 -70.648075,6.42143 -76.104061,-3.94079 L -16,188 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#81dffe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.29452;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
inkscape:connector-curvature="0"
clip-path="url(#clipPath3066)"
transform="translate(-0.4876)" />
</g>
</g>
<path
mask="none"
sodipodi:nodetypes="ccscsccccccccccccccccccccccccccccccccc"
id="path1584"
d="m 78.803646,188.02398 0.527322,2.46049 c -1.207095,-0.0836 -2.415701,4.96371 -3.621724,4.98686 -19.332856,0.37101 -38.002194,14.23303 -39.147179,34.54975 -0.834454,14.76074 9.57166,29.83684 25.156248,30.48763 10.371917,0.43328 20.968294,-6.95661 21.242652,-17.92761 0.178153,-7.07549 -4.954006,-14.31211 -12.487628,-14.35444 -4.685356,-0.0284 -9.483299,3.42626 -9.397786,8.43017 0.07127,2.97944 2.300989,6.04214 5.511257,5.90061 1.813569,-0.0791 3.689137,-1.4867 3.538065,-3.45084 -0.07839,-1.04239 -0.920678,-2.12902 -2.061556,-1.99578 -0.562951,0.0642 -1.150848,0.5373 -1.046811,1.1542 0.07127,0.27364 0.28504,0.5701 0.598588,0.49882 0.121142,-0.0284 0.24941,-0.14466 0.21378,-0.27935 0,-0.0428 -0.07127,-0.0955 -0.11402,-0.0733 0,0.003 -0.07126,0.0213 0,0.0356 v 0.004 -2.3e-4 c -5.33e-4,-2.1e-4 0,0 0,-2.1e-4 v 0.002 -0.002 0.0358 c 0,0.05 -0.09264,0.05 -0.135391,0.0284 -0.121144,-0.0642 -0.114019,-0.24156 -0.07127,-0.34561 0.163898,-0.26795 0.541577,-0.2316 0.777448,-0.0733 0.520198,0.36344 0.427561,1.11501 0.07126,1.55639 -0.712601,0.90038 -2.075096,0.72515 -2.869644,0.0428 -1.497177,-1.28225 -1.166529,-3.60161 0.07127,-4.94002 2.169868,-2.36728 5.930269,-1.79206 8.073771,0.27862 3.602199,3.47713 2.652299,9.30921 -0.676972,12.60035 -5.358046,5.29279 -14.107369,3.80137 -18.989397,-1.32641 -7.571387,-7.95087 -5.306029,-20.66303 2.33377,-27.6847 11.482141,-10.55085 29.508811,-7.24212 39.366226,3.78333 14.413065,16.1216 9.685685,41.06607 -5.857571,54.58356 -11.120148,9.22468 -22.245279,15.42681 -32.949265,19.43534 -13.058419,75.44444 -75.230029,6.8379 -81.03987,-4.19637 l 0.285041,-105.05256 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:url(#linearGradient14465);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.29452;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
inkscape:connector-curvature="0"
clip-path="url(#clipPath2749)" />
<path
id="path533"
style="display:inline;fill:#81dffe;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
d="m 24,278 v 2 h 4.000023 A 3.9999771,3.9999771 45 0 1 32,283.99998 V 291 a 4.9960602,4.9960602 23.392466 0 0 8.417056,3.64107 L 53.94194,281.93367 A 7.1297371,7.1297371 158.39247 0 1 58.823947,280 H 68 v -2 z"
inkscape:path-effect="#path-effect4017"
inkscape:original-d="m 24,278 v 2 h 8 v 22.54938 L 56,280 h 12 v -2 z"
sodipodi:nodetypes="cccccccc" />
<path
id="path2169"
overflow="visible"
style="color:#000000;display:inline;overflow:visible;fill:#241f31;marker:none;enable-background:new"
d="m 322,173 c -1.108,0 -2,0.848 -2,1.902 v 8.196 c 0,1.054 0.892,1.902 2,1.902 h 1.0174 v 3 H 324 l 3,-3 h 7 c 1.108,0 2,-0.848 2,-1.902 v -8.196 C 336,173.848 335.108,173 334,173 h -5.564 z m 4.079,1 H 334 c 0.554,0 1,0.446 1,1 v 8 c 0,0.554 -0.446,1 -1,1 h -1.812 c 1.71,-2.034 2.068,-5.146 0.2,-7.236 -1.428,-1.597 -4.04,-2.075 -5.702,-0.547 -1.106,1.017 -1.434,2.858 -0.338,4.01 0.707,0.742 1.974,0.957 2.75,0.191 0.483,-0.477 0.621,-1.32 0.1,-1.824 -0.31,-0.3 -0.856,-0.384 -1.17,-0.041 -0.179,0.194 -0.227,0.529 -0.01,0.715 0.115,0.098 0.313,0.124 0.416,-0.006 0.05,-0.064 0.063,-0.174 -0.012,-0.227 -0.034,-0.023 -0.087,-0.027 -0.111,0.012 -0.007,0.015 -0.01,0.039 0.01,0.049 0.007,0.004 0.027,-0.002 0.02,-0.004 v -0.006 c -0.01,-0.003 0,-0.005 0,-0.006 0.006,-0.003 0.017,0.005 0.017,0.011 0.004,0.02 -0.016,0.035 -0.033,0.04 -0.046,0.01 -0.079,-0.033 -0.088,-0.073 -0.015,-0.09 0.07,-0.156 0.152,-0.166 0.165,-0.02 0.287,0.138 0.299,0.29 0.022,0.284 -0.25,0.488 -0.512,0.5 -0.465,0.02 -0.789,-0.425 -0.799,-0.856 -0.012,-0.726 0.683,-1.226 1.363,-1.221 1.09,0.006 1.835,1.053 1.808,2.078 -0.04,1.589 -1.574,2.66 -3.076,2.598 -2.257,-0.095 -3.765,-2.279 -3.644,-4.416 0.093,-1.65 0.991,-2.99 2.252,-3.866 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccccsssscscsssscccccccccccccccccccccccccccc" />
<rect
style="opacity:0.35;fill:#241f31;fill-opacity:1;stroke-width:0.25"
id="rect28104"
width="14"
height="13"
x="162"
y="173"
rx="3"
ry="3" />
<path
style="fill:#241f31;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 164,184 v 4 h 1 l 4,-4 z"
id="path28106"
sodipodi:nodetypes="ccccc" />
<path
id="path28178"
clip-path="none"
mask="none"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.29451;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 163 173 C 161.338 173 160 174.338 160 176 L 160 183 C 160 184.662 161.338 186 163 186 L 169.55859 186 C 170.21968 185.59169 170.88541 185.12032 171.55078 184.56836 C 173.75728 182.64944 174.42887 179.10891 172.38281 176.82031 C 170.98346 175.25515 168.4249 174.78541 166.79492 176.2832 C 165.71039 177.27999 165.38806 179.0842 166.46289 180.21289 C 167.15593 180.94082 168.39759 181.15175 169.1582 180.40039 C 169.63081 179.93319 169.76528 179.10494 169.25391 178.61133 C 168.94962 178.31743 168.4174 178.23621 168.10938 178.57227 C 167.93368 178.76227 167.88512 179.09141 168.09766 179.27344 C 168.21045 179.37038 168.4047 179.39539 168.50586 179.26758 C 168.55646 179.20492 168.56989 179.09847 168.49609 179.04688 C 168.46263 179.02458 168.40807 179.01864 168.38477 179.05664 C 168.37867 179.07134 168.37733 179.09842 168.39453 179.10742 C 168.40073 179.11042 168.41406 179.11052 168.41406 179.10352 L 168.41406 179.09766 C 168.40396 179.09566 168.41406 179.09222 168.41406 179.0918 C 168.42016 179.0888 168.43164 179.09752 168.43164 179.10352 C 168.43664 179.12262 168.41769 179.13858 168.40039 179.14258 C 168.35589 179.15268 168.32651 179.11107 168.31641 179.07227 C 168.30164 178.98472 168.38494 178.9172 168.46484 178.9082 C 168.6268 178.88928 168.74476 179.04343 168.75586 179.19141 C 168.77731 179.47023 168.51136 179.67034 168.25391 179.68164 C 167.79819 179.70172 167.48276 179.2667 167.47266 178.84375 C 167.46052 178.1334 168.14151 177.64248 168.80664 177.64648 C 169.8761 177.6525 170.60342 178.67917 170.57812 179.68359 C 170.53919 181.24102 169.03489 182.29002 167.5625 182.22852 C 165.35015 182.13613 163.87373 179.99581 163.99219 177.90039 C 164.15352 175.03759 166.76562 173.08027 169.48828 173 L 163 173 z " />
<g
id="g41482">
<rect
style="opacity:0.35;fill:#241f31;fill-opacity:1;stroke-width:0.25"
id="rect41473"
width="16"
height="13"
x="210"
y="173"
rx="3"
ry="3" />
<path
style="fill:#241f31;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 214,184 v 4 h 1 l 4,-4 z"
id="path41475"
sodipodi:nodetypes="ccccc" />
<path
mask="none"
sodipodi:nodetypes="ccscsccccccccccccccccccccccccccccccccc"
id="path41477"
d="m 169.98883,171.93936 0.0748,0.34929 c -0.17135,-0.0119 -0.34292,0.70463 -0.51413,0.70792 -2.74447,0.0526 -5.39474,2.0205 -5.55727,4.90463 -0.11846,2.09542 1.35878,4.23559 3.57113,4.32798 1.47239,0.0615 2.97664,-0.98755 3.01558,-2.54498 0.0253,-1.00442 -0.70326,-2.03172 -1.77272,-2.03774 -0.66513,-0.004 -1.34624,0.4864 -1.3341,1.19675 0.0101,0.42295 0.32665,0.85772 0.78237,0.83764 0.25745,-0.0113 0.52371,-0.21106 0.50226,-0.48988 -0.0111,-0.14798 -0.1307,-0.30224 -0.29266,-0.28332 -0.0799,0.009 -0.16337,0.0763 -0.1486,0.16385 0.0101,0.0388 0.0405,0.0809 0.085,0.0708 0.0173,-0.004 0.0354,-0.0205 0.0304,-0.0396 0,-0.006 -0.0101,-0.0135 -0.0162,-0.0105 0,4.2e-4 -0.0101,0.003 0,0.005 v 5.6e-4 -3e-5 c -8e-5,-2e-5 0,0 0,-2e-5 v 2.8e-4 -2.8e-4 0.005 c 0,0.007 -0.0131,0.007 -0.0193,0.004 -0.0172,-0.009 -0.0162,-0.0344 -0.0101,-0.0491 0.0233,-0.038 0.0769,-0.0328 0.11036,-0.0105 0.0738,0.0516 0.0607,0.15829 0.0101,0.22095 -0.10116,0.12781 -0.29458,0.10294 -0.40737,0.006 -0.21254,-0.18203 -0.1656,-0.51128 0.0101,-0.70128 0.30803,-0.33606 0.84185,-0.2544 1.14614,0.0395 0.51137,0.49361 0.37651,1.32153 -0.0961,1.78873 -0.76061,0.75136 -2.00265,0.53963 -2.69569,-0.1883 -1.07483,-1.12869 -0.75324,-2.93328 0.33129,-3.93007 1.62998,-1.49779 4.18902,-1.02809 5.58837,0.53707 2.04606,2.2886 1.37497,5.82968 -0.83153,7.7486 -1.5786,1.30953 -3.1579,2.18997 -4.67743,2.75902 l -11.5043,-0.59572 0.0404,-14.9131 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.29451;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
inkscape:connector-curvature="0"
clip-path="url(#clipPath39491)"
transform="translate(50)" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="grid"
style="display:none"
sodipodi:insensitive="true">
<circle
cx="64.000031"
cy="236"
r="59.504131"
id="circle2892"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
<rect
ry="7.9292889"
rx="8.701004"
y="180.49496"
x="20.495007"
height="111.01005"
width="87.009987"
id="rect2894"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
<rect
ry="7.9238095"
rx="7.9238095"
y="184.49524"
x="12.495266"
height="103.00952"
width="103.00952"
id="rect2896"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
<rect
ry="8.701005"
rx="7.9292889"
y="200.49496"
x="8.4950066"
height="87.010048"
width="111.01004"
id="rect2898"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
<path
inkscape:connector-curvature="0"
id="path2900"
d="M 2.6203015e-5,288.99999 H 128.00003"
style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -1 +1,55 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><defs><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="8.005" y1="252" x2="120.005" y2="252" gradientTransform="translate(0 -172)"><stop offset="0" stop-color="#53bde0"/><stop offset=".036" stop-color="#b4e2f1"/><stop offset=".07" stop-color="#53bde0"/><stop offset=".215" stop-color="#24a0c9"/><stop offset=".25" stop-color="#4ab4d7"/><stop offset=".25" stop-color="#2589a9"/><stop offset=".357" stop-color="#40b6dd"/><stop offset=".357" stop-color="#239bc3"/><stop offset=".913" stop-color="#53bde0"/><stop offset=".954" stop-color="#8ed4eb"/><stop offset="1" stop-color="#53bde0"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="87" y1="267" x2="119.505" y2="267" gradientTransform="translate(0 -172)"><stop offset="0" stop-color="#1a5fb4"/><stop offset=".75" stop-color="#1a5fb4"/><stop offset=".888" stop-color="#3e88e3"/><stop offset="1" stop-color="#1a5fb4"/></linearGradient></defs><path d="M32.004 36h80a8 8 0 018 8v64a8 8 0 01-8 8h-80a8 8 0 01-8-8V44a8 8 0 018-8zm0 0" fill="#1a5fb4"/><path d="M16.004 28c-4.43 0-8 3.566-8 8v72c0 4.434 3.57 8 8 8h16L32 128h4l12.004-12h64c4.433 0 8-3.566 8-8V36c0-4.434-3.567-8-8-8zm0 0" fill="url(#a)"/><path d="M86.156 32v84h25.848c4.433 0 8-3.566 8-8V40c0-4.434-3.567-8-8-8zm0 0" fill="url(#b)"/><path d="M16.5 27.934h95.504a8 8 0 018 8V104a8 8 0 01-8 8H16.5a8 8 0 01-8-8V35.934a8 8 0 018-8zm0 0" fill="#3584e4"/><path d="M32.004 104L32 124h4l20.004-20zm0 0" fill-rule="evenodd" fill="#81dffe"/><path d="M16.004 28c-4.43 0-8 3.566-8 8v68c0 4.434 3.57 8 8 8h70.14a119.205 119.205 0 004.637-3.656c14.598-12.696 19.04-36.121 5.504-51.262-9.258-10.352-26.187-13.46-36.969-3.55-7.175 6.593-9.3 18.53-2.191 26 4.586 4.812 12.8 6.214 17.832 1.245 3.125-3.093 4.02-8.57.637-11.836-2.012-1.941-5.543-2.484-7.582-.257-1.164 1.254-1.473 3.433-.07 4.636.75.64 2.027.805 2.699-.039.332-.418.421-1.12-.067-1.465-.222-.148-.578-.18-.73.07-.043.098-.051.266.062.325.043.02.13.023.13-.023v-.04c-.067-.011 0-.03 0-.035.038-.02.105.032.105.07.035.126-.086.235-.2.262-.293.067-.492-.21-.562-.468-.098-.579.457-1.024.984-1.086 1.07-.125 1.864.898 1.934 1.875.144 1.847-1.617 3.168-3.32 3.242-3.016.133-5.11-2.742-5.176-5.54-.082-4.698 4.426-7.945 8.824-7.917 7.078.039 11.895 6.836 11.73 13.48-.257 10.305-10.21 17.242-19.949 16.836-14.636-.61-24.41-14.77-23.625-28.633 0-18.808 18.934-35.105 37.11-36.234zm0 0" fill="#81dffe"/></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="8" x2="58" y1="69.999985" y2="69.999985">
<stop offset="0" stop-color="#4aaac9"/>
<stop offset="0.16" stop-color="#8bddf7"/>
<stop offset="0.32" stop-color="#4aaac9"/>
<stop offset="1" stop-color="#4aaac9"/>
</linearGradient>
<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="31.462524" x2="39" y1="113.997253" y2="113.997253">
<stop offset="0" stop-color="#4aaac9"/>
<stop offset="0.469318" stop-color="#74d7f7"/>
<stop offset="1" stop-color="#4aaac9"/>
</linearGradient>
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="104" x2="120" y1="84" y2="84">
<stop offset="0" stop-color="#1a5fb4"/>
<stop offset="0.5" stop-color="#4296ff"/>
<stop offset="1" stop-color="#1a5fb4"/>
</linearGradient>
<clipPath id="d">
<path d="m 8 24 h 97 v 84 h -97 z m 0 0"/>
</clipPath>
<clipPath id="e">
<path d="m 24 24 h 80 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -80 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0"/>
</clipPath>
<linearGradient id="f" gradientUnits="userSpaceOnUse" x1="55.608135" x2="71.783539" y1="100" y2="48.532928">
<stop offset="0" stop-color="#81dffe"/>
<stop offset="1" stop-color="#9bf8fe"/>
</linearGradient>
<filter id="g" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="h">
<g filter="url(#g)">
<rect fill-opacity="0.35" height="128" width="128"/>
</g>
</mask>
<clipPath id="i">
<rect height="152" width="192"/>
</clipPath>
<path d="m 24 28 h 72 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -72 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="url(#a)"/>
<path d="m 24 28 h 80 c 8.835938 0 16 7.164062 16 16 v 48 c 0 8.835938 -7.164062 16 -16 16 h -80 c -8.835938 0 -16 -7.164062 -16 -16 v -48 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#53bde0"/>
<path d="m 24 100 v 12 h 4 c 2.210938 0 4 1.789062 4 4 v 7 c 0 1.992188 1.183594 3.792969 3.011719 4.585938 c 1.828125 0.789062 3.953125 0.417968 5.40625 -0.945313 l 13.523437 -12.707031 c 1.324219 -1.242188 3.070313 -1.933594 4.882813 -1.933594 h 9.175781 v -12 z m 0 0" fill="url(#b)" fill-rule="evenodd"/>
<path d="m 102 58.566406 h 2 c 8.835938 0 16 7.164063 16 16 v 21.433594 c 0 8.835938 -7.164062 16 -16 16 h -2 c -8.835938 0 -16 -7.164062 -16 -16 v -21.433594 c 0 -8.835937 7.164062 -16 16 -16 z m 0 0" fill="url(#c)"/>
<path d="m 86 87 h 18 v 25 h -18 z m 0 0" fill="#1a5fb4"/>
<path d="m 48 24 h 56 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -56 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#3584e4"/>
<g clip-path="url(#d)">
<g clip-path="url(#e)">
<path d="m 78.804688 16.023438 l 0.527343 2.460937 c -1.207031 -0.082031 -2.417969 4.964844 -3.621093 4.988281 c -19.335938 0.371094 -38.003907 14.230469 -39.148438 34.546875 c -0.835938 14.761719 9.570312 29.839844 25.15625 30.488281 c 10.371094 0.433594 20.96875 -6.957031 21.242188 -17.925781 c 0.179687 -7.078125 -4.953126 -14.3125 -12.488282 -14.355469 c -4.683594 -0.027343 -9.484375 3.425782 -9.398437 8.429688 c 0.074219 2.980469 2.300781 6.042969 5.511719 5.902344 c 1.8125 -0.082032 3.691406 -1.488282 3.539062 -3.453125 c -0.078125 -1.042969 -0.921875 -2.128907 -2.0625 -1.996094 c -0.5625 0.066406 -1.148438 0.539063 -1.046875 1.15625 c 0.070313 0.273437 0.285156 0.570313 0.597656 0.5 c 0.121094 -0.03125 0.25 -0.144531 0.214844 -0.28125 c 0 -0.042969 -0.070313 -0.09375 -0.113281 -0.074219 c 0 0.003906 -0.070313 0.023438 0 0.035156 v 0.007813 v -0.003906 v 0.035156 c 0 0.050781 -0.09375 0.050781 -0.136719 0.03125 c -0.121094 -0.066406 -0.113281 -0.242187 -0.070313 -0.347656 c 0.164063 -0.265625 0.542969 -0.230469 0.777344 -0.074219 c 0.519532 0.367188 0.429688 1.117188 0.070313 1.558594 c -0.710938 0.898437 -2.074219 0.726562 -2.867188 0.042968 c -1.5 -1.28125 -1.167969 -3.601562 0.070313 -4.941406 c 2.167968 -2.367187 5.929687 -1.792968 8.074218 0.28125 c 3.601563 3.476563 2.652344 9.308594 -0.675781 12.597656 c -5.359375 5.292969 -14.109375 3.800782 -18.992187 -1.324218 c -7.570313 -7.953125 -5.304688 -20.664063 2.335937 -27.6875 c 11.480469 -10.550782 29.507813 -7.242188 39.363281 3.785156 c 14.414063 16.121094 9.6875 41.066406 -5.855468 54.582031 c -11.121094 9.226563 -22.246094 15.429688 -32.949219 19.4375 c -13.058594 75.445313 -75.230469 6.835938 -81.039063 -4.195312 l 0.285157 -105.054688 z m 0 0" fill="url(#f)"/>
</g>
</g>
<path d="m 24 106 v 2 h 4 c 2.210938 0 4 1.789062 4 4 v 7 c 0 1.992188 1.183594 3.792969 3.011719 4.585938 c 1.828125 0.789062 3.953125 0.417968 5.40625 -0.945313 l 13.523437 -12.707031 c 1.324219 -1.242188 3.070313 -1.933594 4.882813 -1.933594 h 9.175781 v -2 z m 0 0" fill="#81dffe" fill-rule="evenodd"/>
<g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m 173 17 h 8 c 1.65625 0 3 1.34375 3 3 v 7 c 0 1.65625 -1.34375 3 -3 3 h -8 c -1.65625 0 -3 -1.34375 -3 -3 v -7 c 0 -1.65625 1.34375 -3 3 -3 z m 0 0" fill="#241f31"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -1,4 +1,5 @@
subdir('icons')
# Desktop file
desktop_conf = configuration_data()
desktop_conf.set('icon', application_id)
@ -26,9 +27,26 @@ if desktop_file_validate.found()
endif
# Appdata
if profile == 'Devel'
appstream_version = major_version
if pre_release_version != ''
appstream_version += '~' + pre_release_version
endif
appstream_version += '-' + devel_version
development_release = '''
<release version="@0@" type="snapshot" date="@1@">
<description>
<p>Development release.</p>
</description>
</release>'''.format(appstream_version, release_date)
else
development_release = ''
endif
appdata_conf = configuration_data()
appdata_conf.set('app-id', application_id)
appdata_conf.set('gettext-package', gettext_package)
appdata_conf.set('development-release', development_release)
appdata_file = i18n.merge_file(
input: configure_file(
input: '@0@.metainfo.xml.in.in'.format(base_id),
@ -41,11 +59,11 @@ appdata_file = i18n.merge_file(
install_dir: datadir / 'metainfo'
)
# Validate Appdata
if appstream_util.found()
if appstreamcli.found()
test(
'validate-appdata', appstream_util,
'validate-appdata', appstreamcli,
args: [
'validate', '--nonet', appdata_file.full_path()
'validate', '--no-net', appdata_file.full_path()
]
)
endif
@ -53,6 +71,7 @@ endif
# GSchema
gschema_conf = configuration_data()
gschema_conf.set('app-id', application_id)
gschema_conf.set('profile', profile)
gschema_conf.set('gettext-package', gettext_package)
configure_file(
input: '@0@.gschema.xml.in'.format(base_id),
@ -61,8 +80,7 @@ configure_file(
install: true,
install_dir: datadir / 'glib-2.0' / 'schemas'
)
# Validata GSchema
# Validate GSchema
if glib_compile_schemas.found()
test(
'validate-gschema', glib_compile_schemas,
@ -72,4 +90,16 @@ if glib_compile_schemas.found()
)
endif
# D-Bus service file
service_conf = configuration_data()
service_conf.set('application_id', application_id)
service_conf.set('bindir', bindir)
configure_file(
input: 'org.gnome.Fractal.service.in',
output: '@0@.service'.format(application_id),
configuration: service_conf,
install: true,
install_dir: datadir / 'dbus-1/services',
)
subdir('resources')

View File

@ -2,7 +2,7 @@
Name=Fractal
Comment=Fractal is a decentralized, secure messaging client for collaborative group communication.
GenericName=Fractal group messaging
Exec=fractal
Exec=fractal %U
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=@icon@
Type=Application
@ -13,3 +13,5 @@ Categories=GNOME;GTK;Network;InstantMessaging;
Keywords=Matrix;matrix.org;chat;irc;communications;talk;riot;element;
# Translators: Do NOT translate or transliterate this text (these are enum types)!
X-Purism-FormFactor=Workstation;Mobile;
DBusActivatable=true
MimeType=x-scheme-handler/matrix;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<schemalist>
<schema path="/org/gnome/Fractal/" id="@app-id@" gettext-domain="@gettext-package@">
<schema path="/org/gnome/Fractal/@profile@/" id="@app-id@" gettext-domain="@gettext-package@">
<key name="window-width" type="i">
<default>-1</default>
<summary>Window width</summary>
@ -18,5 +18,14 @@
<summary>Enable markdown formatting</summary>
<description>Whether messages should be processed as markdown when sending them</description>
</key>
<key name="sessions" type="s">
<default>'[]'</default>
<summary>Session settings</summary>
<description>Serialized list of settings per session</description>
</key>
<key name="current-session" type="s">
<default>""</default>
<summary>Current session</summary>
</key>
</schema>
</schemalist>

View File

@ -5,94 +5,431 @@
<id>@app-id@</id>
<launchable type="desktop-id">@app-id@.desktop</launchable>
<name>Fractal</name>
<summary>Matrix group messaging app</summary>
<summary>Chat on Matrix</summary>
<description>
<p>
Fractal is a Matrix messaging app for GNOME written in Rust. Its interface is optimized for
collaboration in large groups, such as free software projects.
collaboration in large groups, such as free software projects, and will fit all screens, big or small.
</p>
<p>Highlights:</p>
<ul>
<li>Find rooms to discuss your favorite topics, or talk privately to people, securely thanks to end-to-end encryption</li>
<li>Send rich formatted messages, files, or your current location</li>
<li>Reply to specific messages, react with emoji, mention users or rooms, edit or remove messages</li>
<li>View images, and play audio and video directly in the conversation</li>
<li>See who has read messages, and who is typing</li>
<li>Log into multiple accounts at once (with Single-Sign On support)</li>
</ul>
</description>
<branding>
<color type="primary" scheme_preference="light">#bdfbff</color>
<color type="primary" scheme_preference="dark">#1a5fb4</color>
</branding>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<developer_name>The Fractal Team</developer_name>
<developer id="org.gnome.fractal">
<name>The Fractal Team</name>
</developer>
<update_contact>jsparber@gnome.org</update_contact>
<translation type="gettext">fractal</translation>
<screenshots>
<screenshot type="default">
<image type="source">https://gitlab.gnome.org/GNOME/fractal/raw/main/screenshots/fractal.png</image>
<image type="source">https://gitlab.gnome.org/World/fractal/raw/fractal-12/screenshots/main.png</image>
<caption>Fractals main window</caption>
</screenshot>
<screenshot>
<image type="source">https://gitlab.gnome.org/World/fractal/raw/fractal-12/screenshots/media-history.png</image>
<caption>View the media history of a Matrix room</caption>
</screenshot>
<screenshot>
<image type="source">https://gitlab.gnome.org/World/fractal/raw/fractal-12/screenshots/adaptive.png</image>
<caption>Fractals interface adapts to small screens</caption>
</screenshot>
</screenshots>
<url type="homepage">https://gitlab.gnome.org/GNOME/fractal</url>
<url type="bugtracker">https://gitlab.gnome.org/GNOME/fractal/issues/</url>
<url type="homepage">https://gitlab.gnome.org/World/fractal</url>
<url type="bugtracker">https://gitlab.gnome.org/World/fractal/issues/</url>
<url type="donation">https://www.gnome.org/donate/</url>
<url type="translate">https://l10n.gnome.org/module/fractal/</url>
<url type="contact">https://matrix.to/#/#fractal:gnome.org</url>
<url type="contribute">https://gitlab.gnome.org/GNOME/fractal/-/blob/main/CONTRIBUTING.md</url>
<url type="contribute">https://gitlab.gnome.org/World/fractal/-/blob/main/CONTRIBUTING.md</url>
<requires>
<display_length compare="ge">360</display_length>
<internet>always</internet>
</requires>
<recommends>
<supports>
<control>keyboard</control>
<control>pointing</control>
<control>touch</control>
</recommends>
<custom>
<value key="Purism::form_factor">workstation</value>
<value key="Purism::form_factor">mobile</value>
</custom>
</supports>
<content_rating type="oars-1.1">
<content_attribute id="social-chat">intense</content_attribute>
<content_attribute id="social-audio">intense</content_attribute>
</content_rating>
<releases>
<release version="5~alpha1" type="development" date="2022-09-25" urgency="high">
<releases>@development-release@
<release version="12" type="stable" date="2025-08-11">
<description>
<p>Fractal 5.alpha1 is the first release since Fractal has been
rewritten to take advantage of GTK 4 and the Matrix Rust SDK.
It is the result of eighteen months of work.</p>
<p>Currently supported features are:</p>
<p>
Knock, knock, knock… on rooms, baby 🎵 Ooh ooh ooh ooh ooh ooh 🎶 That's right, Fractal 12
adds support for knocking, among other things. Read all about the improvements since 11.2:
</p>
<ul>
<li> Sending and receiving messages and files </li>
<li> Sending files via Drag-n-Drop and pasting in the message entry</li>
<li>Rendering of rich formatted (HTML) messages, as well as media</li>
<li>Displaying edited messages, redacting messages</li>
<li>Showing and adding reactions</li>
<li>Tab completion of user names</li>
<li>Sending and displaying replies</li>
<li>Sharing the current location</li>
<li>Exploring the room directory</li>
<li>Sorting the rooms by category</li>
<li>Joining rooms</li>
<li>Sending and accepting invitations</li>
<li>Logging into multiple accounts at once</li>
<li>Logging in with Single-Sign On</li>
<li>Sending and reading encrypted messages</li>
<li>Verifying user sessions using cross-signing</li>
<li>Exporting and importing encryption keys</li>
<li>Managing the connected devices</li>
<li>Changing the user profile details</li>
<li>Deactivating the account</li>
<li>
Requesting invites to rooms (aka knocking) is now possible, as is enabling such requests
for room admins.
</li>
<li>
The upcoming room version 12 is supported, with the special power level of room
creators.
</li>
<li>
A room can be marked as unread via the context menu in the sidebar.
</li>
<li>
You can now see if a section in the sidebar has any notifications or activity when it is
collapsed.
</li>
<li>
Clicking on the name of the sender of a message adds a mention to them in the composer.
</li>
<li>
The safety setting to hide media previews in rooms is now synced between Matrix clients
and we added another safety setting (which is also synced) to hide avatars in invites.
</li>
</ul>
<p>Major missing features are:</p>
<p>
As usual, this release includes other improvements, fixes and new translations thanks to
all our contributors, and our upstream projects.
</p>
<p>
We want to address special thanks to the translators who worked on this version. We know
this is a huge undertaking and have a deep appreciation for what youve done. If you want
to help with this effort, head over to Damned Lies.
</p>
</description>
</release>
<release version="11.2" type="stable" date="2025-06-10">
<description>
<p>
This version updates the matrix-sdk-crypto dependency to include a fix for a high severity
security issue.
</p>
</description>
</release>
<release version="11.1" type="stable" date="2025-05-15">
<description>
<p>
Due to a pesky bug that makes Fractal crash when our users attempt to start a
verification, we are releasing Fractal 11.1 only 2 weeks after Fractal 11. And while were
at it we also backported a few fixes for smaller paper cuts!
</p>
</description>
</release>
<release version="11" type="stable" date="2025-05-01">
<description>
<p>
A new version of Fractal numbered Eleven? Stranger things have happened… Features come
running up that hill:
</p>
<ul>
<li>Notifications</li>
<li>Read markers</li>
<li>
Support for login using the OAuth 2.0 API (as used by matrix.org, which recently made
the switch to Matrix Authentication Service)
</li>
<li>
Overhaul of the page that lists user sessions, with details moved to subpages, for a
less cluttered feel, and allowing to rename sessions!
</li>
<li>
Rearranged account settings, with a new Safety tab that includes a setting to toggle
media preview visibility
</li>
<li>
BlurHashes for images and videos, that are used as placeholders while the media is
loading or if the preview is disabled
</li>
<li>
Contiguous state events are grouped behind a single item
</li>
</ul>
<p>
As usual, this release includes other improvements and fixes thanks to all our
contributors, and our upstream projects.
</p>
<p>
We want to address special thanks to the translators who worked on this version. We know
this is a huge undertaking and have a deep appreciation for what youve done. If you want
to help with this effort, head over to l10n.gnome.org.
</p>
</description>
</release>
<release version="10.1" type="stable" date="2025-02-10">
<description>
<p>
Due to a couple of unfortunate but important regressions in Fractal 10, we are releasing
Fractal 10.1 so our users dont have to wait too long for them to be addressed. This minor
version fixes the following issues:
</p>
<ul>
<li>
Some rooms were stuck in an unread state, even after reading them or marking them as
read.
</li>
<li>
Joining or creating a room would crash the app.
</li>
</ul>
</description>
</release>
<release version="10" type="stable" date="2025-01-30">
<description>
<p>
How are you going to find your friends and coordinate end of day drinks when youre lost
in the middle of a large crowd in a big city? With the new version of your favorite Matrix
client, of course! Here is Fractal 10.
</p>
<ul>
<li>
The QR code scanning code has been ported to libaperture, the library behind GNOME
Camera. This should result in better performance and more reliability.
</li>
<li>
OAuth 2.0 compatibility was added, to make sure that we are ready for the upcoming
authentication changes for matrix.org.
</li>
<li>
Pills for users and rooms mentions show consistently in the right place instead of
seemingly random places, getting rid of one of our oldest and most annoying bug.
</li>
<li>
Attachments go through the send queue, ensuring correct order of all messages and
improving the visual feedback.
</li>
<li>
Videos were often not playing after loading in the room history. This was fixed, and we
also show properly when an error occurred.
</li>
<li>
We were downloading too many different sizes for avatar images, which would fill the
media cache needlessly. We now only download a couple of sizes. This has the extra
benefit of fixing blurry or missing thumbnails in notifications.
</li>
</ul>
<p>
As usual, this release includes other improvements and fixes thanks to all our
contributors, and our upstream projects.
</p>
<p>
We want to address special thanks to the translators who worked on this version. We know
this is a huge undertaking and have a deep appreciation for what youve done. If you want
to help with this effort, head over to l10n.gnome.org.
</p>
</description>
</release>
<release version="9" type="stable" date="2024-10-30">
<description>
<p>
Whats that behind you⁉ 😱 Oh, thats a new Fractal release❣ 😁 🎃
</p>
<ul>
<li>
We switched to the glycin library (the same one used by GNOME Image Viewer) to load
images, allowing us to fix several issues, like supporting more animated formats and
SVGs and respecting EXIF orientation.
</li>
<li>
The annoying bug where some rooms would stay as unread even after opening them is now a
distant memory.
</li>
<li>
The media cache uses its own database that you can delete if you want to free some space
on your system. It will also soon be able to clean up unused media files to prevent it
from growing indefinitely.
</li>
<li>
Sometimes the day separators would show up with the wrong date, not anymore!
</li>
<li>
We migrated to the new GTK 4.16 and libadwaita 1.6 APIs, including CSS variables,
AdwButtonRow and AdwSpinner.
</li>
<li>
We used to only rely on the secrets provider to tell us which Matrix accounts are
logged-in, which caused issues for people sharing their secrets between devices. Now we
also make sure that there is a data folder for a given session before trying to restore
it.
</li>
<li>
Our notifications are categorized as coming from an instant messenger, so graphical
shells that support it, such as Phosh, can play a sound for them.
</li>
<li>
Some room settings are hidden for direct chats, because it does not make sense to change
them in this type of room.
</li>
<li>
The size of the headerbar would change depending on whether the room has a topic or not.
This will not happen anymore.
</li>
</ul>
<p>
As usual, this release includes other improvements and fixes thanks to all our
contributors, and our upstream projects.
</p>
<p>
We want to address special thanks to the translators who worked on this version. We know
this is a huge undertaking and have a deep appreciation for what youve done. If you want
to help with this effort, head over to Damned Lies.
</p>
</description>
</release>
<release version="8" type="stable" date="2024-08-01">
<description>
<p>
Lets see the main improvements:
</p>
<ul>
<li>
Mentions are sent intentionally
</li>
<li>
Authenticated media are supported
</li>
<li>
Draft messages are kept per-room and persisted across restarts
</li>
<li>
More links are detected in messages and room descriptions
</li>
<li>
Collapsed categories in the sidebar are remembered between restarts, with the
“Historical” category collapsed by default
</li>
<li>
A banner appears when synchronization with the homeserver fails too many times in a row
</li>
<li>
The verification and account recovery processes have been polished
</li>
<li>
HTML rendering has been improved, with the support of new elements and attributes
</li>
</ul>
<p>
As usual, this release includes other improvements and fixes thanks to all our
contributors, and our upstream projects.
</p>
<p>
We want to address special thanks to the translators who worked on this version. We know
this is a huge undertaking and have a deep appreciation for what youve done. If you want
to help with this effort, head over to Damned Lies.
</p>
</description>
</release>
<release version="7" type="stable" date="2024-05-02">
<description>
<p>
Here comes Fractal 7, with extended encryption support and improved accessibility.
Server-side key backup and account recovery have been added, bringing greater security.
Third-party verification has received some bug fixes and improvements. Amongst the many
accessibility improvements, navigability has increased, especially in the room history.
But thats not all weve been up to in the past three months:
</p>
<ul>
<li>
Messages that failed to send can now be retried or discarded.
</li>
<li>
Messages can be reported to server admins for moderation.
</li>
<li>
Room details are now considered complete, with the addition of room address management,
permissions, and room upgrade.
</li>
<li>
A new member menu appears when clicking on an avatar in the room history. It offers a
quick way to do many actions related to that person, including opening a direct chat
with them and moderating them.
</li>
<li>
Pills are clickable and allow to directly go to a room or member profile.
</li>
</ul>
<p>
As usual, this release includes other improvements, fixes and new translations thanks to
all our contributors, and our upstream projects.
</p>
<p>
We want to address special thanks to the translators who worked on this version. We know
this is a huge undertaking and have a deep appreciation for what youve done. If you want
to help with this effort, head over to Damned Lies.
</p>
</description>
</release>
<release version="6" type="stable" date="2024-01-18">
<description>
<p>
Barely 2 months after Fractal 5, we feel there have been enough improvements to grant a
new stable release. You have probably noticed that we have adopted a version scheme
similar to GNOME and will bump the major version with each new release.
</p>
<p>
The list of goodies:
</p>
<ul>
<li>
Fractal can open Matrix URIs, it is even registered as a handler for the “matrix”
scheme
</li>
<li>
The verification flow was rewritten, hopefully solving most verification issues
</li>
<li>
Room members can be kicked, banned or ignored from their profile
</li>
<li>
More notifications settings, global or per-room, were added
</li>
<li>
Times follow the format (12h or 24h) from the system settings
</li>
<li>
Tab auto-completion also works for mentioning public rooms, just start your query with
“#”
</li>
</ul>
<p>
This version is fully translated into 6 languages 🙌️ and we hope to get even more 📈 for
the next one! Head over to Damned Lies if you want to give a hand.
</p>
<p>
We would also like to thank our new and returning contributors and our upstream projects.
</p>
</description>
</release>
<release version="5" type="stable" date="2023-11-24">
<description>
<p>
Fractal 5 is a full rewrite compared to Fractal 4, that now leverages GTK 4, libadwaita,
and the Matrix Rust SDK. The two-and-a-half-year effort brings a new interface that fits
all screens, big 🖥️ or small 📱, but should still look familiar to users of earlier versions.
</p>
<p>
It still offers the same old features you know and love, with a few additions.
Highlights (<em>italics</em> is new✨ in 5):
</p>
<ul>
<li>Find rooms to discuss your favorite topics, or talk privately to people, securely thanks to <em>end-to-end encryption</em></li>
<li>Send rich formatted messages, files, or <em>your current location</em></li>
<li><em>Reply</em> to specific messages, <em>react</em> with emoji, <em>edit</em> or remove messages</li>
<li>View images, and play audio and video directly in the conversation</li>
<li>See <em>who has read messages</em>, and who is typing</li>
<li>Log into <em>multiple accounts</em> at once (with <em>Single-Sign On</em> support)</li>
</ul>
<p>As the name implies, this is still considered alpha stage and is not
ready for general use just yet. If you want to give this development
version a try, you can get it from the GNOME Apps Nightly flatpak
repository (See wiki.gnome.org/Apps/Nightly).</p>
<p>A list of known issues and missing features for a 5.0 release can be
found in the Fractal v5 milestone on Gitlab.</p>
</description>
</release>
<release version="4.4" type="stable" date="2020-08-07" urgency="high">

View File

@ -0,0 +1,3 @@
[D-BUS Service]
Name=@application_id@
Exec=@bindir@/fractal --gapplication-service

View File

@ -5,47 +5,15 @@
viewBox="0 0 89.958331 52.916668"
version="1.1"
id="svg8662"
sodipodi:docname="welcome-export.svg"
inkscape:version="1.1-rc (52f87abb86, 2021-05-02)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<sodipodi:namedview
id="namedview47"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
objecttolerance="10.0"
gridtolerance="10.0"
guidetolerance="10.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.99583586"
inkscape:cx="303.76492"
inkscape:cy="15.062723"
inkscape:current-layer="svg8662"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:snap-midpoints="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-text-baseline="true">
<inkscape:grid
type="xygrid"
id="grid1470" />
</sodipodi:namedview>
<defs
id="defs8656">
<linearGradient
inkscape:collect="always"
id="linearGradient39832">
<stop
style="stop-color:#3584e4;stop-opacity:1"
@ -57,7 +25,6 @@
id="stop39830" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient24559">
<stop
style="stop-color:#ed333b;stop-opacity:1;"
@ -69,7 +36,6 @@
id="stop24557" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient12858">
<stop
style="stop-color:#f66151;stop-opacity:1"
@ -103,7 +69,6 @@
id="stop8143" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient976"
id="radialGradient1221"
gradientUnits="userSpaceOnUse"
@ -113,7 +78,6 @@
fy="212"
r="60" />
<linearGradient
inkscape:collect="always"
id="linearGradient976">
<stop
style="stop-color:#f8e45c;stop-opacity:1"
@ -125,7 +89,6 @@
id="stop974" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient1117"
id="radialGradient1223"
gradientUnits="userSpaceOnUse"
@ -136,7 +99,6 @@
fy="224"
r="16" />
<linearGradient
inkscape:collect="always"
id="linearGradient1117">
<stop
style="stop-color:#5e5c64;stop-opacity:1"
@ -148,7 +110,6 @@
id="stop1115" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient1117"
id="radialGradient1225"
gradientUnits="userSpaceOnUse"
@ -159,7 +120,6 @@
fy="224"
r="16" />
<linearGradient
inkscape:collect="always"
id="linearGradient1325">
<stop
style="stop-color:#f66151;stop-opacity:1"
@ -175,7 +135,6 @@
id="stop1323" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient976"
id="radialGradient1393-0"
gradientUnits="userSpaceOnUse"
@ -186,7 +145,6 @@
r="60"
gradientTransform="matrix(0.26458333,0,0,0.26458333,10.972649,-67.464743)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient1325"
id="radialGradient1395-6"
gradientUnits="userSpaceOnUse"
@ -197,7 +155,6 @@
fy="29.856375"
r="16.084499" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient1325"
id="radialGradient1397-9-9"
gradientUnits="userSpaceOnUse"
@ -208,7 +165,6 @@
fy="29.856375"
r="16.084499" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient12858"
id="linearGradient12860"
x1="3467.3748"
@ -217,7 +173,6 @@
y2="-383.00339"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8145"
id="linearGradient15076"
gradientUnits="userSpaceOnUse"
@ -227,7 +182,6 @@
x2="-3272.5"
y2="-438.48035" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient39832"
id="radialGradient39804"
cx="3496.6987"
@ -238,7 +192,6 @@
gradientTransform="matrix(0.61314223,0,0,0.49927324,-2207.2336,232.19657)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8161"
id="linearGradient40220"
x1="428.48035"
@ -248,7 +201,6 @@
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.85000059,0,0,0.85000059,64.271801,-492.37307)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient24559"
id="linearGradient63749"
gradientUnits="userSpaceOnUse"
@ -337,14 +289,10 @@
id="g137264"
style="stroke-width:0.666667">
<path
sodipodi:nodetypes="sssscccsssss"
style="display:inline;fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
d="m -3912.0003,-233.37879 c -4.4319,0 -8,3.56799 -8,8 v 27.89844 c 0,4.43202 3.5681,8 8,8 h 36.3333 l 12.6667,12.66667 v -12.66667 h 8.3333 c 4.432,0 8,-3.56798 8,-8 v -27.89844 c 0,-4.43201 -3.568,-8 -8,-8 z"
id="path137260"
inkscape:connector-curvature="0" />
id="path137260" />
<path
sodipodi:nodetypes="cssccccsccsccssc"
inkscape:connector-curvature="0"
id="path137262"
d="m -3920.0003,-199.48035 v 2 c 0,4.43202 3.5681,8 8,8 h 36.3333 l 12.6667,12.66667 v -2 l -12.6667,-12.66667 h -36.3333 c -4.4319,0 -8,-3.56798 -8,-8 z m 73.3333,0 c 0,4.43202 -3.568,8 -8,8 h -8.3333 v 2 h 8.3333 c 4.432,0 8,-3.56798 8,-8 z"
style="display:inline;fill:#3584e4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
@ -374,17 +322,13 @@
id="g137282"
style="stroke-width:0.666667">
<path
inkscape:connector-curvature="0"
id="path137272"
d="m -3913.6666,-217.48035 c -4.4319,0 -8,3.56798 -8,8 v 24 c 0,4.43202 3.5681,8 8,8 h 15.3333 v 12.66667 l 12.6667,-12.66667 h 45.9999 c 4.432,0 8,-3.56798 8,-8 v -24 c 0,-4.43202 -3.568,-8 -8,-8 z"
style="display:inline;fill:#3d3846;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
sodipodi:nodetypes="sssscccsssss" />
style="display:inline;fill:#3d3846;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
<path
inkscape:connector-curvature="0"
id="path137274"
d="m -3921.6666,-187.48035 v 2 c 0,4.43202 3.5681,8 8,8 h 15.3333 v -2 h -15.3333 c -4.4319,0 -8,-3.56798 -8,-8 z m 89.9999,0 c 0,4.43202 -3.568,8 -8,8 h -45.9999 l -12.6667,12.66667 v 2 l 12.6667,-12.66667 h 45.9999 c 4.432,0 8,-3.56798 8,-8 z"
style="display:inline;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
sodipodi:nodetypes="cssccsccsccccssc" />
style="display:inline;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
<rect
style="opacity:1;fill:#77767b;fill-opacity:1;stroke:none;stroke-width:9.33333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect137276"
@ -469,13 +413,12 @@
ry="3.175" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:'Adwaita Sans';-inkscape-font-specification:'Adwaita Sans Ultra-Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
x="25.548162"
y="7.6729164"
id="text63745"><tspan
sodipodi:role="line"
id="tspan63743"
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:4.23333px;font-family:Cantarell;-inkscape-font-specification:'Cantarell Ultra-Bold';fill:#ffffff;stroke-width:0.264583"
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:4.23333px;font-family:'Adwaita Sans';-inkscape-font-specification:'Adwaita Sans Ultra-Bold';fill:#ffffff;stroke-width:0.264583"
x="25.548162"
y="7.6729164">999+</tspan></text>
</g>
@ -551,22 +494,12 @@
rx="2"
ry="2" />
<path
inkscape:connector-curvature="0"
style="opacity:1;vector-effect:none;fill:#e5a50a;fill-opacity:1;stroke:none;stroke-width:12.8571;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 123.82422,231.53906 A 60,60 0 0 1 64,288 60,60 0 0 1 4.17578,232.46094 60,60 0 0 0 4,236 a 60,60 0 0 0 60,60 60,60 0 0 0 60,-60 60,60 0 0 0 -0.17578,-4.46094 z"
id="path1193" />
<path
sodipodi:open="true"
sodipodi:end="3.1415927"
sodipodi:start="0"
sodipodi:ry="7.0068064"
sodipodi:rx="7.6309938"
sodipodi:cy="236.99103"
sodipodi:cx="64"
sodipodi:type="arc"
id="path1195"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#3d3846;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:arc-type="arc"
d="m 71.630994,236.99103 a 7.6309938,7.0068064 0 0 1 -3.815497,6.06807 7.6309938,7.0068064 0 0 1 -7.630994,0 7.6309938,7.0068064 0 0 1 -3.815497,-6.06807" />
<rect
ry="8"
@ -580,16 +513,7 @@
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#241f31;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path1199"
sodipodi:type="arc"
sodipodi:cx="64"
sodipodi:cy="-216"
sodipodi:rx="8"
sodipodi:ry="8"
sodipodi:start="0"
sodipodi:end="3.1415927"
sodipodi:open="true"
transform="scale(1,-1)"
sodipodi:arc-type="arc"
d="m 72,-216 a 8,8 0 0 1 -4,6.9282 8,8 0 0 1 -8,0 A 8,8 0 0 1 56,-216" />
<rect
style="opacity:1;vector-effect:none;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
@ -640,17 +564,13 @@
transform="matrix(1.5,0,0,1.5,2465.0001,-75.912199)"
id="g137294">
<path
sodipodi:nodetypes="sssccssss"
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
d="m -3905.3334,-234.37879 c -4.4319,0 -8,3.56799 -8,8 v 27.33333 c 0,4.43202 3.5681,8 8,8 H -3848 c 4.432,0 8,-3.56798 8,-8 v -27.33333 c 0,-4.43201 -3.568,-8 -8,-8 z"
id="path137290"
inkscape:connector-curvature="0" />
id="path137290" />
<path
inkscape:connector-curvature="0"
id="path137292"
d="m -3913.3334,-201.04546 v 2 c 0,4.43202 3.5681,8 8,8 h 19 l 12.6667,12.66667 v -2 l -12.6667,-12.66667 h -19 c -4.4319,0 -8,-3.56798 -8,-8 z m 73.3334,0 c 0,4.43202 -3.568,8 -8,8 h -25.6667 v 2 H -3848 c 4.432,0 8,-3.56798 8,-8 z"
style="display:inline;fill:#deddda;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
sodipodi:nodetypes="cssccccsccsccssc" />
style="display:inline;fill:#deddda;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
</g>
<rect
y="-412.48035"
@ -689,42 +609,28 @@
cy="-5.023077"
r="15.875" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#e5a50a;fill-opacity:1;stroke:none;stroke-width:3.40177;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
d="M 43.734473,-6.2033675 A 15.875,15.875 0 0 1 27.905982,8.735256 15.875,15.875 0 0 1 12.077491,-5.9594534 a 15.875,15.875 0 0 0 -0.04651,0.9363763 15.875,15.875 0 0 0 15.875,15.8750001 15.875,15.875 0 0 0 15.875,-15.8750001 15.875,15.875 0 0 0 -0.04651,-1.1802904 z"
id="path1369-2" />
<path
sodipodi:open="true"
sodipodi:end="3.1415927"
sodipodi:start="0"
sodipodi:ry="1.8538842"
sodipodi:rx="2.0190337"
sodipodi:cy="-4.7608676"
sodipodi:cx="27.905983"
sodipodi:type="arc"
id="path1371-3"
style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#3d3846;stroke-width:1.05833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
sodipodi:arc-type="arc"
d="m 29.925017,-4.7608676 a 2.0190337,1.8538842 0 0 1 -1.009517,1.6055108 2.0190337,1.8538842 0 0 1 -2.019034,0 2.0190337,1.8538842 0 0 1 -1.009517,-1.6055108" />
<path
inkscape:connector-curvature="0"
id="path1373-7"
d="m 24.707728,-13.490777 a 2.1168783,2.1168783 0 0 0 -1.459859,0.642337 l -0.620118,0.620117 -0.620117,-0.620117 a 2.1168783,2.1168783 0 0 0 -1.51877,-0.641302 2.1168783,2.1168783 0 0 0 -1.474329,3.6349196 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863907,-2.8639082 A 2.1168783,2.1168783 0 0 0 24.707728,-13.49083 Z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient1395-6);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient1397-9-9);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 35.291109,-13.490777 a 2.1168783,2.1168783 0 0 0 -1.459859,0.642337 l -0.620118,0.620117 -0.620117,-0.620117 a 2.1168783,2.1168783 0 0 0 -1.51877,-0.641302 2.1168783,2.1168783 0 0 0 -1.474329,3.6349196 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863908,-2.8639082 a 2.1168783,2.1168783 0 0 0 -1.53324,-3.6359539 z"
id="path1375-3-5" />
<path
id="path1377-9"
d="m 18.412505,-11.77202 a 2.1168783,2.1168783 0 0 0 0.60203,1.9171976 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863907,-2.8639109 a 2.1168783,2.1168783 0 0 0 0.604615,-1.9166782 2.1168783,2.1168783 0 0 1 -0.604615,1.122929 l -2.863907,2.8639074 a 1.0583333,1.0583333 0 0 1 -1.49655,0 v 0.00212 l -2.865975,-2.8659714 a 2.1168783,2.1168783 0 0 1 -0.60203,-1.123448 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
inkscape:connector-curvature="0" />
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
id="path1379-6-2"
d="m 28.995838,-11.77202 a 2.1168783,2.1168783 0 0 0 0.60203,1.9171976 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863908,-2.8639109 a 2.1168783,2.1168783 0 0 0 0.604614,-1.9166782 2.1168783,2.1168783 0 0 1 -0.604614,1.122929 l -2.863908,2.8639074 a 1.0583333,1.0583333 0 0 1 -1.49655,0 v 0.00212 l -2.865975,-2.8659714 a 2.1168783,2.1168783 0 0 1 -0.60203,-1.123448 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
inkscape:connector-curvature="0" />
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -240 -60)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -240 -60)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -240 -60)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 8 0 c -4.421875 0 -8 3.578125 -8 8 s 3.578125 8 8 8 s 8 -3.578125 8 -8 s -3.578125 -8 -8 -8 z m 0 3.875 c 0.621094 0 1.125 0.503906 1.125 1.125 s -0.503906 1.125 -1.125 1.125 s -1.125 -0.503906 -1.125 -1.125 s 0.503906 -1.125 1.125 -1.125 z m -1.523438 3.125 h 2.523438 v 4 h 0.5 c 0.277344 0 0.5 0.222656 0.5 0.5 s -0.222656 0.5 -0.5 0.5 h -2.5 v -4 h -0.5 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 c 0 -0.269531 0.210938 -0.488281 0.476562 -0.5 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 7 1 v 6 h -6 v 2 h 6 v 6 h 2 v -6 h 6 v -2 h -6 v -6 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -620 -560)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -620 -560)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -620 -560)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 9.75 0.277344 c -0.890625 0 -1.78125 0.339844 -2.457031 1.015625 l -3.5 3.5 c -0.019531 0.019531 -0.039063 0.039062 -0.058594 0.0625 c -0.070313 0.082031 -0.574219 0.628906 -0.792969 1.4375 c -0.21875 0.804687 -0.058594 1.972656 0.839844 2.902343 c 0.914062 0.941407 2.128906 1.09375 2.945312 0.867188 c 0.8125 -0.230469 1.222657 -0.585938 1.5 -0.875 l 1.980469 -1.980469 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 l -2 2 c -0.007813 0.003906 -0.011719 0.011719 -0.019531 0.019531 c 0.113281 -0.117188 -0.289063 0.238281 -0.589844 0.324219 c -0.296875 0.082031 -0.5 0.148437 -0.964844 -0.332031 c -0.484375 -0.5 -0.421875 -0.710938 -0.347656 -0.988282 c 0.074218 -0.273437 0.257812 -0.503906 0.386718 -0.660156 l 3.449219 -3.449219 c 0.644531 -0.644531 1.441407 -0.644531 2.085938 0 l 2.5 2.5 c 0.644531 0.644531 0.644531 1.441407 0 2.085938 l -6 6 s -0.183594 0.183593 -0.472657 0.375 c -0.289062 0.191406 -0.652343 0.332031 -0.820312 0.332031 h -3 c -0.167969 0 -0.449219 -0.113281 -0.667969 -0.332031 s -0.332031 -0.5 -0.332031 -0.667969 v -4 c 0 -0.550781 -0.449219 -1 -1 -1 s -1 0.449219 -1 1 v 4 c 0 0.832031 0.386719 1.550781 0.917969 2.082031 s 1.25 0.917969 2.082031 0.917969 h 3 c 0.832031 0 1.46875 -0.359375 1.929688 -0.667969 c 0.460937 -0.308593 0.777343 -0.625 0.777343 -0.625 l 6 -6 c 1.355469 -1.355469 1.355469 -3.558593 0 -4.914062 l -2.5 -2.5 c -0.675781 -0.675781 -1.566406 -1.015625 -2.457031 -1.015625 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 4 4 h 1 h 0.03125 c 0.253906 0.011719 0.511719 0.128906 0.6875 0.3125 l 2.28125 2.28125 l 2.3125 -2.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -2.28125 2.28125 l 2.25 2.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -2.28125 -2.28125 l -2.28125 2.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -1 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 2.28125 -2.25 l -2.28125 -2.28125 c -0.210938 -0.195312 -0.304688 -0.46875 -0.28125 -0.75 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -760 -824)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -760 -824)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -760 -824)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 0 3 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 v 5 c 0 0.570312 0.429688 1 1 1 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 c -1.644531 0 -3 -1.355469 -3 -3 z m 5 5 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 v 5 c 0 1.644531 -1.355469 3 -3 3 h -5 c -1.644531 0 -3 -1.355469 -3 -3 z m 2 0 v 5 c 0 0.570312 0.429688 1 1 1 h 5 c 0.570312 0 1 -0.429688 1 -1 v -5 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 765 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 12.277344 0.832031 c -0.578125 0.007813 -1.167969 0.230469 -1.691406 0.753907 l -9 9 c -0.375 0.375 -0.585938 0.882812 -0.585938 1.414062 v 3 h 3 c 0.53125 0 1.039062 -0.210938 1.414062 -0.585938 l 9 -9 c 1.789063 -1.789062 0.082032 -4.390624 -1.890624 -4.570312 c -0.082032 -0.011719 -0.164063 -0.011719 -0.246094 -0.011719 z m -1.777344 3.605469 l 1.0625 1.0625 l -7.0625 7.0625 l -1.0625 -1.0625 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 573 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 8 0 c -4.402344 0 -8 3.597656 -8 8 s 3.597656 8 8 8 s 8 -3.597656 8 -8 s -3.597656 -8 -8 -8 z m 0 1.980469 c 3.339844 0 6.019531 2.679687 6.019531 6.019531 s -2.679687 6.019531 -6.019531 6.019531 s -6.019531 -2.679687 -6.019531 -6.019531 s 2.679687 -6.019531 6.019531 -6.019531 z m -2 3.019531 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 s 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 4 0 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 s 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m -5.28125 4.066406 c -0.113281 0.066406 -0.199219 0.175782 -0.234375 0.304688 s -0.015625 0.265625 0.050781 0.378906 c 0.714844 1.238281 2.035156 2 3.464844 2 s 2.75 -0.761719 3.464844 -2 c 0.066406 -0.113281 0.085937 -0.25 0.050781 -0.378906 s -0.121094 -0.238282 -0.234375 -0.304688 s -0.25 -0.085937 -0.378906 -0.050781 s -0.238282 0.121094 -0.304688 0.234375 c -0.535156 0.929688 -1.523437 1.5 -2.597656 1.5 s -2.0625 -0.570312 -2.597656 -1.5 c -0.066406 -0.113281 -0.175782 -0.199219 -0.304688 -0.234375 s -0.265625 -0.015625 -0.378906 0.050781 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 3 2 c -1.660156 0 -3 1.339844 -3 3 v 8 c 0 1.660156 1.339844 3 3 3 h 8 c 1.660156 0 3 -1.339844 3 -3 v -4 c 0 -0.550781 -0.449219 -1 -1 -1 s -1 0.449219 -1 1 v 4 c 0 0.554688 -0.445312 1 -1 1 h -8 c -0.554688 0 -1 -0.445312 -1 -1 v -8 c 0 -0.554688 0.445312 -1 1 -1 h 4 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 7 -2 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 2.585938 l -5.292969 5.289062 c -0.390625 0.394532 -0.390625 1.027344 0 1.417969 s 1.023437 0.390625 1.414062 0 l 5.292969 -5.292969 v 2.585938 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.085938 -0.011719 -0.171875 -0.035156 -0.257812 c -0.023438 -0.085938 -0.054688 -0.167969 -0.101563 -0.242188 c -0.042969 -0.074219 -0.09375 -0.144531 -0.15625 -0.207031 c -0.015625 -0.011719 -0.03125 -0.023438 -0.046875 -0.035157 c -0.054687 -0.050781 -0.117187 -0.09375 -0.183594 -0.128906 c -0.035156 -0.019531 -0.074218 -0.035156 -0.113281 -0.0468748 c -0.050781 -0.0234374 -0.101562 -0.0390624 -0.15625 -0.0507812 c -0.039062 -0.0117188 -0.082031 -0.015625 -0.121093 -0.0195312 c -0.03125 -0.00781255 -0.058594 -0.00781255 -0.085938 -0.0117188 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
<path d="m 1 9 c -0.550781 0 -1 0.449219 -1 1 v 6 h 6 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 h -2.585938 l 3.292969 -3.292969 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 s -0.519531 0.105469 -0.707031 0.292969 l -3.292969 3.292969 v -2.585938 c 0 -0.550781 -0.449219 -1 -1 -1 z m 0 0"/>
<path d="m 15 7 c 0.550781 0 1 -0.449219 1 -1 v -6 h -6 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 2.585938 l -3.292969 3.292969 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 c 0.1875 0.1875 0.441406 0.292969 0.707031 0.292969 s 0.519531 -0.105469 0.707031 -0.292969 l 3.292969 -3.292969 v 2.585938 c 0 0.550781 0.449219 1 1 1 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 897 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -940 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -940 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -940 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 3.703125 4.289062 l -1.414063 1.414063 l 5.707032 5.707031 l 5.707031 -5.707031 l -1.414063 -1.414063 l -4.292968 4.296876 z m -1.703125 7.691407 v 2 l 1 0.003906 l 10 0.011719 l 1 0.003906 v -2 l -1 -0.003906 l -10 -0.011719 z m 0 0"/><path d="m 2.996094 4.996094 v -1 h -1 v 1 z m 11 0 v -1 h -1 v 1 z m 0 0"/><path d="m 13.996094 4.996094 c 0 -0.550782 -0.445313 -1 -1 -1 c -0.550782 0 -1 0.449218 -1 1 c 0 0.554687 0.449218 1 1 1 c 0.554687 0 1 -0.445313 1 -1 z m -10 0 c 0 -0.550782 -0.445313 -1 -1 -1 c -0.550782 0 -1 0.449218 -1 1 c 0 0.554687 0.449218 1 1 1 c 0.554687 0 1 -0.445313 1 -1 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1000 -140)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1000 -140)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1000 -140)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 4 0.996094 v 1 c 0 0.296875 0.125 0.558594 0.328125 0.742187 l 5.257813 5.257813 l -5.257813 5.261718 l -0.035156 0.03125 c -0.179688 0.183594 -0.292969 0.433594 -0.292969 0.707032 v 1 h 1 c 0.277344 0 0.527344 -0.109375 0.707031 -0.292969 l 0.035157 -0.03125 l 6.671874 -6.675781 l -6.671874 -6.671875 c -0.183594 -0.199219 -0.449219 -0.328125 -0.742188 -0.328125 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -980 -140)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -980 -140)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -980 -140)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 10.9375 0.996094 c -0.292969 0 -0.558594 0.128906 -0.742188 0.328125 l -6.671874 6.671875 l 6.671874 6.675781 c 0.011719 0.011719 0.023438 0.023437 0.035157 0.03125 c 0.179687 0.183594 0.429687 0.292969 0.707031 0.292969 h 1 v -1 c 0 -0.273438 -0.113281 -0.523438 -0.292969 -0.707032 c -0.011719 -0.007812 -0.019531 -0.019531 -0.035156 -0.03125 l -5.257813 -5.257812 l 5.292969 -5.292969 c 0.179688 -0.183593 0.292969 -0.433593 0.292969 -0.707031 v -1 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 13.980469 1.988281 c -0.261719 0.007813 -0.507813 0.117188 -0.6875 0.304688 l -0.984375 0.984375 c -1.285156 -0.828125 -2.78125 -1.273438 -4.308594 -1.277344 c -3.648438 0.003906 -6.832031 2.476562 -7.738281 6.011719 c 0.460937 1.746093 1.496093 3.285156 2.941406 4.371093 l -0.910156 0.910157 c -0.261719 0.25 -0.367188 0.625 -0.273438 0.972656 c 0.089844 0.351563 0.363281 0.625 0.714844 0.714844 c 0.347656 0.09375 0.722656 -0.011719 0.972656 -0.273438 l 11 -11 c 0.296875 -0.289062 0.382813 -0.726562 0.222657 -1.105469 c -0.160157 -0.382812 -0.539063 -0.625 -0.949219 -0.613281 z m -5.980469 2.011719 c 0.957031 0 1.886719 0.347656 2.609375 0.976562 l -1.417969 1.417969 c -0.34375 -0.257812 -0.761718 -0.394531 -1.191406 -0.394531 c -1.105469 0 -2 0.894531 -2 2 c 0 0.429688 0.140625 0.847656 0.394531 1.1875 l -1.417969 1.421875 c -0.628906 -0.726563 -0.972656 -1.652344 -0.976562 -2.609375 c 0 -2.210938 1.789062 -4 4 -4 z m 7.027344 2.207031 l -3.34375 3.34375 c -0.402344 0.960938 -1.167969 1.722657 -2.125 2.128907 l -2.28125 2.277343 c 0.242187 0.027344 0.480468 0.039063 0.722656 0.042969 c 3.648438 -0.003906 6.832031 -2.476562 7.738281 -6.011719 c -0.164062 -0.617187 -0.402343 -1.214843 -0.710937 -1.78125 z m -7.527344 0.792969 c 0.277344 0 0.5 0.222656 0.5 0.5 s -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 s 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1 +0,0 @@
<svg xml:space="preserve" width="246.15" height="200.013" xmlns="http://www.w3.org/2000/svg"><path d="M220.95 49.793c.15 2.17.15 4.34.15 6.53 0 66.73-50.8 143.69-143.69 143.69v-.04c-27.44.04-54.31-7.82-77.41-22.64 3.99.48 8 .72 12.02.73 22.74.02 44.83-7.61 62.72-21.66-21.61-.41-40.56-14.5-47.18-35.07a50.338 50.338 0 0 0 22.8-.87c-23.56-4.76-40.51-25.46-40.51-49.5v-.64a50.18 50.18 0 0 0 22.92 6.32c-22.19-14.83-29.03-44.35-15.63-67.43a143.333 143.333 0 0 0 104.08 52.76 50.532 50.532 0 0 1 14.61-48.25c20.34-19.12 52.33-18.14 71.45 2.19 11.31-2.23 22.15-6.38 32.07-12.26a50.69 50.69 0 0 1-22.2 27.93c10.01-1.18 19.79-3.86 29-7.95a102.594 102.594 0 0 1-25.2 26.16z" style="fill:#1d9bf0"/></svg>

Before

Width:  |  Height:  |  Size: 695 B

View File

@ -0,0 +1 @@
<svg width="1200" height="1227" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M714 519 1161 0h-106L667 451 357 0H0l468 682L0 1226h106l409-476 328 476h357L714 519ZM569 688l-47-68L144 80h163l304 436 48 68 396 566H892L569 688Z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 254 B

View File

@ -0,0 +1 @@
<svg width="1200" height="1227" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M714 519 1161 0h-106L667 451 357 0H0l468 682L0 1226h106l409-476 328 476h357L714 519ZM569 688l-47-68L144 80h163l304 436 48 68 396 566H892L569 688Z" fill="#000"/></svg>

After

Width:  |  Height:  |  Size: 254 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 2 1 h 5 v 14 h -5 z m 0 0" fill="#222222"/><path d="m 9 1 h 5 v 14 h -5 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -580 -1004)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -580 -1004)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -580 -1004)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 2 1 v 13.992188 h 1.398438 c 0.246093 0.003906 0.488281 -0.050782 0.699218 -0.171876 l 9.796875 -5.597656 c 0.433594 -0.242187 0.65625 -0.734375 0.65625 -1.226562 c 0 -0.492188 -0.222656 -0.984375 -0.65625 -1.222656 l -9.796875 -5.597657 c -0.210937 -0.121093 -0.453125 -0.175781 -0.699218 -0.175781 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -540 -1004)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -540 -1004)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -540 -1004)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g fill="#222222"><path d="m 1 2 h 14 v 2 h -14 z m 0 0"/><path d="m 1 7 h 14 v 2 h -14 z m 0 0"/><path d="m 1 12 h 14 v 2 h -14 z m 0 0"/></g><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -560 -804)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -560 -804)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -560 -804)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 7.996094 0 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 6 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 6 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 499 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 2 6.007812 c -1.105469 0 -2 0.894532 -2 2 c 0 1.101563 0.894531 2 2 2 s 2 -0.898437 2 -2 c 0 -1.105468 -0.894531 -2 -2 -2 z m 6 0 c -1.105469 0 -2 0.894532 -2 2 c 0 1.101563 0.894531 2 2 2 s 2 -0.898437 2 -2 c 0 -1.105468 -0.894531 -2 -2 -2 z m 6 0 c -1.105469 0 -2 0.894532 -2 2 c 0 1.101563 0.894531 2 2 2 s 2 -0.898437 2 -2 c 0 -1.105468 -0.894531 -2 -2 -2 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 535 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 7.40625 1 c -0.613281 0.007812 -1.234375 0.089844 -1.847656 0.257812 c -3.273438 0.875 -5.558594 3.851563 -5.558594 7.242188 s 2.285156 6.367188 5.558594 7.242188 c 3.273437 0.878906 6.742187 -0.554688 8.4375 -3.492188 c 0.277344 -0.476562 0.109375 -1.089844 -0.367188 -1.363281 c -0.476562 -0.277344 -1.089844 -0.113281 -1.367187 0.363281 c -1.246094 2.160156 -3.777344 3.207031 -6.1875 2.5625 c -2.40625 -0.644531 -4.074219 -2.816406 -4.074219 -5.3125 s 1.667969 -4.667969 4.074219 -5.3125 c 2.410156 -0.644531 4.941406 0.402344 6.1875 2.5625 c 0.058593 0.085938 0.125 0.164062 0.203125 0.230469 l -0.019532 0.011719 l -0.007812 0.007812 h -1.4375 c -0.550781 0 -1 0.449219 -1 1 v 1 h 6 v -6 h -1 c -0.550781 0 -1 0.449219 -1 1 v 1.6875 l -0.015625 0.011719 l -0.011719 0.011719 c -1.277344 -2.179688 -3.53125 -3.519532 -5.953125 -3.691407 c -0.203125 -0.015625 -0.40625 -0.019531 -0.613281 -0.015625 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -680 -844)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -680 -844)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -680 -844)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
<path d="m 1 3 h 14 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0"/>
<path d="m 4 4 v -1.5 c 0 -1.386719 1.113281 -2.5 2.5 -2.5 h 2.980469 c 1.382812 0 2.5 1.113281 2.5 2.5 v 1.5 h -2 v -1.5 c 0 -0.269531 -0.230469 -0.5 -0.5 -0.5 h -2.980469 c -0.269531 0 -0.5 0.230469 -0.5 0.5 v 1.5 z m 0 0"/>
<path d="m 4 4 v 9 c 0 0.546875 0.453125 1 1 1 h 6 c 0.546875 0 1 -0.453125 1 -1 v -9 h 2 v 9 c 0 1.660156 -1.339844 3 -3 3 h -6 c -1.660156 0 -3 -1.339844 -3 -3 v -9 z m 0 0"/>
<path d="m 7 7 v 5 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -5 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 s 0.5 0.222656 0.5 0.5 z m 0 0"/>
<path d="m 10 7 v 5 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -5 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 s 0.5 0.222656 0.5 0.5 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<g fill="#2e3436">
<path d="m 2 8 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 2.585938 l -3.292969 3.292969 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 s 1.023437 0.390625 1.414062 0 l 3.292969 -3.292969 v 2.585938 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -6 z m 0 0"/>
<path d="m 14 8 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 h -2.585938 l 3.292969 -3.292969 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 l -3.292969 3.292969 v -2.585938 c 0 -0.550781 -0.449219 -1 -1 -1 s -1 0.449219 -1 1 v 6 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 740 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 8.585938 l -1.292969 -1.292969 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 s -0.519531 0.105469 -0.707031 0.292969 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 l 3 3 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 l 3 -3 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 l -1.292969 1.292969 v -8.585938 c 0 -0.550781 -0.449219 -1 -1 -1 z m -7 14 v 2 h 14 v -2 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<path d="m 7.480469 0.015625 h 1.066406 c 0.589844 0 1.066406 0.476563 1.066406 1.066406 v 1.066407 c 0 0.589843 -0.476562 1.066406 -1.066406 1.066406 h -1.066406 c -0.589844 0 -1.066407 -0.476563 -1.066407 -1.066406 v -1.066407 c 0 -0.589843 0.476563 -1.066406 1.066407 -1.066406 z m 0 12.796875 h 1.066406 c 0.589844 0 1.066406 0.476562 1.066406 1.070312 v 1.0625 c 0 0.59375 -0.476562 1.070313 -1.066406 1.070313 h -1.066406 c -0.589844 0 -1.066407 -0.476563 -1.066407 -1.070313 v -1.0625 c 0 -0.59375 0.476563 -1.070312 1.066407 -1.070312 z m -5.5 -10.078125 l 0.753906 -0.753906 c 0.199219 -0.199219 0.46875 -0.3125 0.753906 -0.3125 c 0.28125 0 0.554688 0.113281 0.753907 0.3125 l 0.753906 0.753906 c 0.417968 0.417969 0.417968 1.089844 0 1.507813 l -0.753906 0.753906 c -0.199219 0.203125 -0.472657 0.316406 -0.753907 0.316406 c -0.285156 0 -0.554687 -0.113281 -0.753906 -0.316406 l -0.753906 -0.753906 c -0.203125 -0.199219 -0.316407 -0.46875 -0.316407 -0.753907 c 0 -0.28125 0.113282 -0.554687 0.316407 -0.753906 z m 9.050781 9.050781 l 0.753906 -0.753906 c 0.199219 -0.199219 0.472656 -0.3125 0.753906 -0.3125 c 0.285157 0 0.554688 0.113281 0.753907 0.3125 l 0.753906 0.753906 c 0.417969 0.417969 0.417969 1.089844 0 1.507813 l -0.753906 0.753906 c -0.199219 0.203125 -0.46875 0.316406 -0.753907 0.316406 c -0.28125 0 -0.554687 -0.113281 -0.753906 -0.316406 l -0.753906 -0.753906 c -0.203125 -0.199219 -0.3125 -0.46875 -0.3125 -0.753907 c 0 -0.28125 0.109375 -0.554687 0.3125 -0.753906 z m -11.015625 -3.238281 v -1.066406 c 0 -0.589844 0.472656 -1.066407 1.066406 -1.066407 h 1.066407 c 0.589843 0 1.066406 0.476563 1.066406 1.066407 v 1.066406 c 0 0.589844 -0.476563 1.066406 -1.066406 1.066406 h -1.066407 c -0.59375 0 -1.066406 -0.476562 -1.066406 -1.066406 z m 12.796875 0 v -1.066406 c 0 -0.589844 0.476562 -1.066407 1.066406 -1.066407 h 1.066406 c 0.59375 0 1.070313 0.476563 1.070313 1.066407 v 1.066406 c 0 0.589844 -0.476563 1.066406 -1.070313 1.066406 h -1.066406 c -0.589844 0 -1.066406 -0.476562 -1.066406 -1.066406 z m -10.078125 5.5 l -0.753906 -0.753906 c -0.203125 -0.199219 -0.316407 -0.46875 -0.316407 -0.753907 c 0 -0.28125 0.113282 -0.554687 0.316407 -0.753906 l 0.753906 -0.753906 c 0.199219 -0.199219 0.46875 -0.3125 0.753906 -0.3125 c 0.28125 0 0.554688 0.113281 0.753907 0.3125 l 0.753906 0.753906 c 0.417968 0.417969 0.417968 1.089844 0 1.507813 l -0.753906 0.753906 c -0.199219 0.203125 -0.472657 0.316406 -0.753907 0.316406 c -0.285156 0 -0.554687 -0.113281 -0.753906 -0.316406 z m 9.050781 -9.050781 l -0.753906 -0.753906 c -0.203125 -0.199219 -0.3125 -0.46875 -0.3125 -0.753907 c 0 -0.28125 0.109375 -0.554687 0.3125 -0.753906 l 0.753906 -0.753906 c 0.199219 -0.199219 0.472656 -0.3125 0.753906 -0.3125 c 0.285157 0 0.554688 0.113281 0.753907 0.3125 l 0.753906 0.753906 c 0.417969 0.417969 0.417969 1.089844 0 1.507813 l -0.753906 0.753906 c -0.199219 0.203125 -0.46875 0.316406 -0.753907 0.316406 c -0.28125 0 -0.554687 -0.113281 -0.753906 -0.316406 z m 0 0" fill="#241f31"/>
<path d="m 8.015625 1.515625 c -3.574219 0 -6.5 2.925781 -6.5 6.5 c 0 3.570313 2.925781 6.5 6.5 6.5 c 3.570313 0 6.5 -2.929687 6.5 -6.5 c 0 -3.574219 -2.929687 -6.5 -6.5 -6.5 z m 0 3 c 1.949219 0 3.5 1.546875 3.5 3.5 c 0 1.949219 -1.550781 3.5 -3.5 3.5 c -1.953125 0 -3.5 -1.550781 -3.5 -3.5 c 0 -1.953125 1.546875 -3.5 3.5 -3.5 z m 0 0" fill="#241f31"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -56 -876)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -56 -876)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -56 -876)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 10.875 10.0625 c -0.8125 0.148438 -1.105469 1.160156 -0.5 1.71875 l 3 3 c 0.957031 0.9375 2.363281 -0.5 1.40625 -1.4375 l -3 -3 c -0.234375 -0.238281 -0.574219 -0.347656 -0.90625 -0.28125 z m 0 0"/><path d="m 6.570312 0.0625 c -3.578124 0 -6.4999995 2.921875 -6.4999995 6.5 s 2.9218755 6.5 6.4999995 6.5 c 3.578126 0 6.5 -2.921875 6.5 -6.5 s -2.921874 -6.5 -6.5 -6.5 z m 0 2 c 2.5 0 4.5 2.003906 4.5 4.5 c 0 2.5 -2 4.5 -4.5 4.5 c -2.496093 0 -4.5 -2 -4.5 -4.5 c 0 -2.496094 2.003907 -4.5 4.5 -4.5 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 8 1 c -1.65625 0 -3 1.34375 -3 3 s 1.34375 3 3 3 s 3 -1.34375 3 -3 s -1.34375 -3 -3 -3 z m -1.5 7 c -2.492188 0 -4.5 2.007812 -4.5 4.5 v 0.5 c 0 1.109375 0.890625 2 2 2 h 6 v -1 h -3 v -4 h 3 v -1.972656 c -0.164062 -0.019532 -0.332031 -0.027344 -0.5 -0.027344 z m 4.5 0 v 3 h -3 v 2 h 3 v 3 h 2 v -3 h 3 v -2 h -3 v -3 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 495 B

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="8" x2="58" y1="69.999985" y2="69.999985">
<stop offset="0" stop-color="#4aaac9"/>
<stop offset="0.16" stop-color="#8bddf7"/>
<stop offset="0.32" stop-color="#4aaac9"/>
<stop offset="1" stop-color="#4aaac9"/>
</linearGradient>
<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="31.462524" x2="39" y1="113.997253" y2="113.997253">
<stop offset="0" stop-color="#4aaac9"/>
<stop offset="0.469318" stop-color="#74d7f7"/>
<stop offset="1" stop-color="#4aaac9"/>
</linearGradient>
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="104" x2="120" y1="84" y2="84">
<stop offset="0" stop-color="#1a5fb4"/>
<stop offset="0.5" stop-color="#4296ff"/>
<stop offset="1" stop-color="#1a5fb4"/>
</linearGradient>
<clipPath id="d">
<path d="m 8 24 h 97 v 84 h -97 z m 0 0"/>
</clipPath>
<clipPath id="e">
<path d="m 24 24 h 80 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -80 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0"/>
</clipPath>
<linearGradient id="f" gradientUnits="userSpaceOnUse" x1="55.608135" x2="71.783539" y1="100" y2="48.532928">
<stop offset="0" stop-color="#81dffe"/>
<stop offset="1" stop-color="#9bf8fe"/>
</linearGradient>
<filter id="g" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="h">
<g filter="url(#g)">
<rect fill-opacity="0.35" height="128" width="128"/>
</g>
</mask>
<clipPath id="i">
<rect height="152" width="192"/>
</clipPath>
<path d="m 24 28 h 72 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -72 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="url(#a)"/>
<path d="m 24 28 h 80 c 8.835938 0 16 7.164062 16 16 v 48 c 0 8.835938 -7.164062 16 -16 16 h -80 c -8.835938 0 -16 -7.164062 -16 -16 v -48 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#53bde0"/>
<path d="m 24 100 v 12 h 4 c 2.210938 0 4 1.789062 4 4 v 7 c 0 1.992188 1.183594 3.792969 3.011719 4.585938 c 1.828125 0.789062 3.953125 0.417968 5.40625 -0.945313 l 13.523437 -12.707031 c 1.324219 -1.242188 3.070313 -1.933594 4.882813 -1.933594 h 9.175781 v -12 z m 0 0" fill="url(#b)" fill-rule="evenodd"/>
<path d="m 102 58.566406 h 2 c 8.835938 0 16 7.164063 16 16 v 21.433594 c 0 8.835938 -7.164062 16 -16 16 h -2 c -8.835938 0 -16 -7.164062 -16 -16 v -21.433594 c 0 -8.835937 7.164062 -16 16 -16 z m 0 0" fill="url(#c)"/>
<path d="m 86 87 h 18 v 25 h -18 z m 0 0" fill="#1a5fb4"/>
<path d="m 48 24 h 56 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -56 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#3584e4"/>
<g clip-path="url(#d)">
<g clip-path="url(#e)">
<path d="m 78.804688 16.023438 l 0.527343 2.460937 c -1.207031 -0.082031 -2.417969 4.964844 -3.621093 4.988281 c -19.335938 0.371094 -38.003907 14.230469 -39.148438 34.546875 c -0.835938 14.761719 9.570312 29.839844 25.15625 30.488281 c 10.371094 0.433594 20.96875 -6.957031 21.242188 -17.925781 c 0.179687 -7.078125 -4.953126 -14.3125 -12.488282 -14.355469 c -4.683594 -0.027343 -9.484375 3.425782 -9.398437 8.429688 c 0.074219 2.980469 2.300781 6.042969 5.511719 5.902344 c 1.8125 -0.082032 3.691406 -1.488282 3.539062 -3.453125 c -0.078125 -1.042969 -0.921875 -2.128907 -2.0625 -1.996094 c -0.5625 0.066406 -1.148438 0.539063 -1.046875 1.15625 c 0.070313 0.273437 0.285156 0.570313 0.597656 0.5 c 0.121094 -0.03125 0.25 -0.144531 0.214844 -0.28125 c 0 -0.042969 -0.070313 -0.09375 -0.113281 -0.074219 c 0 0.003906 -0.070313 0.023438 0 0.035156 v 0.007813 v -0.003906 v 0.035156 c 0 0.050781 -0.09375 0.050781 -0.136719 0.03125 c -0.121094 -0.066406 -0.113281 -0.242187 -0.070313 -0.347656 c 0.164063 -0.265625 0.542969 -0.230469 0.777344 -0.074219 c 0.519532 0.367188 0.429688 1.117188 0.070313 1.558594 c -0.710938 0.898437 -2.074219 0.726562 -2.867188 0.042968 c -1.5 -1.28125 -1.167969 -3.601562 0.070313 -4.941406 c 2.167968 -2.367187 5.929687 -1.792968 8.074218 0.28125 c 3.601563 3.476563 2.652344 9.308594 -0.675781 12.597656 c -5.359375 5.292969 -14.109375 3.800782 -18.992187 -1.324218 c -7.570313 -7.953125 -5.304688 -20.664063 2.335937 -27.6875 c 11.480469 -10.550782 29.507813 -7.242188 39.363281 3.785156 c 14.414063 16.121094 9.6875 41.066406 -5.855468 54.582031 c -11.121094 9.226563 -22.246094 15.429688 -32.949219 19.4375 c -13.058594 75.445313 -75.230469 6.835938 -81.039063 -4.195312 l 0.285157 -105.054688 z m 0 0" fill="url(#f)"/>
</g>
</g>
<path d="m 24 106 v 2 h 4 c 2.210938 0 4 1.789062 4 4 v 7 c 0 1.992188 1.183594 3.792969 3.011719 4.585938 c 1.828125 0.789062 3.953125 0.417968 5.40625 -0.945313 l 13.523437 -12.707031 c 1.324219 -1.242188 3.070313 -1.933594 4.882813 -1.933594 h 9.175781 v -2 z m 0 0" fill="#81dffe" fill-rule="evenodd"/>
<g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m 173 17 h 8 c 1.65625 0 3 1.34375 3 3 v 7 c 0 1.65625 -1.34375 3 -3 3 h -8 c -1.65625 0 -3 -1.34375 -3 -3 v -7 c 0 -1.65625 1.34375 -3 3 -3 z m 0 0" fill="#241f31"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 8 1 c -1.644531 0 -3 1.355469 -3 3 v 4.34375 c -0.457031 -0.21875 -0.964844 -0.34375 -1.5 -0.34375 c -1.921875 0 -3.5 1.578125 -3.5 3.5 s 1.578125 3.5 3.5 3.5 c 1.914062 0 3.492188 -1.570312 3.5 -3.480469 c 0 -0.007812 0 -0.011719 0 -0.019531 v -7.5 c 0 -0.5625 0.4375 -1 1 -1 h 4 c 0.5625 0 1 0.4375 1 1 v 4.34375 c -0.457031 -0.21875 -0.964844 -0.34375 -1.5 -0.34375 c -1.921875 0 -3.5 1.578125 -3.5 3.5 s 1.578125 3.5 3.5 3.5 s 3.5 -1.578125 3.5 -3.5 v -7.5 c 0 -1.644531 -1.355469 -3 -3 -3 z m -4.5 9 c 0.839844 0 1.5 0.660156 1.5 1.5 v 0.015625 c -0.007812 0.832031 -0.664062 1.484375 -1.5 1.484375 c -0.839844 0 -1.5 -0.660156 -1.5 -1.5 s 0.660156 -1.5 1.5 -1.5 z m 8 0 c 0.839844 0 1.5 0.660156 1.5 1.5 s -0.660156 1.5 -1.5 1.5 s -1.5 -0.660156 -1.5 -1.5 s 0.660156 -1.5 1.5 -1.5 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 962 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 8 0 c 0.554688 0 1 0.445312 1 1 v 6.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -4.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 8.5 c 0 0.5 0.5 0.5 0.5 0.5 l 1.792969 -1.707031 c 0.1875 -0.195313 0.445312 -0.300781 0.71875 -0.304688 c 1.082031 0.085938 1.144531 1.269531 0.695312 1.71875 l -3 3 c -0.707031 0.792969 -1.757812 1.289063 -2.707031 1.292969 h -6 c -3 0 -3 -3 -3 -3 v -8 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 3.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 5.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 786 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 15 3.484375 l -1 -1 l -7.46875 7.515625 l -3.414062 -3.476562 l -2 2 l 5.414062 5.476562 l 9.46875 -9.515625 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -740 -864)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -740 -864)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -740 -864)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,151 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="b">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/>
</g>
</mask>
<clipPath id="c">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="d">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="e">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="f">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="g">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="h">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="i">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="j">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="k">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="l">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="m">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="n">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="o">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="p">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/>
</g>
</mask>
<clipPath id="q">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="r">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/>
</g>
</mask>
<clipPath id="s">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="t">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/>
</g>
</mask>
<clipPath id="u">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="v">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/>
</g>
</mask>
<clipPath id="w">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="x">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/>
</g>
</mask>
<clipPath id="y">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="z">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/>
</g>
</mask>
<clipPath id="A">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<g clip-path="url(#c)" mask="url(#b)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 562.460938 212.058594 h 10.449218 c -1.183594 0.492187 -1.296875 2.460937 0 3 h -10.449218 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#e)" mask="url(#d)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 16 632 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#g)" mask="url(#f)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 17 631 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 18 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#k)" mask="url(#j)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 16 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#m)" mask="url(#l)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 17 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#o)" mask="url(#n)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 19 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#q)" mask="url(#p)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 136 660 v 7 h 7 v -7 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#s)" mask="url(#r)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 199 642 h 3 v 12 h -3 z m 0 0" fill="#2e3436"/>
</g>
<path d="m 2 4 v 7 h -2 c 0 1.105469 0.894531 2 2 2 h 8 v -2 h -6 v -7 h 9 v 2 h 2 v -2 c 0 -1.105469 -0.894531 -2 -2 -2 h -9 c -1.105469 0 -2 0.894531 -2 2 z m 0 0" fill="#2e3436"/>
<path d="m 11 8 v 5 c 0 0.550781 0.449219 1 1 1 h 3 c 0.550781 0 1 -0.449219 1 -1 v -5 c 0 -0.550781 -0.449219 -1 -1 -1 h -3 c -0.550781 0 -1 0.449219 -1 1 z m 1 0 h 3 v 4 h -3 z m 0 0" fill="#2e3436"/>
<g clip-path="url(#u)" mask="url(#t)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 209.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#w)" mask="url(#v)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 206.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#y)" mask="url(#x)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 229.5 143.160156 c -0.546875 0 -1 0.457032 -1 1 c 0 0.546875 0.453125 1 1 1 s 1 -0.453125 1 -1 c 0 -0.542968 -0.453125 -1 -1 -1 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#A)" mask="url(#z)" transform="matrix(1 0 0 1 -100 -376)">
<path d="m 226.453125 143.160156 c -0.519531 0 -0.953125 0.433594 -0.953125 0.953125 v 0.09375 c 0 0.519531 0.433594 0.953125 0.953125 0.953125 h 0.09375 c 0.519531 0 0.953125 -0.433594 0.953125 -0.953125 v -0.09375 c 0 -0.519531 -0.433594 -0.953125 -0.953125 -0.953125 z m 0 0" fill="#2e3436"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -80 -416)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -80 -416)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -80 -416)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 2 4.035156 v 6.964844 h -2 c 0 1.105469 0.894531 2 2 2 h 8 v -2 h -6 v -7 h 9 v 2 h 2 v -2.042969 c 0 -1.082031 -0.875 -1.957031 -1.957031 -1.957031 h -9.007813 c -1.125 0 -2.035156 0.910156 -2.035156 2.035156 z m 0 0"/><path d="m 11 8.015625 v 5.042969 c 0 0.519531 0.421875 0.941406 0.941406 0.941406 h 3.058594 c 0.550781 0 1 -0.449219 1 -1 v -5 c 0 -0.550781 -0.449219 -1 -1 -1 h -2.984375 c -0.5625 0 -1.015625 0.453125 -1.015625 1.015625 z m 1 -0.015625 h 3 v 4 h -3 z m 0 0"/></g></svg>

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -20 -456)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -20 -456)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -20 -456)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#2e3436"><path d="m 8 2 v 5 h 5 z m 0 0"/><path d="m 2 13 c 0 1.660156 1.339844 3 3 3 h 6 c 1.660156 0 3 -1.339844 3 -3 v -6 c 0 -0.90625 -0.359375 -1.773438 -1 -2.414062 l -2.585938 -2.585938 c -0.640624 -0.640625 -1.507812 -1 -2.414062 -1 h -3 c -1.660156 0 -3 1.339844 -3 3 z m 3 -10 h 3 c 0.375 0 0.734375 0.148438 1 0.414062 l 2.585938 2.585938 c 0.265624 0.265625 0.414062 0.625 0.414062 1 v 6 c 0 0.546875 -0.453125 1 -1 1 h -6 c -0.546875 0 -1 -0.453125 -1 -1 v -9 c 0 -0.546875 0.453125 -1 1 -1 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -160 -80)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -160 -80)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -160 -80)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 8 0 c -4.417969 0 -8 3.582031 -8 8 s 3.582031 8 8 8 s 8 -3.582031 8 -8 s -3.582031 -8 -8 -8 z m 3.164062 5.859375 c 0.640626 0.046875 0.933594 0.824219 0.476563 1.28125 l -3.640625 3.640625 c -0.292969 0.292969 -0.769531 0.292969 -1.0625 0 l -2.175781 -2.109375 c -0.707031 -0.710937 0.355469 -1.773437 1.0625 -1.0625 l 1.644531 1.578125 l 3.109375 -3.109375 c 0.15625 -0.152344 0.367187 -0.234375 0.585937 -0.21875 z m 0 0" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 11.019531 7.996094 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 270 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 14 3.175781 v 3.824219 c 0 2.179688 -1.820312 4 -4 4 h -3.585938 l -2 2 h 5.585938 l 3 3 v -3 c 1.644531 0 3 -1.355469 3 -3 v -4 c 0 -1.292969 -0.839844 -2.40625 -2 -2.824219 z m 0 0" fill-opacity="0.34902"/><path d="m 3 0 c -1.644531 0 -3 1.355469 -3 3 v 4 c 0 1.644531 1.355469 3 3 3 v 3 l 3 -3 h 4 c 1.644531 0 3 -1.355469 3 -3 v -4 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 7 c 0.570312 0 1 0.429688 1 1 v 4 c 0 0.570312 -0.429688 1 -1 1 h -7 c -0.570312 0 -1 -0.429688 -1 -1 v -4 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1036 -200)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1036 -200)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1036 -200)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="140" height="140" viewBox="0 0 37.042 37.042">
<g color="#000" fill="#bebebe">
<path d="M31.75 5.292v14.717c0 1.364-.138 2.933-1.158 4.3-1.019 1.366-2.896 2.218-5.457 2.15H14.387l-2.729 2.645h12.154l7.938 7.938v-7.938h2.646a2.64 2.64 0 0 0 2.646-2.646V7.938a2.64 2.64 0 0 0-2.646-2.646z" style="marker:none" overflow="visible" fill-opacity=".365"/>
<path d="M2.646 0A2.64 2.64 0 0 0 0 2.646v18.52a2.64 2.64 0 0 0 2.646 2.646h2.646v7.938l7.937-7.938h13.23a2.64 2.64 0 0 0 2.645-2.645V2.646A2.64 2.64 0 0 0 26.458 0z" style="marker:none" overflow="visible"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 640 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -40 -416)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -40 -416)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -40 -416)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 8 1 c -2.199219 0 -4 1.800781 -4 4 v 2 c -1.109375 0 -2 0.890625 -2 2 v 5 c 0 0.554688 0.445312 1 1 1 h 10 c 0.554688 0 1 -0.445312 1 -1 v -5 c 0 -1.109375 -0.890625 -2 -2 -2 v -2 c 0 -2.199219 -1.800781 -4 -4 -4 z m 0 2 c 1.125 0 2 0.875 2 2 v 2 h -4 v -2 c 0 -1.125 0.875 -2 2 -2 z m 0 0" fill="#2e3436"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -60 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -60 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -60 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 8 0.0390625 c -4.410156 0 -7.9726562 3.5624995 -7.9726562 7.9726565 c 0 4.40625 3.5625002 7.972656 7.9726562 7.972656 c 4.40625 0 7.972656 -3.566406 7.972656 -7.972656 c 0 -4.410157 -3.566406 -7.9726565 -7.972656 -7.9726565 z m -5 6.9726565 h 10 v 2 h -10 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,151 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="b">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/>
</g>
</mask>
<clipPath id="c">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="d">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="e">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="f">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="g">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="h">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="i">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="j">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="k">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="l">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="m">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="n">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/>
</g>
</mask>
<clipPath id="o">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="p">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/>
</g>
</mask>
<clipPath id="q">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="r">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/>
</g>
</mask>
<clipPath id="s">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="t">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/>
</g>
</mask>
<clipPath id="u">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="v">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/>
</g>
</mask>
<clipPath id="w">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="x">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/>
</g>
</mask>
<clipPath id="y">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<mask id="z">
<g filter="url(#a)">
<path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/>
</g>
</mask>
<clipPath id="A">
<path d="m 0 0 h 1024 v 800 h -1024 z"/>
</clipPath>
<g clip-path="url(#c)" mask="url(#b)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 562.460938 212.058594 h 10.449218 c -1.183594 0.492187 -1.296875 2.460937 0 3 h -10.449218 z m 0 0" fill="#2e3436"/>
</g>
<path d="m 8 1 c -0.207031 0 -0.390625 0.125 -0.46875 0.320312 l -1.726562 4.488282 l -4.484376 1.722656 c -0.425781 0.167969 -0.425781 0.769531 0 0.9375 l 4.484376 1.722656 l 1.726562 4.488282 c 0.167969 0.425781 0.769531 0.425781 0.9375 0 l 1.726562 -4.488282 l 4.484376 -1.722656 c 0.425781 -0.167969 0.425781 -0.769531 0 -0.9375 l -4.484376 -1.722656 l -1.726562 -4.488282 c -0.074219 -0.191406 -0.261719 -0.320312 -0.46875 -0.320312 z m 0 6 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
<path d="m 3.480469 3 c -0.363281 0.011719 -0.589844 0.398438 -0.429688 0.722656 l 0.871094 1.738282 l 1.109375 -0.429688 l 0.429688 -1.109375 l -1.738282 -0.871094 c -0.074218 -0.035156 -0.15625 -0.054687 -0.242187 -0.050781 z m 9.039062 0 c -0.085937 -0.003906 -0.167969 0.015625 -0.242187 0.050781 l -1.738282 0.871094 l 0.429688 1.109375 l 1.109375 0.429688 l 0.871094 -1.738282 c 0.160156 -0.324218 -0.066407 -0.710937 -0.429688 -0.722656 z m -8.597656 7.539062 l -0.871094 1.738282 c -0.210937 0.429687 0.242188 0.882812 0.671875 0.671875 l 1.738282 -0.871094 l -0.429688 -1.109375 z m 8.15625 0 l -1.109375 0.429688 l -0.429688 1.109375 l 1.738282 0.871094 c 0.429687 0.210937 0.882812 -0.242188 0.671875 -0.671875 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
<g clip-path="url(#e)" mask="url(#d)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 16 632 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#g)" mask="url(#f)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 17 631 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 18 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#k)" mask="url(#j)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 16 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#m)" mask="url(#l)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 17 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#o)" mask="url(#n)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 19 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
</g>
<g clip-path="url(#q)" mask="url(#p)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 136 660 v 7 h 7 v -7 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#s)" mask="url(#r)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 199 642 h 3 v 12 h -3 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#u)" mask="url(#t)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 209.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#w)" mask="url(#v)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 206.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#y)" mask="url(#x)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 229.5 143.160156 c -0.546875 0 -1 0.457032 -1 1 c 0 0.546875 0.453125 1 1 1 s 1 -0.453125 1 -1 c 0 -0.542968 -0.453125 -1 -1 -1 z m 0 0" fill="#2e3436"/>
</g>
<g clip-path="url(#A)" mask="url(#z)" transform="matrix(1 0 0 1 -600 -80)">
<path d="m 226.453125 143.160156 c -0.519531 0 -0.953125 0.433594 -0.953125 0.953125 v 0.09375 c 0 0.519531 0.433594 0.953125 0.953125 0.953125 h 0.09375 c 0.519531 0 0.953125 -0.433594 0.953125 -0.953125 v -0.09375 c 0 -0.519531 -0.433594 -0.953125 -0.953125 -0.953125 z m 0 0" fill="#2e3436"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 8 1 c -0.207031 0 -0.390625 0.125 -0.46875 0.320312 l -1.726562 4.488282 l -4.484376 1.722656 c -0.425781 0.167969 -0.425781 0.769531 0 0.9375 l 4.484376 1.722656 l 1.726562 4.488282 c 0.167969 0.425781 0.769531 0.425781 0.9375 0 l 1.726562 -4.488282 l 4.484376 -1.722656 c 0.425781 -0.167969 0.425781 -0.769531 0 -0.9375 l -4.484376 -1.722656 l -1.726562 -4.488282 c -0.074219 -0.191406 -0.261719 -0.320312 -0.46875 -0.320312 z m 0 6 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0" fill="#222222"/><path d="m 3.480469 3 c -0.363281 0.011719 -0.589844 0.398438 -0.429688 0.722656 l 0.871094 1.738282 l 1.109375 -0.429688 l 0.429688 -1.109375 l -1.738282 -0.871094 c -0.074218 -0.035156 -0.15625 -0.054687 -0.242187 -0.050781 z m 9.039062 0 c -0.085937 -0.003906 -0.167969 0.015625 -0.242187 0.050781 l -1.738282 0.871094 l 0.429688 1.109375 l 1.109375 0.429688 l 0.871094 -1.738282 c 0.160156 -0.324218 -0.066407 -0.710937 -0.429688 -0.722656 z m -8.597656 7.539062 l -0.871094 1.738282 c -0.210937 0.429687 0.242188 0.882812 0.671875 0.671875 l 1.738282 -0.871094 l -0.429688 -1.109375 z m 8.15625 0 l -1.109375 0.429688 l -0.429688 1.109375 l 1.738282 0.871094 c 0.429687 0.210937 0.882812 -0.242188 0.671875 -0.671875 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -600 -80)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -600 -80)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -600 -80)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 12 16 c 1.660156 0 3 -1.339844 3 -3 v -6 c 0 -0.929688 -0.414062 -1.8125 -1.128906 -2.410156 l -4.460938 -3.71875 c -0.816406 -0.679688 -2.003906 -0.679688 -2.820312 0 l -4.460938 3.71875 c -0.714844 0.597656 -1.128906 1.480468 -1.128906 2.410156 v 6 c 0 1.660156 1.339844 3 3 3 z m -9 -3 v -6 c 0 -0.335938 0.148438 -0.65625 0.410156 -0.871094 l 4.460938 -3.71875 c 0.074218 -0.0625 0.183594 -0.0625 0.257812 0 l 4.460938 3.71875 c 0.261718 0.214844 0.410156 0.535156 0.410156 0.871094 v 6 c 0 0.546875 -0.453125 1 -1 1 h -8 c -0.546875 0 -1 -0.453125 -1 -1 z m 0 0"/>
<path d="m 7 8 h 2 c 0.550781 0 1 0.449219 1 1 v 5 c 0 0.550781 -0.449219 1 -1 1 h -2 c -0.550781 0 -1 -0.449219 -1 -1 v -5 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0"/>
</svg>

After

Width:  |  Height:  |  Size: 889 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -140 -456)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -140 -456)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -140 -456)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#2e3436"><path d="m 5.972656 5.023438 c -0.550781 0 -1 0.449218 -1 1 c 0 0.554687 0.449219 1 1 1 c 0.550782 0 1 -0.445313 1 -1 c 0 -0.550782 -0.449218 -1 -1 -1 z m 3.164063 2.175781 l -1.75 2.4375 c -0.101563 0.144531 -0.261719 0.234375 -0.4375 0.246093 c -0.175781 0.015626 -0.347657 -0.050781 -0.472657 -0.175781 l -0.410156 -0.417969 c -0.183594 -0.191406 -0.445312 -0.285156 -0.707031 -0.261718 c -0.261719 0.027344 -0.5 0.167968 -0.644531 0.386718 l -0.742188 1.109376 v 1 c 0 0.5 0.5 0.5 0.5 0.5 h 7 s 0.472656 -0.03125 0.5 -0.5 v -2.148438 c 0 -0.242188 -0.082031 -0.476562 -0.238281 -0.664062 l -1.277344 -1.554688 c -0.164062 -0.199219 -0.410156 -0.308594 -0.667969 -0.300781 c -0.261718 0.007812 -0.5 0.136719 -0.652343 0.34375 z m 0 0"/><path d="m 3.972656 1.023438 c -1.644531 0 -3 1.355468 -3 3 v 8 c 0 1.648437 1.355469 3 3 3 h 8 c 1.644532 0 3 -1.351563 3 -3 v -8 c 0 -1.644532 -1.355468 -3 -3 -3 z m 0 2 h 8 c 0.570313 0 1 0.429687 1 1 v 8 c 0 0.574218 -0.429687 1 -1 1 h -8 c -0.570312 0 -1 -0.425782 -1 -1 v -8 c 0 -0.570313 0.429688 -1 1 -1 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 0 c -4.410156 0 -8 3.589844 -8 8 s 3.589844 8 8 8 s 8 -3.589844 8 -8 s -3.589844 -8 -8 -8 z m 0 2 c 3.332031 0 6 2.667969 6 6 s -2.667969 6 -6 6 s -6 -2.667969 -6 -6 s 2.667969 -6 6 -6 z m 0 1.875 c -0.621094 0 -1.125 0.503906 -1.125 1.125 s 0.503906 1.125 1.125 1.125 s 1.125 -0.503906 1.125 -1.125 s -0.503906 -1.125 -1.125 -1.125 z m -1.523438 3.125 c -0.265624 0.011719 -0.476562 0.230469 -0.476562 0.5 c 0 0.277344 0.222656 0.5 0.5 0.5 h 0.5 v 3 h -0.5 c -0.277344 0 -0.5 0.222656 -0.5 0.5 s 0.222656 0.5 0.5 0.5 h 3 c 0.277344 0 0.5 -0.222656 0.5 -0.5 s -0.222656 -0.5 -0.5 -0.5 h -0.5 v -4 h -2.5 c -0.007812 0 -0.015625 0 -0.023438 0 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 813 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -220 -396)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -220 -396)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -220 -396)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 6 5 c -2.761719 0 -5 2.238281 -5 5 s 2.238281 5 5 5 s 5 -2.238281 5 -5 s -2.238281 -5 -5 -5 z m -1 5 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0"/><path d="m 15 1 h -3 l -6 6 l 4 1 l 1 -1 h 2 v -2 h 2 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 6.5 0 c -0.265625 0 -0.519531 0.105469 -0.707031 0.292969 l -1.707031 1.707031 h -1.023438 l -1.53125 -1.53125 l -1.0625 1.0625 l 14 14 l 1.0625 -1.0625 l -0.386719 -0.386719 c 0.527344 -0.539062 0.855469 -1.277343 0.855469 -2.082031 v -7 c 0 -1.644531 -1.355469 -3 -3 -3 h -1.085938 l -1.707031 -1.707031 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 z m 0.414062 2 h 2.171876 l 1.707031 1.707031 c 0.1875 0.1875 0.441406 0.292969 0.707031 0.292969 h 1.5 c 0.570312 0 1 0.429688 1 1 v 7 c 0 0.269531 -0.097656 0.503906 -0.257812 0.679688 l -2.4375 -2.4375 c 0.4375 -0.640626 0.695312 -1.414063 0.695312 -2.242188 c 0 -2.199219 -1.800781 -4 -4 -4 c -0.828125 0 -1.601562 0.257812 -2.242188 0.695312 l -0.808593 -0.808593 c 0.09375 -0.046875 0.183593 -0.105469 0.257812 -0.179688 z m -6.492187 1.484375 c -0.265625 0.445313 -0.421875 0.964844 -0.421875 1.515625 v 7 c 0 1.644531 1.355469 3 3 3 h 8.9375 l -2 -2 h -6.9375 c -0.570312 0 -1 -0.429688 -1 -1 v -6.9375 z m 7.578125 2.515625 c 1.117188 0 2 0.882812 2 2 c 0 0.277344 -0.058594 0.539062 -0.15625 0.78125 l -2.625 -2.625 c 0.242188 -0.097656 0.503906 -0.15625 0.78125 -0.15625 z m -3.90625 1.15625 c -0.058594 0.273438 -0.09375 0.554688 -0.09375 0.84375 c 0 2.199219 1.800781 4 4 4 c 0.289062 0 0.570312 -0.035156 0.84375 -0.09375 z m 0 0" fill="#2e3434"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1248 -184)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1248 -184)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1248 -184)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 8 0 c -0.828125 0 -1.5 0.671875 -1.5 1.5 c 0 0.074219 0.007812 0.148438 0.019531 0.222656 c -2.09375 0.652344 -3.519531 2.585938 -3.519531 4.777344 v 4.5 h -0.5 c -0.554688 0 -1 0.445312 -1 1 s 0.445312 1 1 1 h 11 c 0.554688 0 1 -0.445312 1 -1 s -0.445312 -1 -1 -1 h -0.5 v -4.40625 c 0 -0.03125 0 -0.0625 0.003906 -0.09375 c 0 -2.191406 -1.429687 -4.125 -3.519531 -4.777344 c 0.011719 -0.074218 0.015625 -0.148437 0.019531 -0.222656 c 0 -0.828125 -0.671875 -1.5 -1.5 -1.5 z m 0 3.5 c 1.65625 0 3 1.34375 3 3 v 4.5 h -6 v -4.5 c 0 -1.65625 1.34375 -3 3 -3 z m -2 10.5 c 0 0.714844 0.382812 1.375 1 1.730469 c 0.617188 0.359375 1.382812 0.359375 2 0 c 0.617188 -0.355469 1 -1.015625 1 -1.730469 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 8 1 c -1.65625 0 -3 1.34375 -3 3 s 1.34375 3 3 3 s 3 -1.34375 3 -3 s -1.34375 -3 -3 -3 z m -1.5 7 c -2.492188 0 -4.5 2.007812 -4.5 4.5 v 0.5 c 0 1.109375 0.890625 2 2 2 h 8 c 1.109375 0 2 -0.890625 2 -2 v -0.5 c 0 -2.492188 -2.007812 -4.5 -4.5 -4.5 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 424 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<path d="m 8 0 c 0.554688 0 1 0.445312 1 1 v 6.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -4.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 8.5 c 0 0.5 0.5 0.5 0.5 0.5 l 1.792969 -1.707031 c 0.1875 -0.195313 0.445312 -0.300781 0.71875 -0.304688 c 1.082031 0.085938 1.144531 1.269531 0.695312 1.71875 l -3 3 c -0.707031 0.792969 -1.757812 1.289063 -2.707031 1.292969 h -6 c -3 0 -3 -3 -3 -3 v -8 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 3.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 5.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 786 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1160 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1160 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1160 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 5 7 c -0.308594 0 -0.613281 0.089844 -0.8125 0.28125 l -3.59375 3.71875 l 3.65625 3.71875 c 0.199219 0.191406 0.441406 0.28125 0.75 0.28125 h 1 v -1 c 0 -0.257812 -0.128906 -0.527344 -0.3125 -0.71875 l -1.28125 -1.28125 h 4.59375 s 1 0 1 -1 c 0 0 0 -1 -1 -1 h -4.625 l 1.21875 -1.28125 c 0.183594 -0.191406 0.40625 -0.460938 0.40625 -0.71875 v -1 z m 0 0" fill-opacity="0.34902"/><path d="m 11 11 h 1.375 l 1.125 1.09375 l 1.09375 -1.09375 h 1.40625 v 1.46875 l -1.09375 1.0625 l 1.09375 1.0625 v 1.40625 h -1.4375 l -1.0625 -1.0625 l -1.0625 1.0625 h -1.4375 v -1.40625 l 1.0625 -1.0625 l -1.0625 -1.0625 z m 0 0"/><path d="m 11 9 c 0.308594 0 0.613281 -0.089844 0.8125 -0.28125 l 3.59375 -3.71875 l -3.65625 -3.71875 c -0.199219 -0.191406 -0.441406 -0.28125 -0.75 -0.28125 h -1 v 1 c 0 0.257812 0.128906 0.527344 0.3125 0.71875 l 1.28125 1.28125 h -4.59375 c -0.527344 -0.007812 -1 0.472656 -1 1 s 0.472656 1.007812 1 1 h 4.625 l -1.21875 1.28125 c -0.183594 0.191406 -0.40625 0.460938 -0.40625 0.71875 v 1 z m 0 0" fill-opacity="0.34902"/></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1040 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1040 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1040 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 5 7 c -0.308594 0 -0.613281 0.089844 -0.8125 0.28125 l -3.59375 3.71875 l 3.65625 3.71875 c 0.199219 0.191406 0.441406 0.28125 0.75 0.28125 h 1 v -1 c 0 -0.257812 -0.128906 -0.527344 -0.3125 -0.71875 l -1.28125 -1.28125 h 4.59375 c 0.527344 0.007812 1 -0.472656 1 -1 s -0.472656 -1.007812 -1 -1 h -4.625 l 1.21875 -1.28125 c 0.183594 -0.191406 0.40625 -0.460938 0.40625 -0.71875 v -1 z m 0 0"/><path d="m 11 9 c 0.308594 0 0.613281 -0.089844 0.8125 -0.28125 l 3.59375 -3.71875 l -3.65625 -3.71875 c -0.199219 -0.191406 -0.441406 -0.28125 -0.75 -0.28125 h -1 v 1 c 0 0.257812 0.128906 0.527344 0.3125 0.71875 l 1.28125 1.28125 h -4.59375 c -0.527344 -0.007812 -1 0.472656 -1 1 s 0.472656 1.007812 1 1 h 4.625 l -1.21875 1.28125 c -0.183594 0.191406 -0.40625 0.460938 -0.40625 0.71875 v 1 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1060 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1060 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1060 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 11 9 c 0.308594 0 0.613281 -0.089844 0.8125 -0.28125 l 3.59375 -3.71875 l -3.65625 -3.71875 c -0.199219 -0.191406 -0.441406 -0.28125 -0.75 -0.28125 h -1 v 1 c 0 0.257812 0.128906 0.527344 0.3125 0.71875 l 1.28125 1.28125 h -4.59375 c -0.527344 -0.007812 -1 0.472656 -1 1 s 0.472656 1.007812 1 1 h 4.625 l -1.21875 1.28125 c -0.183594 0.191406 -0.40625 0.460938 -0.40625 0.71875 v 1 z m 0 0"/><path d="m 5 7 c -0.308594 0 -0.613281 0.089844 -0.8125 0.28125 l -3.59375 3.71875 l 3.65625 3.71875 c 0.199219 0.191406 0.441406 0.28125 0.75 0.28125 h 1 v -1 c 0 -0.257812 -0.128906 -0.527344 -0.3125 -0.71875 l -1.28125 -1.28125 h 4.59375 c 0.527344 0.007812 1 -0.472656 1 -1 s -0.472656 -1.007812 -1 -1 h -4.625 l 1.21875 -1.28125 c 0.183594 -0.191406 0.40625 -0.460938 0.40625 -0.71875 v -1 z m 0 0" fill-opacity="0.34902"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#2e3436"><path d="M6 0a3 3 0 100 6 3 3 0 000-6zM4.5 7A4.49 4.49 0 000 11.5v.5c0 1 1 1 1 1h6V8.875c0-.83.587-1.554 1.355-1.79A4.532 4.532 0 007.5 7zM9 9v4h1V9z" style="marker:none" overflow="visible"/><path d="M8.875 8A.863.863 0 008 8.875v6.25c0 .492.383.875.875.875h6.25a.863.863 0 00.875-.875v-6.25A.863.863 0 0015.125 8zM11 9h2v1h-2zm0 2h2v4h-2z" style="marker:none" overflow="visible"/></g></svg>

After

Width:  |  Height:  |  Size: 488 B

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -220 -240)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -220 -240)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -220 -240)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 5 1 c -1.378906 0 -2.5 1.121094 -2.5 2.5 c 0 1.382812 1.121094 2.5 2.5 2.5 c 1.382812 0 2.5 -1.117188 2.5 -2.5 c 0 -1.378906 -1.117188 -2.5 -2.5 -2.5 z m 6 3 c -1.378906 0 -2.5 1.121094 -2.5 2.5 c 0 1.382812 1.121094 2.5 2.5 2.5 c 1.382812 0 2.5 -1.117188 2.5 -2.5 c 0 -1.378906 -1.117188 -2.5 -2.5 -2.5 z m -8 3 c -1.660156 0 -3 1.339844 -3 3 v 2 c 0 0.554688 0.445312 1 1 1 h 4.078125 c 0 -2.042969 1.582031 -3.734375 3.578125 -3.90625 c -0.589844 -0.535156 -0.980469 -1.257812 -1.109375 -2.042969 c -0.175781 -0.03125 -0.359375 -0.050781 -0.546875 -0.050781 z m 6 3 c -1.660156 0 -3 1.339844 -3 3 v 2 c 0 0.554688 0.445312 1 1 1 h 8 c 0.554688 0 1 -0.445312 1 -1 v -2 c 0 -1.660156 -1.335938 -3 -3 -3 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 0 2.316406 v 5.507813 c 0 2.214843 1.183594 4.257812 3.109375 5.355469 l 4.890625 2.796874 l 4.890625 -2.796874 c 1.925781 -1.097657 3.109375 -3.140626 3.109375 -5.355469 v -5.507813 l -8 -2.285156 z m 14.726562 1.71875 l -0.726562 -0.964844 v 4.753907 c 0 1.492187 -0.804688 2.878906 -2.101562 3.617187 l -4.394532 2.511719 h 0.992188 l -4.394532 -2.511719 c -1.296874 -0.738281 -2.101562 -2.125 -2.101562 -3.617187 v -4.753907 l -0.726562 0.964844 l 7 -2 h -0.546876 z m 0 0"/><path d="m 5.941406 6.957031 l 3.058594 3.058594 c 0.292969 0.292969 0.765625 0.292969 1.058594 0 c 0.292968 -0.292969 0.292968 -0.765625 0 -1.058594 l -3.058594 -3.058593 c -0.292969 -0.292969 -0.765625 -0.292969 -1.058594 0 c -0.292968 0.292968 -0.292968 0.765624 0 1.058593 z m 0 0"/><path d="m 9 5.898438 l -3.058594 3.058593 c -0.292968 0.292969 -0.292968 0.765625 0 1.058594 c 0.292969 0.292969 0.765625 0.292969 1.058594 0 l 3.058594 -3.058594 c 0.292968 -0.292969 0.292968 -0.765625 0 -1.058593 c -0.292969 -0.292969 -0.765625 -0.292969 -1.058594 0 z m 0 0"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -640 -303)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -640 -303)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -640 -303)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,17 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="16px" height="16px" viewBox="0 0 16 16" version="1.1" id="svg7" sodipodi:docname="verified-symbolic.svg" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata id="metadata13">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs11"/>
<sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-height="1016" id="namedview9" showgrid="false" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="true" inkscape:snap-bbox-midpoints="true" inkscape:zoom="11.313708" inkscape:cx="16.27964" inkscape:cy="11.763079" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="svg7">
<inkscape:grid type="xygrid" id="grid851"/>
</sodipodi:namedview>
<path id="path7578" style="fill:#2e3335;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" d="M 2,2 V 8.6191406 C 2,11.158741 3.5001,13.001285 7.4999998,14.333985 11.5001,13.001285 13,11.158741 13,8.6191406 V 2 Z M 10,4.2929687 11.414062,5.7070312 6.707031,10.416016 3.9999998,7.7070312 5.4140622,6.2929687 6.707031,7.5859375 Z"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 0 2.316406 v 5.507813 c 0 2.214843 1.183594 4.257812 3.109375 5.355469 l 4.890625 2.796874 l 4.890625 -2.796874 c 1.925781 -1.097657 3.109375 -3.140626 3.109375 -5.355469 v -5.507813 l -8 -2.285156 z m 14.726562 1.71875 l -0.726562 -0.964844 v 4.753907 c 0 1.492187 -0.804688 2.878906 -2.101562 3.617187 l -4.394532 2.511719 h 0.992188 l -4.394532 -2.511719 c -1.296874 -0.738281 -2.101562 -2.125 -2.101562 -3.617187 v -4.753907 l -0.726562 0.964844 l 7 -2 h -0.546876 z m 0 0"/><path d="m 5.46875 7.78125 l 2 2 c 0.292969 0.292969 0.769531 0.292969 1.0625 0 l 3 -3 c 0.292969 -0.292969 0.292969 -0.769531 0 -1.0625 s -0.769531 -0.292969 -1.0625 0 l -3 3 h 1.0625 l -2 -2 c -0.292969 -0.292969 -0.769531 -0.292969 -1.0625 0 s -0.292969 0.769531 0 1.0625 z m 0 0"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -620 -303)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -620 -303)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -620 -303)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 0 2.316406 v 5.507813 c 0 2.214843 1.183594 4.257812 3.109375 5.355469 l 4.890625 2.796874 l 4.890625 -2.796874 c 1.925781 -1.097657 3.109375 -3.140626 3.109375 -5.355469 v -5.507813 l -8 -2.285156 z m 14.726562 1.71875 l -0.726562 -0.964844 v 4.753907 c 0 1.492187 -0.804688 2.878906 -2.101562 3.617187 l -4.394532 2.511719 h 0.992188 l -4.394532 -2.511719 c -1.296874 -0.738281 -2.101562 -2.125 -2.101562 -3.617187 v -4.753907 l -0.726562 0.964844 l 7 -2 h -0.546876 z m 0 0"/><path d="m 7 4 v 2.988281 c 0 0.558594 0.453125 1.011719 1.011719 1.011719 c 0.550781 -0.007812 0.996093 -0.460938 0.988281 -1.011719 v -2.988281 z m 0 0"/><path d="m 9 10 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 s 1 0.449219 1 1 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -600 -303)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -600 -303)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -600 -303)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -300 -316)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -300 -316)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -300 -316)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 0.683594 4 h -0.683594 v 9 h 0.644531 l 4.355469 -4.535156 z m 0 0"/><path d="m 7 3.003906 c -1.644531 0 -3 1.355469 -3 3 v 5 c 0 1.644532 1.355469 3 3 3 h 6 c 1.644531 0 3 -1.355468 3 -3 v -5 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 6 c 0.570312 0 1 0.429688 1 1 v 5 c 0 0.574219 -0.429688 1 -1 1 h -6 c -0.570312 0 -1 -0.425781 -1 -1 v -5 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -40 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -40 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -40 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><path d="m 7.90625 0.105469 c -0.527344 -0.027344 -1.039062 0.28125 -1.4375 0.96875 l -6.25 11.59375 c -0.535156 0.964843 0.046875 2.34375 1.09375 2.34375 h 13.15625 c 0.980469 0 1.902344 -1.160157 1.21875 -2.34375 l -6.3125 -11.53125 c -0.398438 -0.648438 -0.941406 -1.003907 -1.46875 -1.03125 z m 0.0625 3.9375 c 0.542969 -0.019531 1.046875 0.488281 1.03125 1.03125 v 3.9375 c 0.007812 0.527343 -0.472656 1 -1 1 s -1.007812 -0.472657 -1 -1 v -3.9375 c -0.007812 -0.46875 0.355469 -0.914063 0.8125 -1 c 0.050781 -0.015625 0.101562 -0.023438 0.15625 -0.03125 z m 0.03125 6.96875 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,39 @@
## Code License
The Mapbox GL Style JSON file is originally derived from [OSM Bright from Mapbox Open Styles](https://github.com/mapbox/mapbox-gl-styles/blob/master/LICENSE.md). The modified Mapbox GL Style JSON retains the same BSD license.
> Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
> * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Mapbox nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## Design License
The look and feel of the OSM liberty map design is also derived (although heavily altered) from [OSM Bright from Mapbox Open Styles](https://github.com/mapbox/mapbox-gl-styles/blob/master/LICENSE.md) which is licensed under the Creative Commons Attribution 3.0 license.
The map is displaying and styling the data from [OpenMapTiles](https://openmaptiles.org/) with [CC-BY 4.0 design license](https://github.com/openmaptiles/openmaptiles/blob/master/LICENSE.md).
The products or services using this map style need to visibly credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to http://openmaptiles.org/. For a browsable electronic map based on OpenMapTiles and OpenStreetMap data, the credit should appear in the corner of the map. For example:
[© OpenMapTiles](https://openmaptiles.org/)
[© OpenStreetMap contributors](https://www.openstreetmap.org/copyright)
For printed and static maps a similar attribution should be made in a textual description near the image, in the same fashion as if you cite a photograph.
## Icons
OSM Liberty is using the [Maki POI icon set](https://github.com/mapbox/maki/blob/master/LICENSE.txt) which is licensed under CC0 1.0 Universal.
The right arrow was derived from [Wikipedia][wiki_arrow] which is in the public domain.
[wiki_arrow]: https://commons.wikimedia.org/wiki/File:Arrowright.svg
## Fonts
OSM Liberty is using the Roboto font family (Copyright 2011 Google).
Roboto is licensed under the [Apache License, Version 2.0](https://github.com/google/roboto/blob/master/LICENSE).

View File

@ -0,0 +1,14 @@
# OSM Liberty style
This is the vector style currently used in Maps. It is taken from
<https://github.com/maputnik/osm-liberty> at commit [539d0525](https://github.com/maputnik/osm-liberty/commit/539d0525421eb5be901ede630c49947dfe5a343f),
with a few modifications:
- Removed the Natural Earth raster layer, since libshumate doesn't support that
yet
- Removed the 3D buildings layer, since libshumate doesn't support fill-extrusion
layers yet
- Changed the tile source URL
OSM Liberty is covered by several licenses. See LICENSE.md, which is copied
from the upstream repository.

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Some files were not shown because too many files have changed in this diff Show More