As a first item, the last release of the year, version 1.5.1, was released to PyPI last week, with a variety of bugfixes and small improvements (see the release notes). At the start of 2018 we had not yet released 1.0, and now we have a very stable v1.5.1 that I think we can be proud of. It's been quite a year!
Looking forward, over the weekend I tried out a bonkers idea for implementing an "undo", which has been requested at least a few times. It's tricky and tedious to implement comprehensively with the approaches we've talked about so far, but then I had the idea to try a fork()-based method, which effectively takes a snapshot of the exact current state of the program that you can then later return to. I had it working pretty quickly on manual keystrokes ('save checkpoint' and 'restore checkpoint'), with the idea that it would ultimately save automatically before any modification command.
It did work, but sure as sin it saved and restored *all* state, including the cursor position. It was kind of cool but also pretty weird, more like going back in time than a proper undo. So I think it has to stew some more for now.
Meanwhile, I've also been inspired to store my contacts in a simple local format that I can use VisiData with. (I wanted to start an email list but Facebook wouldn't give me the bulk list of emails and other contact info for my connections, which was the final straw.) I've been using a tsv file for a few weeks, but it's a little precarious for such long-term and important personal data, so I was thinking of trying out a sqlite database--which means VisiData would get saving to sqlite (item #8 on the ROADMAP). Anyone want to help beta test?
Happy new year, and here's hoping we all get to use VisiData even more in the coming year!