Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
c1ea931
cloudflare pages bugfix?
Sep 21, 2023
a3358e5
Organize code for better clarity and efficiency.
Sep 21, 2023
cfb50f5
fix build, use installer fs
Sep 23, 2023
b29d76f
ADD TAURI SUPPORT
Sep 23, 2023
f56bc43
ADD TAURI SUPPORT again
Sep 23, 2023
7c6659e
fix tauri support
Sep 23, 2023
8002ff5
fix tauri support again
Sep 24, 2023
d09589d
Update README with accurate build paths and Tauri code info
Sep 24, 2023
1b49a36
add tauri action
Sep 24, 2023
d4b5a31
element cleanup, etc
Sep 24, 2023
dbbcee7
clutter cleanup
Sep 24, 2023
42dca76
Reorganise startup files and update README
Sep 26, 2023
69bad23
fix things here and there
Sep 26, 2023
b899500
Add CSS loader and minify HTML for improving performance
Sep 26, 2023
9ce658a
inline css now
Sep 27, 2023
bb0b6cf
Merge pull request #56 from use-pluto/develop
443pablo Sep 27, 2023
cf29a17
test git commit
443pablo Sep 27, 2023
869080d
test add a comment
443pablo Sep 27, 2023
f9ae955
completely reworked kernel system
443pablo Sep 28, 2023
c1acf6f
Rework commenting & development mode system
443pablo Sep 28, 2023
1ad56d2
Refactor project from JavaScript to TypeScript
443pablo Oct 4, 2023
922c1a6
complete typescript overhaul
443pablo Oct 5, 2023
9f8050f
App runtime fixes
443pablo Oct 19, 2023
9a66d5b
Refactored build cleanup process and updated external libraries
443pablo Nov 10, 2023
1e8564b
fix critical build bug
443pablo Nov 17, 2023
2304a26
fix critical build bug, again
443pablo Nov 17, 2023
003d5a0
introduce new versioning
443pablo Nov 20, 2023
0a59f6f
introduce new versioning 2 (with functionality)
443pablo Nov 21, 2023
6ed1986
more new versioning
443pablo Nov 27, 2023
be4f65c
Refactor version handling for better performance
443pablo Nov 28, 2023
80bec34
mor
443pablo Nov 28, 2023
7bc3e87
debug
443pablo Nov 28, 2023
9d7f56e
debug
443pablo Nov 28, 2023
6ebfb80
debug
443pablo Nov 28, 2023
9973e09
functional version handler
443pablo Nov 28, 2023
3b0775f
functional version handler
443pablo Nov 28, 2023
12aadb9
feat: Add semver versioning for tauri
443pablo Jan 11, 2024
7f38165
refactor: push old files (this is not a stable commit)
443pablo Jan 15, 2024
37e4341
feat: Add author info to build process and enhance cleanup task
443pablo Jan 16, 2024
d87cfce
Merge pull request #57 from use-pluto/develop
443pablo Jan 18, 2024
ab5b0c1
feat: Update package.json serve script, add new icons, and update cop…
443pablo Jan 20, 2024
c5f017e
feat: Update package.json serve script, add new icons, and update cop…
443pablo Jan 21, 2024
1dcbf0e
feat: Remove old assets
443pablo Jan 21, 2024
c228172
feat: 100% Functional IPC
443pablo Jan 21, 2024
ab77bcf
refactor: Update README
443pablo Jan 21, 2024
cc2c972
fix: fix fatal db bug
443pablo Jan 21, 2024
bb7fa90
fix: Remove memory leak, revoke Blob URL on termination
443pablo Jan 22, 2024
e8e5e39
feat: functional init program, version 0.51
443pablo Feb 10, 2024
a747b63
feat(build): update readme, improve version handler
443pablo Feb 18, 2024
1e3faca
fix(build): fix fatal build error (syntax)
443pablo Feb 18, 2024
543c6a4
fix: new watch mode, fixed some random problems with code
443pablo Feb 19, 2024
62933bb
fix: watch mode works
443pablo Feb 19, 2024
8f3934c
testing
443pablo Feb 19, 2024
a5c7fff
refactor: remove nonfunctional test script
443pablo Mar 10, 2024
4a69d37
feat: db drives now have Drivers. RAMDriver is written now. implement…
443pablo Mar 30, 2024
de9347c
feat: use brand new driver-based model for filesystem, implement RAM …
443pablo Apr 1, 2024
421f5ab
feat: version bump, 0.53
443pablo Apr 1, 2024
ad782d9
fix: issues with production build
443pablo Apr 4, 2024
0511074
fix: more issues with production build
443pablo Apr 4, 2024
0c0077f
build: update dependencies, fix small ts problems
443pablo Apr 4, 2024
7784bad
Merge pull request #58 from use-pluto/develop
443pablo Apr 4, 2024
0c24324
fix: file-zippy, new html minifier
443pablo Apr 8, 2024
84f053a
fix: build now installs dependencies for programs
443pablo Apr 10, 2024
1c6e2cc
feat: you can now use -- --env to set the environment variable
443pablo Apr 13, 2024
b3926ec
feat(build): each program now logs when build is succeeded
443pablo Apr 13, 2024
9746cc3
feat: RAM driver obfuscation, init program now present in installer
443pablo Apr 14, 2024
3426c3b
fix: service worker now catches when network offline
443pablo May 10, 2024
0092dd5
fix: bundled programs now use dependencies instead of devDependencies
443pablo May 10, 2024
e52fdc6
feat: remove reliance on devtool-blocker module
443pablo May 20, 2024
ecd1efe
feat(build): remove reliance on existing env variables
443pablo May 21, 2024
d70530b
fix: fatal runtime error (memory leak)
443pablo May 21, 2024
73b0986
fix: variety of runtime and typing changes
443pablo May 26, 2024
db3c024
fix: background tasks erroring, incorrect LOOKUP entries in RAMdriver
443pablo Jun 7, 2024
aba9f2d
fix: build system now bundles applications!
443pablo Jun 8, 2024
103d25e
Merge pull request #59 from use-pluto/develop
443pablo Jun 8, 2024
a5a757d
fix: program runtime now correctly removes access to APIs, less verbo…
443pablo Jun 12, 2024
00cbbea
feat: processes now have incremental ID numbers, starting at 1
443pablo Jun 15, 2024
721edee
fix: bundled programs now use dependencies instead of devDependencies
443pablo Jun 15, 2024
b6c7d64
feat: added feature which gives processes info on their arguments and…
443pablo Jul 7, 2024
680436d
docs: removed instruction in readme to reinstall tauri dependency
443pablo Jul 7, 2024
8f67e93
refactor: assets are now included in default filesystems. also remove…
443pablo Jul 7, 2024
befb38d
refactor: init script is now minified by default
443pablo Jul 7, 2024
abc189c
fix(build): zip isn't limited to only system executables
443pablo Jul 7, 2024
924cb6d
feat: npm run clean script
443pablo Jul 7, 2024
12cbd16
refactor: misc problems, typos, inspections
443pablo Jul 7, 2024
844580d
feat: add 128x128 logo assets
443pablo Jul 7, 2024
698cb34
feat: a variety of new fixes to the program runtime, start writing pr…
443pablo Aug 9, 2024
d55f86e
Merge remote-tracking branch 'origin/develop' into develop
443pablo Aug 13, 2024
b63fe41
fix: misc problems, typos, inspections
443pablo Oct 1, 2024
30bf26c
feat: better error handling for DataCloneErrors
443pablo Oct 1, 2024
63d143b
feat: basic ipcman templating
443pablo Oct 3, 2024
a3fcb84
feat: process manager
stretch07 Oct 11, 2024
f436e53
feat: process manager
stretch07 Oct 11, 2024
a6090d3
fix: proc man now knows when processes end
stretch07 Oct 11, 2024
0076a05
fix: misc problems, typos, inspections
stretch07 Oct 11, 2024
ff82ea6
fix: misc program runtime bug
stretch07 Oct 18, 2024
083e7e1
fix: version handler
stretch07 Oct 22, 2024
4554e81
fix: commit some non functioning codes
stretch07 Oct 30, 2024
6cf87b6
fix: no more automatic exit indication
stretch07 Nov 15, 2024
43a2ddc
feat: remove useless test code from before
stretch07 Nov 15, 2024
4a88115
refactor: program runtime
stretch07 Nov 16, 2024
96c587a
feat: add assembly runtime parts
stretch07 Nov 16, 2024
ada6ad4
feat: add start:kernel script and enhance AsmRuntime with improved in…
443pablo Nov 23, 2024
5c339c0
fix: asmruntmie
443pablo Nov 24, 2024
3e0b1a0
feat: enhance build process with kernel and program watch options
443pablo Nov 24, 2024
ffa465d
feat: integrate AssemblyScript for WebAssembly module development and…
443pablo Nov 25, 2024
241cbed
feat: add program files to executables directory in preparation for n…
443pablo Nov 25, 2024
47584c4
feat: update package names for root and installer executables, add turbo
443pablo Nov 25, 2024
090d7fe
refactor: optimize for yarn
443pablo Nov 26, 2024
94a15ce
fix: switch from npm to yarn for package installation in fsbuild.js
443pablo Nov 26, 2024
97276f6
feat: add Turbo configuration and update workspace settings in packag…
443pablo Nov 26, 2024
17edaad
fix: fix turbo bugs, correct environmnt variables
443pablo Nov 27, 2024
fc0cf3c
refactor: delete old filesystems
443pablo Nov 27, 2024
4d51616
feat: implement development server with serve-handler and update buil…
443pablo Nov 27, 2024
e38ac89
fix: add more turbo optiimizations, also separate repo build package
443pablo Nov 28, 2024
28f913e
fix: repo build happens after all other builds
443pablo Nov 28, 2024
979e9e5
feat: implement prebuild and postbuild scripts, add zipping functiona…
443pablo Dec 1, 2024
d87bb7d
fix: a few bugs
443pablo Dec 2, 2024
3d43be3
fix: build scripts
443pablo Dec 7, 2024
981873c
fix: functional server build
443pablo Dec 7, 2024
d20a28b
fix: version handler
443pablo Dec 7, 2024
2220919
refactor: QOL updates
443pablo Dec 7, 2024
0bf4867
fix: remove extra debug info
443pablo Dec 13, 2024
8680f7c
feat: support webassembly build
443pablo Dec 13, 2024
191f051
feat: I BROKE EVERYTHING OH MY GOD I HATE THIS
443pablo Dec 17, 2024
44dd7f0
fix: bugs with asmruntime
443pablo Dec 19, 2024
7a09acc
fix: huge bug fix, build works now
443pablo Dec 21, 2024
1586985
feat: implement PWSM runtime and enhance URL handling for WebAssembly
443pablo Dec 22, 2024
2698b83
feat: add IPCMan build script and enhance package.json for AssemblySc…
443pablo Dec 22, 2024
e1a4159
feat: update environment configuration and enhance build scripts for …
443pablo Dec 22, 2024
6494a5e
feat: refactor file structure and update Drive class for improved fun…
443pablo Dec 23, 2024
2775cea
feat: update IPCMan configuration, add logging functionality, and enh…
443pablo Jan 14, 2025
6b79965
chore: update copyright information and contact links across document…
443pablo Jan 14, 2025
3e54f3d
feat: update memory handling in AsmRuntime and PWSM for improved WASM…
443pablo Feb 5, 2025
cafffc5
Merge pull request #61 from stretch07/develop
443pablo Feb 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
NODE_ENV=development
GLOBAL_ROOT=pluto-40t.pages.dev
DEV_SERVER_PORT=3000
PACKAGE_MANAGER=yarn # npm is not supported
DEV_INSTALLER_PERSISTENT=false
42 changes: 42 additions & 0 deletions .github/workflows/tauri.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: 'publish'
on:
push:
branches:
- RELEASE
- staging

jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
platform: [macos-latest, ubuntu-20.04, windows-latest]

runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- name: setup node
uses: actions/setup-node@v3
with:
node-version: 16
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-20.04'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
- name: install frontend dependencies
run: yarn install # change this to npm or pnpm depending on which one you use
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PRERELEASE: ${{ startsWith(github.ref, 'refs/heads/staging') }}
with:
tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version
releaseName: 'Pluto Desktop v__VERSION__'
releaseBody: 'See the assets to download this version and install.'
releaseDraft: true
prerelease: ${{ env.PRERELEASE }}
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
# temporary folders that get zipped... @TODO remove these folders after they get zipped
# temporary folders that get deleted after build but if build fails they are still there
target_fs_BUILD/
installer_fs_BUILD/

target_fs/Pluto/System41/**/dist/*
installer_fs/Pluto/System41/**/dist/*
.turbo

.vscode
out
.idea
dist
temp/
tmp/

# Logs
logs
Expand Down Expand Up @@ -88,7 +95,6 @@ typings/

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
Expand Down
2 changes: 1 addition & 1 deletion .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no -- commitlint --edit ${1}
npx --no -- commitlint --edit "${1}"
128 changes: 0 additions & 128 deletions CODE_OF_CONDUCT.md

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
(c) Copyright 2023 stretch07, All rights reserved.
(c) Copyright 2025 Pablo Gracia, All rights reserved.
47 changes: 38 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,43 @@
# 🌌 pluto
a complete web OS
> **Note:** Along with all the source code, this document is closed-source and private. If you find this document floating around the internet or if someone sends it to you, [contact me](https://pablogracia.net/contact).
## About
Pluto is a close-sourced Web OS, similar to Windows93 or Windows96. It intends to be the most sophisticated, complete, and developer-friendly web OS.
Applications in open99 run under the 41worker environment, which is comparable to WRT for Windows 96. 41worker applications run in workers to improve speed, security, and convenience. To learn more, visit [the docs page](https://developers.pluto.stretch.wtf/learn/api/41worker).
Pluto is an offline, close-sourced Web OS, similar to Windows93 or Windows96. It intends to be the most sophisticated, complete, and developer-friendly web OS.
Pluto programs run under the program runtime (codename 41worker), which is comparable to WRT for Windows 96. These applications run in workers to improve speed, security, and convenience. To learn more, visit [the docs page](https://learn.d.pluto.pablogracia.net/api/41worker).
## Installation
> Make sure you have yarn installed. Pluto does not support npm/pnpm.
1. Clone the repository locally.
2. Copy the environment variables by running `cp .env.example .env`.
3. Install the dependencies by running `yarn`.
### Tauri Installation
Pluto uses the Tauri framework to build the desktop application.
This is not required for the web version.
> Follow the instructions [here](https://tauri.app/v1/guides/getting-started/prerequisites) to install the required tools for building for desktop.
## Usage
You can build pluto by running `npm run build`. This will build the OS and put it in the `/dist` folder.
You can build pluto by running `yarn build`.
This will build the OS into the `/dist` folder.
Because Pluto is a static application, it does not require any server-side shenanigans.
Additionally, you may use `yarn start` to build and serve Pluto locally on port 8000.
This enables the watch mode, meaning every time you save a file, the application will rebuild.

To build Pluto on the global network, Cloudflare Pages, you must push to the RELEASE branch.

### Build Mode
Pluto requires for a build mode environment variable to be set. Currently, this can either be in `development` or `production` modes.
This is declared using the NODE_ENV environment variable (yes, capitalized).

Certain parts of the Pluto kernel rely on NODE_ENV (for example, anti-piracy, devtools detector, obfuscation, etc.).
Code that references `process.env.NODE_ENV` is simplified at build, for both development and production modes.

## Structure
`/installer_fs` gets built into `/public/assets/installer.zip` as a zip file.
`/target_fs` gets built into `/public/assets/rootfs.zip` as a zip file.
`/build` is the build scripts.
`/public` is static files. This includes CSS as well as images.
`/src` is the OS kernel and gets built to `/dist/index.js`.
`/dist` is your ready-to-run build of Pluto.
### Directories
* `/executables/installer/` gets built into `/dist/assets/installer.zip` as a zip file.
* `/executables/root/` gets built into `/dist/assets/rootfs.zip` as a zip file.
* `/scripts/` is the build scripts.
* `/public/` is static files. This includes CSS as well as images.
* `/src/` is the OS kernel and gets built to `/dist/index.js`.
* `/src-tauri/` is the Tauri application code (contains rust and tauri config, mainly)
* `/dist/` is your ready-to-run build of Pluto.

## CLOC
You may accurately count lines of code by running `cloc --exclude-dir="node_modules,src-tauri,dist,package-lock.json" --quiet .` in the root directory.
6 changes: 0 additions & 6 deletions SOURCES.md

This file was deleted.

15 changes: 0 additions & 15 deletions build/index.js

This file was deleted.

41 changes: 0 additions & 41 deletions build/meta/esbuild.js

This file was deleted.

Loading
Loading