Commit Graph

682 Commits

Author SHA1 Message Date
Ivan Habunek 51fcd60eb5
Migrate status commands 2023-11-28 12:26:08 +01:00
Ivan Habunek d6678e0498
Migrate post command 2023-11-28 11:53:43 +01:00
Ivan Habunek 096ec09684
Add toot --version 2023-11-28 10:13:20 +01:00
Ivan Habunek 9ecfa79db8
Setup click, migrate read commands 2023-11-28 10:13:05 +01:00
Ivan Habunek 1c5abb8419
Improve from_dict performance by caching fields 2023-11-26 09:16:21 +01:00
Ivan Habunek 48d9caef05
Improve typing in wcwidth module 2023-11-24 09:52:41 +01:00
Ivan Habunek a6bbe97332
Add changelog, bump version 2023-11-22 08:50:17 +01:00
Ivan Habunek 7929919ffc
Add --json option to update_account 2023-11-22 08:41:15 +01:00
Ivan Habunek e961bd696d
Make account optional in following and followers 2023-11-22 08:22:21 +01:00
Ivan Habunek 443f9445b1
Add --json option to account commands 2023-11-21 18:16:37 +01:00
Ivan Habunek 016ae25569
Add --json option to various status commands 2023-11-21 16:51:02 +01:00
Ivan Habunek 4203e8d313
Dedupe duplicate function 2023-11-21 16:51:02 +01:00
Ivan Habunek 7793d4499a
Add --json option to post command 2023-11-21 16:51:02 +01:00
Ivan Habunek 3530553a06
Add --json option to status and thread commands 2023-11-21 16:51:02 +01:00
Ivan Habunek ae7a36b8d8
Add --json option to search command 2023-11-21 16:50:55 +01:00
Ivan Habunek 0c37716de1
Add --json option to instance command 2023-11-21 16:50:19 +01:00
Ivan Habunek 57be6beae8
Log request exceptions 2023-11-21 16:50:19 +01:00
Ivan Habunek 9664d71b57
Make get_instance return the response instead of json 2023-11-21 16:50:19 +01:00
Ivan Habunek 45962b27c3
Fix search sending type=None if not specified 2023-11-21 16:48:12 +01:00
Ivan Habunek cd03486a25
Remove unused imports 2023-11-19 12:48:22 +01:00
Ivan Habunek 5a83cd7d3b
Read media viewer from settings 2023-11-19 12:15:26 +01:00
Ivan Habunek ef19449190
Load followed accounts after timeline
This way we don't have to wait for them to load, which may take a while
due to paging.
2023-11-19 09:12:42 +01:00
Ivan Habunek 8c3fd12005
Fix style 2023-11-18 15:53:14 +01:00
Ivan Habunek 4a3b14313c
Fix compat with older versions of python 2023-11-18 15:48:28 +01:00
Ivan Habunek 0265f7e0b7
Fix tests 2023-11-18 15:44:50 +01:00
Ivan Habunek 3de561a060
Add --json argument to whois command 2023-11-18 15:42:04 +01:00
Ivan Habunek dd16627c89
Update print_account to take an Account object 2023-11-18 15:42:02 +01:00
Ivan Habunek 2c4f7e17c9
Add --json option to whoami command 2023-11-18 15:40:51 +01:00
Ivan Habunek 6cdba16fcf
Make verify_credentials return the http response
Required if we want to emit json without decoding it
2023-11-18 15:40:50 +01:00
Ivan Habunek 317840b019
Merge pull request #415 from ihabunek/danschwarz-richtext3
Add support for rich text
2023-11-18 15:40:35 +01:00
Ivan Habunek fe8b441b5b
Add hack to work around a pleroma bug 2023-11-18 12:32:35 +01:00
Ivan Habunek 8d1edd5374
Fix compat with older python versions 2023-11-18 11:25:52 +01:00
Ivan Habunek 59adec3e55
Improve error when conversion fails 2023-11-18 11:18:30 +01:00
Ivan Habunek 05c5bcb723
Convert datetimes to local timezone by default 2023-11-18 10:25:52 +01:00
Ivan Habunek d4b6447d0f
Bump version, add changelog 2023-11-16 16:41:15 +01:00
Ivan Habunek 2b8727bf09
Roll back workaround to support pleroma
Fixed in previous commit.
2023-11-16 15:15:38 +01:00
Ivan Habunek fe48f9a17e
Add a way to preprocess the data before decoding
Use it to modify the data returned by the Pleroma API which does not
conform to the current Mastodon API definition.

