Commit graph

183 commits

Author SHA1 Message Date
6e666c0265 further fixes to error reporting: extra context, disable colour 2025-09-10 16:24:11 +02:00
3999dd3012 fix disconnect screen taking precedence over error screen
closes #68
2025-09-10 16:11:12 +02:00
2810fe248f make the brush box work under the new GPU renderer
the brush preview will need separate treatment, but it shouldn't be too difficult
2025-09-09 22:07:30 +02:00
63d5c04a0d make the brush renderer draw lines well 2025-09-09 21:02:32 +02:00
85dce88ec2 fix synchronisation between users 2025-09-09 21:02:25 +02:00
410f82201d enable backtraces in Justfile 2025-09-09 21:01:59 +02:00
1bbf1b1d94 implementing more chunk ops based on GPU
composing, toEdits
2025-09-08 23:01:22 +02:00
bb55e23979 initial implementation of WebGL-based brush renderer 2025-09-08 18:54:32 +02:00
b4c3260f49 remove tiny-skia and replace chunk renderer with a GPU-based one 2025-09-06 23:19:28 +02:00
39632f56a7 remove server chunk loading debug logs 2025-09-06 23:05:46 +02:00
8e467d5447 fix chunk images not being populated when the first client joins the room 2025-09-06 22:50:42 +02:00
e9f9e21bc2 make the server not send chunks redundantly when there aren't any to send 2025-09-06 22:50:42 +02:00
ea70c264fe h1: remove unused render module 2025-09-05 17:40:38 +02:00
e92c48db78 docs/haku: fix typo 2025-09-04 21:26:02 +02:00
914da923f7 update built-in examples to use newly introduced syntax 2025-09-03 23:31:47 +02:00
b5cdfdb1b6 introduce haku reference docs 2025-09-03 23:31:40 +02:00
a4c18c37dc h1: make | operator work with anything other than syntactic calls (in which case it just calls the value)
in case you call a function to get a function, parenthesise it

    1 | getFunction ()   -- getFunction 1 ()
    1 | (getFunction ()) -- (getFunction ()) 1
2025-09-03 16:57:21 +02:00
ec7ee9626f implement . and | operators
`f . x` is the same as `f x`, and is mostly useful when used as an argument to another function call.
this allows us to simulate record field syntax very well: `d.Num` is the same as `d Num`, but with high precedence

`a |f b` is the same as `f a b` and effectively allows you to turn any function into an arithmetic operator.
it's the main reason behind + - * / having the same precedence---they now chain very nicely with pipes

closes #126 (`|` operator)
closes #127 (`.` operator)
2025-09-02 22:06:16 +02:00
69cc34d07e h1: make ' and ? only allowed as suffixes in identifiers 2025-09-02 20:52:51 +02:00
e31dde1048 add .ignore file 2025-09-02 20:52:34 +02:00
c4ad609717 h2: fix implementation of Value.gt not actually being a greater-than operation
how did I miss that (a < b) is the same as (b > a) is beyond me
2025-09-02 20:52:25 +02:00
958201cd18 h2: add better comment about how to use root.enableLogScope 2025-09-02 20:31:35 +02:00
2eea1f201f h2: add better VM value stack tracing 2025-09-02 20:31:15 +02:00
45099916fe update Zig code to 0.15.0 2025-09-02 20:15:41 +02:00
449f2b59df disable ligatures in code
it can be hard for first-time users to understand what these ligatures mean or how to type them
2025-09-02 20:04:09 +02:00
9808d3227f fix a few bugs with the new precedence rules 2025-09-02 20:03:41 +02:00
29a80854a4 fix parsing prefix operators in calls 2025-09-02 18:47:56 +02:00
b52c1b26c9 overhaul operator precedence
arithmetic operators now have the same precedence.
if you want them to bind tighter, you remove the spaces around them:

- 2 + 2 * 2 = 8
- 2 + 2*2 = 6
2025-09-01 22:43:41 +02:00
09f2292e62 remove leftover limits from haku-wasm 2025-09-01 22:43:25 +02:00
64e2489979 remove leftover code from painter 2025-09-01 22:42:28 +02:00
b9a161d474 make it possible to use the characters ' and ? anywhere in identifiers
closes #129
2025-09-01 17:18:29 +02:00
ce9150b588 remove unused functions 2025-09-01 17:18:20 +02:00
40038d3fdc fix new compilation errors in haku-wasm 2025-09-01 17:18:05 +02:00
bc2df73487 documentation updates to reflect removal of the let keyword
also some general cleanups and improvements
2025-07-01 00:57:12 +02:00
731046d1f7 update example brushes; add builtin/dashes 2025-07-01 00:57:01 +02:00
9de4a8aecd replace def = value with def: value, and let a = b with a = b
in the name of terseness

i'm also slipping in a new brush preset that i made

closes #125
2025-07-01 00:56:27 +02:00
8fcf71661e add check for how many chunks are modified in one edit 2025-06-30 19:05:28 +02:00
bff899c9c0 removing server-side brush rendering
brush rendering is now completely client-side.
the server only receives edits the client would like to do, in the form of PNG images of chunks, that are then composited onto the wall

known issue: it is possible to brush up against the current 256 chunk edit limit pretty easily.
I'm not sure it can be solved very easily though. the perfect solution would involve splitting up the interaction into multiple edits, and I tried to do that, but there's a noticable stutter for some reason that I haven't managed to track down yet.
so it'll be kinda crap for the time being.
2025-06-30 18:55:53 +02:00
15a1bf8036 make context menus appear above resize handles
i kinda hate how shoddy this has to be
2025-06-28 23:51:52 +02:00
d5e2fbd0cf add scrollbar to error panel 2025-06-28 10:51:00 +02:00
4bd00e92d8 implement chunk unloading (garbage collection)
unloading is done together with the autosave process, because it's the most natural place to do it.
since we literally just wrote to the database and can easily check if the chunk hasn't been written to since.
2025-06-28 10:39:49 +02:00
1d2f98348f add a bit of padding to the error box 2025-06-28 09:40:18 +02:00
4681edd60f make it possible to render a nil 2025-06-28 09:39:08 +02:00
12101bc6e1 fix incorrect implementation of .jump and .jump_if_not that could cause a server crash 2025-06-28 09:38:48 +02:00
0ddc42c00f sidebar layout
switch the app from floating panels to a static sidebar on the right with resizable tools
expect more layout bugs from now on
2025-06-27 23:24:09 +02:00
f78f3136d9 optimizing loading times
- reducing the waterfall for JavaScript
- making the throbber appear properly if not all CSS is loaded; fonts.css and index.css are made non render-blocking
2025-06-26 19:17:06 +02:00
b4acab2c9c fix jank when moving the mouse cursor outside the canvas
mouse events are now consistently sourced from the window, so if you try to draw and move your mouse over the panel, it won't glitch out
2025-06-26 18:54:28 +02:00
a40480a464 add interpolation to cursor reticles
cursor reticles are now interpolated to the update interval, so they should be smooth at > 60 fps
2025-06-26 18:48:48 +02:00
bebc2daa95 alter color selection algorithm
it should be more fair i think. maybe
2025-06-26 18:48:28 +02:00
d445eb9915 debounce updateUrl; make debounce always execute a function call after at least one is dropped
this should also fix the issue where the cursor position sometimes ends up at the wrong position after you stop moving
2025-06-26 17:33:25 +02:00