GithubHelp home page GithubHelp logo

geopjr / tuba Goto Github PK

View Code? Open in Web Editor NEW
484.0 10.0 51.0 7.78 MB

Browse the Fediverse

Home Page: https://tuba.geopjr.dev/

License: GNU General Public License v3.0

CSS 2.80% Meson 2.06% Vala 94.40% Python 0.11% Makefile 0.56% Roff 0.08%
activitypub fediverse gtk gtk4 libadwaita mastodon tootle akkoma glitch-soc gotosocial

tuba's People

Contributors

aleuqabali avatar be4zad avatar bittin avatar bleakgrey avatar bragefuglseth avatar bugaevc avatar cagatay-y avatar callmefib3r avatar camelcasenick avatar daltux avatar danialbehzadi avatar flipflop97 avatar geopjr avatar gnuey56 avatar janezcz avatar jummit avatar kekun avatar kop316 avatar koyuawsmbrtn avatar larnicone avatar lukaszh77 avatar oscfdezdz avatar rene-coty avatar spaetz avatar vorons avatar vovathehuman avatar weblate avatar xabirequejo avatar yakushabb avatar zirisut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tuba's Issues

Keyboard short-cut support for posting toots

A keyboard short-cut for posting toots would be very useful, since I usually am using the keyboard for composing the toot. Changing to the mouse cursor just so I can press "publish" feels unnatural and unnecessary. Additionally, there could be a composing new toot short-cut too.
Proposed short-cuts:

  • Posting toot (Ctrl+Enter)
  • New toot (Ctrl+N)

(PS: thank you very much for rescuing/enhancing this project!)

[Request]: Add contextual actions on toots

Describe the request

I wanted to share a toot containing an image from Tooth on Dicord, but I can't because I can't copy its URL. So I tried to save the image… and I can't either.

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

[Request]: Autocomplete known user handles when writing posts

Describe the request

Hello ! 👋

Thanks a lot for forking this software, I find it very useful and would like to contribute to it when time permits 🙂

I would like to add the ability to autocomplete the known user handles when you start typing @, very much like it works on web or other clients.

This would indeed make it simpler to write posts and interact, by reducing user efforts.
Cheers;

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

[Bug]: Favorite yellow is too light

Describe the bug

The yellow used for the favorite star is much lighter than the other colors, and too low-contrast. I'd try a darker yellow, e.g. #e5a50a (darkest yellow on the GNOME palette), or if that's still too light a sightly darkened version of that.

Steps To Reproduce

  1. Open the app
  2. Star a post

Logs and/or Screenshots

image

Instance Backend

Mastodon

Operating System

Fedora 37

Package

Flatpak

Troubleshooting information

os: GNOME 43 (Flatpak runtime)
prefix: /app
flatpak: true
version: main-c31521b (development)
gtk: 4.8.3 (4.8.3)
libadwaita: 1.2.2 (1.2.2)
libsoup: 2.74.3 (2.74.3)

Additional Context

No response

[Bug]: Text overflows its content area in some languages

Describe the bug

Text overflows the content area. This looks like it's due to using Japanese mixed in with other languages.

Steps To Reproduce

The message is @ https://toot.community/@LostCabinPress/109773469157032332 and is in Japanese mixed with English, German, Spanish, and Italian.

Logs and/or Screenshots

image

Instance Backend

Mastodon

Operating System

Fedora

Package

Flatpak

Troubleshooting information

I compiled this manually but am running it via Flatpak on Fedora 37 Silverblue.

Additional Context

No response

unable to upload any image

What should happen:

Sending images should work

What happened instead:

Well, it does not :)

How to reproduce:

Click the pencil icon
add some text
select the "media" tab
click "Add media"
select an image
The path of the image is shown in the media tab
publish
Only the text is published, the media is nowhere to be found

Build context:

  • Distro: PureOS Byzantium
  • App version: main
  • Build type: Built from source

Logs:

There is no relevant log at all beside Gdk-WARNING: Compositor doesn't support moving popoups, relying on remapping

Leaking widgets

Describe the bug

All Status widgets refuse to get destroyed. As a side-effect, timeline-based pages like Profile or Conversations don't get destroyed too, and entity cache keeps the statuses and images they contained in memory forever.

I'm pretty sure it didn't happen in Tootle (can't tell for sure though, it didn't compile on my device), which means this is caused by the new functionality in the Status widget.

I couldn't pinpoint the exact cause yet - this issue needs testing.

Steps To Reproduce

  1. Open many timelines in the main window
  2. Navigate back
  3. Observe the terminal output - there are no messages like Destroying Status widget

Logs and/or Screenshots

No response

Instance Backend

Mastodon

Operating System

Pop!_OS 22.04 LTS

Package

Flatpak

Troubleshooting information

