Skip to content
This repository was archived by the owner on Jul 30, 2025. It is now read-only.

Pocket OopisOS 5.0

Latest

Choose a tag to compare

@aedmark aedmark released this 24 Jul 12:56
· 32 commits to main since this release

Of course! Here is a rewritten overview of OopisOS, updated to version 5.0 to include the latest features and architectural improvements.

OopisOS v5.0

OopisOS is a browser-based simulation of a Unix-like operating system, designed as a self-contained, portable, and private environment for users to work, play, and experiment. All data, including files, user accounts, and session information, is stored locally in the user's browser, ensuring privacy. The project is a collaboration between a human developer, Andrew Edmark, and Google's Gemini AI.

Key Features:

OopisOS boasts a rich set of features that emulate a traditional command-line operating system, along with a suite of graphical applications.

Core Shell Experience:

  • Advanced Terminal: An interactive command-line interface with support for command history, tab completion, and background processes using the "&" operator.
  • Piping and Redirection: Allows for the chaining of commands using the pipe (|) and redirection of output to files with > and >>.
  • Scripting: The run command can execute .sh files, which can accept arguments, contain comments, and have safeguards against infinite loops.
  • Environment Variables: Supports session variables that can be managed with set, unset, and referenced with $VAR.
  • Aliases: Users can create shortcuts for longer commands using the alias command.

Multi-User Security:

  • User and Group Management: Provides commands for creating users (useradd), groups (groupadd), and managing group memberships (usermod).
  • Sudo and Permissions: Implements privilege escalation with sudo and a Unix-like permission model using chmod, chown, and chgrp.

File System and Applications:

  • Persistent Virtual File System (VFS): All files and directories are stored persistently in the browser's IndexedDB.
  • Standard File Utilities: Includes a comprehensive set of file management commands such as ls (now with sorting by time, size, and extension), find, tree, diff, sed, nl, mkdir, cp, mv, rm, zip, and unzip.
  • Application Suite: OopisOS comes with a variety of built-in applications:
    • gemini: An AI copilot for answering questions and assisting with files.
    • chidi: An AI-powered tool for analyzing and understanding documents.
    • basic: An integrated development environment for the BASIC programming language.
    • log: A personal, secure, and timestamped journal.
    • edit: A text editor with live Markdown preview.
    • paint: A character-based art editor.
    • adventure: An engine for playing and creating text adventure games.
    • synth: A musical synthesizer playable with the computer keyboard.
    • beep: A command to play a simple system sound.

How It Works:

The architecture of OopisOS is designed to be secure, organized, and persistent through a set of decoupled modules that manage different aspects of the operating system.

  • Command Execution: The commexec.js file contains the CommandExecutor class, which is the core of the shell. It handles the entire lifecycle of a command, from parsing and preprocessing to execution, and manages features like piping, redirection, and background jobs.
  • Command Structure: All commands extend a base Command class defined in command_base.js. This class handles common logic for argument parsing, validation, and input stream handling, which simplifies the development of new commands.
  • File System Management: The fs_manager.js file implements the FileSystemManager class, which manages the virtual file system. It provides functionalities for creating, reading, updating, and deleting files and directories, as well as handling permissions.
  • Application Management: The app.js file defines an abstract App class that serves as a blueprint for all full-screen graphical applications. This ensures a consistent lifecycle for all applications, with enter and exit methods for predictable system management.
  • Sound Management: The new sound_manager.js module handles all audio functionalities. It initializes the system's synthesizer on the first user interaction and provides a simple interface for playing notes and sounds.
  • Storage Abstraction: The storage_hal.js file introduces a Storage Hardware Abstraction Layer (HAL). This decouples the file system from its underlying storage mechanism (IndexedDB), making the system more modular and easier to maintain.

Licensing:

OopisOS is released under the MIT License, which grants users the freedom to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software. The software is provided "AS IS", without any warranty.