Commit Graph

682 Commits

Author SHA1 Message Date
Ivan Habunek 14a286ef0d
Use v2 endpoint to upload media
v1 is deprecated
2023-03-03 09:03:33 +01:00
Ivan Habunek 7ed28b3bc3
Add helper function for stripping None values 2023-03-02 11:28:24 +01:00
Ivan Habunek 57824058e0
Bump version, add changelog 2023-03-01 08:09:10 +01:00
Ivan Habunek 882b6c4d0a
Minor tweaks 2023-03-01 07:51:36 +01:00
Daniel Schwarz 8ee414c83a Make _notif_timeline_generator more robust
Notifications without statuses shouldn't crash
2023-02-24 22:51:27 -05:00
Daniel Schwarz 744dc090b4 Basic support for viewing Status and Mention notifs as a timeline
Now the Goto Menu has a < Notifications > button. This will load
your Status and Mention notifications as a standard timeline
for viewing.
2023-02-24 22:19:24 -05:00
Ivan Habunek 48770a3120
Merge pull request #317 from danschwarz/action_fix
Account overlay - don't allow mute/block/unfollow own account
2023-02-22 08:41:54 +01:00
Daniel Schwarz 3a72d5f261 Account overlay - don't allow mute/block/unfollow own account 2023-02-21 20:43:09 -05:00
Ivan Habunek 6c5eb528ee
Add command for updating user account
fixes #314
2023-02-21 18:10:14 +01:00
Ivan Habunek 635dcd38cf
Backport argparse BooleanOptionalAction 2023-02-21 18:08:30 +01:00
Ivan Habunek 00baabf7aa
Store temp file when using editor to post
In case of failed posting the status is not lost and the user can
recover it and continue posting.

fixes #311
2023-02-20 19:54:47 +01:00
Daniel Schwarz 85df15f533
Implement actions for Account
Actions: un/follow, un/mute, un/block are invoked synchronously
and the Account overlay window is updated to reflect the changes.
2023-02-20 09:11:36 +01:00
Daniel Schwarz 876ad1f53d
Added framework for action buttons with "Confirm/Cancel" behavior
Buttons with confirm/cancel behavior are in place and working
TBD: implement actions when user gives confirmation.
2023-02-20 09:11:36 +01:00
Daniel Schwarz a1490461bd
Add relationship support to Account overlay
Display relationship details such as followed_by, blocked_by,
and add buttons to un/follow, un/mute, un/block.
Buttons are nonfunctional for now
2023-02-20 09:11:34 +01:00
Daniel Schwarz 95473fcd6e
Add get_relationship method to api 2023-02-20 09:08:53 +01:00
Ivan Habunek a633f757b5
Merge pull request #312 from danschwarz/poll3
UI to vote in polls
2023-02-20 09:06:51 +01:00
Ivan Habunek 4b87f7876c
Add changelog, bump version 2023-02-20 08:43:27 +01:00
Daniel Schwarz c944863f3f Changed bookmark symbol from unicode glyph to 'b'
The glyph previously used '🠷' is interpreted with different
widths on different terminal emulators (i.e. xterm gets it wrong)
This results in visual glitches in the status detail area and
especially in the scrollbar when visible.  Changing it to a
standard ASCII 'b' fixes all these issues.
2023-02-17 09:34:57 +01:00
Daniel Schwarz 80e711a3a1 Fixed type error in vote method signature 2023-02-15 21:50:50 -05:00
Daniel Schwarz 68cadd4053 Boosted polls weren't working; this change fixes that. 2023-02-15 10:15:16 -05:00
Daniel Schwarz a937650894 Update status detail after leaving overlay
This is currently used for poll voting; after voting in a
poll overlay, the status detail will update with the user's
vote and the new vote count when they dismiss the overlay.

As part of this change, the refresh_status_detail method now
maintains the scroll position after refresh, rather than
scrolling back to the top automatically
2023-02-14 23:16:26 -05:00
Daniel Schwarz 63bc11316b Removed unnecessary check that poll exists 2023-02-14 22:40:35 -05:00
Daniel Schwarz b2a0bc5634 fixed method signature for vote (added list type of int) 2023-02-14 22:40:06 -05:00
Daniel Schwarz ce34a2f05e Added api error message reporting, removed unnecessary parenthesis 2023-02-14 22:21:04 -05:00
Daniel Schwarz 41a8c33409 Removed unneeded parenthesis 2023-02-14 22:21:04 -05:00
Daniel Schwarz ef2c35eaee Removed unneeded pareenthesis 2023-02-14 22:21:04 -05:00
Daniel Schwarz 3b67c85dfc Added styled radio buttons and checkboxes 2023-02-14 22:21:04 -05:00
Ivan Habunek 3a9e4956a2
Don't break if edited_at does not exist
Introduced in mastodon 4.