flatpak: true
version: 2.1.0
gtk: 4.8.3 (4.8.3)
libadwaita: 1.2.0 (1.2.0)

Additional Context

When destroyed properly, Status widgets emit a debug message specified in Status.vala (line 139). Additionally, unused API.Status entities get freed by entity cache with a message specified in AbstractCache.vala (line 39).

All of these aren't present in main.

Icon consistency

Some icons are filled, some are systems, some are unused.

  • Make sure icon style is consistent
  • Don't depend on system icons as their meaning can easily change based on system theme e.g. reply button being a straight down arrow or flipped completely changes its meaning

[Meta] clean up

  • (in)install scripts should instead be in a makefile or similar

  • get rid of screenshots and other big files

  • fix ci

  • update manifests, metadata and screenshots

  • update Po files

(More might be added)

Custom emoji picker

Tooth should have an emoji picker for custom emojis in the new post dialog.

[Request]: Improve padding on posts

Describe the request

The padding on posts is a bit too narrow, I'd increase it to e.g. 18px.

image

Inspector hack with 18:

image

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

New logo

For the sake of not conflicting with Tootle, in case it gets unarchived in the future, I went ahead and rebranded this fork.

The name I went with is Tooth. Another idea was Tooter (but it seems to already be an app/social media platform).

The current logo is Tootle's but in a blue accent (similar to Chromium). Since the name is Tooth, a new logo is needed (probably designed after a... tooth).

Consider renaming?

Hello! 👋

I think Tooth is inconsistent with the GNOME HIG section on naming recommendations given that I personally would not associate Mastodon with a tooth: https://developer.gnome.org/hig/guidelines/app-naming.html

Granted, I understand that these only are guidelines and don't need to be followed 100%, but I think having a name that is easy to associate with the application itself is nice. As such, I think it would be good to have a name associated with Mastodon. Maybe Trombone?

Feel free to disagree with me on this, but I wanted to propose it sooner than later given that renaming tends to go smoother the earlier you do it.

[Feature request]: Status widget needs to be refactored

Describe the bug

The more I think about Widgets.Status, the more I agree that its architecture has become questionable.

Currently, each Widgets.Status has a pre-instanced Widgets.VoteBox, Widgets.AttachmentBox, and emoji Gtk.FlowBox. These widgets stay even if their status entity doesn't really need them, so they just hang there being invisible. There really is no need to create so many useless widgets.

Ideally, the entire content box should be generated dynamically on demand (when bound to a API.Status) to avoid creating a larger memory footprint. Some widgets can be skipped altogether if the account backend doesn't support some features (like emoji reactions).

To make things worse, Notification widgets derive from Widget.Status, so they all succumb to this behavior as well (even though it makes no sense for a follow request to have a VoteBox at its disposal).

Steps To Reproduce

Inspect https://github.com/GeopJr/Tooth/blob/main/data/ui/widgets/status.ui#L220-L226 and https://github.com/GeopJr/Tooth/blob/main/data/ui/widgets/status.ui#L257-L264

Logs and/or Screenshots

No response

Instance Backend

Mastodon

Operating System

Pop!_OS 22.04 LTS

Package

Flatpak

Troubleshooting information

flatpak: false
version: main-15b8f4a (development)
gtk: 4.8.4 (4.8.4)
libadwaita: 1.2.1 (1.2.1)
libsoup: 2.74.2 (2.74.2)

Additional Context

No response

Translation license

Describe the request

https://hosted.weblate.org/projects/tooth/tooth/#information says GPLv3-only specifically,
whereas it isn't specified either way in https://github.com/GeopJr/Tooth

This means if a new A/GPLv4 comes out (and it is good), it won't be possible to switch to it (or the AGPLv3+) without asking every single translator first. That just seems worse to me.

It can be changed in
https://hosted.weblate.org/settings/tooth/tooth/
and
https://hosted.weblate.org/settings/tooth/glossary/

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

Toot/Post/Status & Profile bio content

Gtk labels cannot have images in them, making custom emoji support difficult.
At the same time we need to connect to signals that textview doesn't support (at least not as conveniently).

The current workaround I use for titles is to create a GtkButton with a box of GtkLabels and GtkImages from the title name (by splitting on :, checking for custom emojis etc).

While that kind-of works for titles, it doesn't for bios or toots because they require markup support.

My current plan is to use a webview to render them. Using a webview will also allow Tooth to support non-mastodon instances or future mastodon features like text formatting, markdown, latex, code blocks & more.

Remove or fix unmaintained features

Many features got semi-disabled (or were left broken) after the gtk4 PR.

  • Account switcher
    Removing accounts doesn't seem to work. fixed
    Streams and notifications get mixed.

  • Content Warnings
    The code still exists (and still causes issues 269549f) but seems to be semi-disabled. added

  • Lists fixed

