chiark / gitweb /
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Simon Tatham [Thu, 14 Dec 2023 19:05:33 +0000 (19:05 +0000)]
Change wording from 'Reply' to 'Send' for non-statuses.
You might be sending a message to the named user, but you're not
_replying_ to anything of theirs.
Simon Tatham [Thu, 14 Dec 2023 18:20:24 +0000 (18:20 +0000)]
First cut at Examine User.
Currently you can only type in names to examine by hand.
Simon Tatham [Thu, 14 Dec 2023 18:20:24 +0000 (18:20 +0000)]
Experimental ^K change of behaviour.
If you press ^K to delete to end of line and you're in mid-paragraph,
I think not a bad answer is to _insert_ a paragraph break, so that the
text on the next line doesn't unexpectedly wrap.
This is intuitively as close as possible to the behaviour in the
non-auto-wrapping 'me'. The only thing I don't like about it is that
pasting the text back in again with ^Y doesn't delete the line break,
but I haven't thought of a less astonishing answer to that yet.
Simon Tatham [Thu, 14 Dec 2023 18:20:24 +0000 (18:20 +0000)]
Tests of Ctrl-K.
So I can refactor it.
Simon Tatham [Thu, 14 Dec 2023 18:20:24 +0000 (18:20 +0000)]
Fix goof in IndentedParagraph.
Simon Tatham [Thu, 14 Dec 2023 18:20:24 +0000 (18:20 +0000)]
HTML formatting: support <i>.
Same as <em>, of course.
Simon Tatham [Thu, 14 Dec 2023 18:20:24 +0000 (18:20 +0000)]
Some more TODO comments.
Simon Tatham [Thu, 14 Dec 2023 17:35:21 +0000 (17:35 +0000)]
Match reply visibility to the incoming message.
I had a conversation in 'unlisted' status with someone, and it was a
pain to keep setting this by hand.
Of course, it's only a default: you _can_ change the visibility in a
reply.
Simon Tatham [Mon, 11 Dec 2023 19:11:04 +0000 (19:11 +0000)]
Post info: add list of mentioned users.
Because the post itself doesn't show their fully qualified usernames.
Simon Tatham [Sun, 10 Dec 2023 22:46:02 +0000 (22:46 +0000)]
Second thoughts, remove that assertion again.
Turns out that Composer does want to keep the entire editor buffer in
a ColouredString so that it can colourise it as a whole. And that can
include \n. We do want to keep \n away from add_wch, but keeping it
out of ColouredString entirely isn't a workable approach.
Oh well. The immediate crash is fixed, at least.
Simon Tatham [Sun, 10 Dec 2023 22:15:16 +0000 (22:15 +0000)]
Squelch literal \n appearing in post HTML.
For some reason this doesn't happen very often, but I just saw it for
the first time, and it totally confused Paragraph and also
ColouredString.frags. Avoid getting into that sitation in the first
place.
Simon Tatham [Sun, 10 Dec 2023 15:32:16 +0000 (15:32 +0000)]
Fix missing screen refresh when new posts arrive.
The rework of resize handling had the accidental side effect that when
the self-pipe from the stream-watching thread signals us, we do call
extend_future() on our feeds, but we _don't_ loop back round to the
screen redraw, so that if the user is sitting in their home timeline,
the bottom line of the screen doesn't update to show that new stuff is
available.
Simon Tatham [Sat, 9 Dec 2023 18:44:21 +0000 (18:44 +0000)]
Fix file-position stability over backward extend.
That last-minute idea to bound pos_within_item within the actual size
of the item ... forgot that each logical item (e.g. a status) is made
up of multiple physical items (paragraphs, separator line, etc), so I
bounded it within _those_ and made a mess. Should be back to normal now.
Simon Tatham [Sat, 9 Dec 2023 18:31:26 +0000 (18:31 +0000)]
Implement searching in the file pager.
Simon Tatham [Sat, 9 Dec 2023 18:05:22 +0000 (18:05 +0000)]
Fix display of whether you've boosted something.
I had forgotten for a moment that it's called something else at the
protocol level.
Simon Tatham [Sat, 9 Dec 2023 17:57:32 +0000 (17:57 +0000)]
Allow changing the visibility of posts.
Simon Tatham [Sat, 9 Dec 2023 17:41:09 +0000 (17:41 +0000)]
Allow tagging posts with a content warning.
Simon Tatham [Sat, 9 Dec 2023 16:43:41 +0000 (16:43 +0000)]
Add 'change language' in the pre-posting menu.
Uses the new bottom-line editor to prompt for a replacement language
tag.
Simon Tatham [Sat, 9 Dec 2023 16:16:14 +0000 (16:16 +0000)]
Ability to prompt on the bottom screen line.
Simon Tatham [Sat, 9 Dec 2023 15:44:00 +0000 (15:44 +0000)]
Feature to print detailed info about a status.
Now I can retrieve its URL to send to people, and find out all the
fiddly internals too.
Simon Tatham [Sat, 9 Dec 2023 15:56:31 +0000 (15:56 +0000)]
Cope with a timeline not containing any posts!
Of course, that's the first thing that happens when you log in to a
fresh Mastodon test instance.
Simon Tatham [Sat, 9 Dec 2023 15:42:44 +0000 (15:42 +0000)]
Override for config directory.
This provides a crude means of managing multiple accounts. At the
moment my only use case for this is logging in to a test server so
that I can test the fine points of posting without making a fool of
myself on the live fediverse. So I don't need to run the accounts in
parallel in a user-friendly way, and I can easily just pass a weird
command-line option when I'm doing testing.
Simon Tatham [Sat, 9 Dec 2023 12:22:23 +0000 (12:22 +0000)]
Fix resizing the window smaller.
Some weird sequence of events was triggering an attempted redraw at
the old size, before properly noticing the change and redrawing at the
new size. When going from smaller to bigger this just caused a display
flicker (in fact not even a perceptible one), but bigger to smaller
caused an exception when we tried to draw a big screen in a small
window and curses caught us printing outside the screen area.
Now seems to work better.
Simon Tatham [Fri, 8 Dec 2023 17:56:45 +0000 (17:56 +0000)]
Bodgy fix for poor performance of wcwidth.
Mastodonochrome was running rather slowly, and when I profiled it, it
turned out the bottleneck was the 'wcwidth' Python module, which is
not a wrapper on the C function, but a reimplementation in pure Python
and therefore not very fast.
I've bodged it by just making one big cache of all the strings that
the program ever passes to wcwidth, since there were only two calls to
that function at all and they were both in text.py. I don't know if
that's the right fix in the long term, but it seems to have improved
things considerably for now.
(Also, while I'm at it, ColouredString now wcwidths its contents once
at construction time and doesn't redo it on every call, so it doesn't
even look up the same thing in the cache multiple times.)
Simon Tatham [Fri, 8 Dec 2023 12:59:59 +0000 (12:59 +0000)]
^K and ^Y for copy and paste to end of line.
Well, end of _paragraph_, for the moment. Perhaps end of line would be
better. But my immediate use cases won't care about the difference:
- ^W^K to delete the last word I typed at the end of a paragraph
- dealing with code snippets which don't wrap anyway
Simon Tatham [Fri, 8 Dec 2023 12:56:48 +0000 (12:56 +0000)]
Editor: ^W and ^T to go forward/back a word
Simon Tatham [Fri, 8 Dec 2023 12:50:31 +0000 (12:50 +0000)]
Properly indicate whether we can extend backwards.
Simon Tatham [Fri, 8 Dec 2023 12:48:49 +0000 (12:48 +0000)]
Ability to retrieve the thread of a post.
Simon Tatham [Fri, 8 Dec 2023 12:33:24 +0000 (12:33 +0000)]
Fix a wrapping glitch I spotted this morning.
Simon Tatham [Fri, 8 Dec 2023 12:33:11 +0000 (12:33 +0000)]
Fix API mismatch in composer tests.
Simon Tatham [Fri, 8 Dec 2023 09:01:11 +0000 (09:01 +0000)]
Add a final menu before posting a status.
So far it doesn't have anything useful in it, but the idea is that it
will be where you add all the other options in statuses, like media
attachments, content warnings, etc.
Simon Tatham [Fri, 8 Dec 2023 08:55:14 +0000 (08:55 +0000)]
Make the dry-run posting mode a standard option.
It's silly to keep hacking it out in the source code every time I want
to test something!
Simon Tatham [Fri, 8 Dec 2023 08:42:56 +0000 (08:42 +0000)]
Proper old-fashioned [RET][.][RET] to finish a post
Simon Tatham [Fri, 8 Dec 2023 08:26:03 +0000 (08:26 +0000)]
Implement extending feeds backwards.
Simon Tatham [Fri, 8 Dec 2023 07:43:55 +0000 (07:43 +0000)]
Get editor limits from the instance.
Simon Tatham [Fri, 8 Dec 2023 07:35:44 +0000 (07:35 +0000)]
Show which things are already faved/boosted.
Now we can only offer the right one of fave and unfave buttons, too.
Simon Tatham [Fri, 8 Dec 2023 07:25:18 +0000 (07:25 +0000)]
Add target highlights in the Ego Log.
Forgot!
Simon Tatham [Fri, 8 Dec 2023 07:07:29 +0000 (07:07 +0000)]
Ability to [un]favourite posts.
I had a conversation yesterday about how I should use that button
more, so I guess my personal client needs to have the functionality!
Simon Tatham [Fri, 8 Dec 2023 07:02:35 +0000 (07:02 +0000)]
Prepare to reuse post-selection UI for other things.
Simon Tatham [Thu, 7 Dec 2023 21:26:57 +0000 (21:26 +0000)]
Fix a crash when hitting Return in the editor.
Simon Tatham [Thu, 7 Dec 2023 21:22:35 +0000 (21:22 +0000)]
Left and Right should page up/down in files.
Didn't realise how much I'd internalised that keystroke pair until I
found it wasn't working.
Simon Tatham [Thu, 7 Dec 2023 18:52:56 +0000 (18:52 +0000)]
All the machinery is ready to try to post!
Simon Tatham [Thu, 7 Dec 2023 18:44:20 +0000 (18:44 +0000)]
Now we spawn an editor with the right set of recipients.
Still can't _do_ anything with it, though.
Simon Tatham [Thu, 7 Dec 2023 08:34:39 +0000 (08:34 +0000)]
First cut at an editor for composing posts.
Basic editing keys are supported; no refinements. Let's see how this
goes before I decide which editing functionality to add next.
Simon Tatham [Thu, 7 Dec 2023 17:56:23 +0000 (17:56 +0000)]
Switch to using Unicode input.
I failed to notice that getch() delivers you single bytes in trad
fashion. Switched to get_wch(), which returns either a Python char
(that is, a length-1 str) or an integer containing a curses key code.
Also it throws an exception instead of returning curses.ERR, which
I've dealt with by the simplest possible method of turning it back
into curses.ERR. (The exception in this case is almost always 'stdin
is nonblocking and there's nothing to see here yet'.)
Simon Tatham [Thu, 7 Dec 2023 17:55:03 +0000 (17:55 +0000)]
Scroll by a bit less than a full screen in files.
Real Mono does this asymmetrically, it turns out: [SPACE] scrolls down
in such a way that the new screenful has 2 lines in common with the
old one, whereas [-] scrolls up by a little less so that you have 4
lines in common.
I can't quite bring myself to replicate _that_ oddity, so I've
compromised on 3 in both directions.
Simon Tatham [Thu, 7 Dec 2023 07:45:30 +0000 (07:45 +0000)]
Prevent accidentally stacking multiple [ESC][R].
Now, if you [ESC] to get to where you already were, it will just go
back to the existing stack entry.
(But maybe this still isn't strong enough? Perhaps we need to search
for it all the way up?)
Simon Tatham [Thu, 7 Dec 2023 07:34:35 +0000 (07:34 +0000)]
Actually show keypresses in menus
Simon Tatham [Thu, 7 Dec 2023 07:25:15 +0000 (07:25 +0000)]
Try out the traditional ESC X X to exit.
Although I might go back to letting you [Q] out of the Main Menu; not
sure yet.
Simon Tatham [Thu, 7 Dec 2023 07:18:29 +0000 (07:18 +0000)]
Add a Main Menu, at last.
Now that you can [RET] out of the home timeline, it's handy!
Simon Tatham [Thu, 7 Dec 2023 07:14:08 +0000 (07:14 +0000)]
Fix getting stuck in the logs menus
Simon Tatham [Thu, 7 Dec 2023 07:12:48 +0000 (07:12 +0000)]
Correct handling of [RET] in files and menus.
(a) turned out curses was returning it as \n not \r
(b) also, in a file, it should go down a line _or exit_.
Simon Tatham [Thu, 7 Dec 2023 07:00:37 +0000 (07:00 +0000)]
Amazingly horrible regexes for scanning post content.
Simon Tatham [Thu, 7 Dec 2023 05:35:32 +0000 (05:35 +0000)]
Support <em> in post content.
I just received a reply containing one.
Simon Tatham [Thu, 7 Dec 2023 05:33:13 +0000 (05:33 +0000)]
Show a Re: header on reply posts.
Simon Tatham [Thu, 7 Dec 2023 05:22:03 +0000 (05:22 +0000)]
Space out the ... at the end of a boost/fave record.
Simon Tatham [Thu, 7 Dec 2023 05:18:52 +0000 (05:18 +0000)]
Don't show @mentions in Ego Log post summaries.
That way we get in as much as possible of the message _content_, which
should help disambiguate posts that are part of a long conversation
with the same user(s).
Simon Tatham [Wed, 6 Dec 2023 19:03:26 +0000 (19:03 +0000)]
Fix missing 'you' after 'followed'.
Simon Tatham [Wed, 6 Dec 2023 19:03:14 +0000 (19:03 +0000)]
Make the ego feed refresh.
Simon Tatham [Wed, 6 Dec 2023 19:02:19 +0000 (19:02 +0000)]
*Really* fix that crash on receiving a mention.
Commit
35ba8f325faf3e3 replaced the wrong thing with a different wrong
thing, ahem.
Simon Tatham [Wed, 6 Dec 2023 12:57:27 +0000 (12:57 +0000)]
First cut at an 'ego log'.
Shows all the indications that people like me. Lives at the same place
Mono's Edit Log lives.
Formatting wants some work:
- maybe trim out @mentions from the front, so we quote more actual text
- do something to make log entries more nicely separated
Simon Tatham [Wed, 6 Dec 2023 12:28:43 +0000 (12:28 +0000)]
Fix a crash on receiving a mention.
self.mentions_feed is a function; mentions_feed is the value it returned.
Simon Tatham [Wed, 6 Dec 2023 07:34:22 +0000 (07:34 +0000)]
Cope with lack of XDG config directories.
If the host system is a pure server which you log into via ssh, it may
not have these at all. Hard-code the default ~/.config as a fallback.
Simon Tatham [Wed, 6 Dec 2023 07:33:31 +0000 (07:33 +0000)]
UNTESTED: beep and go to [ESC][R] on a message.
Simon Tatham [Wed, 6 Dec 2023 07:30:03 +0000 (07:30 +0000)]
Now we can read 'messages'! (aka mentions)
Simon Tatham [Wed, 6 Dec 2023 06:52:06 +0000 (06:52 +0000)]
Do SIGWINCH handling ourselves.
It broke as a side effect of going into nodelay mode, I think because
our select loop didn't know to check curses's flag.
Simon Tatham [Wed, 6 Dec 2023 06:28:28 +0000 (06:28 +0000)]
Set curses nodelay mode.
Otherwise, pressing M-g (in pterm, which curses will interpret as ESC
g, just as I'd want it to) delivers the ESC, but leaves the g in
curses's internal buffer, which we don't empty before diving back into
the select loop.
Simon Tatham [Tue, 5 Dec 2023 13:05:36 +0000 (13:05 +0000)]
Detect updates and append them to the file.
Simon Tatham [Tue, 5 Dec 2023 13:05:23 +0000 (13:05 +0000)]
Paging around a file now works!
Simon Tatham [Tue, 5 Dec 2023 07:09:40 +0000 (07:09 +0000)]
VERY UNFINISHED attempt to start reading a file in curses.
Simon Tatham [Mon, 4 Dec 2023 20:06:04 +0000 (20:06 +0000)]
Test of streaming
Simon Tatham [Mon, 4 Dec 2023 19:58:56 +0000 (19:58 +0000)]
UNTESTED attempt to make bidirectional incremental feeds
Simon Tatham [Sun, 3 Dec 2023 07:18:06 +0000 (07:18 +0000)]
Change my mind about account name policy.
I think the leading @ is only for @mentioning people, and it's only
out of the Mastodon context that people put it on by habit as a hint
that they're talking about the fediverse.
Also, I think I prefer my account names fully qualified, so now I have
access to the correct instance domain, I'll put it in From lines where
the server didn't send one at all.
Simon Tatham [Sun, 3 Dec 2023 07:14:29 +0000 (07:14 +0000)]
Avoid ugly double blank line in media-only posts.
Simon Tatham [Sat, 2 Dec 2023 19:21:50 +0000 (19:21 +0000)]
Cope with newlines in media descriptions.
Simon Tatham [Sat, 2 Dec 2023 19:15:35 +0000 (19:15 +0000)]
Separate logical instance domain from physical URL.
Some instances don't have the same domain name, e.g. Julia Evans's
personal instance lives at https://social.jvns.ca but the domain name
for username purposes is user@jvns.ca. Now I think we're correctly
distinguishing the two concepts.
Simon Tatham [Sat, 2 Dec 2023 18:59:50 +0000 (18:59 +0000)]
First cut at interleaving home timeline with mentions.
It took so many tries to get that merge algorithm working that I
managed to get '429 Too many requests' from the server. I hope that's
sorted out tomorrow. Perhaps I should call it a night for now.
Simon Tatham [Sat, 2 Dec 2023 18:59:38 +0000 (18:59 +0000)]
Log JSON responses more usefully
Simon Tatham [Sat, 2 Dec 2023 18:24:53 +0000 (18:24 +0000)]
Proof of concept using Link response headers for pagination.
Simon Tatham [Sat, 2 Dec 2023 18:13:55 +0000 (18:13 +0000)]
Remove redundant setup calls.
Simon Tatham [Sat, 2 Dec 2023 18:12:39 +0000 (18:12 +0000)]
Proof of concept fetching my notifications timeline.
Simon Tatham [Sat, 2 Dec 2023 18:01:26 +0000 (18:01 +0000)]
Colourise spaces properly.
It showed up in that error report, and it would have been nasty
copy-pasting as well.
Simon Tatham [Sat, 2 Dec 2023 17:58:05 +0000 (17:58 +0000)]
Report markup parse failures inline.
Don't want to crash the whole client for them!
Simon Tatham [Sat, 2 Dec 2023 17:48:11 +0000 (17:48 +0000)]
Handle <strong> tags
Simon Tatham [Sat, 2 Dec 2023 17:38:25 +0000 (17:38 +0000)]
Show media attachments in posts
Simon Tatham [Sat, 2 Dec 2023 17:28:02 +0000 (17:28 +0000)]
Show boosted toots sensibly.
Simon Tatham [Sat, 2 Dec 2023 17:21:50 +0000 (17:21 +0000)]
Now actually use the login details.
The public timeline is replaced with my home timeline, which I can now
access because my client is logged in.
Simon Tatham [Sat, 2 Dec 2023 17:14:16 +0000 (17:14 +0000)]
Implemented login.
Simon Tatham [Sat, 2 Dec 2023 16:16:37 +0000 (16:16 +0000)]
Start of a curses UI.
Just does setup and teardown, but I've at least integrated the
ColouredString system from text.py into it
Simon Tatham [Sat, 2 Dec 2023 13:52:23 +0000 (13:52 +0000)]
Support hashtags, mentions and code. <pre> still to do.
Simon Tatham [Sat, 2 Dec 2023 13:37:01 +0000 (13:37 +0000)]
Add some rendering unit tests
Simon Tatham [Sat, 2 Dec 2023 12:30:50 +0000 (12:30 +0000)]
Start colourising the rendering
Simon Tatham [Fri, 1 Dec 2023 17:39:19 +0000 (17:39 +0000)]
First cut at printing post content.
Simon Tatham [Fri, 1 Dec 2023 09:03:52 +0000 (09:03 +0000)]
Also display From: lines.
Simon Tatham [Fri, 1 Dec 2023 09:00:43 +0000 (09:00 +0000)]
Start of a Monochrome-like Mastodon client.
Currently fetches a public timeline, and formats Mono-style post
separator lines without any colour. Much yet to do!