|
|
|
|
|
by replete
682 days ago
|
|
I also like single-file offline web applications, I'm hoping they become more popular with the FileSystem/FileWriter APIs now available in Chromiums (waiting on Safari/Firefox still however). I made a really simple offline HTML app for generating EFF dice passphrases:
https://github.com/replete/effindice Only thing missing really is a CLI interface. I wonder if there's a way to make HTML files executable on the command line, pass through arguments as qs params. The amount of times I make a little nodeJS app to do something with a set of files, the webserver bit seems so overkill sometimes.. |
|
A lot of the stuff that people think they need Chrome's proposed filesystem APIs for are not actually things they need.
Every mainstream browser accepts directories for both type=file inputs and for drag-and-drop, and that's been the case for years. So that's a non-issue. That aside, the next thing people pretend they need it for is so their app foo.html won't fail when it tries to read and write to or from ~/.foo and /etc/foo and anywhere else the author chooses, whenever they want. But apps can and should be rewritten not to expect that kind of ambient capability. The fact that in-browsernapps can't do that stuff is a good thing. There's usually nothing stopping the author from refactoring their program to either output a single binary file or .txt or whatever the main thing is that the program is supposed to output, or if the purpose is to write out multiple assets, then output a composite file format like ZIP or tar. I mean owing to its history and the context when it was created, the ZIP format already supports archives spanning multiple volumes/files. And that gets you automatic support for file versioning for free! It's the exact same version control strategy that Git uses and proved is viable: full-content snapshots—the difference being if you're doing ZIP, the opportunity to also use DEFLATE is natural and right there.
> Only thing missing really is a CLI interface.
If you want people to be able to use it from the command-line, write your app as a polyglot file foo.htm so that anyone can double click to open in their browser if they want to or run it as `nodejs foo.htm` since NodeJS doesn't care about file names but browsers do (for any files loaded from disk). If you want to "pass through arguments as [query string] params", then you're opening it in the browser and not really providing a command-line interface so there's very little difference between having them type the arguments out in their shell before pressing Enter or typing them into the app when it's open in the browser.
Again this is one of those things where nothing's stopping anyone from doing it right now today. They're just not doing it. As the Book Overflow guys said in a recent episode (the review of Wolfram's book on ChatGPT)—all the pieces are there. Or to borrow a turn of phrase from Raskin that gets down to the truth of the mess we're in[1], "none of this is necessary; it is merely customary"[2].
1. <https://www.youtube.com/watch?v=lKXe3HUG2l4>
2. <https://queue.acm.org/detail.cfm?id=864034>