LisaGUI
Information

LisaGUI is a "web OS" - a website that mimics the look, feel, and functionality of an operating system. More bluntly, it's a giant Javascript program which recreates the Lisa's user interface from scratch (to the best of my ability). The Lisa was Apple's first computer with a graphical user interface; more information about it can be found in the history section.

Right now, I don't have an extensive user manual for LisaGUI beyond a simple read-me document included with the system. In the future I will be adding more detailed end-user documentation as soon as I get the time to write it!

This page contains some technical information about LisaGUI and some very nice looking screenshots. I recently did a total revamp of these supplemental pages; I'm still in the process of figuring out exactly how I want to organize the information on this page.
Manage a virtual desktop: LisaGUI's built in filesystem lets you save your work locally to your browser's IndexedDB storage space.
Screenshot of the Desktop Manager application with two windows open containing files and folders.
LisaGUI is almost entirely vanilla Javascript. Aside from Gulp.js, which I use as a simple build tool to produce a minified JS file, no third party libraries or frameworks are utilized. LisaGUI contains no code from the Lisa Office System's source code (or any code written by Apple), and doesn't utilize any component of any emulator, like LisaEm or IDLE. It contains no AI-generated code.

The entirety of LisaGUI's user interface is computed in Javascript and rendered to a single canvas element. Aside from the canvas, and a few other elements which serve various purposes, the document object model is not used at all. As a result, all the user interface components had to be coded from scratch in JS; they aren't simply reskinned HTML nodes. Instead of the DOM, I wrote my own hierarchical system for organizing objects. All elements in the UI exist within the hierarchy, the root of which is the desktop.
Composite screenshot of the Preferences application showing a variety of color palettes to choose from.
Customize your workspace: Decorate your office to suit your tastes. Choose from a variety of color palettes and icon themes, and invert the screen if you wish. Pick from one of the many desktop patterns, or draw your own!
This isn't a CSS skin; CSS is mainly used to position and style the canvas. It's also used to style the "bootloader" UI which resembles the Lisa's hardware test screen. This UI is displayed while the script loads, and is used as a fallback if JS is disabled (where it takes on the appearance of a Lisa startup error).

To render screen elements onto the canvas, I wrote what I hesitate to call a graphics engine. It's a bit naively written (and thus slow) and really needs a rewrite or reimplementation, perhaps using WebGL or some other system utilizing the GPU. However, it works, and has full support for 1-bit blending modes. The system is heavily optimized; regions of the display are only drawn when the position of an object changes, and only the objects placed within the rectangular bounds of the region are included in those calculations.

Each screen element has two 1-bit channels - one for image data, and one for an alpha channel. Each channel functions independently of the other, and there are several object classes used to store channel data. There are two bitmap classes - one of them uses bitmasking to store data as compactly as possible. In other classes, the image can be generated programmatically. One of the classes displays tiled bitmap patterns. Another stores pixel data using a set of x/y points (instead of a 2D array), allowing for compact storage of large images with minimal amounts of information.
Label your icons: Personalize your documents by drawing labels on them! Never have trouble finding that really important file in a cluttered folder. This little feature was not originally in the Lisa Office System; I added it myself.
Composite screenshot of the Preferences application showing a variety of color palettes to choose from.
LisaGUI has its own (very basic) typesetting system. Similar to the Lisa (and early versions of the Mac System software) one or more text styles can be applied to each character. This includes standard styles such as bold and italic, but also outlined and shadowed text. There are variety of ways to format paragraphs: text alignment and line spacing are adjustable, and the engine supports formatting text along left-to-right or right-to-left directionalities.

For storing data, LisaGUI uses an IndexedDB-based file system. In keeping with the diegetic nature of this project (in the spirit of the Lisa's stronger adherence to the desktop metaphor), each IndexedDB database corresponds to a single "hard disk." Multiple disks can be added to the system. The system also supports "RAM disks" which are just JS objects stored in memory.

Recommended System Requirements
Software:
Javascript must be enabled. If you have noscript, you'll have to disable it on this domain.
The latest version of Firefox, Chrome, or Safari. Support for older versions and other browsers isn't guaranteed.
LisaGUI will prompt you to "install" itself; it just wants permission before making a new IndexedDB database. This also installs a service worker for offline use.
Hardware:
A mouse and keyboard. The UI is not well optimized for touch displays.
For the best experience, a high-DPI display with a native resolution of at least 1440 x 1092px (to fit the entire screen area of the original Lisa). Lower-DPI displays may show scaling artifacts. 1-bit graphics look best at a display's native resolution; otherwise they will appear blurry.
Created by Andrew Yaros. Please also check out my personal homepage! To keep up with the project, and be notified about bug fixes and new features, go to this Bluesky page. An RSS feed is also available.

Right now, there's no formalized bug reporting system for LisaGUI. If you encounter an issue, please message me on Bluesky or reply to one of my posts there, or email me using the link at the very bottom of my homepage.
Author's note: I pronounce the letters in GUI separately. Why would you ever pronounce it "gooey?" Please don't do that. Just don't.