# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 8
# self = https://watcher.sour.is/conv/2phtura
Screw it. I added the mtime check. It’s easy to do and hopefully covers most cases.

There are three ways to cancel now:

1. Save an empty twt.
2. Quit the editor without ever saving anything to the file.
3. Quit the editor with an exit code other than 0 (":cq!" in Vim).

I think this is good enough. I won’t add anything that works on the twt’s content (i.e. “same content = cancel”), because I want to be able to write twts with arbitrary content (even if it happens to be identical to that pre-filled content).=
Screw it. I added the mtime check. It’s easy to do and hopefully covers most cases.

There are three ways to cancel now:

1. Save an empty twt.
2. Quit the editor without ever saving anything to the file.
3. Quit the editor with an exit code other than 0 (":cq!" in Vim).

I think this is good enough. I won’t add anything that works on the twt’s content (i.e. “same content = cancel”), because I want to be able to write twts with arbitrary content (even if it happens to be identical to that pre-filled content).=
Screw it. I added the mtime check. It’s easy to do and hopefully covers most cases.

There are three ways to cancel now:

1. Save an empty twt.
2. Quit the editor without ever saving anything to the file.
3. Quit the editor with an exit code other than 0 (":cq!" in Vim).

I think this is good enough. I won’t add anything that works on the twt’s content (i.e. “same content = cancel”), because I want to be able to write twts with arbitrary content (even if it happens to be identical to that pre-filled content).=
@movq I am getting this:


Traceback (most recent call last):
  File "/home/david/.local/bin/jenny", line 647, in <module>
    compose(app, args.reply_to_this)
  File "/home/david/.local/bin/jenny", line 60, in compose
    res = compose_new(app, None)
  File "/home/david/.local/bin/jenny", line 93, in compose_new
    mtime_before = getmtime(filename)
  File "/usr/lib/python3.8/genericpath.py", line 55, in getmtime
    return os.stat(filename).st_mtime
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpy6r_hfmv/jenny-posting.eml'
@fastidious Thanks, fixed now.
@fastidious Thanks, fixed now.
@fastidious Thanks, fixed now.
@movq yup! Thank you!