Bio

:3

Stats

8
Projects
88
Devlogs
83
Votes
7
Ships

Coding Time

All Time: 286h 53m
Today: 0h 0m

Member Since

June 15, 2025

Badges

18
Verified
this user is verified (i.e. gave us $8)
🎨
Graphic Design is My Passion
Oh God How Did This Get Here I Am Not Good With Computer
Lived Mas
you know what you did.
🚢
Maiden Voyage
you shipped your first project! the journey begins...
🔨
<%= admin_tool do %>
with great power comes great responsibility... and a ban hammer.
Gold Verified
this user is REALLY verified (i.e. gave us $32)
💬
Yapper I
Posted 10 comments on devlogs.
🚫
No Fun
opt-out added for the whimsy-impaired
🌟
Popular
Mrs popular over here with 100+ combined followers
👥
Follower
Following more then 100 projects!
"bought black market access" award
you cheated not only the game, but yourself.
Ballot Stuffer
vote 100 times.
I Am Rich
you are rich. you deserv it. you are good, healthy & successful.
Offshore Bank Account
away from the watchful eyes...
Pocket Watcher
you're a nosy one, aren't you?
Preferred Customer
you'll never know what this does...
🕷️
Spider
this user has a pet!
Sunglasses
protect your eyes from other people's... creative... CSS choices.

Projects

8
🚀
4 devlogs 4 months ago
m3-dreamland
12 devlogs 4 months ago
Summer Of Making
3 devlogs 4 months ago
powerd

powerd

Shipped
7 devlogs 4 months ago
SoM Harbor

SoM Harbor

Shipped
10 devlogs 5 months ago
scramjet

scramjet

Shipped
6 devlogs 5 months ago
dreamland.js
40 devlogs 5 months ago

Activity

Earned sticker

Worked on binding the Wisp V2 extensions API to JS.

Update attachment
Earned sticker

Tweaked the text a bit and did some minor formatting changes

Update attachment
Earned sticker

Worked on the epoxy client rewrite. Added JS -> WASM bindings for JsProvider and moved construction of the provider outside WASM.

Update attachment
Anirudh
Anirudh Shipwright gave you feedback
46d ago

dreamland.js

try adding all details in the github readme too!

from Anirudh
Earned sticker

Figured out why the npm publish workflow was broken. dreamland 2 is now on npm!

Update attachment
Earned sticker

Finished the new frontpage. It has an examples carousel and the bundle size graph now.

Update attachment
Earned sticker

Quickly built a showcase site for the completed components.

Update attachment
Earned sticker

Worked some more on the new frontpage. Added auto-bundling for a simple counter app in many frameworks to compare bundle size.

Update attachment
Earned sticker

Worked on the Porple Point exhibit. This is mostly border-radius which is cool.

Update attachment
Earned sticker

Nevermind, I'm redesigning the frontpage again. It's pretty much a wall of text right now so I'm adding smaller headers + more examples/visuals.

Update attachment

Hopefully last devlog before shipping: dreamland.js.org and the GitHub now point to dreamland v2! I've spent 105h on this project across Journey v1, Journey v2, and Summer of Making. It's now my top hackatime project too.

Update attachment
Kyle B
Kyle B Shipwright gave you feedback
53d ago
from Kyle B

Added catchall support to the router for the new Mercury Workshop website.

Update attachment

Did some more CSS work, polishing all the pages on mobile. Added MDI icons as well.

Earned sticker

