#net-vim

468 messages ยท Page 1 of 1 (latest)

quick spear
#

vim recreated for the browser environment with mobile 1st support.

Uses solid-universal to render to dom-like nodes which are provided by ratatui. Then ratatui provided a buffer which is feed to webgl to render the TUI in a glsl fragment shader.

Mobile input is handled by creating a fake virtual keyboard, which is also in solid.js .

There is also some basic plugin support so the editor can extend itself.

Has a lot of work that needs to be done.

Demo: https://clinuxrulz.github.io/net-vim/
Repo: https://github.com/clinuxrulz/net-vim
Npm: https://www.npmjs.com/package/@net-vim/core

CRT Easter Egg --> :crt

Couple vids:

Enjoy!!

GitHub

Contribute to clinuxrulz/net-vim development by creating an account on GitHub.

link: https://clinuxrulz.github.io/web-vim/
repo: https://github.com/clinuxrulz/web-vim

run command :create-init to set up default plugins, and refresh your browser to load them.

โ–ถ Play video

link: https://clinuxrulz.github.io/web-vim/
repo: https://github.com/clinuxrulz/web-vim

run command :create-init to set up default plugins, and refresh your browser to load them.

โ–ถ Play video
vital geode
#

first

quick spear
#

What's neat is, people can also load plugins from a CDN if they want.

vital geode
quick spear
quick spear
#

Also... maybe some shader effect plugins. I love the text distortion shader effect here that is in time with the music:

https://youtu.be/9g8CdctxmeU?si=vlmbfi2NhZk4Q4OT

LIVE coding a simple raytracer (without error messaging!) in my hand written code editor.

Tutorials on maths , art and computer graphics: http://iquilezles.org

Donate: https://www.paypal.com/paypalme/SMOOTHSTEPLLC
Subscribe: https://www.youtube.com/c/inigoquilez
Support: https://www.patreon.com/inigoquilez
Twitter: https://twitter.com/iquilezl...

โ–ถ Play video
vital geode
#

I find all those annyoing, but maybe someone will like this.

#

I will like for example when I delete
the letters get turned into smoke

and when you type fast it letters turn into fire
and burn the entire file

quick spear
#

Gets ya in a good hacking / muck around mood.
Like the editor entertains the developer while he/she codes.

vital geode
quick spear
#

They'll get bored if they can't write code ๐Ÿ˜‰

vital geode
quick spear
#

Horizontal & Vertical scolling support added. Kind of important, can't believe I forgot about that. ๐Ÿ˜…

quick spear
#

getting there

vital geode
# quick spear

you are using webgl, are you not able to render the lines solid?

quick spear
vital geode
#

but you are running on the web, don't you have more power to make things better?

#

or you plan for this to work in an actual terminal

quick spear
#

There are ascii characters for a proper box. I'll fix it later.

vital geode
#

sure, but I am asking more generally

quick spear
#

Just vim is text based. So web vim is too.

vital geode
#

so I know how much I can push the crazyness

quick spear
#

Otherwise it won't feel like vim

vital geode
#

it will be newvim

quick spear
#

For example. No-one uses gtkvim ๐Ÿ˜…

vital geode
#

I don't use any of those
also who is going to ues web-vim

what is the target audiance ?

vital geode
#

lol

#

who is Random mesh?
I only know Random Mesh

quick spear
#

If I desperately want web-vim, surely someone else will too. Humans are not as unique as we like to think.

vital geode
#

yeah for sure.

#

and you say people will just want vim in the web non of the cool stuff

quick spear
#

The cool part about vim. Absolutely everything in it can be changed via plugins. Everything is a plugin.

vital geode
#

in web-vim or actual vim

quick spear
#

Unlimited flexibility

#

Both soon

vital geode
#

so can the web-vim, draw a circle ?

quick spear
#

Lmao ๐Ÿคฃ

#

..... no

vital geode
#

lies all lies

quick spear
#

Actually yes, via a shader plugin

#

It can draw 3d stuff too

vital geode
#

so we can add gui on top of the tui?
with the plugins?

quick spear
#

Or.... you just have ur plugin launch something else entirely... like a transparent DOOM overlay while u code.

vital geode
#

can the plugin render text with custom fonts?

quick spear
#

Yeap... shader plugin

vital geode
#

so using a plugin we can actually change the fonts

quick spear
#

Well it can replace a part of the app

#

A swap in

#

It has custom line renderers already for syntax highlighting from the typescript plugin

#