fixes #309
2023-02-12 09:41:26 +01:00
Daniel Schwarz d399eec6f5 Implement [P]oll command to view/vote on poll
Note that this change also switches some key meanings:
E -> X for View E[x]ception
P -> E for Sav[e] Timeline
to accomodate P for [P]oll
2023-02-10 21:48:42 -05:00
Daniel Schwarz c2faa7e2b6 Add signal and code to invoke poll overlay UI
Note that this change also switches some key meanings:
E -> X for View E[x]ception
P -> E for Sav[e] Timeline
to accomodate P for [P]oll
2023-02-10 21:46:27 -05:00
Daniel Schwarz 44c8460a53 Poll view/vote functionality in an overlay 2023-02-10 21:45:15 -05:00
Daniel Schwarz b50fb9d9fd Added vote method to api 2023-02-10 21:44:37 -05:00
Ivan Habunek ed1aea9cba
Cleanup logging, remove color 2023-02-04 09:01:56 +01:00
Ivan Habunek f52fe00d26
Pass params as dict 2023-02-04 09:01:48 +01:00
Ivan Habunek 1c59facd2b
Show account of original toot instead of reblog 2023-02-03 15:03:06 +01:00
Ivan Habunek 9e2b5acf49
Extract link helper 2023-02-03 15:03:05 +01:00
Ivan Habunek 6a54f3dd0e
Pass account as argument 2023-02-03 15:03:05 +01:00
Ivan Habunek 0e535a3fd0
Make tags a bit less verbose 2023-02-03 15:03:05 +01:00
Ivan Habunek 83318ca43b
Add changelog, bump version 2023-02-03 15:03:05 +01:00
Daniel Schwarz de7abd0b68 Strip trailing ":" off field names for consistency
Some servers add them, some don't. This makes the names
consistent before adding one trailing :
2023-02-03 15:02:47 +01:00
Daniel Schwarz 5943ebda3a Show if an account is a "bot", "locked", or "suspended" 2023-02-03 15:02:47 +01:00
Daniel Schwarz a5d61c04a7 Account overlay is now at feature parity with toot whois command 2023-02-03 15:02:47 +01:00
Daniel Schwarz e10fff983f Support for "account" message - load details and display overlay 2023-02-03 15:02:47 +01:00
Daniel Schwarz 7be30302dc Timeline ui support + signal for [A]ccount feature
[A] displays overlay with account details and actions
2023-02-03 15:02:47 +01:00
Daniel Schwarz 5ae6db8689 Added 'whois' API method to retrieve account by ID
More reliable and faster than retrieving by account name
tbd: is "whois" the right name for this method?
2023-02-03 15:02:47 +01:00
Daniel Schwarz 4336871e9f Move save button to top 2023-02-03 04:09:35 +01:00
Ivan Habunek 9f3a54c054 Add status id to default filename 2023-02-03 04:09:35 +01:00
Ivan Habunek 37b4f00f6e Use get_edit_text to avoid trimming
This method returns only the text entered, without the caption.
2023-02-03 04:09:35 +01:00
Ivan Habunek 5606d95c93 Put edit box and button in list box with source
This makes it much easier to focus them, just scroll down.
2023-02-03 04:09:35 +01:00
Ivan Habunek cc1809db31 Remove splitlines, not needed
Works just as well if provided as a single Text object.
2023-02-03 04:09:35 +01:00
Ivan Habunek 1b2da81d15 Inline button construction, avoid lambda 2023-02-03 04:09:35 +01:00
Ivan Habunek c7f9f06f72 Use context for writing to file 2023-02-03 04:09:35 +01:00
Ivan Habunek 61990822e5 Use full words instead of abbreviations 2023-02-03 04:09:35 +01:00
Daniel Schwarz b9a68a6132 Adds a "save" option to the so[u]rce dialog. 2023-02-03 04:09:35 +01:00
Ivan Habunek 40076ab0c4
Print verified flag 2023-01-30 17:09:41 +01:00
Ivan Habunek baa5a37125
Add custom fields to status output 2023-01-30 17:04:21 +01:00
Daniel Schwarz 459937f196 --verbose and --no-color options now work with --debug logging 2023-01-29 09:32:25 +01:00
Ivan Habunek f3b90c947e
Add option to display relative datetimes 2023-01-29 09:23:57 +01:00
Daniel Schwarz deebdf7141
Show relative datetimes in status list
Status detail pane now shows the full created_at timestamp.
2023-01-29 09:11:03 +01:00
Ivan Habunek 7cada43e2f
Deduplicate code for wrapping the status details 2023-01-19 11:20:31 +01:00
Ivan Habunek b0319c43f0
Pass timeline as first argument to status
Instead of passing various attributes of timeline.
2023-01-19 11:20:31 +01:00
Norman Walsh b8f49ef212 Support --help as the only command-line argument 2023-01-19 09:40:32 +01:00
K 4f9391f015
Fix version detection
Version check failed when the server sent something other than a number
as a version as happened on development version of the gotosocial
server.
2023-01-19 09:32:45 +01:00
Dan Schwarz 91c1b792be Status detail scrollbar feature
Uses scroll.py from https://github.com/rndusr/stig
2023-01-19 09:02:35 +01:00
Daniel Schwarz c5b3724015
Don't focus newly posted toot
This breaks the reading flow.

