Giter Site home page Giter Site logo

ibboard / cawbird Goto Github PK

View Code? Open in Web Editor NEW
310.0 15.0 37.0 15.87 MB

A fork of the Corebird GTK Twitter client that continues to work with Twitter

Home Page: https://ibboard.co.uk/cawbird/

License: GNU General Public License v3.0

Shell 0.02% Roff 0.09% Meson 0.74% Python 0.02% Vala 72.71% C 26.08% CSS 0.35%
twitter gtk3 vala hacktoberfest social

cawbird's People

Contributors

albanobattistella avatar allanday avatar baedert avatar borysn avatar codedore avatar dos1 avatar edwardbetts avatar hnasar avatar ibboard avatar kalev avatar lucaswerkmeister avatar lyude avatar matthewgentoo avatar moschlar avatar nothing4you avatar orchid-hybrid avatar oyvindln avatar p1u3o avatar piotrdrag avatar pvagner avatar pyromaniac2k avatar remeh avatar ricotz avatar roman-yepishev avatar ryanlerch avatar schmittlauch avatar sunng87 avatar tglman avatar tingping avatar transifex-integration[bot] 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  avatar  avatar  avatar  avatar  avatar

cawbird's Issues

Suggestion: always position opened images at the top left

Normally, Cawbird silently attempts to position an over-large image (one that you'll have to scroll around in) based on where in the image you clicked in your timeline view. I find this to be completely unpredictable and irritating behavior, because I don't precisely control where I click in timeline images; I just click somewhere on the image, wherever is convenient given my mouse position at the time. Thus I think it would be more predictable and less surprising (and puzzling) to always position over-large images at the top left.

Support JSON dumping of tweet on TweetInfoPage

TweetListEntry currently has a function key_released_cb that (in debug builds) lets you dump the JSON for a selected tweet to stdout. There's not currently matching functionality in TweetInfoPage, but it would be useful.

Add tweets when following user

When you follow a user, Cawbird doesn't currently add any of their tweets to your timeline, so you will only see new tweets by them.

If we loaded their timeline for all tweets less than the earliest tweet we currently hold then we could inject those tweets into our main timeline. Somehow. Hopefully.

(Originally recorded as an enhancement by Baedert as baedert/corebird#321)

Show number of unread tweets

Originally posted as baedert/corebird#106 by @ryanlerch: "When a user has "scroll to top on new tweets" disabled, it would be awesome if we could also tell the user how many tweets are remaining in the scrollback. The blue circle icon that appears on the toolbar icon tells the user if they have unread tweets, but not how many are remaining."

Corebird used to do something like this with a horizontal bar as per the mock-up at https://camo.githubusercontent.com/ea60bedf6ef33afd383f14beb1a2f10ec04c13e3/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f3539323235392f323130333335382f34396630363934612d386636622d313165332d386634372d3663356635366533623737392e676966 (but might not show a count, just a "load newer"), or we can more easily do it with the notification and show "99+" to limit the size when Cawbird is left open.

We would need to do the same for replies and DMs as well, for consistency.

Make avatars round

That's what GNOME moves to, and what the web version of Twitter does.

Support showing/reading image descriptions

Related to #10 - since Twitter provides image descriptions (somewhere in the JSON) we should add them to the images when we display them.

Unless anyone has any better options, I'd plan to put them in as a tooltip.

Display replies below tweet

Baedert chose to put replies above the tweet in tweet view, so you have to scroll up to see them. This seems odd and is the opposite of what Twitter (and almost every other threaded UI) does.

I should finally get round to making the change to flip it so that it reads the "right" way (scroll up to see previous posts in thread, replies are automatically visible).

(Reported by @jacobmischka as baedert/corebird#369 and backed by me but rejected in Corebird)

g_object_unref on non-objects

Something somewhere is doing a g_object_unref on something that isn't a gobject.

(cawbird:14911): GLib-GObject-CRITICAL **: 13:24:15.291: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

This may be related to clearing tweet-related items from the cache, as it seems to happen most around "Removing avatar" debug messages, but that could be a red herring.

(cawbird:15146): GLib-GObject-CRITICAL **: 13:31:54.966: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(cawbird:15146): GLib-GObject-CRITICAL **: 13:31:54.966: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(cawbird:15146): GLib-GObject-CRITICAL **: 13:31:54.971: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
(cawbird:15146): cawbird-DEBUG: 13:31:54.975: Removing avatar with id 86626845 from cache
(cawbird:15146): cawbird-DEBUG: 13:31:54.975: Removing avatar with id 1023072078 from cache

build fails on UNIX or other system without AppStream

related issue but on Linux: bilelmoussaoui/nautilus-git#25
this appears to be the cause mesonbuild/meson#1565

[3/43] Generating uk.co.ibboard.cawbird.appdata.xml_data_merge with a custom command.
FAILED: data/uk.co.ibboard.cawbird.appdata.xml
/usr/bin/meson --internal msgfmthelper ../data/uk.co.ibboard.cawbird.appdata.xml.in data/uk.co.ibboard.cawbird.appdata.xml xml ../data/../po/
msgfmt: cannot locate ITS rules for ../data/uk.co.ibboard.cawbird.appdata.xml.in

otherwise works fine on my Sun πŸŽ‰

Translate Cawbird properly

As it says in the Readme, we're currently still using Corebird's Transifex translations. As the UI changes then we will need updated translations.

We need to:

  1. Setup Transifex for this project
  2. Find and update any strings that I've added that haven't been updated
  3. Work out how the translation build works!

Delete RT on un-RT

Currently, if you're viewing your timeline and un-RT something then the RT remains.

We should probably send a "Delete" message and make sure that the RT disappears.

Reduce bespoke styling

Gnome discourages GTK "themes" (blog†). We can extrapolate from there to "don't do arbitrary custom themeing within an app unless you absolutely need to".

I'm also sure I saw someone complain about the dark bar looking out of place in a stock Gnome/Adwaita system, which is true. It looks fine on my custom Adwaita Dark Green theme‑, but then I have dark title bars.

I've had a look at how we could reduce our bespoke themeing to fit in better with each desktop. The initial code is in the native-topbar-styling branch.

CawbirdNativeTheme
(Cawbird native themeing in Adwaita, Adwaita Dark, High Contrast and my Adwaita Dark Green)

Thoughts?

.

† Adwaita means β€œthe only one” in Sanskrit
‑ Yes, I understand there's an irony in saying "we should do less custom themeing because Gnome/GTK doesn't really support it" while also using my own theme! But that's why I keep it so close to Adwaita.

Fix CSS warnings

Cawbird currently shows the following CSS warnings on start-up:

(cawbird:14911): Gtk-WARNING **: 13:24:12.801: Theme parsing error: style.css:20:13: The 'icon-shadow' property has been renamed to '-gtk-icon-shadow'

(cawbird:14911): Gtk-WARNING **: 13:24:12.801: Theme parsing error: style.css:231:16: The 'outline-radius' property has been renamed to '-gtk-outline-radius'

(cawbird:14911): Gtk-WARNING **: 13:24:12.801: Theme parsing error: style.css:237:19: The :insensitive pseudo-class is deprecated. Use :disabled instead.

(cawbird:14911): Gtk-WARNING **: 13:24:12.801: Theme parsing error: style.css:238:25: The :insensitive pseudo-class is deprecated. Use :disabled instead.

(cawbird:14911): Gtk-WARNING **: 13:24:12.801: Theme parsing error: style.css:243:36: The :insensitive pseudo-class is deprecated. Use :disabled instead.

This is due to changes in GTK3 over the years. As we depend on a recent GTK then we should update out styles.

Do not build on ArchLinux

Build is failing with this error:

valac -C --debug --debug --enable-deprecated -D GTK322 -g -D DEBUG -D VIDEO -D SPELLCHECK --pkg gspell-1 --pkg gstreamer-video-1.0 --pkg libsoup-2.4 --pkg sqlite3 --pkg json-glib-1.0 --pkg gtk+-3.0 --target-glib 2.44 --pkg glib-2.0 --color=always --directory cawbird@sta --basedir ../ --library cawbird --header cawbird.h --vapi ../cawbird.vapi /home/gnumdk/aur/cawbird/src/cawbird-1.0.1/vapi/config.vapi --target-glib=2.44 --vapidir=/home/gnumdk/aur/cawbird/src/cawbird-1.0.1/vapi/ --gresources=/home/gnumdk/aur/cawbird/src/cawbird-1.0.1/cawbird.gresource.xml ../vapi/cawbird-internal.vapi ../vapi/rest-0.7.vapi ../vapi/libtl.vapi ../src/Account.vala ../src/Cawbird.vala ../src/DMManager.vala ../src/DMPage.vala ../src/DMThreadsPage.vala ../src/DefaultTimeline.vala ../src/FavoritesTimeline.vala ../src/FilterPage.vala ../src/HomeTimeline.vala ../src/IPage.vala ../src/ListStatusesPage.vala ../src/ListsPage.vala ../src/MainWidget.vala ../src/MainWindow.vala ../src/MentionsTimeline.vala ../src/NotificationManager.vala ../src/OAuthProxyCallWithBody.vala ../src/ProfilePage.vala ../src/SearchPage.vala ../src/Settings.vala ../src/TweetInfoPage.vala ../src/Twitter.vala ../src/UserEventReceiver.vala ../src/async/Collect.vala ../src/list/AddListEntry.vala ../src/list/DMListEntry.vala ../src/list/DMThreadEntry.vala ../src/list/FilterListEntry.vala ../src/list/ListListEntry.vala ../src/list/NewListEntry.vala ../src/list/SnippetListEntry.vala ../src/list/StartConversationEntry.vala ../src/list/TweetListEntry.vala ../src/list/UserFilterEntry.vala ../src/list/UserListEntry.vala ../src/list/FavImageRow.vala ../src/model/DMThreadsModel.vala ../src/sql/Database.vala ../src/sql/InsertStatement.vala ../src/sql/SelectStatement.vala ../src/sql/UpdateStatement.vala ../src/util/Benchmark.vala ../src/util/Dirs.vala ../src/util/TweetUtils.vala ../src/util/UserCompletion.vala ../src/util/UserUtils.vala ../src/util/Utils.vala ../src/widgets/AccountCreateWidget.vala ../src/widgets/AddImageButton.vala ../src/widgets/AspectImage.vala ../src/widgets/AvatarBannerWidget.vala ../src/widgets/AvatarWidget.vala ../src/widgets/BadgeRadioButton.vala ../src/widgets/ChildSizedScroller.vala ../src/widgets/CompletionTextView.vala ../src/widgets/ComposeImageManager.vala ../src/widgets/CropWidget.vala ../src/widgets/DMPlaceholderBox.vala ../src/widgets/DoubleTapButton.vala ../src/widgets/FollowButton.vala ../src/widgets/ImpostorWidget.vala ../src/widgets/LazyMenuButton.vala ../src/widgets/MaxSizeContainer.vala ../src/widgets/MediaButton.vala ../src/widgets/MultiMediaWidget.vala ../src/widgets/PixbufButton.vala ../src/widgets/ReplyEntry.vala ../src/widgets/ReplyIndicator.vala ../src/widgets/ScrollWidget.vala ../src/widgets/TextButton.vala ../src/widgets/TweetListBox.vala ../src/widgets/UserListsWidget.vala ../src/widgets/FavImageView.vala ../src/window/AboutDialog.vala ../src/window/AccountDialog.vala ../src/window/ComposeTweetWindow.vala ../src/window/MediaDialog.vala ../src/window/ModifyFilterDialog.vala ../src/window/ModifySnippetDialog.vala ../src/window/SettingsDialog.vala ../src/window/UserListDialog.vala
../src/DefaultTimeline.vala:51.3-51.24: error: Creation method of abstract class cannot be public.
  public DefaultTimeline (int id) {
  ^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)

Linkify DMs

Links and handles in DMs currently do not linkify. This may be a Twitter API/JSON limitation, but it seems odd to do that. We should linkify if possible.

Indicate when account is set as private

From @Lyude: "Right now there's no way on Corebird to tell if someone's account is set as private or not. It might be a good idea to add a lock or something of the sort on the person's profile and/or their posts on the timeline."

We should put a padlock in the bottom-right of the avatar (where Twitter puts it) in the timeline, tweet info and profile views.

(Transfers baedert/corebird#331)

Update timestamps on DMs

The main timeline has a DeltaUpdater that updates the time delta on each tweet as time moves on. We don't currently appear to do that with DMs, so the DMs always show their delta compared to the first time you saw them.

This results in two behaviours if you keep the DM thread open:

  • Every DM that was there at the start is still the same time in the past, even hours later
  • Every single new DM will be at "now" (or up to 2min, because of the delay from DMing to polling and retrieving it)

Cawbird 1.0.3 (current git tip) coredumps on startup

I just built the latest git tip (tagged as v1.0.3), and it core dumps on startup for me but in a weird spot. Gdb says that the crash is:

#0  0x00005555555a35ae in multi_media_widget_set_all_media
    (self=0x5555570266b0, medias=0x56fbe4e0, medias_length1=<optimized out>)
    at cawbird@sta/src/widgets/MultiMediaWidget.c:192
#1  0x000055555558f529 in tweet_list_entry_construct
    (object_type=<optimized out>, tweet=0x555556f63300, main_window=main_window@entry=0x555555bd03d0, account=account@entry=0x555555aeb850, restrict_height=restrict_height@entry=0) at cawbird@sta/src/list/TweetListEntry.c:1384
#2  0x000055555559070c in tweet_list_entry_new
    (tweet=<optimized out>, main_window=main_window@entry=0x555555bd03d0, account=account@entry=0x555555aeb850, restrict_height=restrict_height@entry=0)
    at cawbird@sta/src/list/TweetListEntry.c:1473
#3  0x00005555555a5762 in tweet_list_box_widget_create_func
    (obj=0x555556f63300, self=0x555555c3c7e0)
    at cawbird@sta/src/widgets/TweetListBox.c:227

This is translated Vala code:

(gdb) list
187                                     }
188                                     _tmp1_ = FALSE;
189                                     if (!(i < medias_length1)) {
190                                             break;
191                                     }
192                                     _tmp3_ = medias[i];
193                                     _vala_assert (_tmp3_ != NULL, "medias[i] != null");
194                                     _tmp4_ = medias[i];
195                                     multi_media_widget_set_media (self, i, _tmp4_);
196                             }

This corresponds to set_all_media in src/widgets/MultiMediaWidget.vala but it appears impossible for this to happen, because the for loop looks like it should always constrain the value of i here so that it's a valid index. In the translated C code, though, it looks like medias itself could become corrupted without the length being bad, because they're passed as separate parameters and they're generated from separate pieces of information in src/CbTweet.c.

Do not lose tweets on TLS issues

Sometimes (possibly just on one network) I get TLS connection errors. Normally this happens when RTing, but occasionally it happens when tweeting. Normally, Corebird/Cawbird keeps the last tweet, but in one specific situation that I think is related to the TLS errors then it forgets it. My assumption is that it doesn't handle the error correctly and treats it as posted.

Replying to deleted tweets

In baedert/corebird#712, Baedert pointed out that replying to deleted tweets would fail. This could be caught with the streaming API for users we follow (because we'd see the deletion message) but the non-streaming API doesn't get informed about deletions.

I need to check what Cawbird does when replying to a deleted tweet. We shouldn't lose the text. Because that's annoying.

Handle synchronisation errors

Sometimes, Twitter will error.

For some situations (e.g. "144: No status found with that ID." when un-RTing a tweet that has been un-RTed elsewhere), the libraries will thrown an exception (probably because Twitter gives a 4xx status code), Cawbird will handle that, and the user will get an error dialog.

For other situations (e.g. "you've already RTed that") then Twitter returns an error object but not an exception. Cawbird assumes it succeeded, streams that tweet, and then chokes because it's not a tweet. This causes many critical log messages followed by a segfault.

(cawbird:9447): cawbird-DEBUG: 10:52:38.574: TweetUtils.vala:85: POST 1.1/statuses/retweet/1173185595121786880.json

(cawbird:9447): cawbird-CRITICAL **: 10:52:38.764: Utils.vala:257: {"errors":[{"code":327,"message":"You have already retweeted this Tweet."}]}

(cawbird:9447): Json-CRITICAL **: 10:52:38.769: json_object_get_int_member: assertion 'node != NULL' failed
Message with type 10 on stream @IBBTwtr
{
  "errors" : [
    {
      "code" : 327,
      "message" : "You have already retweeted this Tweet."
    }
  ]
}
(cawbird:9447): Json-CRITICAL **: 10:52:38.769: json_object_get_object_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_int_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_int_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_int_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_string_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_int_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_string_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_object_member: assertion 'node != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_int_member: assertion 'object != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_string_member: assertion 'object != NULL' failed

(cawbird:9447): Json-CRITICAL **: 10:52:38.770: json_object_get_string_member: assertion 'object != NULL' failed
Segmentation fault (core dumped)

Found while working on #23 without the fixes from #9, so an un-RT failed (but the app removed the RT flag) and then the RT errored.

Interacting with self-RT can get out of sync

If you tweet and then retweet it and then look at your user timeline then you can interact with both the tweet and the RT. The RT shows the correct RT status (starts RTed), but if you un-RT the RT (rather than un-RTing the original) then things start to go a bit wrong!

Steps to recreate:

  • Tweet
  • Retweet that tweet
  • Go to your profile page (the one showing "Tweets", "Following", "Followers", etc)
  • Right-click the retweet
  • Click "RT" button to un-RT
  • Right-click the retweet
  • Click "RT" button to RT

Expected behaviour:

  • At the first right-click the button is green to show it is RTed
  • Un-RTing works without error
  • At the second right-click the button is grey to show it isn't RTed
  • RTing retweets original tweet successfully

Better behaviour:

  • At the first right-click the button is green to show it is RTed
  • Un-RTing works without error, tweet disappears

Actual behaviour:

  • At the first right-click the button is green to show it is RTed
  • Un-RTing works without error
  • At the second right-click the button is grey to show it isn't RTed
  • RTing says "144: No status found with that ID.(TweetUtils.vala:108)"

18.04 dependencies name are messy

When installing cawbird_1.0-1+60.1_amd64.deb on 18.04, apt spits

cawbird : Depends: libgstreamer-plugins-base1.0 but it is not installable
Depends: libglib2.0 but it is not installable
Depends: libgspell-1 but it is not installable
Depends: libgtk-3 (>= 3.20) but it is not installable
Depends: libjson-glib but it is not installable
Depends: libsoup2.4 but it is not installable
Depends: libsqlite3 but it is not installable

Whereas all these libs are installed but having different names

libgstreamer-plugins-base1.0-0/bionic-updates,now 1.14.5-0ubuntu1~18.04.1 amd64 [installed]
libglib2.0-0/bionic-updates,bionic-security,now 2.56.4-0ubuntu0.18.04.4 amd64 [installed]
libgspell-1-1/bionic,now 1.6.1-1 amd64 [installed]
libgtk-3-0/bionic-updates,now 3.22.30-1ubuntu4 amd64 [installed]
libjson-glib-1.0-0/bionic,now 1.4.2-3 amd64 [installed]
libsoup2.4-1/bionic-updates,bionic-security,now 2.62.1-1ubuntu0.1 amd64 [installed]
libsqlite3-0/bionic-updates,bionic-security,now 3.22.0-1ubuntu0.1 amd64 [installed]

After that apt install doesn't work unless you --fix-broken which removes cawbird.
As a workaround had to manually edit Dependencies of cawbird in /var/lib/dpkg/status.

Provide Snap build

People on OMGUbuntu are asking about Snaps. As per #24, if someone can make it then we can include it, but my focus is on native packaging and the "official" repos on the Open Build Service.

Feature Request. Taskbar notification

I would love to see a taskbar icon and run the application in the background. Just the way 'slack' or 'dropbox' clients are there at the top right corner in the below screenshot.

image

Improve tweet reply list

When viewing a tweet, the replies don't match those shown on Twitter Web. Apps like Twidere manage to show something that looks much closer to Twitter (e.g. the down-stream thread from the same author is generally at the top of the list).

This would prevent you having to either go to Twitter web to view a thread, or clicking through tweet by tweet and hoping that it finds the right tweet first in the replies each time.

RFE: Provide a preference to always show images in the timeline without cropping

I find that displaying cropped images in the timeline is not useful for me; it invariably leads me to click on the image to view the full image, in case the cropping has cut off something interesting about it. It's faster for me to skim my timeline when I can immediately see the full image and so judge on the spot if I want to see it in full size or if the reduced size on the timeline is sufficient.

As a result, I would like a preference to control this behavior, so that I could set it to always show full images (and other people, such as @IBBoard, could have the current behavior).

Handle multiple attachments of the same image

Currently, if you attach the same image twice then the ComposeImageManager.set_image_progress () function uses (btn.image_path == image_path) to check when it has found the right button and so always hits the first image and updates the status of that.

Twitter allows multiple copies of the same image (and the upload works through Cawbird, if you ignore the incorrect UI feedback). This means that ComposeJob.image_upload_progress needs reworking so that it doesn't just use the local path.

Make it adapt to phones

Currently Cawbird is a bit too wide to work on phones, I can think of a few things which could make it work:

  • use a HdyViewSwitcher for Home, Mentions, Direct messages and Search views(like on the web version of Twitter)
  • drop the current dark view switcher
  • hide the view switcher when viewing a tweet detail
  • add a "back" gesture, that would likely imply having an improved GtkStack
  • only use the back button for tweet details, hide it otherwise
  • move either the account or compose button to the end of the header bar
  • maybe don't make "back" move between views, but only back from one tweet detail, to the previous tweet detail, to the main view which started the exploration
  • reduce the minimum width requests to 360px
  • I'm not sure yet for the Favorites, Lists and Filters views

Adjust font size setting

Would you consider adding the ability to adjust the default font size for Tweets' text? Thanks!

Load older DMs

As per the code, we currently load the latest page of DMs and nothing more. As I don't use DMs that often then this hasn't been a problem, but we should support it for users who do use DMs more.

No Ubuntu 19.10 repo?

I know 19.10 just released so I'm not upset about this, just filing a bug so adding a corresponding repo is on the to-do list. Thanks :)

Send "delete" when deleting from tweet info page

Deleting your own tweets with right-click in the timeline will make them insensitive (disabled). Deleting them in the TweetInfo view (single tweet view) doesn't. This isn't helpful.

Steps to recreate:

  • Tweet
  • Right-click on tweet in timeline
  • Click down arrow and "Delete"
  • Tweet
  • Click/Double-click tweet (depending on settings) to view just that tweet
  • Click down arrow and "Delete"

Expected behaviour:

  • User is sent back to timeline
  • Both tweets are disabled (or removed - but disabled is consistent with current behaviour)

Actual behaviour:

  • User is sent back to timeline
  • First tweet is disabled
  • Second tweet remains but interactions (obviously) fail

Add support for YouTube thumbnails

Twitter web interface does "cards" for YouTube videos. Since Cawbird already pulls Flickr and others independently of the data that Twitter supplies, it'd be nice to get media previews/thumbnails of YouTube videos.

Cawbird is obviously unlikely to be able to play videos from YouTube inline, so it might need different behaviour to either not make it clickable or to make clicking the image go to the YouTube page instead.

(Transfers my own baedert/corebird#468)

Update translations

I'm currently still using Corebird's translations and assuming that it is working okay. The UI hasn't changed yet, so this isn't a problem. However, we need to set up translations for all of the non-English speakers!

Logging all tweeets into file

Hi, first of all, thanks for carrying the torch!

Since you're familiar with the code base, could you maybe give me a hint where to look in the sources to be able to log all tweets in the timeline?

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.