Tangent

Tangent Used AI

24 devlogs
34h 38m
•  Ship certified
Created by Kendell

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.

Timeline

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

Update attachment

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

Update attachment

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.

Update attachment

Ship 1

1 payout of shell 337.0 shells

Kendell

30 days ago

Kendell Covers 21 devlogs and 32h 45m

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.

Update attachment

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

Update attachment

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

Update attachment

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.

Update attachment

prerendering now works on the home page and it's so much faster than ssr

Update attachment

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

Update attachment

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.

Update attachment

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.

Update attachment

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

Update attachment

i added a dock. dock logic is hard and i'm probably missing a lot.

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

Update attachment

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

Update attachment

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

Update attachment

decided i didn't want the website or brand to use plain inter, so turned on cv11, which makes the a look like ɑ

Update attachment

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

Update attachment

i implemented windowing! heavily inspired by gnome (in fact i even adapted some of its layout code)

i made a hot corner! i encountered a svelte bug along the way

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.

Update attachment

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.

Update attachment

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)

Update attachment

set up the foundations: sveltekit, uploading script, css reset + theming, and a little eye candy on the login page

Update attachment