fixes #188
2023-01-19 08:44:16 +01:00
Ivan Habunek 08dd02d989
Bump version 2023-01-03 12:05:26 +01:00
Ivan Habunek 82383cd163
Fix clear screen
It was passed more arguments than expected.
2023-01-03 11:58:49 +01:00
Ivan Habunek 9e800996f1
Bump version 2023-01-02 14:45:01 +01:00
Ivan Habunek ff1374a95c
Improve formatting, remove logging 2023-01-02 14:25:39 +01:00
Daniel Schwarz 88c444c411
Highlight followed tags 2023-01-02 14:25:30 +01:00
Ivan Habunek 15d377e889
Expand tests 2023-01-02 11:53:50 +01:00
Ivan Habunek a83c3520ae
Use fstrings instead of format 2023-01-02 11:53:50 +01:00
Ivan Habunek 1e18f1f6d9
Make flake8 happy 2023-01-01 11:13:21 +01:00
Giuseppe Bilotta 253eea12a6 Command to browse bookmarks from the CLI 2023-01-01 11:02:00 +01:00
Daniel Schwarz 13fffd9fc1 Screen refresh after web browser invocation and exit 2023-01-01 09:04:02 +01:00
Dan Schwarz 6633b758bc Make the status detail key commands more visible
Some terminal color schemes completely eliminate the difference
between cyan and cyan-bold colors (all the base16 themes, for instance).
This change makes the key letters stand out clearly in bold white.
2023-01-01 08:59:44 +01:00
Ivan Habunek 4ef866dcbe
Don't print usage on unknown command
Usage has grown pretty long and it obscures the error message.
2022-12-31 11:50:22 +01:00
Ivan Habunek 2d8791e629
Remove coding directives, no longer needed 2022-12-31 09:31:32 +01:00
Ivan Habunek 7be74f9240
Print if no tags are followed 2022-12-31 09:31:32 +01:00
Ivan Habunek 6f9ef69277
Rename tag commands to start with tags_ 2022-12-31 09:31:32 +01:00
Ivan Habunek ce560eacc7
Make commands code a bit nicer 2022-12-31 09:31:32 +01:00
Daniel Schwarz 67b52757a4
Command line support for following hashtags (Mastodon 4+) 2022-12-31 09:02:38 +01:00
Ivan Habunek a3fa7e1e3a
Improve visibility help string 2022-12-28 09:48:44 +01:00
Ivan Habunek aa75cacbff
Rename TOOT_VISIBILITY to TOOT_POST_VISIBILITY
This makes it more in line with what's planned for environemnt
variables in the future.
2022-12-28 09:21:22 +01:00
Ivan Habunek e07be634f6
Extract code for getting default visibility 2022-12-28 09:19:25 +01:00
Lim Ding Wen 08a28bfb26
TOOT_VISIBILITY controls boost visibility
TOOT_VISIBILITY controls default boost visibility from CLI, and the boost visibility from TUI (no option to change in TUI yet)
2022-12-28 09:12:05 +01:00
Lim Ding Wen 8582c8ed62
TOOT_VISIBILITY controls default visibility 2022-12-28 09:12:05 +01:00
Lim Ding Wen f91bfa0c62
TUI no longer mentions self when replying
This brings it more in-line with Mastodon v4's web UI.
2022-12-28 09:06:14 +01:00
Lim Ding Wen 69718f41f6
Reply to original account instead of boosting account
Affects the "replying to" TUI label, and the mention auto-generated.
This brings it more in-line with Mastodon web behaviour.
2022-12-28 09:03:11 +01:00
Ivan Habunek fa6b90a115
Tweak visibility display 2022-12-28 07:48:53 +01:00
Lim Ding Wen 064cab1988
Show visibility in TUI 2022-12-28 07:40:19 +01:00
Ivan Habunek 8ffe8d281f
Fix style issues 2022-12-27 12:31:55 +01:00
Ivan Habunek f534d295c0
Make line more readable 2022-12-27 12:15:21 +01:00
Ivan Habunek 69b9ab3164
Truncate long log lines unless --verbose given 2022-12-27 12:15:21 +01:00
Ivan Habunek adf3f713a6
Change bookmark key binding to avoid conflict
K is used to scroll up vim-style.
2022-12-27 12:15:21 +01:00
Daniel Schwarz fed5574939
Add bookmark timeline and bookmarking to tui 2022-12-27 12:15:20 +01:00
Ivan Habunek ded7a0c50d
Fix flake8 errors 2022-12-27 10:56:36 +01:00
Daniel Schwarz 8595e39f4c
Hide polls and media for sensitive toots 2022-12-27 10:53:58 +01:00
Lim Ding Wen 5c98d4ac80 Show error if trying to boost unboostables in TUI 2022-12-27 09:53:11 +01:00
Ivan Habunek 29ff629464
Add toot env command 2022-12-18 19:44:43 +01:00
Ivan Habunek c74d2ad916
Bump version, generate changelog 2022-12-12 13:31:15 +01:00
Ivan Habunek b4bbb41a20
Bump version, update changelog 2022-12-12 13:24:08 +01:00
Ivan Habunek 02d358907c
Embrace f-strings 2022-12-12 12:47:45 +01:00
Ivan Habunek e2d89c2d85
Fix matching fully qualified account names
fixes #254
2022-12-12 12:47:45 +01:00
Ivan Habunek ef697c3bee
Show only registration date on whois
Time is not that relevant and causes noise
2022-12-12 12:47:45 +01:00
Ivan Habunek 0ab0db048c
Show full language name 2022-12-11 23:26:15 +01:00
Ivan Habunek 92d6c399b1
Move utils to own module 2022-12-11 23:15:07 +01:00
Ivan Habunek 47be3a762a
Fix language specification
Old API docs claimed to require ISO 639-2 format, testing determines
that that ISO 639-1 is required instead.
2022-12-11 23:15:07 +01:00
Ivan Habunek c3bf0f3bb0
Enable toggling translation 2022-12-11 22:51:32 +01:00
Daniel Schwarz be5948bac8
Added translate status feature (requires server side support) 2022-12-11 20:25:02 +01:00
Ivan Habunek f9fef1927c
Bump version, update changelog 2022-12-07 15:09:09 +01:00
Ivan Habunek 3e828c05d9
Send datetimes with timezone when scheduling
This fixes this feature on Pleroma
2022-12-07 15:03:39 +01:00
Ivan Habunek d6f5728486
Don't send null parameters when posting
fixes #250
2022-12-07 15:03:39 +01:00
Ivan Habunek 4f0c367995
Add post --scheduled-in option for easier scheduling 2022-12-03 15:38:19 +01:00
Ivan Habunek 59b98a7f33
Improve colorize 2022-12-02 08:50:34 +01:00
Ivan Habunek 0e13914fce
Add duration parsing 2022-12-01 10:20:50 +01:00
Ivan Habunek 6ae2ed623a
Add test for scheduled statuses 2022-12-01 08:35:55 +01:00
Ivan Habunek d76a2ee967
Bump version, update changelog 2022-11-30 13:51:00 +01:00
Ivan Habunek de2547cfa1
Refactor post function to make it more readable 2022-11-30 12:44:20 +01:00
Ivan Habunek 4ccc547830
Don't default to media URLs if no text is given 2022-11-30 08:56:10 +01:00
Ivan Habunek 7b4063fddc
Remove use of deprecated status.text_url 2022-11-30 08:55:46 +01:00
Ivan Habunek e396768d15
Bump version, add changelog 2022-11-29 11:54:45 +01:00
Ivan Habunek a0353f9bbe
Remove unused imports 2022-11-29 11:07:02 +01:00
Ivan Habunek 942dd36cd6
Fix tests 2022-11-29 10:08:21 +01:00
Peter Fidelman 1d26ecd489
Add zoom command to open status in scrollable popup window 2022-11-29 09:40:48 +01:00
Ivan Habunek 916b4cc4bf
Extract code for printing a poll 2022-11-29 09:20:00 +01:00
Daniel Schwarz f15310cc75
Display polls in command line status output
Also display your own votes in toot tui poll displays.
2022-11-29 09:03:19 +01:00
Ivan Habunek 7b194880a0
Remove duplicate search api fn 2022-11-27 09:56:58 +01:00
Ivan Habunek ebc17e0764
Make toot instance work with localhost
Asserting the domain exists does not bring much value.
2022-11-27 09:56:04 +01:00
Ivan Habunek d308475afe
Fix key detection 2022-11-27 09:26:09 +01:00
Ivan Habunek 654bc06166
Fix formatting 2022-11-24 11:21:01 +01:00
Ivan Habunek d03a329b1a
Improve print_instance 2022-11-24 11:21:01 +01:00
Ivan Habunek db6d8c6d73
Catch request errors 2022-11-24 11:21:00 +01:00
Ivan Habunek 5c10479d65
Add api endpoint for fetching a single status 2022-11-24 11:21:00 +01:00
Ivan Habunek 44be9fd8bb
Add api endpoint for registring an account 2022-11-24 11:20:59 +01:00
Ivan Habunek b15cb85a23
Standardize http request method parameters
This allows setting either json or data. Until now we were always using
data and this is not enough for some endpoints.
2022-11-24 11:20:59 +01:00
Nick LaForge 8c3baa704e Fix typo 2022-11-23 15:39:26 +01:00
Daniel Schwarz 9abaebdc21
Updated patch
Corrected code here
2022-11-22 07:16:27 +01:00
Ivan Habunek 5aa779ef06
Bump version 2022-11-21 09:45:51 +01:00
Ivan Habunek ceedc0e448
Fix timezone to UTC when running tests
fixes #227
2022-11-21 09:06:58 +01:00
Ivan Habunek 0b671be0c6
Use exisiting functon to parse datetime 2022-11-21 08:35:23 +01:00
Peter Fidelman 0d20a4878b IMPROVED VERSION: Show media attachments in the "L" list of links 2022-11-21 08:35:11 +01:00
Ivan Habunek 12d682591b
Fix command descriptions 2022-11-18 08:28:15 +01:00
Giuseppe Bilotta e171578878 Implement following/followers list retrieval 2022-11-18 08:23:12 +01:00
Ivan Habunek 44a30b44d8
Add toot (un)bookmarking
fixes #204
2022-11-17 06:32:12 +01:00
Ivan Habunek ec16ba0bbf
Bump version, add changelog 2022-11-12 09:21:00 +01:00
Ivan Habunek e318581dd1
Don't break if poll doesn't have an expiry date 2022-11-12 07:55:25 +01:00
Ivan Habunek 24cfa48dea
Change how toot is entered in editor
This approach allows posting lines which start with a #.
2022-11-12 07:29:08 +01:00
Lars Kellogg-Stedman 5c2f9dcf7c Add a suffix to temporary files when composing toot in an editor
This enable suffix-based configuration in your editor when editing toots.