See:
https://git.pleroma.social/pleroma/pleroma/-/issues/1470#anchor-310
2023-11-16 15:15:26 +01:00
Ivan Habunek 57cfd41613
Remove old stubs 2023-11-16 11:50:25 +01:00
Ivan Habunek d6ff3cc3a8
Extract url_to_widget, add fallback 2023-11-16 11:46:54 +01:00
Ivan Habunek e5ac82bb01
Add fallback for html_to_widgets
Remove has_urwidgets since we no longer need to worry if we have
urwidgets in the richtext module.
2023-11-16 11:36:18 +01:00
Ivan Habunek f96b1b722c
Move richtext to it's own module
This is the first step towards easier stubbing
2023-11-16 11:12:54 +01:00
Ivan Habunek f50dea1175
Simplify text_to_widget
This was doing double regex matching, calling parse_text was not needed
at all.
2023-11-16 11:09:32 +01:00
Sandra Snan 560b91700f
Ask for 639-1 consistently 2023-11-16 10:11:35 +01:00
Ivan Habunek 073dd3025c
Remove the ContentParser class, use functions instead
It did not help, just added to the indent.
2023-11-06 18:23:35 +01:00
Ivan Habunek a544453338
Remove magic lookup
Having the choice explicit makes the code easier to read.
2023-11-06 18:22:09 +01:00
Ivan Habunek ce6faccb99
Extract render method 2023-11-06 17:43:02 +01:00
Ivan Habunek 2aba3f93f9
Extract block tags 2023-11-06 09:56:12 +01:00
Ivan Habunek a8b4c79716
Eliminate constructor 2023-11-06 09:36:30 +01:00
Ivan Habunek 199a96625b
Extract parsing html 2023-11-04 07:53:40 +01:00
Ivan Habunek d91c73520e
Better function name 2023-11-04 07:38:47 +01:00
Ivan Habunek a9ef96c31b
Cleanup formatting 2023-11-04 07:26:45 +01:00
Sandra Snan 6a22e2345b Add in controversial timezone workaround 2023-09-24 00:42:46 +02:00
Sandra Snan c821ab999b Fix crash on weird date time
Solution found by danschwarz
2023-09-24 00:35:39 +02:00
Daniel Schwarz 0f39b1087f Support to display a limited set of HTML tags
HTML tag support is aligned with Mastodon 4.2 supported tags.
This code introduces a soft dependency on the urwidgets library.
If urwidgets is not available, HTML tags are still supported,
but hyperlinks are not underlined using the OCS 8 terminal
feature (on supported terminals).
2023-09-22 21:32:19 -04:00
Ivan Habunek 8ff46fd0d0
Remove unused import 2023-07-25 09:36:53 +02:00
Ivan Habunek 0a70af9e09
Bump version, add changelog 2023-07-25 09:34:21 +02:00
Ivan Habunek 8c7bb25184
Fix relative datetimes in TUI 2023-07-25 09:32:17 +02:00
Ivan Habunek 5eeb9fdf49
Add changelog, bump version 2023-07-25 09:15:54 +02:00
Ivan Habunek b0099642cd
Shorten command descriptions 2023-07-25 09:14:58 +02:00
Ivan Habunek 5e8a7bb415
Merge pull request #385 from ihabunek/colors-settings
Read TUI colors from settings
2023-07-25 09:10:01 +02:00
Florian Obser acc80f6890 Implemented "blocked" command
This lists accounts the logged in user has blocked. It is useful for
creating regular backups.
2023-07-21 16:24:57 +02:00
Florian Obser 39d7a345ed Implemented "muted" command
This lists accounts the logged in user has muted. It is useful for
creating regular backups.
2023-07-21 16:24:38 +02:00
Ivan Habunek afd349f1ab
Remove the monochrome palette
Monochrome colors should be defined as the third color in each tuple
instead.

