Commit graph

62 commits

Author SHA1 Message Date
liquidex 83754a0282 new! fast! WebGL renderer 2024-09-03 22:16:40 +02:00
liquidex bf4d538651 add ping/pong between client and server
the purpose of this is to hopefully prevent nginx from reaping the connection, since there's data flowing through it every so often
2024-09-02 23:17:35 +02:00
liquidex b3911b7af1 add resize handle to brush editor 2024-09-02 22:38:12 +02:00
liquidex c1ccc1be24 fix an unnecessarily large amount of locals being emitted for each function
previously we'd create (argument_count + let_count) locals, which doesn't make sense.
so now `let`s use their own counter for their own locals, and we only request as many empty locals as there are `let`s.
2024-09-02 21:43:27 +02:00
liquidex 39989e555a fix SetLocal not taking into account the stack bottom
y'know, when you look for locals relative to the call frame's bottom, but then set locals relative to index 0...
boom.

closes #78
2024-09-02 21:39:04 +02:00
liquidex f4ceb0057e add a bunch of logging to haku, including vm-trace for tracing what the VM does 2024-09-02 21:36:38 +02:00
liquidex 337de0b57b return an error when the parser is at its event capacity 2024-09-02 20:41:13 +02:00
liquidex 26d3b8ed8a add a lot more logging to both client and server to analyze #81
> #81 Compiling brush doesn't seem to finish correctly sometimes, which causes loss of data
> Sometimes it seems like the client state can get desynced (server render thread dies due to a panic?) and then the server starts dropping all requests for drawing the brush.
> These panics should never happen of course, but we need better logging first to determine the exact cause.
2024-09-02 20:15:28 +02:00
liquidex 6cfbc4f05f fix nickname in cursor reticle being able to wrap onto multiple lines 2024-09-01 20:03:04 +02:00
liquidex a30c36c92a fix compilation errors on release mode due to missing #[cfg(debug_assertions)] with parser event tracing 2024-09-01 19:20:24 +02:00
liquidex 1543534101 update docs, add favicon to docs template 2024-09-01 19:17:46 +02:00
liquidex ef1e35fcf0 remove redundant arity checking code from system functions, update error messages
the arity of unary and binary ops is guaranteed by the fact they're, well, unary and binary ops.
right now there's no way to call them with less or more arguments, so we may as well.
2024-09-01 19:15:58 +02:00
liquidex d1a6fb364e fix more syntax v2 bugs, update docs 2024-09-01 18:55:16 +02:00
liquidex bf37d7305c update default brush
I started updating the docs but v2 is really not ready for general use yet (we're missing lists!)
2024-09-01 10:09:53 +02:00
liquidex 084012d65f parser debugging utilities + fixed paren sometimes producing unbalanced events
parser events now have a `from` field which has the source location of where the event was emitted.
this location is pretty-printed when using `Debug`
2024-09-01 10:03:21 +02:00
liquidex c5b2eb376f simplify Compiler lifetimes
the 2nd 'b lifetime parameter was not needed
2024-09-01 09:32:21 +02:00
liquidex 2595bf0d82 syntax v2
introduce a new, more ergonomic syntax for haku
not all features are implemented just yet. still missing:

- custom tags (non-True/False)
- color literals
- lists
2024-09-01 09:29:11 +02:00
liquidex a3e5e8bd10 change fonts to Atkinson Hyperlegible and a custom-built variant of Iosevka 2024-08-27 20:44:39 +02:00
liquidex ca25f27b4b fix horizontal scrollbar in docs
maybe putting domain-specific rules in your shared css doesn't make sense
2024-08-27 14:24:18 +02:00
liquidex 3380498441 add a menu bar; and also a favicon because there's now a logo 2024-08-27 14:13:19 +02:00
liquidex 879d17d904 docs; rendering docs from .dj to .html
still no in-app link to these docs though
2024-08-26 23:26:03 +02:00
liquidex 8aa38ae4c4 change layout of brush editor side panel to limit its height and scroll when it gets too big 2024-08-25 14:37:20 +02:00
liquidex 7465913944 make the app listen to hashchange and move the viewport accordingly, or reload the page when the wall changes 2024-08-25 14:15:24 +02:00
liquidex b1ee244eaa add option to pan with right mouse button instead of left mouse button
this is quite common in other apps with an infinite canvas - such as Miro
also on laptops middle-clicking is a pain in the ass, though we should add more proper touchpad support for that case
2024-08-25 14:06:46 +02:00
liquidex 0d831698e2 add proper error and disconnect handling
error handling shows you the error and offers the ability to reload;
disconnect handling shows you that the page will reload in a few seconds.
it uses exponential backoff with some random sprinkled into it to prevent overwhelming the server once people's clients decide to reconnect.
2024-08-25 12:55:07 +02:00
liquidex 84abba3e0b add loading screens instead of dropping the user into an app that's not ready to use 2024-08-25 00:06:49 +02:00
liquidex 7f78d0ce1b remove some leftover code 2024-08-24 22:03:23 +02:00
liquidex 7e01c0ee7a update readme again 2024-08-24 22:03:06 +02:00
liquidex c66aa70e53 add README 2024-08-24 20:10:55 +02:00
liquidex e801992ec3 increase AST size limit 2024-08-24 20:10:39 +02:00
liquidex ba89b6eb04 fix haku-wasm/haku.js errors not resetting properly sometimes 2024-08-24 18:40:33 +02:00
liquidex 59a6bda0ba change example color in documentation to black from transparent 2024-08-24 18:05:15 +02:00
liquidex 2d1f49f78d move apply_defs to just before the VM evaluates code 2024-08-24 18:04:49 +02:00
liquidex 4761fd40ba fix sizing of the brush-editor textarea 2024-08-24 17:54:59 +02:00
liquidex 3a438359c3 replace the accursed contenteditable text box with an ordinary textarea
you could paste discord convos into it.

discord.
conversations.
and they'd render.
like in Discord.

lmao.

I still do wonder how to do syntax highlighting on it, but I've seen prism-code-editor, which I _think_ hides the textarea's text and overlays a non user-interactable syntax highlighted version on top.
what's cool is that we could theoretically have many such overlays - for things like highlights too
but we'll see how that goes
2024-08-24 17:50:06 +02:00
liquidex fb0e15c00c fix a couple bugs which could cause chunks to get eaten away across reloads
mainly related to me not knowing how to decode WebP properly (I blame the API design of the webp crate)
turns out it can return RGB images instead of RGBA and so you have to convert it to RGBA first

there were also a couple math bugs with chunk drawing/saving related to some of my refactors of that math
2024-08-24 17:21:28 +02:00
liquidex c55f5e054c some more work on haku user guide 2024-08-24 16:47:57 +02:00
liquidex 447dd8c6f1 remove unused rkgk::binary module 2024-08-24 16:16:32 +02:00
liquidex 63151a4376 bump rkgk to 0.1.1 2024-08-24 16:16:08 +02:00
liquidex 90101d7c7f update documentation (unfinished) 2024-08-24 16:15:56 +02:00
liquidex 9cb24a0b1e remove unused imports 2024-08-24 16:12:41 +02:00
liquidex eb25d0b1cf make daemon use release profile 2024-08-24 13:54:00 +02:00
liquidex c6870cb22d make it possible to set release profile for rkgk in justfile 2024-08-24 13:51:38 +02:00
liquidex b2e43838d5 system functions documentation 2024-08-24 12:54:16 +02:00
liquidex 03412722d8 make it possible to override wasm directory from wasm-dev during build 2024-08-23 23:14:55 +02:00
liquidex c9859124c3 fixes to the deployment procedure 2024-08-23 22:55:35 +02:00
liquidex 384e64009e add admin scripts over from treehouse
would be nice to rewrite these as a standalone utility that integrates with Nix someday i guess
2024-08-23 22:38:24 +02:00
liquidex be6a47ae13 user authentication through a secret token (NOT AUDITED FOR SECURITY. DO NOT RELY ON THIS CODE.)
it's probably okay, but it's incredibly easy to read localStorage from the frontend and get a hold of the secret
would be nice (would it?) to have more proper session tokens I guess but we're not doing that right now

I'm not entirely sure if generating the password on the server is legit like this, but it leads to an incredibly frictionless experience and I'd like to keep it. if possible.
I don't really see a difference compared to password managers generating passwords for you and showing them in plaintext
obviously actual passwords are stored within the manager which requires a master password, but like. do we really need that. the secret isn't shown to the user and it's very long.
too bad the browser secure storage API or whatever isn't ready yet
2024-08-23 19:50:42 +02:00
liquidex 6ce1389d12 replace console.info with console.debug for received chunk data 2024-08-22 21:50:26 +02:00
liquidex 4ebd150e59 add some logs, fix frontend memory leak with users not deallocating their haku
closes #28
2024-08-22 21:39:31 +02:00