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
2a783aba71
make zooming zoom toward the mouse cursor
2025-06-26 17:18:52 +02:00
385a691e3e
make the brush discard dialogue more clear
...
change text from 'Yes' to 'Discard changes and switch brush'
2025-06-26 01:22:15 +02:00
7a52dbebd0
fix some rough edges around stack traces
...
hide irrelevant CallFrames
fix span info for the implicit stack frame
2025-06-25 21:11:02 +02:00
e49885c83a
stack traces in the brush editor
...
after 35 thousand years it's finally here
good erro message
2025-06-25 20:51:45 +02:00
c1612b2a94
brush picker!
2025-06-19 13:48:12 +02:00
9b82b211b4
hide brush cost gauges if they're irrelevant
2025-06-17 00:18:48 +02:00
8b464d50f4
haku: more cleanups: remove old unused VM
...
also remove some leftover TODOs
2025-06-16 18:57:51 +02:00
c80cd1c7fe
haku1 API cleanups (removing 2 suffix)
2025-06-16 18:34:28 +02:00
00a48527ca
haku2: add stats + fix crash w uninit vm
2025-06-16 16:40:01 +02:00
e667c6336a
haku2: on the client
...
resource indicators are currently unimplemented
2025-06-15 21:30:37 +02:00
45c954cb03
haku2: fix implementation of / (div)
...
it was multiplying instead of dividing
2025-06-13 20:56:20 +02:00
667eef136e
remove redundant imports and leftover log timestamp disabling thing
2025-06-13 20:41:58 +02:00
845c9f0f5b
add support for aarch64-unknown-linux-gnu
2025-06-13 20:38:00 +02:00
354d49d927
haku2: make build.rs spit out unknown targets
2025-06-13 20:33:18 +02:00