If the computer is a bicycle for the mind, Tangent is a computer for school. It's experimental, unifying a few of the most interesting and useful apps I've created in one environment with shared windowing and storage.
Toshit
Check their projects out: m3-dreamland, epoxy-tls, SoM Grand Survey: Mount Kablooey Summit Visitor Center, dreamland.js, scramjet, SoM Harbor, powerd, Summer Of Making
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
new day, why not write a readme? shipwrights suggested it and i can see why, it could be a waste to ship a large project without a solid readme
more fixes:
- i made sure that themes are reapplied even after refresh (eg if you send a chat message)
- i updated web to actually work with most pages by adding a rewriter
- i fixed some linting issues
- i switched to r2 instead of storing the assets within the val since r2 allows storing >80kb files
- i tweaked some copy
i've lost 99% of my motivation by now so i hope this version ships
oh, one more thing: discord was giving me 429 too many requests errors when deployed, so i had to switch to a proxied fetch to prevent that from happening.
i've decided to ship Tangent as a computer. this means dropping any TODO apps and adding mock data or implementations when needed. i'm not sure if i'll continue with the computer framework for future projects, but i'm glad i made it; it was satisfying to make, i learned a lot, it's decent code for llms to learn from, and i filed a few bug reports along the way.
i did some other minor workflow optimizations and updated the github actions to check types and run eslint. it'll make new development faster trust
i optimized how the site was served - sveltekit is definitely not a natural fit for val town, but i made it work, and this update (a full custom adapter instead of rigging something w/ adapter node) makes it go even faster
turns out the original authentication system was a little halfbaked. i made a new one that flows a lot better, and it handles authentication at the top level instead of in each app.
i started with auth, and i'm returning to auth! students at my current school district can now log in to open School (Tangent's version of the home page) which currently just has a grades panel based on some old code. soon: send your auth to the backend to verify yourself and gain a jwt
among other things (improving discord integration and adding a feedback page), i've been working on storage. this means EVERYTHING is now persisted to localStorage by default. i also added a devtools for viewing storage.
google messages... even though i had some old code, because i refactored a lot of things (including switching to devalue) and hit a LOT of friction in other places, it's taken a while. it's done now though.
i value atomic devlogs, but none of these changes were large enough to warrant their own one, so they all get in one big devlog! mainly just minor ui appearance tweaks and adding placeholder apps to the dock
i've known from the start that i wanted to base tangent around storage. i've made a first step towards it: a storage object synchronized across the apps. the whole thing goes down, although only incremental changes go up for efficiency's sake. also had to use a syncing
variable to prevent infinite loops
more poor choices: i hosted tangent on a platform where files are 80kb max, but the theme page includes material color utilities which is more than 80kb, so i had to do some hardcoding and tree shaking to reduce its bundle size
i'm starting on the hard task of connecting and sharing data across the iframe boundary. i got something working though! see: theme works both inside and outside of iframe
decided i didn't want the website or brand to use plain inter, so turned on cv11, which makes the a look like ɑ
i refined windowing: tweaked the colors used, made the hot corner more reliable (and added using alt as another option), made windows maximal (overlay the essentials instead of adding a chonky bar), and implemented hover tooltips for windows. it's almost time to start building the actual apps
i implemented windowing! heavily inspired by gnome (in fact i even adapted some of its layout code)
i think i burned out or something. i didn't really feel the motivation to work on it this weekend, or much energy at all. i thought reflecting on the decisions that led me might help - and it did actually, i decided that i need to be a bit more local first and that my current implementation was flawed. this should give me more space to make without worrying about the specifics or foundation tomorrow.
trying something new, documenting architectural decisions, for this project. it was originally just to get credit for time spent thinking, but having to explain things to yourself is clarifying my thoughts in the moment and will help me in the future. that's also one of the things i hope tangent will help people do.
you'll see more on identity once i finish up the last part (face verification), but first: i finished switching the S3-compatible endpoint you use for storage to another one (in case you don't trust tangent)
set up the foundations: sveltekit, uploading script, css reset + theming, and a little eye candy on the login page