All that code is in the isolated plugin, not in vim

vital geode
#

that is cool

quick spear
#

web vim can not do everything vim can yet

#

Its only 2 days old

#

And.... there is another project out there called web vim as well... so I will probably need to rebrand

vital geode
#

what is missing

call it novim

quick spear
vital geode
quick spear
#

I have a plan to have a typescript plugin that can load lua plugins (a bootstrap)

#

That way I can pull in the existing ecosystem.

vital geode
#

ambitious
when is this going to work

quick spear
#

No idea ๐Ÿ˜…

west lodge
#

So sick

quick spear
#

... local file system access in the browser... is this safe? ๐Ÿคฃ

quick spear
#

If anyone has access to a desktop PC, let me know if the :ed command works.

quick spear
vital geode
#

some keys go some don't

quick spear
#

Some keys are under different kind of event handlers because they are like hot keys. Its a bit messy, I'll give Gemini a smack.

vital geode
#

aiojkh are the only keys I can type there

#

also smack it that it does not move the cursor when we type in the : section

#

and then smack it for not enabling select copy

quick spear
#

I'll fix it when I get home

#

Probably broke it with a yolo

quick spear
# vital geode I can't even type e

I think the issue is that content editable that I used to use for mobile before we implemented a replacement web virtual keyboard for the native virtual keyboard.
If I get rid of that content editable left over code, then it should start working ๐Ÿคž

vital geode
#

ping me when you did the change I can check it again

quick spear
#
  • Step 1: execute the :create-init command to install all the default plugins.
  • Step 2: refresh your browser, because the plugins load on startup.
  • Step 3: execute the :ed command to give access to a local folder on your machine.
#

I just sorted out that input bug, the other bugs are still on the todo ๐Ÿ˜…

#

I really gotta get it to parse the local node_modules folder so it can know all those imports there (the red Es mean lines with errors)

#

it looks like the syntax highlighting can use a level up, seems to only be doing a basic change color of apparence of text

vital geode
#

I can select the folder, but I have no idea how to create a new file or save it

quick spear
#

:w <filename> should write to a specific file, but it won't start you off with a blank file.

#

I'll have to use web-vim myself for coding to find all the gaps.

#

If I start developing web-vim in web-vim, I should be able to find the gaps pretty quickly.

vital geode
#

i hate beta products

#

that even the owner who writes them don't actually uses them

quick spear
vital geode
#

maybe it shows the CRLF

quick spear
#

Windows newlines are \r\n

quick spear
#

Linux is just \n

vital geode
#

AI time

quick spear
#

That caught me off guard ๐Ÿคฃ

#

I use Ubuntu

vital geode
#

also how do I open the folder every time I have to press :ed and reselect the folder I am working ?

vital geode
#

how do i realod a file from disk

quick spear
#

What I can do though is save the directory handle so it can autoload next time

quick spear
vital geode
#

yep, probably as long as you have the editor open
then also have command to select a different folder

vital geode
quick spear
#

You move the flashing cursor up and down and press enter on the file u want to open

vital geode
#

yeah so :ed is actually fine, to allow me to select another folder

I thoght that was the only option to see the list of file again

#

so there is no :reload command of sort

quick spear
#

Not yet

#

Normally vim monitors the file system and auto refreshes when something external edits the file

vital geode
#

but not file watchers via browser, so need at least manual step

quick spear
vital geode
#

did you even know you have context menu?

quick spear
#

Yeah... looks like that paste plugin double loaded or something

vital geode
#

how do you see loaded plugins

quick spear
#

I haven't got a command yet to show all the loaded plugins

#

No plugin manager yet

vital geode
#

oh ok, context menu shows ones in the init file

#

also there is this, see first line is sticky

quick spear
#

Yeah, few bugs. I blame Gemini ๐Ÿ˜†

#

It didn't do everything the solidjs way

#

I'll have to hand fix some of it.

#

Also the prelude folder is a read only file system. To modify a system file you need to use the write command to write it somewhere else, then edit it and edit init.ts to point to ur modified plugin.

#

... when you move fast, many bugs at once
... when you move slow, you fix the bugs 1 by 1 as you go

vital geode
#

the problem is you don't have a way to test this to catch regressions

#

as things gets complex it is a good thing to be able to ground it to the specs

quick spear
#

Something exciting, its parsing the node_modules folder now so it knows all the types in the selected project folder.
(No update built yet)

quick spear
vital geode
#

but good for the unit tests

quick spear
#