In monochrome mode it's not possible to set the background so all
highlights can only be done using bold, italics, underline...
2023-07-08 12:33:34 +02:00
Ivan Habunek 0903dae8d3
Read TUI colors from settings 2023-07-08 12:08:06 +02:00
Ivan Habunek 740f7fafd4
Read TUI palette overrides from settings 2023-07-08 12:08:06 +02:00
Ivan Habunek 94b4b35197
Tweak colors 2023-07-08 12:08:06 +02:00
Daniel Schwarz 28a3343761 Added sanity check tests to ensure PALETTE and MONO_PALETTE match
And fixed a bug uncovered by the above tests :)
2023-07-07 18:12:38 -04:00
Ivan Habunek 219225ba8a
Remove named colours
This is a prerequisite for configurable styling, since we don't want to
override "green" style to be yellow and such.
2023-07-07 13:57:19 +02:00
Ivan Habunek 9933180146
Improve colour names 2023-07-07 13:02:18 +02:00
Ivan Habunek 089e9f7d2f
Simplify delete status modal 2023-07-07 12:37:08 +02:00
Ivan Habunek d10c5fed3e
Add type hints for get_setting 2023-07-07 12:17:36 +02:00
Ivan Habunek f1e4c8d68f
Clean up how loop and screen are handled in tui 2023-07-07 11:49:26 +02:00
Daniel Schwarz f292468fb6 Changed [L]inks key to L[i]nks so that L key is CURSOR RIGHT 2023-07-06 07:31:43 -04:00
Daniel Schwarz 3903307e72
Changed Help key to ?, Documented Save key correctly as E
Fixes #280, #370
2023-07-05 10:09:00 +02:00
Ivan Habunek d71cc7e3b6
Merge pull request #377 from ihabunek/settings
Implement a settings file
2023-06-30 14:59:14 +02:00
Ivan Habunek da9931e5e5
Remove datetime hack used for python < 3.7 2023-06-30 11:08:22 +02:00
Ivan Habunek 3df8e2722a
Extract datetime utils 2023-06-30 11:08:19 +02:00
Ivan Habunek 83b7f25678
Add __main__.py
This allows launching toot by:

  python -m toot
2023-06-30 11:02:13 +02:00
Ivan Habunek 7da372e4a8
Disable settings for testing 2023-06-28 14:55:28 +02:00
Ivan Habunek d4f8acb3ce
Resolve circular import by moving get_config_dir 2023-06-28 14:46:35 +02:00
Ivan Habunek 953cad5023
Respect quiet setting 2023-06-28 14:17:35 +02:00
Ivan Habunek cee2c93815
Respect debug and debug_file settings 2023-06-28 14:17:20 +02:00
Ivan Habunek 4388175cb4
Respect color setting 2023-06-28 13:56:59 +02:00
Ivan Habunek 85260ed99d
Apply command defaults from settings 2023-06-28 13:55:30 +02:00
Ivan Habunek ed0baf0770
Implement reading from a settings file 2023-06-28 13:55:29 +02:00
Ivan Habunek bb625da257
Bump version, add changelog 2023-06-28 12:41:47 +02:00
Ivan Habunek 3a375b77ee
Add toot status command 2023-06-28 12:23:33 +02:00
Ivan Habunek 8ad2b279ed
Ignore warning not to compare types
No other way around it here.
2023-06-26 17:02:58 +02:00
Ivan Habunek b2c2f7466e
Fix type hints for older versions of python 2023-06-26 17:00:39 +02:00
Ivan Habunek 3cd13f6885
Fix vermin checks 2023-06-26 17:00:38 +02:00
Ivan Habunek f3439ad30d
Use entitites to simpliy print functions 2023-06-26 16:59:14 +02:00
Ivan Habunek a0b9b37a4f
Add Instance and related entities 2023-06-26 16:59:14 +02:00
Ivan Habunek 368738831c
Add Notification and Report entities 2023-06-26 16:59:14 +02:00
Ivan Habunek 119c514ee9
Add entities 2023-06-26 16:59:14 +02:00
Ivan Habunek 5607bd75b3
Add compat code for typing functions 2023-06-26 16:59:13 +02:00
Ivan Habunek 0c89445b61
Fix type hint for older py versions 2023-06-26 16:58:11 +02:00
Ivan Habunek 0662a7616b
Read toot lenght limit from mastodon instances
fixes #369
2023-06-24 10:18:10 +02:00
Ivan Habunek 12d84ea05e
Fix return type 2023-06-24 10:04:40 +02:00
Ivan Habunek dff36e28f3
Remove redundant logging
These actions are already visible via http requests being logged.
2023-06-24 09:58:31 +02:00
Daniel Schwarz 8c3cec1aef --no-color now works for tui mode 2023-06-23 18:16:14 -04:00
Ivan Habunek 0973bfd484
Refresh timeline when showing thread 2023-06-22 12:15:05 +02:00
Ivan Habunek 7b08e39f00
Decrease the amount of color 2023-06-22 11:33:07 +02:00
Daniel Schwarz 01afbe1f2f
If toot activate is invoked without an account, show list of accounts 2023-06-22 11:30:43 +02:00
Ivan Habunek 51d60679c3
Simplify account timeline options 2023-06-22 11:16:32 +02:00
Daniel Schwarz f7ba208d3b
Added personal timeline, which is your own timeline of posts
Fixes issue #354
2023-06-22 11:07:54 +02:00
Daniel Schwarz e55474158a
Added toot timeline --account_tl console command
Displays the timeline of any account (public timeline for
users who are not you, public+private for you)