Additionally, some parts are way too over-engineered for no clear reason (or I am just too unfamiliar with Vala).

Lastly, after this is done, all commented out code should also be removed.

Flatpak packaging

Hi, I was recently pointed to this fork by a friend when I mentioned that I wanted to find/make a libadwaita Mastodon client, and I'd love to package this on Flathub.
Would you be interested in working with me to create per-commit workflows, and a Flathub package?

[Bug]: Can I install stable version?

Describe the bug

Hello. I installed this app from source on Fedora 37, and it has icon and toolbar like it's beta (or smth like that). Is there a way to install version without it or remove these decorative issues?

(Sorry if this is a wrong place to ask or it's a dumb question)

Steps To Reproduce

Just open app

Logs and/or Screenshots

<paste your logs here>

изображение
изображение

Instance Backend

Mastodon

Operating System

Fedora 37

Package

Compiled manually

Troubleshooting information

flatpak: false
version: main-282f303 (development)
gtk: 4.8.3 (4.8.3)
libadwaita: 1.2.0 (1.2.0)
libsoup: 2.74.3 (2.74.3)

Additional Context

No response

[Bug]: list name does not show up in the Lists panel

Describe the bug

When looking at the... list... of Lists on my account, one of them is a blank row (no name displayed). However, clicking on the blank row shows the list and the correct name as expected.

Screenshot from 2023-01-30 12-48-34
Screenshot from 2023-01-30 12-48-53

Steps To Reproduce

  • Open Tooth.
  • Open side panel
  • Click on Lists
  • Empty row showing for one list name
  • Click on empty row
  • List opens correctly

Logs and/or Screenshots

No response

Instance Backend

Mastodon

Operating System

Ubuntu 22.10

Package

Compiled manually

Troubleshooting information

flatpak: false
version: main-79c211c (development)
gtk: 4.8.1 (4.8.1)
libadwaita: 1.2.0 (1.2.0)
libsoup: 2.74.3 (2.74.3)

Additional Context

No response

[ Feature request ] send shortcut

being able to send from the keyboard, i.e., not having to press tab six times, with a standard shortcut such as "ctrl+enter" would be a very nice addition

Add support for UnifiedPush

For both desktop and mobile Linux, https://unifiedpush.org is a standard that can deliver push notifications over D-Bus, while allowing the end-user to self-host infrastructure. UnifiedPush on Android is already being used by a few apps like Tusky and Fedilab ( mastodon clients ) , but the Linux implementation is new.
The UP chat is at https://matrix.to/#/#unifiedpush:matrix.org

It's probably a low-priory feature, but it's a nice thing to have.

Add post stats

Not sure about listing all the users that favorited/reblogged a post but showing a counter of them when a post is expanded is probably a good start.

incorrect toot text direction in RTL mode

What happened:

incorrect toot text direction in RTL mode

Screenshots:

  • RTL direction (incorrect):

Screenshot from 2022-11-27 17-36-28

  • LTR direction (correct):
    Screenshot from 2022-11-27 17-35-52

Build context:

  • Distro: Debian Sid
  • App version: 2.1.0
  • Build type: Built from source

[Bug]: Compilation Error on PureOS

Describe the bug

Hello! I am getting a compilation error on PureOS:

../src/Widgets/Status.vala:289.27-289.38: error: The name `BindingGroup' does not exist in the context of `Tooth.Widgets.Status.bind'
		var self_bindings = new BindingGroup ();
		                        ^^^^^^^^^^^^
../src/Widgets/Status.vala:290.29-290.40: error: The name `BindingGroup' does not exist in the context of `Tooth.Widgets.Status.bind'
		var formal_bindings = new BindingGroup ();
		                          ^^^^^^^^^^^^
../src/Widgets/Status.vala:121.5-121.26: error: The name `append' does not exist in the context of `Gtk.FlowBox' (gtk4)
				emoji_reactions.append(badge_button);
				^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 3 error(s), 0 warning(s)

This occurs on HEAD: 282f303

Steps To Reproduce

Download on PureOS, run install.sh

Logs and/or Screenshots

purism@pureos:~/installed/tooth/Tooth$ meson setup _build -Dprefix=/usr --sysconfdir=/etc
The Meson build system
Version: 0.56.2
Source dir: /home/purism/installed/tooth/Tooth
Build dir: /home/purism/installed/tooth/Tooth/_build
Build type: native build
Project name: dev.geopjr.tooth
Project version: 2.1.0
C compiler for the host machine: cc (gcc 10.2.1 "cc (Debian 10.2.1-6) 10.2.1 20210110")
C linker for the host machine: cc ld.bfd 2.35.2
Vala compiler for the host machine: valac (valac 0.48.17)
Host machine cpu family: aarch64
Host machine cpu: aarch64
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency gtk4 found: YES 4.6.5
Run-time dependency libadwaita-1 found: YES 1.2.0
Configuring Build.vala using configuration
Run-time dependency glib-2.0 found: YES 2.66.8
Run-time dependency gee-0.8 found: YES 0.20.4
Run-time dependency libsoup-2.4 found: YES 2.72.0
Run-time dependency json-glib-1.0 found: YES 1.6.2
Run-time dependency libxml-2.0 found: YES 2.9.10
Run-time dependency libsecret-1 found: YES 0.20.4
Program desktop-file-validate found: YES (/usr/bin/desktop-file-validate)
Program appstream-util found: YES (/usr/bin/appstream-util)
Program build-aux/meson_post_install.py found: YES (/usr/bin/python3 /home/purism/installed/tooth/Tooth/build-aux/meson_post_install.py)
Build targets in project: 8

Found ninja-1.10.1 at /usr/bin/ninja
purism@pureos:~/installed/tooth/Tooth$ meson compile -C _build
Found runner: ['/usr/bin/ninja']
ninja: Entering directory `_build'
[6/99] Compiling Vala source Build.val...la ../src/Widgets/VoteCheckButton.vala
FAILED: dev.geopjr.tooth.p/_build/Build.c dev.geopjr.tooth.p/src/API/Account.c dev.geopjr.tooth.p/src/API/AccountField.c dev.geopjr.tooth.p/src/API/Attachment.c dev.geopjr.tooth.p/src/API/Conversation.c dev.geopjr.tooth.p/src/API/Emoji.c dev.geopjr.tooth.p/src/API/EmojiReaction.c dev.geopjr.tooth.p/src/API/Entity.c dev.geopjr.tooth.p/src/API/Instance.c dev.geopjr.tooth.p/src/API/Instance/Mastodon/Configuration.c dev.geopjr.tooth.p/src/API/Instance/Mastodon/Configuration/MediaAttachments.c dev.geopjr.tooth.p/src/API/Instance/Mastodon/Configuration/Polls.c dev.geopjr.tooth.p/src/API/Instance/Mastodon/Configuration/Reactions.c dev.geopjr.tooth.p/src/API/Instance/Mastodon/Configuration/Statuses.c dev.geopjr.tooth.p/src/API/List.c dev.geopjr.tooth.p/src/API/Mention.c dev.geopjr.tooth.p/src/API/Notification.c dev.geopjr.tooth.p/src/API/Pleroma.c dev.geopjr.tooth.p/src/API/Relationship.c dev.geopjr.tooth.p/src/API/SearchResults.c dev.geopjr.tooth.p/src/API/Status.c dev.geopjr.tooth.p/src/API/Tag.c dev.geopjr.tooth.p/src/API/Poll.c dev.geopjr.tooth.p/src/API/PollOption.c dev.geopjr.tooth.p/src/Application.c dev.geopjr.tooth.p/src/Dialogs/Composer/AttachmentsPage.c dev.geopjr.tooth.p/src/Dialogs/Composer/AttachmentsPageAttachment.c dev.geopjr.tooth.p/src/Dialogs/Composer/Dialog.c dev.geopjr.tooth.p/src/Dialogs/Composer/EditorPage.c dev.geopjr.tooth.p/src/Dialogs/Composer/Page.c dev.geopjr.tooth.p/src/Dialogs/Composer/PollPage.c dev.geopjr.tooth.p/src/Dialogs/MainWindow.c dev.geopjr.tooth.p/src/Dialogs/NewAccount.c dev.geopjr.tooth.p/src/Dialogs/Preferences.c dev.geopjr.tooth.p/src/Dialogs/Saveable.c dev.geopjr.tooth.p/src/Services/Accounts/AccountHolder.c dev.geopjr.tooth.p/src/Services/Accounts/AccountStore.c dev.geopjr.tooth.p/src/Services/Accounts/InstanceAccount.c dev.geopjr.tooth.p/src/Services/Accounts/Mastodon/Account.c dev.geopjr.tooth.p/src/Services/Accounts/Places.c dev.geopjr.tooth.p/src/Services/Accounts/SecretAccountStore.c dev.geopjr.tooth.p/src/Services/Cache/AbstractCache.c dev.geopjr.tooth.p/src/Services/Cache/EntityCache.c dev.geopjr.tooth.p/src/Services/Cache/ImageCache.c dev.geopjr.tooth.p/src/Services/Network/Network.c dev.geopjr.tooth.p/src/Services/Network/Request.c dev.geopjr.tooth.p/src/Services/Network/Streamable.c dev.geopjr.tooth.p/src/Services/Network/Streams.c dev.geopjr.tooth.p/src/Services/Settings.c dev.geopjr.tooth.p/src/Utils/DateTime.c dev.geopjr.tooth.p/src/Utils/Host.c dev.geopjr.tooth.p/src/Utils/Html.c dev.geopjr.tooth.p/src/Views/Base.c dev.geopjr.tooth.p/src/Views/Bookmarks.c dev.geopjr.tooth.p/src/Views/ContentBase.c dev.geopjr.tooth.p/src/Views/Conversations.c dev.geopjr.tooth.p/src/Views/EditHistory.c dev.geopjr.tooth.p/src/Views/Favorites.c dev.geopjr.tooth.p/src/Views/Federated.c dev.geopjr.tooth.p/src/Views/Hashtag.c dev.geopjr.tooth.p/src/Views/Home.c dev.geopjr.tooth.p/src/Views/List.c dev.geopjr.tooth.p/src/Views/Lists.c dev.geopjr.tooth.p/src/Views/Local.c dev.geopjr.tooth.p/src/Views/FollowRequests.c dev.geopjr.tooth.p/src/Views/Main.c dev.geopjr.tooth.p/src/Views/Notifications.c dev.geopjr.tooth.p/src/Views/Profile.c dev.geopjr.tooth.p/src/Views/Search.c dev.geopjr.tooth.p/src/Views/Sidebar.c dev.geopjr.tooth.p/src/Views/TabbedBase.c dev.geopjr.tooth.p/src/Views/Thread.c dev.geopjr.tooth.p/src/Views/Timeline.c dev.geopjr.tooth.p/src/Widgets/Attachment/Box.c dev.geopjr.tooth.p/src/Widgets/Attachment/Image.c dev.geopjr.tooth.p/src/Widgets/Attachment/Item.c dev.geopjr.tooth.p/src/Widgets/Avatar.c dev.geopjr.tooth.p/src/Widgets/Background.c dev.geopjr.tooth.p/src/Widgets/Conversation.c dev.geopjr.tooth.p/src/Widgets/Emoji.c dev.geopjr.tooth.p/src/Widgets/LockableToggleButton.c dev.geopjr.tooth.p/src/Widgets/MarkupView.c dev.geopjr.tooth.p/src/Widgets/Notification.c dev.geopjr.tooth.p/src/Widgets/RelationshipButton.c dev.geopjr.tooth.p/src/Widgets/RichLabel.c dev.geopjr.tooth.p/src/Widgets/RichLabelContainer.c dev.geopjr.tooth.p/src/Widgets/EmojiLabel.c dev.geopjr.tooth.p/src/Widgets/Status.c dev.geopjr.tooth.p/src/Widgets/StatusActionButton.c dev.geopjr.tooth.p/src/Widgets/Widgetizable.c dev.geopjr.tooth.p/src/Widgets/VoteBox.c dev.geopjr.tooth.p/src/Widgets/VoteCheckButton.c 
valac -C --debug --debug --pkg libadwaita-1 --pkg gtk4 --pkg libsecret-1 --pkg libxml-2.0 --pkg json-glib-1.0 --pkg libsoup-2.4 --pkg gee-0.8 --target-glib 2.30.0 --pkg glib-2.0 --color=always --directory dev.geopjr.tooth.p --basedir ../ --gresources=../data/gresource.xml Build.vala ../src/API/Account.vala ../src/API/AccountField.vala ../src/API/Attachment.vala ../src/API/Conversation.vala ../src/API/Emoji.vala ../src/API/EmojiReaction.vala ../src/API/Entity.vala ../src/API/Instance.vala ../src/API/Instance/Mastodon/Configuration.vala ../src/API/Instance/Mastodon/Configuration/MediaAttachments.vala ../src/API/Instance/Mastodon/Configuration/Polls.vala ../src/API/Instance/Mastodon/Configuration/Reactions.vala ../src/API/Instance/Mastodon/Configuration/Statuses.vala ../src/API/List.vala ../src/API/Mention.vala ../src/API/Notification.vala ../src/API/Pleroma.vala ../src/API/Relationship.vala ../src/API/SearchResults.vala ../src/API/Status.vala ../src/API/Tag.vala ../src/API/Poll.vala ../src/API/PollOption.vala ../src/Application.vala ../src/Dialogs/Composer/AttachmentsPage.vala ../src/Dialogs/Composer/AttachmentsPageAttachment.vala ../src/Dialogs/Composer/Dialog.vala ../src/Dialogs/Composer/EditorPage.vala ../src/Dialogs/Composer/Page.vala ../src/Dialogs/Composer/PollPage.vala ../src/Dialogs/MainWindow.vala ../src/Dialogs/NewAccount.vala ../src/Dialogs/Preferences.vala ../src/Dialogs/Saveable.vala ../src/Services/Accounts/AccountHolder.vala ../src/Services/Accounts/AccountStore.vala ../src/Services/Accounts/InstanceAccount.vala ../src/Services/Accounts/Mastodon/Account.vala ../src/Services/Accounts/Places.vala ../src/Services/Accounts/SecretAccountStore.vala ../src/Services/Cache/AbstractCache.vala ../src/Services/Cache/EntityCache.vala ../src/Services/Cache/ImageCache.vala ../src/Services/Network/Network.vala ../src/Services/Network/Request.vala ../src/Services/Network/Streamable.vala ../src/Services/Network/Streams.vala ../src/Services/Settings.vala ../src/Utils/DateTime.vala ../src/Utils/Host.vala ../src/Utils/Html.vala ../src/Views/Base.vala ../src/Views/Bookmarks.vala ../src/Views/ContentBase.vala ../src/Views/Conversations.vala ../src/Views/EditHistory.vala ../src/Views/Favorites.vala ../src/Views/Federated.vala ../src/Views/Hashtag.vala ../src/Views/Home.vala ../src/Views/List.vala ../src/Views/Lists.vala ../src/Views/Local.vala ../src/Views/FollowRequests.vala ../src/Views/Main.vala ../src/Views/Notifications.vala ../src/Views/Profile.vala ../src/Views/Search.vala ../src/Views/Sidebar.vala ../src/Views/TabbedBase.vala ../src/Views/Thread.vala ../src/Views/Timeline.vala ../src/Widgets/Attachment/Box.vala ../src/Widgets/Attachment/Image.vala ../src/Widgets/Attachment/Item.vala ../src/Widgets/Avatar.vala ../src/Widgets/Background.vala ../src/Widgets/Conversation.vala ../src/Widgets/Emoji.vala ../src/Widgets/LockableToggleButton.vala ../src/Widgets/MarkupView.vala ../src/Widgets/Notification.vala ../src/Widgets/RelationshipButton.vala ../src/Widgets/RichLabel.vala ../src/Widgets/RichLabelContainer.vala ../src/Widgets/EmojiLabel.vala ../src/Widgets/Status.vala ../src/Widgets/StatusActionButton.vala ../src/Widgets/Widgetizable.vala ../src/Widgets/VoteBox.vala ../src/Widgets/VoteCheckButton.vala
../src/Widgets/Status.vala:289.27-289.38: error: The name `BindingGroup' does not exist in the context of `Tooth.Widgets.Status.bind'
		var self_bindings = new BindingGroup ();
		                        ^^^^^^^^^^^^
../src/Widgets/Status.vala:290.29-290.40: error: The name `BindingGroup' does not exist in the context of `Tooth.Widgets.Status.bind'
		var formal_bindings = new BindingGroup ();
		                          ^^^^^^^^^^^^
../src/Widgets/Status.vala:121.5-121.26: error: The name `append' does not exist in the context of `Gtk.FlowBox' (gtk4)
				emoji_reactions.append(badge_button);
				^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 3 error(s), 0 warning(s)
ninja: build stopped: subcommand failed.

Instance Backend

Mastodon

Operating System

PureOS Byzantium

Package

Compiled manually

Troubleshooting information

N/A, Compilation error

Additional Context

No response

Support RTL languages for single line texts

What should happen:

Support RTL for single line texts

What happened instead:

If the RTL text is more than one line, it becomes RTL, but if it is single line, it becomes LTR

Screenshots:

  • Something that is:

Something that is

  • Something that should be:

Something that should be

Build context:

  • Distro: Debian Sid
  • App version: 2.1.0
  • Build type: Built from source

[meta] Road to 0.1.0 (or 3.0.0)

I'm satisfied with the current state of Tooth and ready to make the first release:
(in no particular order)

  • Finish branding (#6 #28)
  • Go over all strings, review them and generate pot file (#75)
  • Update readme
  • Take screenshots for the store page
  • Website
  • Publish to Flathub (#15)

About the version: 2.1.0 was the dev version of Tootle that I never changed (I didn't expect it to be packaged prior to an official release), if marking the release as 0.1.0 causes problems in repos, then I guess I'll go with 3.0.0.

[Request]: Improve boost styling

Describe the request

The large button with the visible background for boosts makes them stand out a bit too much in the timeline.

image

I'd try something like this:

  • Smaller text size
  • Dimmed style
  • Less padding
  • .flat background

On top of that it could be interesting to do something similar to Elk, with a smaller booser avatar behind the author avatar, like so:

image

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

account view is truncated on mobile

What should happen:

The view should fit the screen on mobiles

What happened instead:

The view is wider than the screen

How to reproduce:

Open any account view on mobile

Screenshots (if applicable):

2022-12-12-142432

Build context:

  • Distro: PureOS Byzantium on Librem 5
  • App version: main
  • Build type: Built from source

Logs:

(Terminal logs are often invaluable. If you can, launch the app from terminal with dev.geopjr.tooth and paste the output here)

Additional info (if needed):

__

Debian packaging

Hello @GeopJr and thank you for maintaining Tooth. Time ago I packaged Tootle for Debian and derivatives (Ubuntu, etc). Can you please help me understand how to migrate the packages from Tootle to Tooth?

  1. Are you planning to make a release soon? If not, would it be OK to publish an experimental version based on the current git head?
  2. Is Tooth going to import an existing Tootle configuration from ~/.config/com.github.bleakgrey.tootle ?
  3. Is Tooth going to conflict with an already-installed Tootle?

Thank you in advance!

Misskey API support

Having this act as more of a cross-fediverse client rather than specifically a Mastodon client would help differentiate it :)

[Request]: In-app media viewer

Describe the request

I gave main a try, and it's looking really good, kudos!

The biggest missing feature for daily usage for me is an in-app viewer for images and videos, I'd recommend copying what Fractal does for this (it has a very nice back gesture, among other things).

fractal-mediaviewer.mp4

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

Better legibility: custom font size & improved line height

Thanks for picking up Tootle. Tooth looks great so far!

It's often hard to read lots of text on the screen, as I need to wear glasses due to nearsightedness and astigmatism. Reading fonts at a smaller size is especially difficult in messages and documents. Default UI text is usually OK, but reading more than a bit is harder, so I often crank up document text sizes. (Note: Changing global font size on GNOME is overkill, as I don't need all text and UI to be larger.)

Could Tooth support larger fonts for posts? And possibly adjust the line-height too (it feels a little too tight at the moment)?

Add ARM Flatpak to Github actions

It would be nice to have Github actions produce an ARM Flatpak alongside the x86 one so that Tooth can be easily tested on mobile devices

License clarification

Hello and thanks for developing Tooth.
According to license_type in src/Application.vala and the badge in the README.md file Tooth is strictly under GPL v3.
According to data/dev.geopjr.tooth.appdata.xml.in it is under GPL-3.0+ meaning that users can pick any future version of the license at they choice.

I understand that those files might come from @bleakgrey 's repo but this little conflict should be addressed anyways if possible.

(As a side note, it is considered a good practice to add a small comment at the top of each source code file to indicate authorship and license)

Thank you!
Related to #27

[Request]: Update name with one that complies with the GNOME HIG

Describe the request

I propose to change the name of Tooth to one that complies with the GNOME HIG. The GNOME App Naming guidelines discourages the use of puns. I'm not sure, but "Tooth" is a pun right?

What do you think? We can brainstorm if this proposal is accepted.

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

Select text, copy

Standard text selection to copy text would be very handy. Right now, clicking a toot will open the full text, but even there I can't select or copy text. Please consider enabling this feature. Thank you for your work on a native Linux Mastodon client!

[Request]: GoToSocial support

Describe the request

Support GoToSocial

Implementation Details

  • This should be an option in settings.
  • This should be only available to some fediverse backends. (Include which ones on the above field).
  • This is client-only (and shouldn't sync with the instance).
  • This follows the GNOME HIG.

[Bug]: Wrap tooltip text

Describe the bug

Tooltips with long text can extend the length of the monitor, which is not ideal. Tooltips should have a maximum size and their text should be wrapped.

Steps To Reproduce

  1. Open a post that contains an image with long alt text
  2. Hover over the image
  3. Observe the tooltip

Logs and/or Screenshots

Screenshot from 2023-01-25 14-30-27

Instance Backend

Mastodon

Operating System

Fedora Silverblue 37

Package

Flatpak

Troubleshooting information

flatpak: true
version: main-4e53d0e (development)
gtk: 4.8.3 (4.8.3)
libadwaita: 1.2.1 (1.2.1)
libsoup: 2.74.3 (2.74.3)

Additional Context

No response

Failed to perform TLS handshake

What happened:

Tooth is not working since two days ago and stays on loading, i also logged out and tried another instances but it doesn't answer.
The instances load well in the browser and have no problems. Also, I live in Iran, and because of the Mahsa Amini protests, internet censorship has been intensified by the Islamic Republic regime.

Build context:

  • Distro: Debian Sid
  • App version:: 2.1.0
  • Build type:: Built from source

Logs:

** Message: 16:54:59.641: Build.vala:30: Tooth 2.1.0
** Message: 16:54:59.641: Build.vala:30: Running on: Debian GNU/Linux Unknown
** Message: 16:54:59.641: Build.vala:30: Build prefix: "/usr/local"
** Message: 16:54:59.682: SecretAccountStore.vala:11: Using libsecret v0.20.5
** Message: 16:54:59.716: Streams.vala:68: Opening stream: https://im-in.space/api/v1/streaming/?stream=user
** Message: 16:54:59.717: Network.vala:49: GET: https://im-in.space/api/v1/markers?timeline[]=notifications
** Message: 16:54:59.717: SecretAccountStore.vala:45: Loaded 1 accounts
** Message: 16:54:59.717: AccountStore.vala:85: Activating @[email protected]...
** Message: 16:54:59.717: Network.vala:49: GET: https://im-in.space/api/v1/accounts/verify_credentials
** Message: 16:54:59.718: Application.vala:150: Presenting MainWindow
** Message: 16:54:59.738: Network.vala:49: GET: https://im-in.space/system/accounts/avatars/109/309/754/313/927/280/original/0d7d77effb4962c9.png
** Message: 16:55:00.369: Network.vala:49: GET: https://im-in.space/api/v1/timelines/home?limit=10
** Message: 16:55:00.369: Network.vala:49: GET: https://im-in.space/api/v1/notifications?limit=10
** Message: 16:55:00.369: Network.vala:49: GET: https://im-in.space/api/v1/conversations?limit=10

** (dev.geopjr.tooth:3437): WARNING **: 16:55:19.982: Streams.vala:76: Error opening stream: The server did not accept the WebSocket handshake.

** (dev.geopjr.tooth:3437): CRITICAL **: 16:55:19.986: Network.vala:62: Should be ecb: 6 Peer failed to perform TLS handshake: Error receiving data: Connection reset by peer

** (dev.geopjr.tooth:3437): WARNING **: 16:55:39.436: ImageCache.vala:44: Failed to download image at "https://im-in.space/system/accounts/avatars/109/309/754/313/927/280/original/0d7d77effb4962c9.png". Server returned Peer failed to perform TLS handshake: Error receiving data: Connection reset by peer.

** (dev.geopjr.tooth:3437): CRITICAL **: 16:55:39.437: Network.vala:62: Should be ecb: 6 Peer failed to perform TLS handshake: Error receiving data: Connection reset by peer

** (dev.geopjr.tooth:3437): CRITICAL **: 16:55:39.440: Network.vala:62: Should be ecb: 6 Peer failed to perform TLS handshake: Error receiving data: Connection reset by peer

** (dev.geopjr.tooth:3437): CRITICAL **: 16:55:58.897: Network.vala:62: Should be ecb: 6 Peer failed to perform TLS handshake: Error receiving data: Connection reset by peer

** (dev.geopjr.tooth:3437): CRITICAL **: 16:55:58.902: Network.vala:62: Should be ecb: 6 Peer failed to perform TLS handshake: Error receiving data: Connection reset by peer

** (dev.geopjr.tooth:3437): CRITICAL **: 16:56:18.347: Network.vala:62: Should be ecb: 6 Peer failed to perform TLS handshake: Error receiving data: Connection reset by peer

Alt text

Tooth should be able to set alt text when posting media.

Bug Report - support dark theme in the app

What should happen:

__

tooth should support black theme

What happened instead:

__
tootle supported dark theme, but moving to tooth, there is no option to choose dark theme. Though choosing system wide dark theme switches tooth also to dark theme. It may be a good idea to expose this option in tooth also. Though not very strong about it as well.

How to reproduce:

  1. __
  2. __

Screenshots (if applicable):

__

Build context:

Logs:

(Terminal logs are often invaluable. If you can, launch the app from terminal with dev.geopjr.tooth and paste the output here)

Additional info (if needed):

__

[Bug]: Flashing Follow Requests

Describe the bug

"Follow Requests" is initially visible in the app sidebar. Then the timelines are done loading and there are no pending follow requests, the item becomes hidden.

Perhaps this place should be hidden by default, becoming visible only when there are active requests.

Steps To Reproduce

  1. Open the app
  2. Observe the visibility of "Follow Requests" in the sidebar

Logs and/or Screenshots

No response

Instance Backend

Mastodon

Operating System

Pop!_OS 22.04 LTS

Package

Flatpak

Troubleshooting information

flatpak: false
version: main-15b8f4a (development)
gtk: 4.8.4 (4.8.4)
libadwaita: 1.2.1 (1.2.1)
libsoup: 2.74.2 (2.74.2)

Additional Context

No response

[Bug]: unable to choose all post options on mobile

Describe the bug

The window to post a new toot is not really mobile friendly. that would be ok, but it actually prevent to send private message as it is out of the bound of the screen, without possibility to scroll

See screenshot

Steps To Reproduce

use a linux mobile
write a toot
try to select some options
you can't

Logs and/or Screenshots

2023-01-27-145403

Instance Backend

I'm not sure / Other

Operating System

pureos

Package

Flatpak

Troubleshooting information

flatpak: true
version: main-78a183f (development)
gtk: 4.8.3 (4.8.3)
libadwaita: 1.2.1 (1.2.1)
libsoup: 2.74.3 (2.74.3)

Additional Context

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.