After a certain point of functionality. I'll just take by hand. Hand is more reliable.

vital geode
#

see how much you can push this. before everything collapses

quick spear
#

We'll see. The speed of AI is very addictive.

vital geode
quick spear
#

Hopefully I don't forget how to code in the process ๐Ÿ˜…

vital geode
#

you will and if not you are going to learn to hate writing code

quick spear
#

Its like... I can't write code as fast as AI

vital geode
#

and that is why you are going to hate to write code once you get used to this.

all the time you wasted on writing code, you can now waste fighting with the AI to get things right

#

you become a manager, you are the boss now

#

if you ever wondered what your boss feel like when they ask you to do something and it is just being done
that is it

quick spear
#

Probably ๐Ÿ˜…

#

Yeah, in a work environment it is hard not to use it

#

If its a hobby or something that interests you, its easier to do by hand.

#

got space-d in normal mode to explain the error on a line with the E (error marker):

#

i can see AI didn't push the text +1 x +1 y to fit in the box, it always makes mistakes like that.

#

Another problem is that I am always using the free AI models.

quick spear
vital geode
#

solid fault this time

quick spear
#

Normally each of your items in a list has a unique reference (if it was a todo list)

quick spear
vital geode
#

nice, but as I was scrolling why did the first line stayed the same, if you have a set number of lines

#

and you move the buffer, the first line for sure is set with a different value

quick spear
#

I just noticed duplicate lines freeze when I did rapid page up page down

vital geode
quick spear
#

Probably the important thing is I should properly review the changes AI makes.

vital geode
#

good idea.

quick spear
vital geode
#

crlf not yet

#

blink to : not yet

double paste in contect menu : not yet

quick spear
#

I'll do the proper vim way of copying, v to enter visual mode, highlight your text and press y for yank (copy)

#

I'll make sure it feels natural to vim users

#

although a right clip copy in the context menu would not hurt too

#

normally paste is done via p for put (paste)

vital geode
#

also doesn't d delete lines

#

yeah i like paste with right click

#

like the terminal

quick spear
#

yeah, d is not implemented yet either. She is very minimal

ocean cove
ocean cove
quick spear
# vital geode also doesn't d delete lines

yeap dd to delete a single line
d+down to delete current line and next line
d+up to delete current line and prev line
and if you go into visual mode and press d it will delete whatever text is currently highlighted.
and d isn't truely delete, it is actually cut. So what ever you delete ends up on the clipboard.

#

... its a dut and put

quick spear
#

so... Ctrl+W+d brings up a diagnostic window to display a error on a E line (like in the real vim), but unfortunately...
In Chrome, Ctrl+W is designed to close the active tab. If only one tab is open, this action closes the entire window

quick spear
#

That :ed bridge is connecting to a remote file system. Because window.showDirectoryPicker only works on desktop browsers.

#

But also Window.showDirectoryPicker can not see symlinks (like in a pnpm project). So sometimes on desktop, you also need to use the bridge.

quick spear
#

Improved syntax highlighting:

quick spear
#

visual mode v is now in (for text selection)

vital geode
quick spear
#

U can move the cursor over to scroll in the x direction though

vital geode
#

is it hard to do?

quick spear
#

No... just need to find a moment to do it.

vital geode
quick spear
#

Ohh OK... after I finish work. Just finishing lunch break.

#

Thats a great name newvim

quick spear
#

web-vim / webvim not taken in npm though

#

but taken as a project name

#

their webvim is just regular vim with a bunch of web-dev plugins installed, not a browser vim

vital geode
#

so take all of them

quick spear
#

I probably should expose it as a reusable editor (solid.js component) as well as a runnable app maybe.

#

The virtual keyboard probably should break off as a separate reusable component too.

quick spear
#

VimNext

#

I like vim.js

#

tsvim, jsvim, ...

vital geode
#

vim.js is token

quick spear
#

Dam ether-vim is already taken. I liked that name.

#

Let's go net-vim

quick spear
quick spear
#

net-vim

quick spear
quick spear
vital geode
quick spear
quick spear
quick spear
#

AI change log, typing on mobile too slow ๐Ÿ˜… :

Changes since version 0.2.1

All changes listed below have been implemented after the version bump to 0.2.1 (March 12, 2026).