Added a browser support disclaimer (dreamland supports major browsers that support :where()) and set up ESLint (it doesn't want to warn about new JS features like Array.prototype.at for some reason though).

Update attachment
Earned sticker

Moved component state hydration earlier in the hydration process for non-data components, fixed mobile docs CSS by adding a menu button

Earned sticker

Tested out and added docs for pure js (no bundler - this needs an importmap), and fixed hybrid ssr.

Update attachment
Earned sticker

Speedran creating a web IDE playground that uses Monaco + rollup to edit and bundle JSX to run in an iframe. Took a lot longer last time I did it in Journey v1, mostly because I was debugging the typescript worker. Now I know what to do first try.

Update attachment
Earned sticker

Added some docs for the router and SSR.

(need to unlock the sticker :pf:)

Update attachment

Updated for the new voting UI. I need to vote some more again :pf:

Update attachment

Added Crab Rave as a featured stop. Also fixed the router + SSG integration to actually work properly when navigating

Update attachment
Earned sticker

Fixed hydrating state so that my fancy rich image for Crab Rave in the SoM Grand Expedition wouldn't shift around on hydration. Also optimized it for size by removing the object wrapper and string type in SsrValue.

Update attachment
Earned sticker

Updated to the latest dreamland SSR. Also updated the rich card for the gift shop and added stickerlode #3 (X marks the spot) because it fits perfectly!

Update attachment

Added the admin projects view.

Update attachment
Earned sticker

Attepted to get 100s on lighthouse for the docs site, but turns out lighthouse really doesn't like the color choice (it passes according to the rest of devtools).

Update attachment

Added SSG'd titles to the docs site. Also optimized the prerendered DOM size a little.

Update attachment
Earned sticker

Finished the intro docs! Also added a manual order to the metadata of the docs pages so it isn't sorted alphabetically anymore.

Update attachment

Finished the CSS for the docs site, now just the content of the docs is left. It'll probably need a playground as well, which ideally would be split into a different bundle so that rollup/monaco aren't loaded when opening the frontpage or docs.

Update attachment

Added syntax highlighting to the site. This required yet another custom plugin because for some reason @mdx-js/mdx doesn't support using class as a JSX prop instead of className.

Update attachment

Used the MDX integration to flesh out the frontpage. The frontpage's content is now in MDX while the sidebar is in JSX. I still need to tweak the content and add syntax highlighting but this looks pretty good!

Update attachment

Implemented SSRing and hydrating MDX for the docs site!
As a result, I did a TON of SSR fixes, and implemented pruning SSR data for elements and components not in the SSR dom tree.

Update attachment

Built the initial site with dreamland.js + m3-dreamland. Created a PR to the grand survey expedition repo.

I'm planning to link to any cool submissions I see on the survey map.

Update attachment
Toshit
Toshit created a project
70d ago

SoM Grand Survey: Mount Kablooey Summit Visitor Center

The Mount Kablooey Summit Visitor Center. Links to cool projects in the SoM Grand Survey Expedition.

SoM Grand Survey: Mount Kablooey Summit Visitor Center
6 devlogs 0 followers Shipped

Integrated SSG support with dreamland/router. This is turning into a pretty good template project, time to build my personal website from scratch with it!

Update attachment

Started the new dreamland.js site with the new Vite SSR integration. I have SSG working too.

Update attachment

Fixed the rest of the SSR bugs. Also rewrote state serialization to have lookup tables for keys/values, drastically reducing the SSR state size. Then I added comment/text node tracking which increased the SSR state size by like 33%, but it fixed m3-dreamland.

1 month later...

Locked in and fixed SSR's bitrot! I now have it mostly-working with m3-dreamland. The only bug is something to do with dynamic text nodes not being hydrated correctly.

Toshit
Toshit worked on epoxy-tls
1h 33m 3 months ago

Fixed the experimental io-uring support enough that it can consistently forward streams

Update attachment

Implemented Slider. Spent way too long trying to fix the ticks jittering on Chrome and Chrome only (i guess safari wins this time)

Added support for instant-invalidated votes and 100-char min.

Update attachment

Fixed for Turnstile update and added SoM Share Votes support!

Update attachment

Fought with GitHub Actions to get the site deployed. Also added a card with instructions on how to install the Isolated Web App.

Update attachment

Tried out vibe voting (and left some failsafes in the code). I personally will never use this and was surprised at how well it worked.

Voting client finished! Uses an Isolated Web App's Controlled Frame API to fake a Chrome browser. I would have posted a devlog and commit earlier but I had hardcoded vote data to cook on UI.

Update attachment

Added a quick link to the projects in each vote.

Update attachment

Added a fetchDb function to just query straight from DB with the admin APIs. Used it to make a vote viewer.

Decided to just nuke the WASM html rewriter as it would probably just lead to more maintenance for me as the javascript side changed (i'm the only one working on wasm stuff). Fixed an annoying remnant of the old bundles as well.

Update attachment

Implemented TextFields (only the filled variant, not outlined; and no trailing icons yet either).

Added toggle buttons. It's built as a wrapper around the Button component with a flag element as a child to reuse all of its styling and props.

Fixed the linear progress bar styling.

Implemented the linear progress bar. It doesn't look exactly like the spec yet though.

Update attachment

Created a basic testing UI with m3-dreamland. I may be slightly contributing to the 1.1m requests sent to api/v1/devlogs according to the admin analytics

Added hybrid SSR finally! It's basically a replacement of Turbo Controllers with dreamland components. You get all the benefits of dreamland state management/reactivity while still being able to use rails/etc.

Implemented Chip.

Update attachment

Implemented Switch, with support for custom icons in the selected state.

Implemented Button styles when disabled.

Update attachment
Toshit
Toshit worked on epoxy-tls
1h 48m 4 months ago

Fixed the server leaking sockets when a client disconnects, and cleaned up server logging in the process. Also fixed a minor type issue in the WASM client.

Update attachment
Toshit
Toshit created a project
109d ago

epoxy-tls

A set of libraries and programs for securely bypassing CORS end-to-end-encrypted by running TLS in the browser through WebAssembly.

4 devlogs 0 followers

Implemented most of the button spec (except xs/s target area overrides).

Cleaned up m3-dreamland v1's ripple and implemented the Card/CardClickable component.

Set up the styles component to generate the vars I'll use for components.

Update attachment

Ported svelte/motion Springs to dreamland so that I can use it for m3-dreamland.

Toshit
Toshit created a project
111d ago

m3-dreamland

A Material 3 (Expressive) component library for <a href="https://summer.hackclub.com/projects/3" target="_blank" class="text-nice-blue hover:text-dark-blue font-medium transition-colors duration-200 cursor-pointer hover:underline">dreamland.js</a>

m3-dreamland
12 devlogs 1 follower Shipped

(Hopefully) fixed the users page 500 error when you have devlogs on deleted projects

Update attachment

Added a backdoor to the JSX factory to allow for JSX data components and changed the dreamland router syntax to use those for route definitions.

Update attachment

Made a binary release and added intel-rapl MMIO zones support

Update attachment

Made a PR to add back markdown rendering to devlogs. Hopefully merging soon!

Update attachment
Toshit
Toshit created a project
113d ago

Summer Of Making

My contributions to Summer Of Making! I'm helping out with random stuff and finding vulns. (I personally didn't use ai so I'm not adding the tag)

Summer Of Making
3 devlogs 1 follower Shipped

Cleaned up a hackfix velzie made after I procrastinated on an actual fix. Also fixed use(a, b, c) and cleaned up code that had to handle Pointer<T> | T, saving a ton of bytes. (totally not procrastinating on hybrid ssr)

Update attachment

Added a README and fixed the docs a bit

Update attachment
Toshit
Toshit worked on powerd
3h 23m 4 months ago

Added support for setting powerd profiles through the power-profiles-daemon API. This means powerd can now be integrated with KDE through its power daemon!

Update attachment

Added a way to disable or change the frequency of automatic restoring of config. Also added a way to only disable automatic default profiles while keeping automatic restoring of config.

Update attachment
Toshit
Toshit worked on powerd
1h 13m 4 months ago

Revamped the action system to allow all actions (except restore) to be run without contacting the daemon. Also added support for polling upower for different default profiles on battery and AC power.

Update attachment
Toshit
Toshit worked on scramjet
2h 2m 4 months ago

Attempted to fix the WASM html rewriter but google apps menu is still broken :pf:

Update attachment
Toshit
Toshit worked on powerd
2h 47m 4 months ago

Attempted to add support for modifying EFI variables but all of the ones that handled CPU settings were locked in userspace so I gave up. Added a throttle-info subcommand instead

Update attachment
Toshit
Toshit worked on powerd
7h 36m 4 months ago

I started this project a while back and forgot to add it to SoM. Right now I have a ton of intel pstate, rapl, gpu, and dptf knobs added with all of them organized into separate files in src/sensors/. I've improved the default buildroot arm64 cross compile time from ~~18m to ~~13m.

Update attachment
Toshit
Toshit created a project
120d ago

powerd

Intel laptop cooling/power tweaking tool.

powerd
7 devlogs 2 followers Shipped
Toshit
Toshit worked on scramjet
2h 5m 4 months ago

Very late devlog sorry.

Attempted to fix web platform tests integration locally with act, then gave up and just used GitHub web editor. Also added an optimize for speed option to the rewriter.

Update attachment

Got auth, api/v1/ endpoints, flash error handling, and some SSR scraped endpoints (getShop, probeShop, postDevlog, deleteDevlog) working. Also set up a robust multi-client and ratelimit-handling client that wasn't needed because Rowan removed the ratelimits.

Implemented style object syntax (style={{ backgroundColor: "red" }}) and cleaned up the SSR bundle.

Started learning rails for dreamland 2 hybrid SSR (effectively sponsored by nora btw go check nora-changelog's threads). So far I'm thinking of a phlex component subclass that automagically serializes any whitelisted state and attaches a unique ID, then the dreamland component can target selectors to attach events or clientside components to.

Also cleaned up the store code to save like 360 bytes and push dreamland/core under 8000b.

Update attachment

Hydration is now fully working! I refactored the JSX factory to remove the dlarr code and saved 205 bytes in the process, mounted comments from the SSR tree to fix the new dynamic pointer code, and removed dl-ssr-css-id to bring down the overhead from 50+% to ~20%.

Update attachment

Basic SSR is now working! It now uses the JSX factory element construction order to match up SSR'd elements immediately when hydrating instead of waiting until the whole tree is constructed. The SSR'd tree is now very bloated with duplicated info however, but that can be fixed later. Also the dlarr code is broken but I think I'll completely replace that soon.

Update attachment

Worked on component state serialization for SSR. Now component state is sent to the client as a dlcss ID to JSON map in a script tag alongside the rewritten CSS. I can then parse the JSON and apply the state to the components being hydrated. Next step is to actually implement the clientside SSR lib for hydration.

Update attachment

Started the serverside SSR implementation! The render function returns a domhandler element for the component and an array of elements that need to be put in the document head which the user can append to a dom of the whole page and serialize to HTML.
I'm currently testing the code in the CSS test project I made in Journey v2, so it isn't actually running in node yet but I'm not using dom types so it should work fine.

Update attachment

Told copilot to write a hydrate function for SSR to laugh at it and it wrote 45% useless code, 45% copied code, and 10% partially useful code. Check it out at https://github.com/MercuryWorkshop/dreamlandjs/pull/14.

Anyway, I started SSR support by moving all DOM references into a separate file that exports them so that SSR plugins can override it. I think I have a plan for SSR now:
- Server overrides DOM to jsdom or similar for export to string, calls the server side init function
- Once on client, hydration overrides DOM to a fake version to match up elements with the server side tree and sets state (idk how I'll transfer over state I haven't decided that yet)
I need to figure out how to make deterministic CSS class names for the CSS-in-JS system first probably though

Update attachment

Tried to find a good bundle size visualizer library and eventually settled on rollup-plugin-visualizer in sourcemap mode. Also refactored the rollup config a bit to make it cleaner.

Update attachment

Did a ton of code golfing to reduce the (uncompressed) size down to below dreamland 1. dreamland 1 still has a better compressed size, which I think is because of the CSS selector parser using regex which is bad for compression.

brotli: 3480B dl2 after, 3598B dl2 before, 3306B dl1
gzip: 3826B dl2 after, 3951B dl2 before, 3656B dl1

Update attachment

Attempted class components again, but it turns out there's no way to dynamically add typed properties to a class so the typescript looks very forced and bad. Reverted it and will move on to SSR now

Update attachment

Refactored the state system to make it cleaner and less buggy. Also cleaned up the array child case in the JSX factory to use more builtin array operations.

I was going to post this devlog earlier, but I locked myself out of my projects (page 500ing) with invalid comment data.

Update attachment
Toshit
Toshit worked on scramjet
1h 37m 5 months ago

Fixed a bug in the wasm HTML rewriter causing it to replace URLs twice creating invalid rewrite spans, also added more debugging features to the transformer for invalid rewrite spans. DuckDuckGo works with the wasm HTML rewriter now.

Update attachment
Toshit
Toshit worked on scramjet
1h 30m 5 months ago

Almost done with the WASM html rewriter, it's 2x faster at rewriting the JavaScript standards webpage even when constantly going back to JS for rewrite rules. The only thing left is adding script elements to the head so that Scramjet scripts can be run.

Update attachment
Toshit
Toshit worked on scramjet
2h 38m 5 months ago

Fixed unrewriting JS functions via sourcemaps. This means google sign in is working again and Anubis is closer to working (blob urls are still broken for anubis).
Also worked on the WASM port of the html rewriter some more, it currently provides about a 3x speedup over htmlparser2.

Update attachment

Apparently .class::before:where(...) is invalid CSS, so I added a case for that in the CSS rewriter. Also messed with the component type some more, so that you can pass in pointers to any prop no matter what.

Update attachment
Toshit
Toshit created a project
151d ago

SoM Harbor

Summer of Making voting client. Requires Chrome + Isolated Web Apps.

SoM Harbor
10 devlogs 6 followers Shipped
Toshit
Toshit created a project
151d ago

scramjet

An interception based web proxy designed to evade internet censorship, bypass arbitrary web browser restrictions (like enterprise browser-based web filters) and innovate web proxy technologies. This is a TEAM project (I'm part of the team; I'm not contributing externally), I wrote the JavaScript rewriter code (look at commits by r58Playz). Basically the best school filter bypassing backend out there (it's either this or very outdated Ultraviolet). You can put in a URL in the input and then press enter to load the site. If it doesn't work, try clearing all site data or switching to Chrome. Chrome is confirmed working and everyone working on Scramjet tests on Chrome.

scramjet
6 devlogs 10 followers Shipped
Toshit
Toshit created a project
151d ago

dreamland.js

mail.hackclub.com uses this! A utilitarian web framework with refreshing state management. Take a look at <a href="https://github.com/hackclub/theseus/blob/main/package.json" target="_blank" class="text-nice-blue hover:text-dark-blue font-medium transition-colors duration-200 cursor-pointer hover:underline">theseus package.json</a> for proof...

dreamland.js
40 devlogs 7 followers Shipped
Toshit
Toshit joined Summer of Making
151d ago

This was widely regarded as a great move by everyone.