Commit Graph

76 Commits

Author SHA1 Message Date
Felix Rieseberg
4ed96deecc Restore CD-ROM settings tab behind a feature flag
The tab, file picker, and prop wiring are all back and styled to match
the new Properties sheet, gated on CDROM_ENABLED=false until v86's IDE
CD path works again.
2026-04-11 09:01:29 -07:00
Felix Rieseberg
80505384c6 Remove unused 95css vendor bundle 2026-04-11 09:00:34 -07:00
Felix Rieseberg
a0ee5a2f10 Drop dead CD-ROM handler and tighten navigate typing 2026-04-11 08:51:08 -07:00
Felix Rieseberg
74fc2d291e Redesign launcher UI with 98.css
Replace the sparse start/settings cards with a Win95-styled launcher:

- Start screen is now a 'Welcome to Windows 95' dialog with a gradient
  side stripe, a rotating tip box, and a button column.
- Settings is a tabbed Properties sheet (Floppy / Network / State) with
  group boxes, sunken read-only path fields, and OK/Cancel.
- Vendored 98.css and its Pixelated MS Sans Serif fonts; dropped the
  old 95css-based .btn/.card/.nav classes.
- Removed the bottom taskbar nav (start-menu.tsx) — navigation now goes
  through the dialog buttons so the launcher isn't mistaken for the
  running OS.
2026-04-11 08:48:11 -07:00
Felix Rieseberg
55c4fbb27e Update to v86 HEAD with IDE shared-register fix
Patches src/ide.js before building: restores the dual master+slave writes
for ATA Command Block registers (Features, Sector Count, LBA Low/Mid/High)
that 1b90d2e7 changed to current_interface-only. Those registers are
channel-shared per ATA spec; Win95's ESDI_506.PDR writes them then switches
drive-select expecting the values to persist. Found via JS-only bisect.

Boots fresh in ~32s with the same sporadic-bluescreen rate as the prod build.
The new build has the tcp-connection bus event so SMB uses the clean path
instead of the connection-theft hack (guard added for the old-API monkeypatch
to skip if the bus handler already accepted).

tools/update-v86.js applies the source patch automatically. v86 checkout
left clean (patch stashed).
2026-04-11 08:01:46 -07:00
Felix Rieseberg
c243ebbbcc Merge pull request #345 from felixrieseberg/claude/kind-hermann
Improve VM info bar: live CPU/disk/net throughput + hover-to-reveal
2026-04-11 07:57:17 -07:00
Felix Rieseberg
85e25ed3ab Improve VM info bar: CPU M/s, disk & net throughput, hover-to-reveal
- Show CPU as M/s (millions of instructions/sec) instead of raw count
- Replace Disk Idle/Read with actual R/W throughput (B/K/M per sec)
- Add Net ↓/↑ throughput from eth-receive-end / eth-transmit-end
- Always mount the bar; when hidden it slides off-screen and reveals on
  hover near the top edge (Pin/Hide toggle)
- Center via translateX(-50%) so the wider bar stays centered
2026-04-11 07:51:39 -07:00
Felix Rieseberg
585fbc9624 Only forward mouse input to the VM while pointer lock is held 2026-04-11 07:34:16 -07:00
Felix Rieseberg
45f5a136b2 Add SMB1 server and host folder share
Windows 95 can now mount a host folder as a network drive at \\HOST\HOST.
Read-only, ~1500 lines, zero deps. Defaults to ~/Downloads, configurable in
Settings.

Protocol: NEGOTIATE (LANMAN2.1), SESSION_SETUP, TREE_CONNECT, TRANSACTION/RAP
(NetShareEnum, NetServerGetInfo, NetWkstaGetInfo), TRANSACTION2/FIND_FIRST2,
SEARCH (8.3 with ~N suffix mapping), OPEN_ANDX, NT_CREATE_ANDX, READ_ANDX,
CLOSE, QUERY_INFORMATION, CHECK_DIRECTORY. NetBIOS Name Service on UDP 137
answers Node Status and Name Query so \\HOST resolves.

v86 hook: monkeypatches adapter.on_tcp_connection (old API), shadows
adapter.receive during a port-80 probe to steal a TCPConnection without
side effects, re-aims it at port 139. Data via .on_data (Closure
dead-code-eliminated .on/.emit). Also registers tcp-connection bus event
for newer v86 builds.

Security: read-only, path traversal blocked lexically and through symlinks
(realpath the deepest existing ancestor, re-append tail, confirm under root).
Share path validated in main-process IPC.

BIOS updated to SeaBIOS 1.16.2 (compatible with old v86). v86 itself stays
on the Feb 2025 prod build — newer builds hang at the splash screen on fresh
boot (bisect tooling included in tools/).

Also: tools/update-v86.js builds wasm+libv86+BIOS from a local v86 checkout
and refuses to install JS/wasm pairs more than 14 days apart (copy.sh ships
mismatched pairs). tools/parcel-build.js dynamic-import patch made tolerant
of post-d4c5fa86 builds.
2026-04-11 01:03:34 -07:00
Felix Rieseberg
2d34183e14 Update v86 to latest, replace string-match patches with stable shim
The previous build patched libv86.js by exact-string match against
Closure-mangled identifiers (k.load_file, H.exportSymbol, pa, qa),
which broke on every upstream rebuild.

