Skip to content

Ruslan Gilmullin

Open Source

machines-demo

·GPL-3.0

Interactive in-browser Turing and Post machine playground: user code builds a machine via the published npm libraries and runs inside a Web Worker (terminate-on-timeout sandbox, ’unsafe-eval’ scoped to the worker — that’s the actual security boundary). The main thread holds the Svelte 5 UI plus a mirror TuringMachine that replays the worker’s command stream one step at a time onto an animated tape; only plain data crosses postMessage. Vite, CodeMirror 6 with Lezer-based syntax preflight, Playwright e2e

Svelte · Web Workers · GitHub Actions · Vite · Playwright · TypeScript · Vitest · CodeMirror

15-puzzle

·demo·GPL-3.0

Sliding puzzle as a chain of levels gated by Ed25519-signed proofs of completion. Vanilla JS + Vite SPA paired with a zero-runtime-dep Node service: boards are procedurally generated (mulberry32 + Fisher—Yates + parity-solvability check) and the server replays the submitted move list before signing. Level asset URLs are unguessable 16-char hex hashes — each signed blob points only to the next level, so the chain is enforced at the URL layer too

Ed25519 · Node.js · GitHub Actions · Vite · Seeded RNG

minesweeper

·demo·GPL-3.0

Yet another Minesweeper. Framework-agnostic vanilla TypeScript engine (no DOM, no canvas in the core) and a separate canvas renderer with pre-rendered offscreen sprites plus a color-keyed pick canvas for hit-testing without geometry math. devicePixelRatio-aware. Jest tests

GitHub Actions · Vite · Jest · TypeScript · Canvas

@turing-machine-js/machine

·GPL-3.0

npm monorepo: core @turing-machine-js/machine (State, Tape, TapeBlock, TuringMachine) with Mermaid round-trip state-graph serialization, plus two binary-arithmetic libraries with the same operations but different alphabets — a 5-symbol marker variant (multiple numbers per tape) and a 3-symbol bare variant (single number) — to make the alphabet-size vs. state-graph-size trade-off visible side by side. Coveralls, GitHub Actions CI

GitHub Actions · Rollup · TypeScript · Vitest · Mermaid

@post-machine-js/machine

·GPL-3.0

Post machine builder that compiles its instruction set down into a @turing-machine-js/machine state graph under the hood — the two libraries share a single core instance via peer-dependency. Supports subroutines (call), inline grouped instructions (1: [mark, right, mark]), and branching via check. Published to npm

GitHub Actions · Rollup · TypeScript · Vitest

@mellonis/typograf-artlebedev

·MIT

TypeScript wrapper around ArtLebedev’s «Typograf» SOAP service — Russian smart quotes, em/en dashes, and NBSPs glued around short words, without bundling a local rule engine. Result is a discriminated union: either the processed text or one of four typed errors (network_error, timeout, aborted, service_error). Timeouts via AbortSignal.any (Node 22.5+), caller-supplied AbortSignal for cancellation. Zero runtime dependencies

AbortSignal · GitHub Actions · TypeScript · Vitest

@form-validator-js/core

·demo·MIT

Declarative vanilla-TypeScript HTML form validator — rules go in data-attributes on the fields, the form gets novalidate automatically, error rendering stays with the consumer. Cross-field reactivity (typing in password re-validates confirm via equalsTo’s observable wiring), three timing modes (blur-then-input default), and inputs linked from outside the form via the form attribute are all picked up. On invalid submit, calls stopImmediatePropagation so other submit listeners don’t observe the failed attempt

GitHub Actions · TypeScript · Vitest