xxv

xxv is a lightweight offline web app launcher. below is a devlog and the code is on github. visit the website for more information and a download link.


devlog

> 1.3.2022 [782d2a6]
we have a landing page now with instructions and information about xxv! visit it at xxv.network — the actual application has moved to process.xxv.network. i've added quite a lot more ux features, such as a delete button (which deletes the localstorage key and cache url), better visibility for limits (the import bar is disabled and displays "offline" if you're offline, and the modules box displays "no modules yet" if you don't have any modules), and a focus keybind (/). if you are a current user, make sure to hit ctrl+shift+i, navigate to the "application" tab, to "service worker", and hit "unregister" to update. auto-update support is coming soon. a roadmap for features like such is in the works. the underlying server was switched to a better version (rask) of the same one. tons of updates have been made, and i feel it's fully functional now. better integration of the modules repo is coming very soon, as right now it's relatively difficult to add your own app. here's to 2022 and the future of this project!

> 12.29.2021 [8fb1b12]
the coverage recently has been spotty but rest assured the project has been moving along quickly. the object tag was a good idea, but the delivery method is even better: downloading the html file from the modules repo as an arraybuffer and then converting that to base64. the /module path, which used to be a dynamic path, is now static (just /module) and takes a url param called data. that data is the base64 version of the app, and is rendered in the object tag as the source url. as far as i remember (i'm away from my computer, writing this on the github mobile website lol) the specific urls are cached so that they can be ran offline. i bought the domain xxv.network, where there will be a lander and some information and then a link to download the actual PWA (hosted at a subdomain probably). TL:DR; the main functions are complete and quasi-functional, which means minor things can have the priority (settings page, better css, even lighter app size, etc). also, don't quote me on this, but a native version may be on the roadmap. this is all future stuff, and frankly i want to start working on writing the apps i built this whole project to replace, but there's a few more things i need to get done that if i don't tell myself need to be done, won't be. a community module manager will definitely be a feature, along with local modules and better data visibility (info about the module, etc.) alright i'm going to ikea now bye

> 12.21.2021 [5189122]
honestly i forgot most of what i've done in the past three days so... today i added an object tag that pulls whatever domain you want (only my test app for now) and will display the other apps. honestly i'm exhausted so i have no idea if that's a bad idea but hopefully it'll work because i'm running out of options i think. some other security precautions will be taken obviously but this seems to be the best way to do it. lit elements, vanilla js, and plain html are the target methods for producing the apps so far, but i'm sure someone could figure out how to do react or heavier things eventually (even though that's against the point). PWA definitely seems like the permanent solution for this. i feel like i've covered mostly everything in the past few days, keep watch here for more updates.

> 12.18.2021 [8b40282]
i've scrapped the native idea - PWAs are cool (and smaller!) and are a lot easier to work with than... other software. the import bar works (and now only online, a cool feature in my opinion) and next up is the modules list. really the only thing left (as far as i know) is how to actually render the imported modules. which is, i guess, the most important part. i think the best solution is to import lit element classes and inject them into a template page's script tag, then in the body inject the custom element tag and render that. not totally sure how that'll work but at the time of typing this it's not my main thought. regardless, we're moving along quickly (now) and we should see some functionality by the end of the month at the most. time to figure out the rest so i can buy a cool domain!

> 12.16.2021 [27b852b]
finals are done, so now i've got time to develop. here's what's new:
— we've gone native! download it and inspect it.
— logo :) still a work in progress lol
— application size is 5MB. will continue to update, and minimize

> 12.8.2021 [5b99c61]
setup of the package import system

> 11.26.2021
initialization of this page (the devlog)