Of the three old patches:
- exportSymbol order: now a one-line HTML shim copying module.exports.V86
  to window after libv86 loads
- this.fetch binding: fixed upstream
- load_file XHR vs fs: replaced by patching await import('node:fs/promises')
  to require('fs').promises - string literals survive Closure, fails loud
  if absent

Also adds tools/update-v86.js to pull new builds from copy.sh, and exposes
the renderer DevTools protocol on localhost:9222 in dev.
2026-04-10 20:53:44 -07:00
Felix Rieseberg
00943ae4da Update all dependencies
React 19, Electron 41, TypeScript 6, electron-forge 7.8, plus everything
else to latest. Migrated to React 19 createRoot API, updated for Electron 41
session/window type changes, and adjusted tsconfig for TS 6 deprecations.
Regenerated @electron/packager patch for 18.4.4.
2026-04-10 20:34:28 -07:00
Felix Rieseberg
6f2025ffc0 Improve reset 2025-02-20 21:19:55 -08:00
Felix Rieseberg
3a7b37fff0 Fix a few smaller build issues 2025-02-20 17:27:00 -08:00
Felix Rieseberg
6dee2f45a2 Hide text screen when paused 2025-02-20 14:31:10 -08:00
Felix Rieseberg
9b87b77570 Update links 2025-02-18 23:03:37 -08:00
Felix Rieseberg
b442c6db08 Update UI 2025-02-18 22:49:52 -08:00
Felix Rieseberg
5c946bbca4 Now with working network 2025-02-18 22:39:47 -08:00
Felix Rieseberg
bc42ce3231 Remove fs-extra 2025-02-15 09:45:22 -08:00
Felix Rieseberg
7710c4b7af Upgrade prettier 2025-02-15 09:36:37 -08:00
Felix Rieseberg
f8ae78f247 Update v86 2025-02-15 09:34:41 -08:00
Felix Rieseberg
da4b0dd728 Update v86 2023-07-14 12:39:57 -07:00
Felix Rieseberg
c3537ae330 Handle promises 2022-10-08 13:12:08 +02:00
Felix Rieseberg
19a1bbc002 Update v86 to 5d02960 2022-10-04 10:09:26 +02:00
Felix Rieseberg
7eae250c2a Fix OSFMount link 2022-06-26 14:05:49 -07:00
Felix Rieseberg
33db389d59 Start with a larger zoom 2022-06-26 13:01:05 -07:00
Felix Rieseberg
3dd50db272 Cleanup 2022-05-04 14:51:49 -07:00
Felix Rieseberg
7b92d33584 Update v86, patch to use fs.readFile 2022-04-26 12:20:59 -07:00
Felix Rieseberg
24a1c30502 Update dependencies 2022-04-21 15:07:15 -07:00
Felix Rieseberg
238b07b7dd build: Add a check-links tool 2021-01-04 09:54:20 -08:00
Felix Rieseberg
d7c657e671 build: Build on ARM 2020-12-13 16:32:44 -08:00
Felix Rieseberg
7a8a54c76b build: Update Electron & React 2020-12-13 16:14:18 -08:00
Felix Rieseberg
92717c8047 chore: Updated prettier run 2020-08-02 13:11:20 -07:00
Felix Rieseberg
3b76a39060 fix: Ensure that links show up 2019-11-22 18:06:58 -08:00
Felix Rieseberg
0c2149b756 fix: Show image in explorer 2019-08-24 17:26:18 +02:00
Felix Rieseberg
51d0011ed0 fix: Hide info if requested 2019-08-24 17:14:22 +02:00
Felix Rieseberg
186a2a8ba9 chore: Improve build 2019-08-24 16:58:21 +02:00
Felix Rieseberg
7653d7294c feat: Icons, better UI 2019-08-23 22:58:56 +02:00
Felix Rieseberg
33ef8abcc8 feat: Zoom in/out/reset 2019-08-21 19:43:21 +02:00
Felix Rieseberg
ea134d046e feat: More keyboard shortcuts 2019-08-21 11:34:55 +02:00
Felix Rieseberg
c7f765df03 feat: More menu options 2019-08-21 11:26:56 +02:00
Felix Rieseberg
dcc3e72bcf feat: Allow stopping the emulator 2019-08-21 10:37:04 +02:00
Felix Rieseberg
241606d097 feat: Move to TypeScript 2019-08-21 09:48:49 +02:00
Felix Rieseberg
b7aa6a760d build: Move to less for styles 2019-08-19 17:37:35 -04:00
Felix Rieseberg
6b7bb0f460 chore: Move bios 2019-08-19 17:33:18 -04:00
Felix Rieseberg
dbcefb4b7b 🎨 Improved style 2019-08-19 08:41:14 -07:00
Felix Rieseberg
42719bb1d7 wip 2019-08-04 08:45:18 -07:00
Felix Rieseberg
153002403b wip 2019-07-24 08:57:23 -07:00
Felix Rieseberg
aafab62707 chore: Update all dependencies 2019-05-17 12:30:03 +09:00
Felix Rieseberg
ed42ea8e0e fix: Ensure smooth migration 2019-02-03 15:38:06 -08:00
Felix Rieseberg
0779f18071 fix: Handle missing state 2019-02-03 15:24:29 -08:00