Right now it does not display reblogs or replies,
this could be configurable if we add more command line flags
2023-06-22 11:07:54 +02:00
Daniel Schwarz 56cc056639 Login to servers that don't honor the uri spec for V1::Instance
Pleroma, Akkoma, and other servers do not follow the Mastodon spec
for the 'uri' attribute which specifies that it contains the domain
name of the instance. Instead, they return a complete URI.

As a workaround, we now detect this situation and parse out the
domain from the URI when necessary. This fixes issue #347.

Thanks to @laleanor for their patch and @rjp for ideas on how to
make it work with GotoSocial and other servers
2023-05-27 05:51:00 +02:00
Ivan Habunek a388c30edf
Remove unused import 2023-04-06 21:36:09 +02:00
Ivan Habunek e3394c1693
Extract fetching list ID
Also don't check if account is found, that function alredy raises a
ConsoleError.
2023-03-30 12:31:04 +02:00
Ivan Habunek a19670d0c3
Add integration tests for lists 2023-03-30 12:00:12 +02:00
Ivan Habunek 8624ddb175
Add a simple table printer and apply to lists 2023-03-30 12:00:12 +02:00
Daniel Schwarz e85f7ce594
Give a more specfic error message if we can't add an account to list 2023-03-30 10:03:45 +02:00
Daniel Schwarz 47b182a05b
Changed parameters for list cmds
Title is now a positional parameter.