Testing Infrastructure

  • Vitest Integration: Added Vitest as the primary unit testing framework for the workspace.
  • Package Configuration: Configured Vitest for @net-vim/core with jsdom and SolidJS support.
  • Unit Tests:
    • Implemented comprehensive tests for VimEngine (initial state, movements, modes, text editing).
    • Implemented tests for PluginManager (source loading, Babel integration, error handling).
  • Architectural Improvements: Updated VimEngine.getState() to return shallow copies of the buffer and cursor, preventing side-effect mutations during state inspection.

Command Mode Enhancements

  • Single-line Editing: Command mode now supports full single-line editing capabilities.
    • Added commandCursorX to track the cursor position within the command line.
    • Added support for ArrowLeft, ArrowRight, Home, and End keys in command mode.
    • Improved Backspace and Delete behavior to work at any cursor position.
  • Visual Cursor Integration: The visual cursor now automatically moves to the command line when entering command mode, accurately reflecting the editing position.

Syntax Highlighting & Rendering

  • Word Wrap Support: Fixed a bug where syntax highlighting was disabled when word wrapping was enabled. The lineRenderer now correctly handles horizontal offsets for wrapped rows.
  • Immediate Highlighting: Added api.rerender() to the plugin API.
  • TS-LSP Integration: Updated the TypeScript LSP plugin to trigger an immediate re-render as soon as syntax classifications are received, eliminating the need for manual cursor movement to see highlighting.

Developer Experience

  • Added npm run test script to the core package.
  • Exposed rerender capability to all plugins through the VimAPI.
vital geode
#

good stuff finally the _ moves to where it needs to be

quick spear
#

Yolo-ed in my sleep ๐Ÿ˜ด

quick spear
#

This works, but not the esm.sh link for some reason:

import { initNetVim } from 'https://cdn.jsdelivr.net/npm/@net-vim/core@latest/+esm';
vital geode
vital geode
quick spear
#

Like files are there on npm.js and jsdelivr is loading it now worries at all.

quick spear
#

I tried bumping the version and publishing again. No luck. Esm.sh doesn't like me. jsdelivr is fine.

quick spear
#

So it must not compile on esm.sh for some reason. But compiles fine on my phone.

quick spear
#

IDK... maybe its just slow. ๐ŸŒ

vital geode
quick spear
#

Working now

#

Just slow to sync i think

vital geode
#

oh ok, maybe they are not very stable
I did get some random errors from esm, but I thought it was my process.
but now I think maybe not

quick spear
#

No error now.

vital geode
#

Yeah, cool I see, they auto recovered

quick spear
#

Will have to put in p for put (paste).

vital geode
quick spear
#

I could polyfill OPFS within the iframe

vital geode
#

yeah, possibly still not sure how it will go to the build pipeline

#

I will have to add messaging for the iframe to push changes to code
but I am not sure if it is a good idea for a playground to be able to change its own code

#

also every save, will rebuild and restart the editor

quick spear
#

This will help new comers:

vital geode
quick spear
#

those are new features yet to be built

#

just sorting out a couple of regressions first before the build

vital geode
quick spear
#

I published a 0.4.0 just now, but esm sh is still showing the old version it seems

#

must need some time

vital geode
#

even if you provide the specific version?

quick spear
#

gh pages will always be the latest version

vital geode
#

ok so just have to wait a bit

if you don't want to rebuild the page with the specific latest version

quick spear
#

yeap

#

will be fine though. There is nearily no more feature I need. It is pretty usable already.

vital geode
#

we can wait, no rush

quick spear
#

probably only thing. I need a plugin similar to FFF to speed things up a bit

#

Gemin can do one later

vital geode
#

can you control the initial view?

like if I want to use it as a editor does it expose external control?

#

also maybe simplify plugins so you can initialize declaratively ( if that make sense)

quick spear
#

in version 0.4.0 I have it using a memory based file system if OPFS is not available

#

so that all the plugins load at least

#

then we have :ed bridge to connect to a remote file system

vital geode
#

I mean, I don't want any file system, just basic editor

quick spear
#

yeap.... u just don't use the file system plugins and it will be just an editor

vital geode
#

so how do I initialize it with my own code and get notified when things changing

quick spear
#

but.... the loading of the plugins is from a file system ... but this file system can be intercepted and replaced

vital geode
#

why can't I inject the plugins?

quick spear
quick spear
#

I think its... vim.getAPI().loadPluginFromSource(...)

vital geode
#

ok lets say I want 2 editors one for file A and one for file B
how will that work with the typescript thingy

quick spear
#

hmm

vital geode
#

I am just asking general question, not specifics needs just to see if possible or not

quick spear
#

