Commit graph

150 commits

Author SHA1 Message Date
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
48d03699bd haku2: make server use haku2 (and make it work!) 2025-06-13 20:11:54 +02:00
c5e2892def #broken haku2: progress on making it work 2025-06-11 16:42:43 +02:00
7658e0d4e8 haku2: VM logging 2025-06-11 10:43:40 +02:00
5de4f9d7c6 hotwire haku2 into rkgk
really a bodge job right now and it crashes but it's a start
2025-06-04 00:28:43 +02:00
550227da34 haku2: rest of functionality (hopefully) & Rust->Zig FFI 2025-06-03 21:53:49 +02:00
01d4514a65 beginning of haku2: a reimplementation of haku in Zig
the goal is to rewrite haku completely, starting with the VM---because it was the most obvious point of improvement
the reason is because Rust is kinda too verbose for low level stuff like this. compare the line numbers between haku1 and haku2's VM and how verbose those lines are, and it's kind of an insane difference
it also feels like Zig's compilation model can work better for small wasm binary sizes

and of course, I also just wanted an excuse to try out Zig :3
2025-06-01 23:19:05 +02:00
598c0348f6 fix viewport shrinking permanently (#113)
what was happening is we were setting style.width and style.height which overrode the styles from CSS that gave us the BoundingClientRect from which we were calculating the canvas size
I also added a sendViewportUpdate to prevent chunk jank
2025-05-27 22:25:30 +02:00
65645f410f additional list functions (range, map, filter, reduce, flatten) (#74)
also make the VM cope with reentrancy
2025-05-27 22:25:29 +02:00
2b924c3efb make squigglies render themselves correctly over multiple lines
turns out there was a stupid typo, and the diagnostic's firstLine was == its lastLine
2025-05-26 21:53:03 +02:00
6b82593414 add zoom indicator in lower left corner (#39)
it looks like this:

  - 3200% +

I'm giving up on the 100% zoom button from the original idea, because rkgk's scaling curve makes it easy to go back to 100% if you need to.
2025-05-26 20:23:26 +02:00
9f62582ef5 add italic, bold, bold italic variants for Iosevka in the CSS (#109) 2025-05-26 19:15:57 +02:00
c4f6f80166 make Backspace delete the current selection correctly (#108) 2025-05-26 19:07:44 +02:00
7727e62655 s/liquidex/riki 2025-05-26 18:53:17 +02:00
39886291cf HiDPI support
the main canvas is now DPI-aware; it should no longer be pixelated on 4k
this couldn't be done for the brush preview, so it's just kinda pixelated
also fixed the horrendous scrollbar that could appear on HiDPI for some reason
2025-05-25 21:26:21 +02:00
273eaa6ce3 docs.css: fix the size of the left grid column 2024-10-25 23:36:54 +02:00
628fafdc1b docs/system: document len and index 2024-10-25 23:26:20 +02:00
e2f9538156 haku: add len and index functions for reading lists 2024-10-25 23:22:06 +02:00
dd955b0649 code-editor: make Backspace remove full indents at the start of a line 2024-10-25 23:08:12 +02:00
10d384f3d7 brush-cost: prevent percentage values from overflowing 2024-10-25 21:46:05 +02:00