Closes #219
2022-11-11 15:08:25 +01:00
K 89585b6761
Use v2 endpoint for account search 2022-11-09 16:46:24 +01:00
Josh Soref 67bea207cd
Spelling fixes (#215)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2022-11-09 14:24:48 +01:00
Andy Loven 3315a87463 Local time in toot timeline 2022-11-08 07:11:26 +01:00
Evan Smith 8b274eeaa1 Normalise usernames when searching 2022-11-08 07:10:49 +01:00
Ivan Habunek dad08d5b40
Prepare release 0.28.0 2021-08-28 21:19:43 +02:00
Sandra Snan 9e046b6d86
Add --content-type option to toot post 2021-08-28 21:08:44 +02:00
Ivan Habunek a3eb5dca24
Allow piping the password to login_cli
This is useful for testing where entering a password manually is not
possible.
2021-08-28 20:36:10 +02:00
Stacy Harper 6115cea43e
Prevent toot timeline to break when piped to extenal programs
Toot timeline try to ask the user to continue in the next page. This
doesn't works if the command is piped to any other software.

We stop the query in the first loop when not in a tty context. The
command should be called with the expected item count in this case.
2021-08-28 20:14:30 +02:00
ansuz ec097886d8
Support adding description to media 2021-08-28 18:47:07 +02:00
Ivan Habunek 7e0da50603
Add option for scheduling tweets 2021-08-28 17:39:31 +02:00
alex wennerberg 0b6d4a9e87
Add mentions-only parameter to notifications command 2021-07-29 10:08:58 +02:00
Sandra Snan d884379f2e
Allow string status and list ids
Favourites and reblogs also use this id and it's sometimes strings.
2020-09-29 10:06:18 +02:00
Ivan Habunek 62d7855fc0
Remove curses app, replaced by tui 2020-09-29 10:04:57 +02:00
Sandra Snan 103bc43c26
Reply to non-int, and also longer posts, Pleroma style 2020-09-01 16:11:12 +02:00
Ivan Habunek 957eec6f40
Bump version, add to changelog 2020-06-15 21:08:39 +02:00
Ivan Habunek ad272f521b
Fix timeline generator to respect --instance option
Access the anon public & tag timelines in this case. This makes it
possible to see those timelines without being logged in.
2020-06-15 21:08:02 +02:00
Eyal Sawady bf168be87d
Fix crash on empty timeline 2020-05-20 08:26:09 +02:00
Ivan Habunek 3829a57909
Add --reverse option to notifications
fixes #151
2020-05-11 13:51:07 +02:00
Denis Laxalde 3efa330d69
Display a message in footer upon [P]in action
And clear the message after 5s.
2020-05-11 13:21:00 +02:00
Denis Laxalde 4d1fa837a1
Let <Esc> move back to "home" timeline
When not in overlay mode, we handle <Esc> key press to get back to the
"home" timeline. This allows to navigate quickly from another timeline
to the home one, without getting through the "go to" menu.
2020-05-11 13:21:00 +02:00
Denis Laxalde 69f110b474
Make [P]in action toggle save of hashtag timeline
If currently viewed timeline is saved, [P] unsaves it.
2020-05-11 13:20:59 +02:00
Denis Laxalde 3e11153640
Add a [P]in action to save a hashtag timeline
This goes along with the ability to "go to" a saved hashtag timeline.

We need to pass the "local" flag down build_timeline() method so that
this is also saved. Note that we cannot save both a local and a
federated timeline for the same hashtag: I'm not sure it's worth
supporting both options?
2020-05-11 13:20:54 +02:00
Denis Laxalde 949b5552ca
Sort keys when saving JSON config
This helps keeping changes minimal when rewritting from the program.
2020-05-11 13:20:08 +02:00
Denis Laxalde 9d3d38552e
Display saved timelines in "goto" menu
We introduce "saved timelines" as a new entry in configuration file. For
now, we only save whether the timeline is local or not. Timeline save is
not implemented yet, only retrieval from config file and display is
handled at the moment. Saved timelines in the goto menu.
2020-05-11 13:20:07 +02:00
Ivan Habunek 3b5769acc0
Use authorized get to fetch public and tag timelines
Some servers require authorization for viewing "public" timelines, and
since currently toot always requires auth for this it's not required to
support anon access to timelines.

fixes #168
2020-05-11 12:59:50 +02:00
Ivan Habunek ad96143ee0
Censor authorization header value in logs 2020-05-11 12:46:27 +02:00
Ivan Habunek bc96cf7eea
Bump version, add changelog 2020-04-15 14:28:17 +02:00
Ivan Habunek 8b9ca7e243
Don't show links window if no links are found 2020-04-15 14:12:30 +02:00
Denis Laxalde 28e1281187 Add an action to display status links and open them
We add a new [L]inks action that opens an overlay window with links
found in the content of selected status. Links are selectable and upon
click/enter we open the web browser at link's URL.
2020-04-15 14:11:31 +02:00
Ivan Habunek 5fc46d0cfc
Fix datetime parsing on python 3.5
datetime.astimezone supports native datetimes only since python 3.6

fixes #162
2020-04-15 14:01:23 +02:00
Denis Laxalde 2199ca18b5 Document the [M]edia action 2020-01-26 11:23:39 +01:00
Finn O'leary a6e76e0bcb Fix VISIBILITY_OPTIONS
Reorder Visibility Options to be from "most visible" to "least visible",
and swap the definitions of "private" and "unlisted" to match the actual
visibility that results from those actions.
2020-01-26 10:19:24 +01:00
Ivan Habunek a958573d8d
Bump version, changelog 2020-01-23 13:24:49 +01:00
Denis Laxalde 690a91ce04 Fall back to "username" when "display_name" is unset
We add a "username" field to Author entity, this is then used when
displaying the "reblogged by" information when respective account has no
display name.
2020-01-22 08:13:48 +01:00
Ivan Habunek 1b2a9c4198
Bump version, changelog 2020-01-21 09:38:17 +01:00
Ivan Habunek 6d18fd55a1
Quote hahtags before including them in an URL
Fixes searching by hashtag which include the #.

issue #134
2020-01-21 09:04:03 +01:00
Ivan Habunek 60efc13338
Implement character count indicator when composing
Attempts to load max char count from the server on init.

issue #121
2020-01-03 09:15:11 +01:00
Ivan Habunek 0fed933123
Fix typo 2020-01-02 10:34:00 +01:00
Ivan Habunek b6749fb0f1
Require auth for toot tui 2020-01-02 10:21:58 +01:00
Ivan Habunek d595cc5140
Don't use fstrings to keep support with python<3.7
fixes #131
2019-09-23 16:51:04 +02:00
Ivan Habunek cf78cd20ac
Upgrade to v2 search endpoint 2019-09-22 22:08:04 +02:00
Ivan Habunek 35e03a13b1 Simplify access to reblogged status data
Adds two properties to `Status` entity:
* `reblog` - contains the reblogged Status or None if not a reblog
* `original`- contains the reblogged Status or self if not a reblog

Anywhere where you wish to show a reblogged status's property when it's
a reblog, or the base status proprety if not a reblog, use
`status.original.<property>`.
2019-09-22 18:56:03 +02:00
Ivan Habunek bc6e43376a
Bump version, add changelog 2019-09-18 21:57:55 +02:00
Denis Laxalde 9623219959 Include mentions and replied-to account in compose text
We add a "mentions" attribute to Status. Then when composing a reply, we
fill the edit text of the compose box with the account name of status
being replied to and possibly include mentions at the bottom of the edit
text. Initial cursor position is set after replied account name.
2019-09-18 21:42:55 +02:00
Kai Zhang a76f4ae815 Set urwid global encoding to UTF-8
so that many characters can be displayed
2019-09-18 21:41:02 +02:00
Denis Laxalde 9fb52fb0a1 Try to use media's text_url if present
This field is sometimes provides and gives a shortened URL which is
easier to click on in a terminal.
2019-09-13 12:54:08 +02:00
Denis Laxalde a8774fc9ea Indicate if status is a reblog in timeline
This is different from the "reblogged" yellow icon already displayed on
the left of account name which indicates if own status got reblogged.
This one indicates if displayed status is a reblog.
2019-09-12 10:48:04 +02:00
Denis Laxalde e06478a798 Use original account information for reblogged statuses
Otherwise, we get the account name of reblogger in the timeline.
2019-09-12 10:48:04 +02:00
Ivan Habunek 5343319333
Improve config dir location
On Windows store config in roaming appdata.
2019-09-08 15:06:35 +02:00
Ivan Habunek 130ef9a608 Remove legacy configuration file handling 2019-09-08 14:36:37 +02:00
Your Name 7fc39379c9
Check for existance of key in dictionary
as well as non-null value to avoid uncaught KeyError

re: issue #116
2019-09-07 23:20:50 +02:00
Denis Laxalde 9d0d1b2dd7
Make "view" action work for reblogged statuses
When the status is a reblog, the URL of the original toot should be used
as the one of reblog is null.

We add a "url" attribute to Status class storing computed URL.
2019-09-06 16:01:04 +02:00
Rasmus Lindroth 3a56243878
Escape closes timeline
As Escape does the same as Q when closing the app and overlays, it should do the same with timelines
2019-09-06 15:51:32 +02:00
Ivan Habunek 367ced2eef
Don't use ANSI color codes when not desired
Which is when not supported by terminal or when not in a tty.
2019-09-06 15:03:47 +02:00
Ivan Habunek 1d3ff87ffa
TUI: Implement deleting own status messages 2019-09-04 16:16:16 +02:00
Ivan Habunek 7309e5bb53
Bump version 2019-09-04 08:39:18 +02:00
Ivan Habunek e310482cb6
Fix date parsing bug
issue #114
2019-09-04 08:36:12 +02:00
Ivan Habunek 70faf47c91
Bump version 2019-09-03 16:31:47 +02:00
Denis Laxalde efbaf9e706
Indicate if status is a reply in timeline of TUI 2019-09-03 15:40:50 +02:00
Ivan Habunek cf01cb9014
Cleanup palette slightly 2019-09-03 15:40:49 +02:00
Ivan Habunek 05972fc6fa
Show application used to post status 2019-09-03 15:40:49 +02:00
Ivan Habunek 7e04ad55c6
Add links to help overlay 2019-09-03 15:40:49 +02:00
Ivan Habunek 3a11e470fb
Extract overlays from app.py 2019-09-03 15:40:49 +02:00
Ivan Habunek c1f518765c
Fix missing padding 2019-09-03 15:40:49 +02:00
Ivan Habunek d5a2cc27ed
Add help 2019-09-03 15:40:48 +02:00
Ivan Habunek 41f997199a
Add padding to status details 2019-09-03 15:40:48 +02:00
Ivan Habunek 51afcf7e34
Add goto hash timeline 2019-09-03 15:40:48 +02:00
Ivan Habunek 350138324b
Add basic timeline switching 2019-09-03 15:40:48 +02:00
Ivan Habunek 07e6c372bc
Prepare for context menu 2019-09-03 15:40:48 +02:00
Ivan Habunek 1dce948166
Show content warning in status details 2019-09-03 15:40:47 +02:00
Ivan Habunek 85ceb8b11f
Update docs to replace curses with tui 2019-09-03 15:40:47 +02:00
Ivan Habunek 98b783836a
Mark toot curses as deprecated 2019-09-03 15:40:47 +02:00
Ivan Habunek 7f6f128f38
Show media in image viewer 2019-09-03 15:40:47 +02:00
Ivan Habunek 31462fe6f8
Implement replies 2019-09-03 15:40:46 +02:00
Ivan Habunek 9c74c1d9e6
Housekeeping 2019-09-03 15:40:46 +02:00
Ivan Habunek ab1fc6961b
Show media in status details 2019-09-03 15:40:46 +02:00
Ivan Habunek 5213eb1835
Focus status after posting 2019-09-03 15:40:46 +02:00
Ivan Habunek 4deccee754
Decouple Timeline and TUI, use signals instead 2019-09-03 15:40:46 +02:00
Ivan Habunek 1a8c515922
Implement thread (status context) view 2019-09-03 15:40:46 +02:00
Ivan Habunek 5ec8d9411d
Propagate visibility when posting status 2019-09-03 15:40:45 +02:00
Ivan Habunek 672bb5d008
Add reply, reblog and favourite counters 2019-09-03 15:40:45 +02:00
Ivan Habunek db76b004cf
Simplify linebox rendering in status details 2019-09-03 15:40:45 +02:00
Ivan Habunek f6fcb2a821
Timeline: add divider, move columns, boost icon 2019-09-03 15:40:45 +02:00
Ivan Habunek 9784fb8eb5
Don't crash if no url present 2019-09-03 15:40:45 +02:00
Ivan Habunek 871e2bc960
Render polls 2019-09-03 15:40:45 +02:00
Ivan Habunek 9aadec6cfb
Add option to set status visibility 2019-09-03 15:40:44 +02:00
Ivan Habunek 4f30c177d6
Ditch status index list for now
Simplifies things, makes update_status slightly slower, but no biggie.
2019-09-03 15:40:44 +02:00
Ivan Habunek 366e9382d3
Implement posting statuses 2019-09-03 15:40:44 +02:00
Ivan Habunek b95aca964f
Show an intro screen while loading initial toots 2019-09-03 15:40:44 +02:00
Ivan Habunek fb14c262e0
Show exception stack trace on error 2019-09-03 15:40:44 +02:00
Ivan Habunek 372976b1b2
Overhaul async actions, implement boost and reblog 2019-09-03 15:40:43 +02:00
Ivan Habunek 2349173a45
Tweaks 2019-09-03 15:40:43 +02:00
Ivan Habunek 2be8cb8438
Show status source 2019-09-03 15:40:43 +02:00
Ivan Habunek 2d8199646f
Boosted by improvements 2019-09-03 15:40:43 +02:00
Ivan Habunek dd1b462413
Highlight hashtags 2019-09-03 15:40:43 +02:00
Ivan Habunek 7da2e2dbbc
Handle reblogs 2019-09-03 15:40:43 +02:00
Ivan Habunek f68f5d5716
Load next when at bottom of list 2019-09-03 15:40:42 +02:00
Ivan Habunek c99999161d
Render status details 2019-09-03 15:40:42 +02:00
Ivan Habunek ea1ef6f207
Initial implementation of a TUI using Urwid 2019-09-03 15:40:42 +02:00
Viktor Villainov 616483d78a
Remove double process_response function call
since it's called in anon_post already
2019-09-03 09:04:32 +02:00
Ivan Habunek 6f8cd86417
Fix compatibility with py<3.6 2019-08-29 12:46:00 +02:00
Ivan Habunek 73ba70eb83
Create config file with 0600 permissions
It contains secrets and should not be readable by others.

fixes #109
2019-08-27 13:20:22 +02:00
Ivan Habunek d21cad892c
Implement composing tweets using an editor
fixes #90
2019-08-22 17:37:24 +02:00
Ivan Habunek 840b2fd476
Set the user agent string to all requests
Fixes issue with accessing instances using Cloudfare DDOS protection.

issue #106
2019-08-07 22:58:30 +02:00
Ivan Habunek e108f370e1
Bump version 2019-08-01 13:25:45 +02:00
Ivan Habunek a771ca3aa7
Enable attaching multiple media files
fixes #67
2019-08-01 12:56:21 +02:00
Ivan Habunek a7e4f9d888
Add --language option to post command
Used to override language detection.
2019-07-30 16:13:29 +02:00
Ivan Habunek d13fa8685b
Merge pull request #101 from Skehmatics/fix-resize
Fix various resize issues
2019-04-25 14:58:08 +02:00
Derek Schmidt cb3885b20b
Fix #100
Using self.panel.hide() without calling
curses.panel.update_panels() before next refresh can really mess
stuff up. As far as I can tell, this was the real cause of #100.

This changes that call to the Modal's hide method instead, which
will keep this sort of issue from coming up again (hopefully)
2019-04-25 14:46:01 +02:00
Derek Schmidt 5c8f3b5978
Fix crash on window open
Missed a call when changing refresh to refresh_text
2019-04-24 21:32:28 -07:00
Derek Schmidt b9e9eea295
Redaw footer and header after panels
Fix left panel overlaping the footer on full_redraws
2019-04-24 16:57:55 -07:00
Derek Schmidt 24421fcb53
Fix resize when modals are visible
Use a callback function to allow items farther up in the stack
to have their own resize logic. This also requires a slight
change to the main TimelineApp to stay DRY
2019-04-24 16:57:52 -07:00
Ivan Habunek aff0c2281f
Improve keystroke handling 2019-04-24 14:05:28 +02:00
Ivan Habunek c862df8e40
Run curses with 20 statuses per page by default 2019-04-23 14:12:29 +02:00
Ivan Habunek 912e7c8bc4
Nicer header for curses 2019-04-23 13:53:06 +02:00
Ivan Habunek b9743ba268
Simplify windows setup 2019-04-23 13:31:17 +02:00
Ivan Habunek 92810459c7
Change content warning shortcut to ^W
^S will freeze most terminals
2019-04-16 14:37:34 +02:00
Derek Schmidt 747c5a611f
Add posted status / reply to the top of the timeline on submit 2019-04-16 14:21:08 +02:00
Derek Schmidt 2a6206903f
Mention EOT rather than RS
In my testing, not all terminal emulators have the same ctrl+enter
key accelerator for the ascii record seperator, so mention EOT
instead but still leave it in for those that might like it better.
2019-04-16 14:21:08 +02:00
Derek Schmidt 5d652754ec
Slightly redesign the modal to be more like a window
+ Only do a full draw on init, and just refresh on updates / show
+ Better differenciate "No content" vs "quit"
+ Reset the cursor position when content is cleared
2019-04-16 14:21:08 +02:00
Derek Schmidt 073d340908
Change control scheme to make more sense
Ctrl+Enter (or the standard ^D / EOT) to confirm, Escape to quit.

Since we're asking for a raw escape, we also need to tweak the
curses escape detection timeout a little, otherwise the user would
have to wait a whole second for the keystroke to register
2019-04-16 14:21:08 +02:00
Derek Schmidt 45bf2acba1
Default to CW of parent status when replying 2019-04-16 14:21:07 +02:00
Derek Schmidt 7f5c201925
Minor compose window cleanup / misc fixes
+ Remove excess padding on width
+ Rename TextModal to EntryModal
+ Remove duplicate delete key handler
+ Redraw when CW modal closes
+ Return empty string rather than None
2019-04-16 14:21:07 +02:00
Derek Schmidt a367f78cbb
Handle screen position when newline only lines exist 2019-04-16 14:21:07 +02:00
Derek Schmidt 2b3b14c8b7
Impliment a custom textbox-like modal
The actual curses provided textbox has issuses with adding
newlines to the toot body when the text wraps to fit,
so I've implimented a basic textbox using draw_lines and an
internal text body (rather than relying on the curses window
contents.
2019-04-16 14:21:07 +02:00
Derek Schmidt 26f49e460e
Make help text less wordy 2019-04-16 14:21:07 +02:00
Derek Schmidt a641543922
Add basic reply functionality 2019-04-16 14:21:07 +02:00
Derek Schmidt c7526941d2
Add cw / spolier_text setting within compose window
And also make things probably more complicated than neccesary
oops
2019-04-16 14:21:07 +02:00
Derek Schmidt 6bb2f98ad2
Add basic text compose + posting 2019-04-16 14:21:06 +02:00
Ivan Habunek 474d9c432f
Move notification printing to output module
Removed sorting, since notifications are already sorted.
2019-04-16 14:12:42 +02:00
Denis Laxalde 204d4d4138 Handle absence of notification in 'notifications' command 2019-02-17 15:02:05 +01:00
Denis Laxalde 6360e4d07d Add a --clear option to "notifications" command 2019-02-17 14:18:51 +01:00
Denis Laxalde 5174a751f2 Implement "notifications" command
The list of notifications is diplayed with each item enclosed within an
horizontal line as for timeline. When a status is involved (when
notification type is "reblog" or "favourite"), we also display the full
status.

Closes #81.
2019-02-17 14:09:56 +01:00
Ivan Habunek f7167e0880
Bump version 2019-02-15 14:14:22 +01:00
Ivan Habunek d224375da4
Consolidate timeline selection arguments
toot timeline and toot curses now use the same logic.
2019-02-15 14:13:12 +01:00
Ivan Habunek abb1b436ca
Fix typo 2019-02-15 14:13:11 +01:00
Ivan Habunek 10595be865
Show full account name in timeline 2019-02-15 14:13:11 +01:00
Denis Laxalde 5a867f2380
Show number of replies/reblogs/favourites in status footer of curses ui
When parsing "replies_count" from status data, we allow the field to be
absent as it got added in version 2.5.0 (in constrast with other ones,
added in 0.1.0) as there might be servers with that version around.
2019-02-15 12:55:55 +01:00
Denis Laxalde 4bc963a236
Indicate if status is a reply in left pane of curses ui 2019-02-15 12:47:42 +01:00
Denis Laxalde 3d0c7be1e0 Indicate if status has been favorited in left pane of curses ui
Showing a yellow star in the right corner of second line.
2019-02-14 20:39:58 +01:00
Denis Laxalde 41d96249ba Add favourite/unfavourite actions to curses ui 2019-02-14 20:21:48 +01:00
Ivan Habunek d7cc97d2c7
Tweaks to status boosting in curses app 2019-02-14 18:04:05 +01:00
Denis Laxalde c6bc4a695f
Add reblog/unreblog actions to curses ui
This is implemented using "b" key to toggle reblog/unreblog based on the
value of "reblogged" field in status data.
2019-02-14 17:58:55 +01:00
Denis Laxalde 066589bf53
Display a ↷ in status detail window if status got reblogged 2019-02-14 17:58:55 +01:00
Denis Laxalde f1c8465e63
Add a "reblogged_by" command 2019-02-14 17:58:47 +01:00
Denis Laxalde 5514c47bca
Store status id in parse_status() 2019-02-14 17:58:22 +01:00
Denis Laxalde 834bdb67ac
Pass "app" and "user" to TimelineApp
We're going to need this context to issue API calls from the curses UI.
2019-02-14 17:58:22 +01:00
Ivan Habunek e6d585ae5d
Nicer timeline output 2019-02-14 17:31:48 +01:00
Ivan Habunek 996228d224
Employ wcstring utils to improve rendering 2019-02-14 15:47:40 +01:00
Ivan Habunek 8a3ff94e47
Consolidate wcwidth-related utils in one module 2019-02-14 15:45:27 +01:00
Ivan Habunek 769ff9e406
Add wcstring utils 2019-02-14 15:23:46 +01:00