Might need a custom plugin to work with the current LSP that ur other editor is connected to

#

so they can share the LSP between editors

#

its possible

#

like... I had code-mirror and monaco sharing the one LSP... so it can be done

vital geode
#

yeah, the question is if your editor will allow it or it might be too coupled

#

so there is currently no way to know externally when things are changing in the active buffer?

quick spear
#

the vimi editor itself knows nothing about typescript. It is all in the plugin, so a new plugin can bridge it

vital geode
#

I also want 2 editors mirrored how do we do that

quick spear
#

just a separate file independant of the vim

#

I'll have to put in file change notification support i think

vital geode
#

for the mirror thing?

quick spear
#

so they can sync if the same file is open in two editors

vital geode
#

I want independent of file system too

quick spear
#

the file system already as an abstract interface that can intercept all file IO

#

so they can externally be told to interact with the same files between the editors

#

thats how the :ed bridge plugin works

#

jsdelivr (used on my gh pages) it says it may take upto 7 days to pick up on the latest version ๐Ÿ˜…

quick spear
#

but the memory only file-system only triiggers when there is no OPFS available at the moment

vital geode
#

assuming it is all in the canvas

quick spear
#

hmm... my memory fs detection is not working in your playground

#

I might put that behind a command :memoryfs or something

#

I like the colours in the readme:

vital geode
#

if memory fs does not work, nothing works

#

it is like saying javascript object does not work in js

vital geode
quick spear
quick spear
vital geode
quick spear
vital geode
vital geode
#

and I am adding an OPFS explorer ( mostly for cleanup /recovery )

quick spear
#

Optionally

vital geode
quick spear
vital geode
#

also make it so you can select default file to open or root folder

quick spear
#

It starts with zero plugins unless there is an init.ts in the file system that loads them

#

And plugins can be injected at runtime

vital geode
#

but you should not have hard dependency on the fs for plugins imo

#

you are treating the editor like an os

#

it should take a long time before this turn into an operation system not in the beginning

quick spear
#

Under .config/net-vim/init.ts a collision would be difficult

vital geode
#

ok, but also assume the fs will be read only
if it works with that maybe it is fine

#

or no permission for that path you are using

#

I don't know why, but I have a feeling

#

that the editor and the fs it works with should be isolated

#

especially if you want different instances with different settings and plugins

quick spear
vital geode
#

I want an fs, I just don't want the editor to mutate it with its own stuff

quick spear
#

Monaco relies on a vfs too

vital geode
#

yeah, ok cool, keep at it let see how far you can push this

quick spear
#

I need to handle windows line endings as well before I forgot

#

\r\n

vital geode
quick spear
#

Wanna make sure I am productive when using it.

vital geode
#

oh I see you mean the FFF

quick spear
#

Yeap fuzzy finder

#

Search by filename, and search by file contents

#

To make it easy to jump around

vital geode
#

like my ctrl+b in the playground
file name and content, just not very optimized in my case

#

no ctrl on android so you can't even use it.
I feel like a villain

quick spear
#

<space>+f+f on mine

vital geode
#

also I realized your word wrap is actually letter wrapped

quick spear
#

Yeah true. I actually prefer letter wrap. Occasionally I have really long function names.

vital geode
#

not everyone can be happy

#

all the time

vital geode
quick spear
#

I got like a 4 inch screen width-wise

#

I'll put that on my todo letter/word setting for wrapping

quick spear
#

Im exporting all the default plugins too, so the end user of @net-vim/core does not need to rely on init.ts to load plugins.

quick spear
quick spear
#

<space>+f+f:

#

I can see net-vim loses the same amount of screen space from the virtual keyboard as Termux. So the usability should be close to the same as using Termux.

quick spear
quick spear
#

Still gotta make that hookup cleaner

vital geode
quick spear
#

Close enough lol

vital geode
#

it is the width of the window

quick spear
#

I'll give gemini a smack

#

I can fix that myself later

#

The text just needs to be children of the box

#

In the TUI jsx

#

Silly gemini

vital geode
quick spear
#

Still not a bad job

#

I didn't have to write code for it

#

And just a couple bugs to fix

vital geode
#

what is this

quick spear
#

Thats webgl rendering in-between the text buffer changing size

#

That needs fixing too

#

Only happens for a bit when resizing

#

I suppose if init.ts is missing, then the demo link can auto-execute :create-init

vital geode
#

also why dd and p does not yank and put in the exact same location?

#

I have to go to end of line first

#

but I see the same thing in monaco vim