Also added some error handling in the command processing
for looking up list IDs per @ihabunek 's suggestions
2023-03-30 10:03:34 +02:00
Dan Schwarz c12c53d719
minor improvement of feedback messages 2023-03-30 10:01:04 +02:00
Dan Schwarz 2e0f2548e6
Added toot list_remove_account command 2023-03-30 10:01:04 +02:00
Dan Schwarz 80f05e8147
Added toot list_add_account command 2023-03-30 10:01:03 +02:00
Daniel Schwarz bfdd84870f
Added "toot list_delete" and "toot list_create" commands 2023-03-30 10:01:03 +02:00
Daniel Schwarz 08bb7aae71
added "toot list_accounts" command 2023-03-30 10:01:03 +02:00
Daniel Schwarz 855b2a1526
"toot list" console command added 2023-03-30 10:01:02 +02:00
Dan Schwarz 6bcd43a6ae
Add basic support for Mastodon Lists
Fixes issue #255
2023-03-30 10:01:02 +02:00
Dan Schwarz 040427884b
Make button widget unicode-aware (spacing) 2023-03-30 10:01:02 +02:00
Dan Schwarz 39e1f92970
add get_lists method 2023-03-30 10:01:01 +02:00
Ivan Habunek cb0af3488b
Merge pull request #344 from danschwarz/boost_fix
Fix for boosting of statuses that were previously boosted by others
2023-03-19 08:26:54 +01:00
Daniel Schwarz 71da194b76 Fix for boosting of statuses that were previously boosted by others
These wouldn't boost/unboost correctly; now they do.
2023-03-17 18:45:06 -04:00
Ivan Habunek 6d60ecee4d
Use direct invocation istead of signals 2023-03-15 10:17:35 +01:00
Ivan Habunek 7726b01000
Add type annotations 2023-03-15 09:55:50 +01:00
Ivan Habunek 45fd2901de
Remove no longer needed args to Timeline
Read them directly from TUI
2023-03-15 09:54:18 +01:00
Ivan Habunek 6047a51c4f
Pass the TUI object to Timeline in constructor 2023-03-15 09:53:56 +01:00
Ivan Habunek 71a2520198
Extract refresh timeline code 2023-03-13 13:37:02 +01:00
Daniel Schwarz 9999d975b4
Fixed refresh so it stays on the currently selected timeline
Fixes issue #337
2023-03-13 13:28:34 +01:00
Dan Schwarz dfa3cf1b68 Restructured Goto Menu items for clarity, added error display 2023-03-12 22:00:05 -04:00
Dan Schwarz 99060d221b
Basic support for followed accounts in TUI
In the status detail window, followed accounts are shown in
yellow, while unfollowed accounts are shown in grey.
2023-03-09 12:24:54 +01:00
Ivan Habunek 8b45840d9f
Update changelog, bump version 2023-03-09 11:54:19 +01:00
Ivan Habunek 47c16b01ad
Add poll options to toot post 2023-03-09 11:02:15 +01:00
Ivan Habunek 1e3d59fee2
Don't prompt for toot text if media is given
This allows you to post an image without text:

  toot post --media image.png

And not get prompted to write some text, which seems desirable.
2023-03-09 11:02:15 +01:00
Ivan Habunek d5b5c89996
Add support for custom instance domains
The instance domain can be different from their base url, for example
the instance at https://social.vivaldi.net uses the vivaldi.net domain,
sans 'social'.

This commit requires the user to provide the base url of the instance,
instead of domain name. The domain is then fetched from the server.

fixes #217
2023-03-09 11:00:45 +01:00
Ivan Habunek 9baa0823f9
Fix formatting 2023-03-07 11:09:41 +01:00
Daniel Schwarz 6b432b2fd3
Deduplicate and sort links for the show links function 2023-03-07 11:06:10 +01:00
Dan Schwarz 30792a0cab
Properly reference status.original when enumerating status links
Fixes #322
2023-03-07 11:06:10 +01:00
Ivan Habunek 9d51546be3
Merge pull request #334 from danschwarz/osc52
Add cop[y] status feature - copies status text to clipboard
2023-03-07 11:01:50 +01:00
Daniel Schwarz 04615e84bc Add cop[y] status feature - copies status text to clipboard
This relies on the OSC 52 terminal feature, which is widely
supported (Windows Terminal, iTerm2, XTerm, Kitty, others)
2023-03-06 19:30:54 -05:00
Ivan Habunek e10bb0ebae
Merge pull request #328 from danschwarz/translate_fix
Fix for issue #318 translation of boosted toots doesn't work
2023-03-06 07:57:31 +01:00
Ivan Habunek 04beac87ed
Merge pull request #330 from rogarb/conversations
Add conversations support in TUI
2023-03-05 11:34:18 +01:00
rogarb d81eaaad0d
Inherit visibility when replying in TUI
When replying to a toot, the visibility gets set to default: if the toot
has a direct visibility, the visibility in reply will be changed to the
default one, whereas it should stay in direct mode.
2023-03-05 09:45:46 +01:00
rogarb 60029a442e
Add conversations support in TUI 2023-03-04 23:33:51 +01:00
Dan Schwarz 27088b1219 Fixed translation of boosted toots 2023-03-04 16:04:13 -05:00
Ivan Habunek 314a0aefbe
Merge pull request #326 from ihabunek/thumbs
Add media thumbnails
2023-03-04 17:04:51 +01:00
Ivan Habunek e77c40e27c
Update references to new documentation 2023-03-03 16:54:40 +01:00
Ivan Habunek 244502ec0b
Wait until media uploads finish processing 2023-03-03 11:44:40 +01:00
Ivan Habunek e26cb52fd7
Enable providing media thumbnails
issue #301
2023-03-03 11:44:39 +01:00