geopjr / tuba Goto Github PK
View Code? Open in Web Editor NEWBrowse the Fediverse
Home Page: https://tuba.geopjr.dev/
License: GNU General Public License v3.0
Browse the Fediverse
Home Page: https://tuba.geopjr.dev/
License: GNU General Public License v3.0
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:
(PS: thank you very much for rescuing/enhancing this project!)
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.
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;
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.
Mastodon
Fedora 37
Flatpak
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)
No response
Text overflows the content area. This looks like it's due to using Japanese mixed in with other languages.
The message is @ https://toot.community/@LostCabinPress/109773469157032332 and is in Japanese mixed with English, German, Spanish, and Italian.
Mastodon
Fedora
Flatpak
I compiled this manually but am running it via Flatpak on Fedora 37 Silverblue.
No response
Sending images should work
Well, it does not :)
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
There is no relevant log at all beside Gdk-WARNING: Compositor doesn't support moving popoups, relying on remapping
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.
Destroying Status widget
No response
Mastodon
Pop!_OS 22.04 LTS
Flatpak
flatpak: true
version: 2.1.0
gtk: 4.8.3 (4.8.3)
libadwaita: 1.2.0 (1.2.0)
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
.
Some icons are filled, some are systems, some are unused.
Tooth should be able to handle more media formats like mp3.
(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)
Tooth should have an emoji picker for custom emojis in the new post dialog.
The padding on posts is a bit too narrow, I'd increase it to e.g. 18px.
Inspector hack with 18:
At least voting/viewing results
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).
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.
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).
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
No response
Mastodon
Pop!_OS 22.04 LTS
Flatpak
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)
No response
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/
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.
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.
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?
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)
Just open app
<paste your logs here>
Mastodon
Fedora 37
Compiled manually
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)
No response
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.
No response
Mastodon
Ubuntu 22.10
Compiled manually
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)
No response
Should migrate to libsoup3
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
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.
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.
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
Download on PureOS, run install.sh
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.
Mastodon
PureOS Byzantium
Compiled manually
N/A, Compilation error
No response
Support RTL for single line texts
If the RTL text is more than one line, it becomes RTL, but if it is single line, it becomes LTR
I'm satisfied with the current state of Tooth and ready to make the first release:
(in no particular order)
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
.
The large button with the visible background for boosts makes them stand out a bit too much in the timeline.
I'd try something like this:
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:
The view should fit the screen on mobiles
The view is wider than the screen
Open any account view on mobile
(Terminal logs are often invaluable. If you can, launch the app from terminal with dev.geopjr.tooth
and paste the output here)
__
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?
Thank you in advance!
Having this act as more of a cross-fediverse client rather than specifically a Mastodon client would help differentiate it :)
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).
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)?
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
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
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.
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!
Support GoToSocial
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.
Mastodon
Fedora Silverblue 37
Flatpak
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)
No response
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.
** 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
Tooth should be able to set alt text when posting media.
__
tooth should support black theme
__
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.
__
(Terminal logs are often invaluable. If you can, launch the app from terminal with dev.geopjr.tooth
and paste the output here)
__
Tooth should handle custom emojis in post and other places.
"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.
No response
Mastodon
Pop!_OS 22.04 LTS
Flatpak
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)
No response
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
use a linux mobile
write a toot
try to select some options
you can't
I'm not sure / Other
pureos
Flatpak
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)
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.