#

and why do we see the crlf on p

quick spear
vital geode
quick spear
#

Yep. Its after the cursor in vim, not at the cursor for put

quick spear
#

It would be u for undo if it was done

vital geode
#

and redo

quick spear
#

Redo i don't know. I've never used redo ๐Ÿ˜…

vital geode
#

lol

quick spear
#

Never had to

#

I suppose quit without saving is what I do sometimes in a big stuff up

vital geode
#

ctrl+r ( for redo)

quick spear
#

:q! to quit without save

quick spear
#

Maybe the windows clipboard is transforming it.

#

Yeah it must be the \r\n making it white. Its not happening on my phone.

vital geode
#

supprting \r\n and \n is like supporting monaco and codemirror

quick spear
#

Windows is transforming the clipboard contents from \n to \r\n

vital geode
#

or v1 and v2

#

you can normalize it easy

#

but good to know I didn't know windows adds it

quick spear
#

It saves with \r\n if that was detected when opening the file. In memory it is always \n.

vital geode
#

that is good.
do you convert all to \r\n if there is one \r\n?

quick spear
#

Well the help file was made in Linux and copied into OPFS

#

Originally it was all \n

vital geode
#

the question are you normalizing when you detect it

quick spear
#

Just on load at the moment

#

I need to normalise in more places like u said

vital geode
#

maybe user need to be able to decide on the mode

for example I might be editing a file on a remote linux, but I may paste content with crlf from my notepad

quick spear
#

Remote files and local files are sort of the same. It will detect when loading the file.

#

In the UI there is a [CRLF] or [LF] so u know what it detected.

vital geode
#

I am saying when we paste into a file that targets LF content with CRLF

not sure if we should just normalize it all to LF because the file loaded as LF

quick spear
#

Windows is gonna manipulate the clipboard either way

vital geode
#

sure, again, I am saying if you should normalize or not

#

you control what goes in

quick spear
#

Its like we can not trust Windows clipboard because it is normalising too

vital geode
#

yeah, we trust nothing

quick spear
#

Maybe we need our own clipboard

#

But we want it to be user friendly too

vital geode
#

no, we just need transformation on paste before insert

#

I wonder how vscode handles this, they don't show visual CRLF
and I don't see an option to change the mode

quick spear
#

Doing some simple fixes by hand... looks like AI has made a tangled mess ๐Ÿ˜…

#

A simple one line fix is turning out to be a 100+ line fix

quick spear
#

Multiline indenting added... bcuz I was getting annoyed ๐Ÿ˜…

#

So visual mode, select your lines, and > to indent, and < to de-indent.

quick spear
#

I now have a param to auto create init.ts (auto execute :create-init) if init.ts is missing.
It will help give a better experience for new users.

quick spear
#

And there is a new npx command to start up a bridge (remote file system) on any device:

npx @net-vim/bridge

quick spear
#

Might sneak in a qr code for that bridge, the security key is a bit long to manually type in on another device.

quick spear
#

Ohh.... ๐Ÿ˜ฒ ... ascii art qr codes:

vital geode
quick spear
vital geode
#

are you telling me crt is on by default for you?

quick spear
#

I code with it on too

quick spear
#

Hot module reload would be a nice feature

vital geode
#

where

quick spear
#

Ahh... would be related to the playgrounds not to net-vim

#

Just a little fn hot that takes a function and returns a function that will call that function. But if there is a code change just within hot and no where else. It will swap the inner function in place without recompiling the entire project.

#

Its to stop your program state from restarting after a code change for a better live coding experience.

vital geode
#

you mean in the playground

quick spear
#

Yeap

quick spear
#

The hot is explicit instead of implicit here.

vital geode
quick spear
vital geode
#

oh I guess I can't use that I am bundling whole to one file

quick spear
quick spear
#

AI gets frustrating at times

#

@vital geode I'm thinking about treating it as just a prototype and rewriting it all by hand, using the prototype as a reference when I get stuck.

#

AI is great... but it just keeps breaking stuff over and over again ๐Ÿ˜…

#

And I am worried about not having that deep understanding of the code anymore.

quick spear
#

And its all working now... I guess if its not broken, don't fix it ๐Ÿ˜…

#

This typing is annoying, but its a limitation of TypeScript:

const hotCounterModule = hot<typeof import('./HotCounter')>('./HotCounter');
#

The string constant needs to be known to the compiler at compile time for the typing to work. So I can't tuck it away in a variable (to reduce double up of string)