mirror of
https://github.com/AeThex-Corporation/AeThex-OS.git
synced 2026-04-17 22:27:19 +00:00
fix(android): force manual file load to bypass black screen issue
This commit is contained in:
parent
a3336954d4
commit
d74c99a72d
40 changed files with 7431 additions and 145 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -30,6 +30,7 @@ Gemfile.lock
|
|||
.env.*.local
|
||||
|
||||
# Ignore Linux build artifacts and special files
|
||||
aethex-linux-build/rootfs/
|
||||
shell/aethex-shell/aethex-linux-build/rootfs/
|
||||
!shell/aethex-shell/aethex-linux-build/rootfs/**/*.sh
|
||||
!shell/aethex-shell/aethex-linux-build/rootfs/**/*.conf
|
||||
|
|
|
|||
Binary file not shown.
BIN
.vs/AeThexOS/v17/.wsuo
Normal file
BIN
.vs/AeThexOS/v17/.wsuo
Normal file
Binary file not shown.
23
.vs/AeThexOS/v17/DocumentLayout.json
Normal file
23
.vs/AeThexOS/v17/DocumentLayout.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "C:\\Users\\PCOEM\\AeThexOS\\",
|
||||
"Documents": [],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": -1,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
6
.vs/VSWorkspaceState.json
Normal file
6
.vs/VSWorkspaceState.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
||||
BIN
.vs/slnx.sqlite
Normal file
BIN
.vs/slnx.sqlite
Normal file
Binary file not shown.
73
AeThexOS_V5/AeThexOS_V5.vbox
Normal file
73
AeThexOS_V5/AeThexOS_V5.vbox
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
** DO NOT EDIT THIS FILE.
|
||||
** If you make changes to this file while any VirtualBox related application
|
||||
** is running, your changes will be overwritten later, without taking effect.
|
||||
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
|
||||
**
|
||||
** Written by VirtualBox 7.2.4 (r170995)
|
||||
-->
|
||||
<VirtualBox xmlns="http://www.virtualbox.org/" version="1.19-windows">
|
||||
<Machine uuid="{8c1c17d5-577f-49b7-a0f9-a2a911c386b1}" name="AeThexOS_V5" OSType="Ubuntu_64" snapshotFolder="Snapshots" lastStateChange="2026-02-06T05:50:10Z">
|
||||
<MediaRegistry>
|
||||
<HardDisks>
|
||||
<HardDisk uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}" location="AeThexOS_V5.vdi" format="VDI" type="Normal"/>
|
||||
</HardDisks>
|
||||
<DVDImages>
|
||||
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}" location="C:/Users/PCOEM/AeThexOS/AeThex-OS-V5-Final.iso"/>
|
||||
</DVDImages>
|
||||
</MediaRegistry>
|
||||
<ExtraData>
|
||||
<ExtraDataItem name="GUI/LastNormalWindowPosition" value="640,249,800,654"/>
|
||||
</ExtraData>
|
||||
<Hardware>
|
||||
<Memory RAMSize="4096"/>
|
||||
<Boot>
|
||||
<Order position="1" device="DVD"/>
|
||||
<Order position="2" device="HardDisk"/>
|
||||
<Order position="3" device="None"/>
|
||||
<Order position="4" device="None"/>
|
||||
</Boot>
|
||||
<Display controller="VMSVGA" VRAMSize="128"/>
|
||||
<Firmware/>
|
||||
<BIOS>
|
||||
<IOAPIC enabled="true"/>
|
||||
<SmbiosUuidLittleEndian enabled="true"/>
|
||||
<AutoSerialNumGen enabled="true"/>
|
||||
</BIOS>
|
||||
<Network>
|
||||
<Adapter slot="0" enabled="true" MACAddress="0800274A28ED" type="82540EM">
|
||||
<NAT localhost-reachable="true"/>
|
||||
</Adapter>
|
||||
</Network>
|
||||
<AudioAdapter useDefault="true" driver="WAS" enabled="true"/>
|
||||
<Clipboard/>
|
||||
<GuestProperties>
|
||||
<GuestProperty name="/VirtualBox/GuestAdd/GuiOnFocus" value="1" timestamp="1770357010041817500" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="en_US" timestamp="1770357057154551500" flags="RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/VBoxRev" value="170995" timestamp="1770357010002592302" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/VBoxVer" value="7.2.4" timestamp="1770357010002592300" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/VBoxVerExt" value="7.2.4" timestamp="1770357010002592301" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
</GuestProperties>
|
||||
<StorageControllers>
|
||||
<StorageController name="SATA Controller" type="AHCI" PortCount="30" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3">
|
||||
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
|
||||
<Image uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}"/>
|
||||
</AttachedDevice>
|
||||
</StorageController>
|
||||
<StorageController name="IDE Controller" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
|
||||
<AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="0" device="0">
|
||||
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}"/>
|
||||
</AttachedDevice>
|
||||
</StorageController>
|
||||
</StorageControllers>
|
||||
<RTC localOrUTC="UTC"/>
|
||||
<CPU count="2">
|
||||
<HardwareVirtExLargePages enabled="true"/>
|
||||
<PAE enabled="false"/>
|
||||
<LongMode enabled="true"/>
|
||||
<X2APIC enabled="true"/>
|
||||
</CPU>
|
||||
</Hardware>
|
||||
</Machine>
|
||||
</VirtualBox>
|
||||
73
AeThexOS_V5/AeThexOS_V5.vbox-prev
Normal file
73
AeThexOS_V5/AeThexOS_V5.vbox-prev
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
** DO NOT EDIT THIS FILE.
|
||||
** If you make changes to this file while any VirtualBox related application
|
||||
** is running, your changes will be overwritten later, without taking effect.
|
||||
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
|
||||
**
|
||||
** Written by VirtualBox 7.2.4 (r170995)
|
||||
-->
|
||||
<VirtualBox xmlns="http://www.virtualbox.org/" version="1.19-windows">
|
||||
<Machine uuid="{8c1c17d5-577f-49b7-a0f9-a2a911c386b1}" name="AeThexOS_V5" OSType="Ubuntu_64" snapshotFolder="Snapshots" lastStateChange="2026-02-06T05:50:10Z">
|
||||
<MediaRegistry>
|
||||
<HardDisks>
|
||||
<HardDisk uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}" location="AeThexOS_V5.vdi" format="VDI" type="Normal"/>
|
||||
</HardDisks>
|
||||
<DVDImages>
|
||||
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}" location="C:/Users/PCOEM/AeThexOS/AeThex-OS-V5-Final.iso"/>
|
||||
</DVDImages>
|
||||
</MediaRegistry>
|
||||
<ExtraData>
|
||||
<ExtraDataItem name="GUI/LastNormalWindowPosition" value="640,249,720,454"/>
|
||||
</ExtraData>
|
||||
<Hardware>
|
||||
<Memory RAMSize="4096"/>
|
||||
<Boot>
|
||||
<Order position="1" device="DVD"/>
|
||||
<Order position="2" device="HardDisk"/>
|
||||
<Order position="3" device="None"/>
|
||||
<Order position="4" device="None"/>
|
||||
</Boot>
|
||||
<Display controller="VMSVGA" VRAMSize="128"/>
|
||||
<Firmware/>
|
||||
<BIOS>
|
||||
<IOAPIC enabled="true"/>
|
||||
<SmbiosUuidLittleEndian enabled="true"/>
|
||||
<AutoSerialNumGen enabled="true"/>
|
||||
</BIOS>
|
||||
<Network>
|
||||
<Adapter slot="0" enabled="true" MACAddress="0800274A28ED" type="82540EM">
|
||||
<NAT localhost-reachable="true"/>
|
||||
</Adapter>
|
||||
</Network>
|
||||
<AudioAdapter useDefault="true" driver="WAS" enabled="true"/>
|
||||
<Clipboard/>
|
||||
<GuestProperties>
|
||||
<GuestProperty name="/VirtualBox/GuestAdd/GuiOnFocus" value="1" timestamp="1770357010041817500" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="en_US" timestamp="1770357017701345900" flags="RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/VBoxRev" value="170995" timestamp="1770357010002592302" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/VBoxVer" value="7.2.4" timestamp="1770357010002592300" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
<GuestProperty name="/VirtualBox/HostInfo/VBoxVerExt" value="7.2.4" timestamp="1770357010002592301" flags="TRANSIENT, RDONLYGUEST"/>
|
||||
</GuestProperties>
|
||||
<StorageControllers>
|
||||
<StorageController name="SATA Controller" type="AHCI" PortCount="30" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3">
|
||||
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
|
||||
<Image uuid="{df646f0c-79f5-44d0-80dd-a4adf770a768}"/>
|
||||
</AttachedDevice>
|
||||
</StorageController>
|
||||
<StorageController name="IDE Controller" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
|
||||
<AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="0" device="0">
|
||||
<Image uuid="{a8fccaaf-38fc-4b21-bfb4-4fd7009afb9a}"/>
|
||||
</AttachedDevice>
|
||||
</StorageController>
|
||||
</StorageControllers>
|
||||
<RTC localOrUTC="UTC"/>
|
||||
<CPU count="2">
|
||||
<HardwareVirtExLargePages enabled="true"/>
|
||||
<PAE enabled="false"/>
|
||||
<LongMode enabled="true"/>
|
||||
<X2APIC enabled="true"/>
|
||||
</CPU>
|
||||
</Hardware>
|
||||
</Machine>
|
||||
</VirtualBox>
|
||||
BIN
AeThexOS_V5/AeThexOS_V5.vdi
Normal file
BIN
AeThexOS_V5/AeThexOS_V5.vdi
Normal file
Binary file not shown.
1803
AeThexOS_V5/Logs/VBox.log
Normal file
1803
AeThexOS_V5/Logs/VBox.log
Normal file
File diff suppressed because it is too large
Load diff
4427
AeThexOS_V5/Logs/VBoxHardening.log
Normal file
4427
AeThexOS_V5/Logs/VBoxHardening.log
Normal file
File diff suppressed because it is too large
Load diff
76
UNIKERNEL_GUIDE.md
Normal file
76
UNIKERNEL_GUIDE.md
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
# ☢️ AeThex OS: The Unikernel Path
|
||||
|
||||
> "It's just a site... can we do what all this is pointing towards?"
|
||||
|
||||
You are absolutely right. The ultimate form of AeThex is not a website running on Linux. **It is the Kernel itself.**
|
||||
|
||||
To achieve a "Real AeThex Kernel" without building a Linux ISO, we use **Unikernels**.
|
||||
|
||||
## What is this?
|
||||
Instead of: `Hardware -> Linux Kernel -> Ubuntu -> Node.js -> AeThex`
|
||||
We do: `Hardware -> AeThex (as Kernel)`
|
||||
|
||||
We use **Nanos (via OPS)** to compile your `dist/index.js` into a bootable disk image. This image has no shell, no SSH, no users. It just boots and runs your code.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ How to Build the Kernel
|
||||
|
||||
### 1. Prerequisites
|
||||
You need a Linux environment (WSL2 works perfectly) and the `ops` tool.
|
||||
|
||||
```bash
|
||||
# Install OPS (Orchestrator for Unikernels)
|
||||
curl https://ops.city/get.sh -sSfL | sh
|
||||
```
|
||||
|
||||
### 2. Prepare the Build
|
||||
We need to bundle your server and client into a single distributable folder.
|
||||
|
||||
```bash
|
||||
# Run the build script (creates /dist folder with everything)
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 3. Compile the Kernel
|
||||
Use the `ops.json` configuration I just created in your root folder.
|
||||
|
||||
```bash
|
||||
# Build the image
|
||||
ops build dist/index.js -c ops.json -i aethex-kernel-v1
|
||||
|
||||
# Run it locally (requires QEMU/KVM)
|
||||
ops run aethex-kernel-v1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ The Architecture Shift
|
||||
|
||||
When you run this, you have achieved the "Real OS" goal:
|
||||
|
||||
1. **The Brain (Server):** Is now a Unikernel. It boots in milliseconds. It is secure by design (no shell to hack).
|
||||
2. **The Face (Client):** Since Unikernels don't have graphics drivers for React, you view the OS from a "Thin Client" (any other device's browser).
|
||||
|
||||
### The "Sci-Fi" Console Setup
|
||||
If you want a dedicated laptop to *be* AeThex:
|
||||
1. **Boot the Unikernel** on the metal (using Nanos).
|
||||
2. **The screen will be black** (it's a headless kernel).
|
||||
3. **The User Interface** is projected to any connected terminal.
|
||||
|
||||
*To see pixels on the SAME machine, you would need to write a Display Driver in Node.js, which is functionally impossible today. The "Standard" Sci-Fi OS architecture is a Headless Core + Visual Terminals.*
|
||||
|
||||
---
|
||||
|
||||
## 📂 Configuration
|
||||
See `ops.json` in the root directory.
|
||||
|
||||
```json
|
||||
{
|
||||
"Target": "node",
|
||||
"Args": ["dist/index.js"],
|
||||
"Env": { "PORT": "80" }
|
||||
}
|
||||
```
|
||||
|
||||
This tells the machine: "Your only purpose in life is to run this JavaScript file."
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.aethex.os">
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
|
|
|
|||
28
android/app/src/main/assets/public/test.html
Normal file
28
android/app/src/main/assets/public/test.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Page</title>
|
||||
<style>
|
||||
body {
|
||||
background-color: #00FF00; /* Bright Green */
|
||||
color: black;
|
||||
font-size: 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<h1>TEST FILE LOADED</h1>
|
||||
<p>If you see this, file access is working.</p>
|
||||
</div>
|
||||
<script>
|
||||
console.log("Test file loaded successfully");
|
||||
document.body.style.backgroundColor = "#00FF00";
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,86 +1,70 @@
|
|||
package com.aethex.os;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import androidx.core.view.WindowCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.core.view.WindowInsetsControllerCompat;
|
||||
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.webkit.WebResourceRequest;
|
||||
import android.webkit.WebResourceError;
|
||||
import android.widget.Toast;
|
||||
import android.app.AlertDialog;
|
||||
import com.getcapacitor.BridgeActivity;
|
||||
import com.google.firebase.FirebaseApp;
|
||||
import com.google.firebase.FirebaseOptions;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
public class MainActivity extends BridgeActivity {
|
||||
|
||||
// Using onStart to hijack the process immediately after bridge init
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Enable fullscreen immersive mode
|
||||
enableImmersiveMode();
|
||||
|
||||
// Ensure Firebase is ready before any Capacitor plugin requests it; stay resilient if config is missing
|
||||
try {
|
||||
if (FirebaseApp.getApps(this).isEmpty()) {
|
||||
FirebaseOptions options = null;
|
||||
try {
|
||||
options = FirebaseOptions.fromResource(this);
|
||||
} catch (Exception ignored) {
|
||||
// No google-services.json resources, we'll fall back below
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (this.bridge != null && this.bridge.getWebView() != null) {
|
||||
loadCustomUrl();
|
||||
}
|
||||
}
|
||||
|
||||
if (options != null) {
|
||||
FirebaseApp.initializeApp(getApplicationContext(), options);
|
||||
} else {
|
||||
// Minimal placeholder so Firebase-dependent plugins don't crash when config is absent
|
||||
FirebaseOptions fallback = new FirebaseOptions.Builder()
|
||||
.setApplicationId("1:000000000000:android:placeholder")
|
||||
.setApiKey("FAKE_API_KEY")
|
||||
.setProjectId("aethex-placeholder")
|
||||
.build();
|
||||
FirebaseApp.initializeApp(getApplicationContext(), fallback);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.w("MainActivity", "Firebase init skipped: " + e.getMessage());
|
||||
}
|
||||
private void loadCustomUrl() {
|
||||
WebView webView = this.bridge.getWebView();
|
||||
|
||||
// Set WebView background to BLACK
|
||||
webView.setBackgroundColor(0xFF000000);
|
||||
|
||||
WebSettings settings = webView.getSettings();
|
||||
settings.setJavaScriptEnabled(true);
|
||||
settings.setDomStorageEnabled(true);
|
||||
settings.setAllowFileAccess(true);
|
||||
settings.setAllowContentAccess(true);
|
||||
settings.setAllowFileAccessFromFileURLs(true);
|
||||
settings.setAllowUniversalAccessFromFileURLs(true);
|
||||
|
||||
// Add WebViewClient to catch errors
|
||||
webView.setWebViewClient(new WebViewClient() {
|
||||
@Override
|
||||
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
|
||||
Log.e("AeThexOS", "WebView Error: " + error.getDescription());
|
||||
runOnUiThread(() -> {
|
||||
new AlertDialog.Builder(MainActivity.this)
|
||||
.setTitle("WebView Error")
|
||||
.setMessage("Failed to load: " + request.getUrl() + "\n\nReason: " + error.getDescription())
|
||||
.setPositiveButton("OK", null)
|
||||
.show();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
if (hasFocus) {
|
||||
enableImmersiveMode();
|
||||
}
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
Log.i("AeThexOS", "Page Loaded: " + url);
|
||||
runOnUiThread(() -> {
|
||||
Toast.makeText(MainActivity.this, "Loaded: " + url, Toast.LENGTH_SHORT).show();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
private void enableImmersiveMode() {
|
||||
View decorView = getWindow().getDecorView();
|
||||
// Clear cache to ensure we aren't loading stale files
|
||||
webView.clearCache(true);
|
||||
webView.clearHistory();
|
||||
|
||||
// Full immersive mode - hide everything
|
||||
WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
|
||||
|
||||
WindowInsetsControllerCompat controller = WindowCompat.getInsetsController(getWindow(), decorView);
|
||||
if (controller != null) {
|
||||
// Hide BOTH status bar and navigation bar completely
|
||||
controller.hide(WindowInsetsCompat.Type.systemBars());
|
||||
// Swipe from edge to temporarily show bars
|
||||
controller.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
|
||||
}
|
||||
|
||||
// Set bars to transparent when they do show
|
||||
getWindow().setStatusBarColor(android.graphics.Color.TRANSPARENT);
|
||||
getWindow().setNavigationBarColor(android.graphics.Color.TRANSPARENT);
|
||||
|
||||
// Keep screen on + extend into cutout areas
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
getWindow().getAttributes().layoutInDisplayCutoutMode =
|
||||
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
|
||||
}
|
||||
// Force load our local test file
|
||||
webView.loadUrl("file:///android_asset/public/test.html");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
230
auth_fix_run.log
Normal file
230
auth_fix_run.log
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
|
||||
> rest-express@1.0.0 build:kernel
|
||||
> bash script/build-unikernel.sh
|
||||
|
||||
═══════════════════════════════════════════════════════════════
|
||||
AeThex OS - Unikernel Builder
|
||||
Target: Nanos Unikernel (Bootable Image)
|
||||
═══════════════════════════════════════════════════════════════
|
||||
[*] Detected Windows Environment (MinGW/Git Bash).
|
||||
[*] Switching to WSL Context...
|
||||
[33m[plugin vite:reporter]
|
||||
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.
|
||||
[39m
|
||||
[33m
|
||||
(!) Some chunks are larger than 500 kB after minification. Consider:
|
||||
- Using dynamic import() to code-split the application
|
||||
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
|
||||
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.[39m
|
||||
|
||||
dist\index.js 1.5mb
|
||||
|
||||
Done in 1123ms
|
||||
[1m[2m 4.62 kB[22m[1m[22m[2m │ gzip: 1.43 kB[22m
|
||||
[2m../dist/public/[22m[32massets/holographic_digital_security_seal_for_certification-DujiIi4u.png [39m[1m[2m 557.88 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_subtle_digital_grid_texture-CW2Q0w3T.png [39m[1m[2m 965.43 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png [39m[1m[2m1,343.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_digital_circuit_board_background-CqDjO0Wd.png [39m[1m[2m1,577.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[35massets/index-C25YaYOI.css [39m[1m[2m 226.22 kB[22m[1m[22m[2m │ gzip: 29.40 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DZ3HkAbg.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DPJCvkTF.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-a24r8sCo.js [39m[1m[2m 0.36 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BPkARqmR.js [39m[1m[2m 0.38 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DiUCUXaM.js [39m[1m[2m 0.42 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-jfjrrehZ.js [39m[1m[2m 0.76 kB[22m[1m[22m[2m │ gzip: 0.35 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DLPSmpR2.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.46 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-D9jibmwr.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.47 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-B4eFBhIm.js [39m[1m[2m 1.06 kB[22m[1m[22m[2m │ gzip: 0.34 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DjK0eNnT.js [39m[1m[2m 1.15 kB[22m[1m[22m[2m │ gzip: 0.55 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-C68zp4qU.js [39m[1m[2m 2.44 kB[22m[1m[22m[2m │ gzip: 1.09 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-CONwI-Dv.js [39m[1m[2m 3.45 kB[22m[1m[22m[2m │ gzip: 1.10 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BO91sTaU.js [39m[1m[2m 8.67 kB[22m[1m[22m[2m │ gzip: 2.95 kB[22m
|
||||
[2m../dist/public/[22m[36massets/index-CJvwTLjS.js [39m[1m[33m1,766.52 kB[39m[22m[2m │ gzip: 471.18 kB[22m
|
||||
[32m✓ built in 7.67s[39m
|
||||
building server...
|
||||
[*] Updating OPS package list...
|
||||
[*] Building Unikernel Image...
|
||||
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
|
||||
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
|
||||
running local instance
|
||||
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
|
||||
[0.247822] en1: assigned 10.0.2.15
|
||||
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
|
||||
[dotenv@17.2.3] injecting env (8) from .env -- tip: ⚙️ suppress all logs with { quiet: true }
|
||||
[dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ override existing env vars with { override: true }
|
||||
Warning: connect.session() MemoryStore is not
|
||||
designed for a production environment, as it will leak
|
||||
memory, and will not scale past a single process.
|
||||
9:45:36 AM [websocket] WebSocket server initialized
|
||||
9:45:36 AM [express] serving on port 8080
|
||||
9:45:36 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
|
||||
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
9:45:37 AM [express] GET /api/os/notifications 304 in 236ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
[2.193894] en1: assigned FE80::E03C:17FF:FEC3:4C59
|
||||
Socket.IO client connected: BAYqyUCmswYLvLqPAAAB
|
||||
9:47:11 AM [express] GET /api/os/notifications 304 in 118ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:48:11 AM [express] GET /api/os/notifications 304 in 136ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:48:48 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:48:52 AM [express] POST /api/auth/login 200 in 242ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
|
||||
9:48:52 AM [express] GET /api/auth/session 200 in 47ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
Socket.IO client disconnected: BAYqyUCmswYLvLqPAAAB
|
||||
9:48:52 AM [express] GET /api/me/profile 200 in 53ms :: {"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","role":"oversee","onboarded":true,"updated_at":"2026-01-24T21:52:29.269+00:00","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","skills":[],"avatar_url":"https://pbs.twimg.com/profile_images/1932523737615826944/cl52l39H_400x400.jpg","banner_url":"https://pbs.twimg.com/profile_banners/840045181470621696/1750821581/600x200","social_links":{"github":"https://github.com/MrPiglr","discord":"MrPiglr","twitter":"https://twitter.com/MrPiglr"},"loyalty_points":25,"email":"mrpiglr@gmail.com","created_at":"2025-08-02T09:44:56.964865+00:00","user_type":"community_member","experience_level":"beginner","full_name":"Anderson","location":"","website_url":"https://mrpiglr.store","github_url":"https://github.com/MrPiglr","twitter_url":"","linkedin_url":"","total_xp":37,"level":1,"featured_badge_ids":null,"aethex_passport_id":"e393ea02-6e06-42da-9917-cb4d424a87e4","signature":"","status":"busy","telemetry_api_key":null,"active_title":"Virtuoso","suspended_at":null,"suspension_reason":null,"roblox_user_id":null,"roblox_access_token":null,"roblox_refresh_token":null,"roblox_token_expires_at":null,"experience":null,"education":null,"primary_role":null,"specialization":null,"is_verified":true}
|
||||
Socket.IO client connected: SONViRPBkUi1iTt5AAAD
|
||||
9:48:53 AM [express] GET /api/directory/architects 304 in 50ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
9:48:54 AM [express] GET /api/metrics 304 in 95ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:49:37 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:50:24 AM [express] GET /api/metrics 304 in 266ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:50:36 AM [express] GET /api/os/notifications 304 in 142ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:50:45 AM [express] GET /api/os/notifications 200 in 138ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:51:37 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:53:11 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:54:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:55:11 AM [express] GET /api/os/notifications 304 in 145ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:56:10 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:57:11 AM [express] GET /api/os/notifications 304 in 158ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:58:10 AM [express] GET /api/os/notifications 304 in 102ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:58:37 AM [express] GET /api/os/notifications 304 in 117ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:00:11 AM [express] GET /api/os/notifications 304 in 115ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:01:10 AM [express] GET /api/os/notifications 304 in 103ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:02:11 AM [express] GET /api/os/notifications 304 in 115ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:03:10 AM [express] GET /api/os/notifications 304 in 212ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:04:11 AM [express] GET /api/os/notifications 304 in 213ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:05:10 AM [express] GET /api/os/notifications 304 in 118ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:06:08 AM [express] GET /api/os/projects 200 in 48ms :: [{"id":"b1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6","title":"Internal Dashboard Redesign","status":"In Progress","engine":"React"},{"id":"b2b3c4d5-e6f7-a8b9-c0d1-e2f3a4b5c6d7","title":"Real-time Collaboration Feature","status":"Planning","engine":"WebSockets"},{"id":"0efc381c-8824-47a7-8e15-79238a8512f9","title":"All-IN-One","status":"planning","engine":"Roblox"}]
|
||||
10:06:11 AM [express] GET /api/os/notifications 304 in 95ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:07:10 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:08:11 AM [express] GET /api/os/notifications 304 in 201ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:09:10 AM [express] GET /api/os/notifications 304 in 127ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:10:11 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:11:10 AM [express] GET /api/os/notifications 304 in 135ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:11:59 AM [express] GET /api/os/notifications 304 in 128ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:12:10 AM [express] GET /api/metrics 304 in 116ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
Socket.IO client disconnected: SONViRPBkUi1iTt5AAAD
|
||||
10:12:14 AM [express] GET /api/auth/session 304 in 122ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:12:15 AM [express] GET /api/os/notifications 304 in 202ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: 1jlsWscUMHO4pzb9AAAF
|
||||
10:12:16 AM [express] GET /api/auth/session 304 in 51ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:12:22 AM [express] GET /api/directory/architects 304 in 95ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:12:22 AM [express] GET /api/metrics 304 in 200ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
10:13:16 AM [express] GET /api/os/notifications 304 in 155ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:14:15 AM [express] GET /api/os/notifications 304 in 156ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:15:16 AM [express] GET /api/os/notifications 304 in 201ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client disconnected: 1jlsWscUMHO4pzb9AAAF
|
||||
10:16:14 AM [express] GET /api/auth/session 304 in 100ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:16:14 AM [express] GET /api/os/notifications 304 in 179ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: 7HorosbrSbisLf-jAAAH
|
||||
10:16:16 AM [express] GET /api/auth/session 304 in 51ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:16:21 AM [express] GET /api/directory/architects 304 in 99ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:16:23 AM [express] GET /api/metrics 304 in 1275ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
10:16:53 AM [express] GET /api/metrics 304 in 154ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
10:17:15 AM [express] GET /api/os/notifications 304 in 244ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client disconnected: 7HorosbrSbisLf-jAAAH
|
||||
10:17:51 AM [express] GET /api/auth/session 304 in 95ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:17:51 AM [express] GET /api/os/notifications 304 in 174ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: oVmGjMBMmxoOQshEAAAJ
|
||||
10:17:53 AM [express] GET /api/auth/session 304 in 56ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:17:59 AM [express] GET /api/directory/architects 304 in 91ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:17:59 AM [express] GET /api/metrics 304 in 148ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
10:18:52 AM [express] GET /api/os/notifications 304 in 246ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:19:53 AM [express] GET /api/os/notifications 304 in 179ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:20:52 AM [express] GET /api/os/notifications 304 in 152ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:21:53 AM [express] GET /api/os/notifications 304 in 183ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:22:52 AM [express] GET /api/os/notifications 304 in 160ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:23:53 AM [express] GET /api/os/notifications 304 in 139ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:24:33 AM [express] GET /api/metrics 304 in 176ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
10:24:34 AM [express] GET /api/directory/architects 304 in 122ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:24:52 AM [express] GET /api/os/notifications 304 in 140ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:26:11 AM [express] GET /api/os/notifications 304 in 120ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:27:10 AM [express] GET /api/os/notifications 304 in 216ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:28:11 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:29:10 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:30:11 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:31:10 AM [express] GET /api/os/notifications 304 in 98ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:32:11 AM [express] GET /api/os/notifications 304 in 109ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:33:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:34:11 AM [express] GET /api/os/notifications 304 in 164ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:35:10 AM [express] GET /api/os/notifications 304 in 215ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:36:11 AM [express] GET /api/os/notifications 304 in 101ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:36:51 AM [express] GET /api/os/notifications 304 in 176ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client disconnected: oVmGjMBMmxoOQshEAAAJ
|
||||
10:36:55 AM [express] GET /api/auth/session 304 in 88ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:36:55 AM [express] GET /api/os/notifications 304 in 115ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: Hn3Vf4IWtV8vWti4AAAL
|
||||
10:36:57 AM [express] GET /api/auth/session 304 in 54ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:37:02 AM [express] GET /api/directory/architects 304 in 99ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:37:02 AM [express] GET /api/metrics 304 in 185ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
Socket.IO client disconnected: Hn3Vf4IWtV8vWti4AAAL
|
||||
10:37:10 AM [express] GET /api/auth/session 304 in 66ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:37:10 AM [express] GET /api/os/notifications 304 in 132ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: -4Oar_-DLHhd7XtkAAAN
|
||||
10:37:12 AM [express] GET /api/auth/session 304 in 55ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:37:17 AM [express] GET /api/directory/architects 304 in 115ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:37:17 AM [express] GET /api/metrics 304 in 153ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
10:38:11 AM [express] GET /api/os/notifications 304 in 102ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:39:10 AM [express] GET /api/os/notifications 304 in 100ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client disconnected: -4Oar_-DLHhd7XtkAAAN
|
||||
10:39:23 AM [express] GET /api/auth/session 304 in 104ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:39:23 AM [express] GET /api/os/notifications 304 in 143ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: HtMH2_fgsHXcTyVJAAAP
|
||||
10:39:25 AM [express] GET /api/auth/session 304 in 56ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:40:24 AM [express] GET /api/os/notifications 304 in 158ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:41:23 AM [express] GET /api/os/notifications 304 in 144ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:42:06 AM [express] GET /api/directory/architects 304 in 152ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:42:06 AM [express] GET /api/metrics 304 in 195ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
Socket.IO client disconnected: HtMH2_fgsHXcTyVJAAAP
|
||||
10:42:10 AM [express] GET /api/auth/session 304 in 62ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:42:10 AM [express] GET /api/os/notifications 304 in 129ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: vYDfSF0shJxfTWymAAAR
|
||||
10:42:12 AM [express] GET /api/auth/session 304 in 50ms :: {"authenticated":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","username":"MrPiglr","email":"mrpiglr@gmail.com","isAdmin":true}}
|
||||
10:42:18 AM [express] GET /api/directory/architects 304 in 100ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
10:42:18 AM [express] GET /api/metrics 304 in 139ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
10:43:10 AM [express] GET /api/os/notifications 304 in 103ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:44:11 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:45:10 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:46:11 AM [express] GET /api/os/notifications 304 in 129ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:47:10 AM [express] GET /api/os/notifications 304 in 126ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:48:11 AM [express] GET /api/os/notifications 304 in 107ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:49:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:50:11 AM [express] GET /api/os/notifications 304 in 101ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:51:10 AM [express] GET /api/os/notifications 304 in 210ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:52:11 AM [express] GET /api/os/notifications 304 in 107ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:53:10 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:54:11 AM [express] GET /api/os/notifications 304 in 264ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:55:10 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:56:11 AM [express] GET /api/os/notifications 304 in 111ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:57:10 AM [express] GET /api/os/notifications 304 in 146ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:58:11 AM [express] GET /api/os/notifications 304 in 114ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
10:59:10 AM [express] GET /api/os/notifications 304 in 107ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:00:11 AM [express] GET /api/os/notifications 304 in 119ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:01:10 AM [express] GET /api/os/notifications 304 in 120ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:02:11 AM [express] GET /api/os/notifications 304 in 129ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:03:10 AM [express] GET /api/os/notifications 304 in 128ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:04:11 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:05:10 AM [express] GET /api/os/notifications 304 in 138ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:06:11 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:07:10 AM [express] GET /api/os/notifications 304 in 111ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:08:11 AM [express] GET /api/os/notifications 304 in 111ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:09:10 AM [express] GET /api/os/notifications 304 in 125ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:10:11 AM [express] GET /api/os/notifications 304 in 109ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:11:10 AM [express] GET /api/os/notifications 304 in 114ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:12:11 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:13:10 AM [express] GET /api/os/notifications 304 in 114ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:14:11 AM [express] GET /api/os/notifications 304 in 113ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:15:10 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:16:11 AM [express] GET /api/os/notifications 304 in 99ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:17:10 AM [express] GET /api/os/notifications 304 in 104ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:18:11 AM [express] GET /api/os/notifications 304 in 116ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:19:10 AM [express] GET /api/os/notifications 304 in 124ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:20:11 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:21:10 AM [express] GET /api/os/notifications 304 in 200ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:22:11 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:23:10 AM [express] GET /api/os/notifications 304 in 94ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:24:11 AM [express] GET /api/os/notifications 304 in 134ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:25:10 AM [express] GET /api/os/notifications 304 in 95ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:26:11 AM [express] GET /api/os/notifications 304 in 110ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:27:10 AM [express] GET /api/os/notifications 304 in 98ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:28:11 AM [express] GET /api/os/notifications 304 in 101ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:29:10 AM [express] GET /api/os/notifications 304 in 100ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:30:11 AM [express] GET /api/os/notifications 304 in 108ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
11:31:10 AM [express] GET /api/os/notifications 304 in 124ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
2
boot.log
Normal file
2
boot.log
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
booting aethex-kernel-v1-1770277445 ...
|
||||
onprem instance 'aethex-kernel-v1-1770277445' created...
|
||||
2
boot_final.log
Normal file
2
boot_final.log
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
booting aethex-kernel-v1-1770277533 ...
|
||||
onprem instance 'aethex-kernel-v1-1770277533' created...
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
set -o pipefail
|
||||
set -e
|
||||
|
||||
# AeThex OS - Full Layered Architecture Builder
|
||||
|
|
@ -29,7 +30,7 @@ for cmd in debootstrap xorriso genisoimage mksquashfs grub-mkrescue; do
|
|||
if ! command -v "$cmd" &> /dev/null; then
|
||||
echo "[!] Missing: $cmd - installing..."
|
||||
apt-get update -qq
|
||||
apt-get install -y -qq "$cmd" 2>&1 | tail -5
|
||||
apt-get install -y -qq "$cmd"
|
||||
fi
|
||||
done
|
||||
|
||||
|
|
@ -41,7 +42,7 @@ echo ""
|
|||
|
||||
echo "[+] Bootstrapping Ubuntu 22.04 base system (older kernel 5.15)..."
|
||||
echo " (debootstrap takes ~10-15 minutes...)"
|
||||
debootstrap --arch=amd64 --variant=minbase jammy "$ROOTFS_DIR" http://archive.ubuntu.com/ubuntu/ 2>&1 | tail -20
|
||||
debootstrap --arch=amd64 --variant=minbase jammy "$ROOTFS_DIR" http://archive.ubuntu.com/ubuntu/
|
||||
|
||||
echo "[+] Configuring base system..."
|
||||
echo "aethex-os" > "$ROOTFS_DIR/etc/hostname"
|
||||
|
|
@ -80,10 +81,11 @@ chroot "$ROOTFS_DIR" bash -c '
|
|||
firefox thunar xfce4-terminal \
|
||||
file-roller mousepad ristretto \
|
||||
zenity notify-osd \
|
||||
vim nano
|
||||
vim nano \
|
||||
ubiquity ubiquity-frontend-gtk ubiquity-ubuntu-artwork gparted
|
||||
|
||||
apt-get clean
|
||||
' 2>&1 | tail -50
|
||||
'
|
||||
|
||||
echo ""
|
||||
echo "┌─────────────────────────────────────────────────────────────┐"
|
||||
|
|
@ -113,7 +115,7 @@ chroot "$ROOTFS_DIR" bash -c '
|
|||
apt-get install -y dxvk
|
||||
|
||||
apt-get clean
|
||||
' 2>&1 | tail -30
|
||||
'
|
||||
|
||||
echo "[+] Setting up Wine runtime environment..."
|
||||
mkdir -p "$ROOTFS_DIR/opt/aethex/runtimes/windows"
|
||||
|
|
@ -158,7 +160,7 @@ chroot "$ROOTFS_DIR" bash -c '
|
|||
systemctl enable docker
|
||||
|
||||
apt-get clean
|
||||
' 2>&1 | tail -20
|
||||
'
|
||||
|
||||
echo "[+] Installing development tools..."
|
||||
chroot "$ROOTFS_DIR" bash -c '
|
||||
|
|
@ -190,7 +192,7 @@ chroot "$ROOTFS_DIR" bash -c '
|
|||
apt-get install -y code
|
||||
|
||||
apt-get clean
|
||||
' 2>&1 | tail -30
|
||||
'
|
||||
|
||||
echo "[+] Setting up dev runtime launchers..."
|
||||
mkdir -p "$ROOTFS_DIR/opt/aethex/runtimes/linux-dev"
|
||||
|
|
@ -226,7 +228,7 @@ echo "[+] Setting up AeThex Desktop application..."
|
|||
# Build mobile app if possible
|
||||
if [ -f "package.json" ]; then
|
||||
echo " Building AeThex mobile app..."
|
||||
npm run build 2>&1 | tail -5 || echo " Build skipped"
|
||||
npm run build || echo " Build skipped"
|
||||
fi
|
||||
|
||||
# Copy app files
|
||||
|
|
@ -247,7 +249,7 @@ if [ -d "client" ] && [ -d "server" ]; then
|
|||
fi
|
||||
|
||||
echo " Installing dependencies..."
|
||||
chroot "$ROOTFS_DIR" bash -c 'cd /opt/aethex-desktop && npm install --production --legacy-peer-deps' 2>&1 | tail -10 || true
|
||||
chroot "$ROOTFS_DIR" bash -c 'cd /opt/aethex-desktop && npm install --production --legacy-peer-deps' || true
|
||||
else
|
||||
echo " (client/server not found; skipping)"
|
||||
fi
|
||||
|
|
@ -312,6 +314,20 @@ X-GNOME-Autostart-enabled=true
|
|||
Comment=Launch AeThex mobile interface in fullscreen
|
||||
EOF
|
||||
|
||||
# Create Install Shortcut
|
||||
mkdir -p "$ROOTFS_DIR/home/aethex/Desktop"
|
||||
cat > "$ROOTFS_DIR/home/aethex/Desktop/install-aethex.desktop" << 'EOF'
|
||||
[Desktop Entry]
|
||||
Name=Install AeThex OS
|
||||
Comment=Install this system permanently to your hard drive
|
||||
Exec=sudo ubiquity
|
||||
Icon=ubiquity
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=System;
|
||||
EOF
|
||||
chmod +x "$ROOTFS_DIR/home/aethex/Desktop/install-aethex.desktop"
|
||||
|
||||
chroot "$ROOTFS_DIR" chown -R aethex:aethex /home/aethex /opt/aethex-desktop 2>/dev/null || true
|
||||
|
||||
echo ""
|
||||
|
|
@ -326,7 +342,7 @@ chroot "$ROOTFS_DIR" bash -c '
|
|||
KERNEL_VERSION=$(ls /boot/vmlinuz-* | sed "s|/boot/vmlinuz-||" | head -n 1)
|
||||
echo " Rebuilding initramfs for kernel $KERNEL_VERSION with casper..."
|
||||
update-initramfs -u -k "$KERNEL_VERSION"
|
||||
' 2>&1 | tail -10
|
||||
'
|
||||
|
||||
echo "[+] Extracting kernel and initrd..."
|
||||
KERNEL="$(ls -1 $ROOTFS_DIR/boot/vmlinuz-* 2>/dev/null | head -n 1)"
|
||||
|
|
@ -359,23 +375,23 @@ umount -lf "$ROOTFS_DIR/dev" 2>/dev/null || true
|
|||
|
||||
echo "[+] Creating SquashFS filesystem..."
|
||||
echo " (compressing ~4-5GB system, takes 15-20 minutes...)"
|
||||
mksquashfs "$ROOTFS_DIR" "$ISO_DIR/casper/filesystem.squashfs" -b 1048576 -comp xz -Xdict-size 100% 2>&1 | tail -5
|
||||
mksquashfs "$ROOTFS_DIR" "$ISO_DIR/casper/filesystem.squashfs" -b 1048576 -comp xz -Xdict-size 100%
|
||||
|
||||
echo "[+] Setting up BIOS boot (isolinux)..."
|
||||
cat > "$ISO_DIR/isolinux/isolinux.cfg" << 'EOF'
|
||||
PROMPT 0
|
||||
TIMEOUT 50
|
||||
PROMPT 1
|
||||
TIMEOUT 100
|
||||
DEFAULT linux
|
||||
|
||||
LABEL linux
|
||||
MENU LABEL AeThex OS - Full Stack
|
||||
KERNEL /casper/vmlinuz
|
||||
APPEND initrd=/casper/initrd.img boot=casper quiet splash ---
|
||||
APPEND initrd=/casper/initrd.img boot=casper username=aethex quiet splash ---
|
||||
|
||||
LABEL safe
|
||||
MENU LABEL AeThex OS - Safe Mode (No ACPI)
|
||||
MENU LABEL AeThex OS - Safe Mode (Graphics Fix)
|
||||
KERNEL /casper/vmlinuz
|
||||
APPEND initrd=/casper/initrd.img boot=casper acpi=off noapic nomodeset ---
|
||||
APPEND initrd=/casper/initrd.img boot=casper username=aethex nomodeset ---
|
||||
EOF
|
||||
|
||||
cp /usr/lib/syslinux/isolinux.bin "$ISO_DIR/isolinux/" 2>/dev/null || \
|
||||
|
|
@ -389,23 +405,23 @@ set timeout=10
|
|||
set default=0
|
||||
|
||||
menuentry "AeThex OS - Full Stack" {
|
||||
linux /casper/vmlinuz boot=casper quiet splash ---
|
||||
linux /casper/vmlinuz boot=casper username=aethex quiet splash ---
|
||||
initrd /casper/initrd.img
|
||||
}
|
||||
|
||||
menuentry "AeThex OS - Safe Mode (No ACPI)" {
|
||||
linux /casper/vmlinuz boot=casper acpi=off noapic nomodeset ---
|
||||
menuentry "AeThex OS - Safe Mode (Graphics Fix)" {
|
||||
linux /casper/vmlinuz boot=casper username=aethex nomodeset ---
|
||||
initrd /casper/initrd.img
|
||||
}
|
||||
|
||||
menuentry "AeThex OS - Debug Mode" {
|
||||
linux /casper/vmlinuz boot=casper debug ignore_loglevel earlyprintk=vga ---
|
||||
linux /casper/vmlinuz boot=casper username=aethex debug ignore_loglevel earlyprintk=vga ---
|
||||
initrd /casper/initrd.img
|
||||
}
|
||||
EOF
|
||||
|
||||
echo "[+] Creating hybrid ISO..."
|
||||
grub-mkrescue -o "$BUILD_DIR/$ISO_NAME" "$ISO_DIR" --verbose 2>&1 | tail -20
|
||||
grub-mkrescue -o "$BUILD_DIR/$ISO_NAME" "$ISO_DIR" --verbose
|
||||
|
||||
echo "[+] Computing SHA256 checksum..."
|
||||
if [ -f "$BUILD_DIR/$ISO_NAME" ]; then
|
||||
|
|
|
|||
37
build-kernel.ps1
Normal file
37
build-kernel.ps1
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
#!/usr/bin/env pwsh
|
||||
# AeThex OS - Unikernel Build Wrapper for Windows/WSL
|
||||
|
||||
Write-Host "═══════════════════════════════════════════════════════════════" -ForegroundColor Cyan
|
||||
Write-Host " AeThex OS - Unikernel Builder (Windows -> WSL)" -ForegroundColor Cyan
|
||||
Write-Host "═══════════════════════════════════════════════════════════════"
|
||||
Write-Host ""
|
||||
|
||||
# 1. Check if OPS is installed in WSL
|
||||
$checkOps = wsl bash -c "command -v ops"
|
||||
if (-not $checkOps) {
|
||||
Write-Host "[!] 'ops' is not installed in WSL." -ForegroundColor Red
|
||||
Write-Host " Installing it now..." -ForegroundColor Yellow
|
||||
wsl bash -c "curl https://ops.city/get.sh -sSfL | sh"
|
||||
Write-Host "[OK] OPS Installed." -ForegroundColor Green
|
||||
Write-Host ""
|
||||
}
|
||||
|
||||
# 2. Convert line endings of the build script just in case
|
||||
$scriptPath = "script/build-unikernel.sh"
|
||||
if (Test-Path $scriptPath) {
|
||||
(Get-Content $scriptPath) -join "`n" | Set-Content $scriptPath -NoNewline
|
||||
}
|
||||
|
||||
# 3. Run the build inside WSL
|
||||
# We explicitly set the working directory to the current folder mapped in WSL
|
||||
Write-Host "[*] Building Kernel..." -ForegroundColor Yellow
|
||||
wsl bash -c "cd '$PWD' && bash script/build-unikernel.sh"
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host ""
|
||||
Write-Host "[OK] Kernel Image Created Successfully!" -ForegroundColor Green
|
||||
Write-Host " To run it, type: wsl ops run aethex-kernel-v1" -ForegroundColor Gray
|
||||
} else {
|
||||
Write-Host ""
|
||||
Write-Host "[!] Build Failed." -ForegroundColor Red
|
||||
}
|
||||
44
build_and_run.log
Normal file
44
build_and_run.log
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
> rest-express@1.0.0 build:kernel
|
||||
> bash script/build-unikernel.sh
|
||||
|
||||
â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
|
||||
AeThex OS - Unikernel Builder
|
||||
Target: Nanos Unikernel (Bootable Image)
|
||||
â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
|
||||
[*] Detected Windows Environment (MinGW/Git Bash).
|
||||
[*] Switching to WSL Context...
|
||||
qemu-system-x86_64: terminating on signal 15 from pid 3662812 ()
|
||||
<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
|
||||
AeThex OS - Unikernel Builder
|
||||
Target: Nanos Unikernel (Bootable Image)
|
||||
â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>â•<EFBFBD>
|
||||
[*] Using OPS binary: /home/mrpiglr/.ops/bin/ops
|
||||
[*] Updating OPS package list...
|
||||
[*] Building Unikernel Image...
|
||||
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
|
||||
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
|
||||
running local instance
|
||||
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
|
||||
[0.563567] en1: assigned 10.0.2.15
|
||||
âš ï¸<EFBFBD> Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
|
||||
[dotenv@17.2.3] injecting env (8) from .env -- tip: ðŸ”<C5B8> prevent building .env in docker: https://dotenvx.com/prebuild
|
||||
[dotenv@17.2.3] injecting env (0) from .env -- tip: âš™ï¸<C3AF> write to custom object with { processEnv: myObject }
|
||||
Warning: connect.session() MemoryStore is not
|
||||
designed for a production environment, as it will leak
|
||||
memory, and will not scale past a single process.
|
||||
7:46:19 AM [websocket] WebSocket server initialized
|
||||
7:46:19 AM [express] serving on port 8080
|
||||
7:46:19 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
|
||||
[2.414827] en1: assigned FE80::2CC3:44FF:FEF8:D3F3
|
||||
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
|
||||
[✓] Build Complete.
|
||||
Image: ~/.ops/images/aethex-kernel-v1
|
||||
|
||||
To boot the kernel:
|
||||
/home/mrpiglr/.ops/bin/ops run aethex-kernel-v1
|
||||
|
||||
To deploy to AWS/GCP:
|
||||
/home/mrpiglr/.ops/bin/ops image create -c ops.json -i aethex-kernel-v1 -t aws
|
||||
72
build_and_run_clean.log
Normal file
72
build_and_run_clean.log
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
|
||||
> rest-express@1.0.0 build:kernel
|
||||
> bash script/build-unikernel.sh
|
||||
|
||||
═══════════════════════════════════════════════════════════════
|
||||
AeThex OS - Unikernel Builder
|
||||
Target: Nanos Unikernel (Bootable Image)
|
||||
═══════════════════════════════════════════════════════════════
|
||||
[*] Detected Windows Environment (MinGW/Git Bash).
|
||||
[*] Switching to WSL Context...
|
||||
[33m[plugin vite:reporter]
|
||||
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.
|
||||
[39m
|
||||
[33m
|
||||
(!) Some chunks are larger than 500 kB after minification. Consider:
|
||||
- Using dynamic import() to code-split the application
|
||||
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
|
||||
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.[39m
|
||||
|
||||
dist\index.js 1.5mb
|
||||
|
||||
Done in 6064ms
|
||||
qemu-system-x86_64: terminating on signal 15 from pid 3672638 (<unknown process>)
|
||||
[22m[32massets/holographic_digital_security_seal_for_certification-DujiIi4u.png [39m[1m[2m 557.88 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_subtle_digital_grid_texture-CW2Q0w3T.png [39m[1m[2m 965.43 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png [39m[1m[2m1,343.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_digital_circuit_board_background-CqDjO0Wd.png [39m[1m[2m1,577.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[35massets/index-C25YaYOI.css [39m[1m[2m 226.22 kB[22m[1m[22m[2m │ gzip: 29.40 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DZ3HkAbg.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DPJCvkTF.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-a24r8sCo.js [39m[1m[2m 0.36 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BPkARqmR.js [39m[1m[2m 0.38 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DiUCUXaM.js [39m[1m[2m 0.42 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-jfjrrehZ.js [39m[1m[2m 0.76 kB[22m[1m[22m[2m │ gzip: 0.35 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DLPSmpR2.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.46 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-D9jibmwr.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.47 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-B4eFBhIm.js [39m[1m[2m 1.06 kB[22m[1m[22m[2m │ gzip: 0.34 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DjK0eNnT.js [39m[1m[2m 1.15 kB[22m[1m[22m[2m │ gzip: 0.55 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-C68zp4qU.js [39m[1m[2m 2.44 kB[22m[1m[22m[2m │ gzip: 1.09 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-CONwI-Dv.js [39m[1m[2m 3.45 kB[22m[1m[22m[2m │ gzip: 1.10 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BO91sTaU.js [39m[1m[2m 8.67 kB[22m[1m[22m[2m │ gzip: 2.95 kB[22m
|
||||
[2m../dist/public/[22m[36massets/index-CJvwTLjS.js [39m[1m[33m1,766.52 kB[39m[22m[2m │ gzip: 471.18 kB[22m
|
||||
[32m✓ built in 23.30s[39m
|
||||
building server...
|
||||
[*] Updating OPS package list...
|
||||
[*] Building Unikernel Image...
|
||||
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
|
||||
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
|
||||
running local instance
|
||||
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
|
||||
[0.670397] en1: assigned 10.0.2.15
|
||||
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
|
||||
[dotenv@17.2.3] injecting env (8) from .env -- tip: ⚙️ load multiple .env files with { path: ['.env.local', '.env'] }
|
||||
[dotenv@17.2.3] injecting env (0) from .env -- tip: 🛠️ run anywhere with `dotenvx run -- yourcommand`
|
||||
Warning: connect.session() MemoryStore is not
|
||||
designed for a production environment, as it will leak
|
||||
memory, and will not scale past a single process.
|
||||
7:47:46 AM [websocket] WebSocket server initialized
|
||||
7:47:46 AM [express] serving on port 8080
|
||||
7:47:46 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
|
||||
[2.509299] en1: assigned FE80::D0DD:70FF:FE6F:CD82
|
||||
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
|
||||
[✓] Build Complete.
|
||||
Image: ~/.ops/images/aethex-kernel-v1
|
||||
|
||||
To boot the kernel:
|
||||
/home/mrpiglr/.ops/bin/ops run aethex-kernel-v1
|
||||
|
||||
To deploy to AWS/GCP:
|
||||
/home/mrpiglr/.ops/bin/ops image create -c ops.json -i aethex-kernel-v1 -t aws
|
||||
108
cache_fix_run.log
Normal file
108
cache_fix_run.log
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
|
||||
> rest-express@1.0.0 build:kernel
|
||||
> bash script/build-unikernel.sh
|
||||
|
||||
═══════════════════════════════════════════════════════════════
|
||||
AeThex OS - Unikernel Builder
|
||||
Target: Nanos Unikernel (Bootable Image)
|
||||
═══════════════════════════════════════════════════════════════
|
||||
[*] Detected Windows Environment (MinGW/Git Bash).
|
||||
[*] Switching to WSL Context...
|
||||
[33m[plugin vite:reporter]
|
||||
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.
|
||||
[39m
|
||||
[33m
|
||||
(!) Some chunks are larger than 500 kB after minification. Consider:
|
||||
- Using dynamic import() to code-split the application
|
||||
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
|
||||
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.[39m
|
||||
|
||||
dist\index.js 1.5mb
|
||||
|
||||
Done in 2791ms
|
||||
qemu-system-x86_64: terminating on signal 15 from pid 838 (pkill)
|
||||
m../dist/public/[22m[32massets/holographic_digital_security_seal_for_certification-DujiIi4u.png [39m[1m[2m 557.88 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_subtle_digital_grid_texture-CW2Q0w3T.png [39m[1m[2m 965.43 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png [39m[1m[2m1,343.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_digital_circuit_board_background-CqDjO0Wd.png [39m[1m[2m1,577.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[35massets/index-C25YaYOI.css [39m[1m[2m 226.22 kB[22m[1m[22m[2m │ gzip: 29.40 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DZ3HkAbg.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DPJCvkTF.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-a24r8sCo.js [39m[1m[2m 0.36 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BPkARqmR.js [39m[1m[2m 0.38 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DiUCUXaM.js [39m[1m[2m 0.42 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-jfjrrehZ.js [39m[1m[2m 0.76 kB[22m[1m[22m[2m │ gzip: 0.35 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DLPSmpR2.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.46 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-D9jibmwr.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.47 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-B4eFBhIm.js [39m[1m[2m 1.06 kB[22m[1m[22m[2m │ gzip: 0.34 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DjK0eNnT.js [39m[1m[2m 1.15 kB[22m[1m[22m[2m │ gzip: 0.55 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-C68zp4qU.js [39m[1m[2m 2.44 kB[22m[1m[22m[2m │ gzip: 1.09 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-CONwI-Dv.js [39m[1m[2m 3.45 kB[22m[1m[22m[2m │ gzip: 1.10 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BO91sTaU.js [39m[1m[2m 8.67 kB[22m[1m[22m[2m │ gzip: 2.95 kB[22m
|
||||
[2m../dist/public/[22m[36massets/index-CJvwTLjS.js [39m[1m[33m1,766.52 kB[39m[22m[2m │ gzip: 471.18 kB[22m
|
||||
[32m✓ built in 11.40s[39m
|
||||
building server...
|
||||
[*] Updating OPS package list...
|
||||
[*] Building Unikernel Image...
|
||||
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
|
||||
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
|
||||
running local instance
|
||||
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
|
||||
[0.354227] en1: assigned 10.0.2.15
|
||||
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
|
||||
[dotenv@17.2.3] injecting env (8) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject }
|
||||
[dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ suppress all logs with { quiet: true }
|
||||
Warning: connect.session() MemoryStore is not
|
||||
designed for a production environment, as it will leak
|
||||
memory, and will not scale past a single process.
|
||||
9:33:49 AM [websocket] WebSocket server initialized
|
||||
[DEBUG] Static File Setup - CWD: /, __dirname: /dist
|
||||
[DEBUG] Final Static Path: /dist/public
|
||||
[DEBUG] Found 19 assets in /dist/public/assets
|
||||
9:33:49 AM [express] serving on port 8080
|
||||
9:33:49 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
|
||||
[2.259727] en1: assigned FE80::98B4:A5FF:FE25:1725
|
||||
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
9:34:36 AM [express] GET /api/auth/session 200 in 5ms :: {"authenticated":false}
|
||||
9:34:36 AM [express] GET /api/os/notifications 200 in 206ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
Socket.IO client connected: YwylAs27kYZP1hH6AAAB
|
||||
9:34:38 AM [express] GET /api/auth/session 304 in 4ms :: {"authenticated":false}
|
||||
[DEBUG] SPA Fallback for: /mobile
|
||||
[DEBUG] SPA Fallback for: /home
|
||||
9:35:07 AM [express] GET /api/directory/architects 200 in 109ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
9:35:07 AM [express] GET /api/metrics 200 in 172ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:35:37 AM [express] GET /api/os/notifications 304 in 155ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:35:37 AM [express] POST /api/auth/login 200 in 271ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
|
||||
9:35:37 AM [express] GET /api/auth/session 304 in 1ms :: {"authenticated":false}
|
||||
9:35:38 AM [express] GET /api/metrics 304 in 101ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:35:42 AM [express] POST /api/auth/login 200 in 215ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
|
||||
9:35:42 AM [express] GET /api/auth/session 304 in 1ms :: {"authenticated":false}
|
||||
9:36:08 AM [express] GET /api/directory/architects 304 in 104ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
9:36:08 AM [express] GET /api/metrics 304 in 161ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:36:37 AM [express] GET /api/os/notifications 304 in 155ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:36:38 AM [express] GET /api/metrics 304 in 131ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:37:37 AM [express] GET /api/os/notifications 304 in 198ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:38:37 AM [express] GET /api/os/notifications 304 in 144ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:39:36 AM [express] GET /api/os/notifications 304 in 150ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:40:37 AM [express] GET /api/os/notifications 304 in 261ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:42:11 AM [express] GET /api/os/notifications 304 in 156ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:43:10 AM [express] GET /api/os/notifications 304 in 112ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:43:38 AM [express] GET /api/os/notifications 304 in 153ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
9:43:53 AM [express] GET /api/metrics 304 in 114ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:43:53 AM [express] GET /api/directory/architects 304 in 74ms :: [{"id":"001","name":"Anderson","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"5a2cb1cd-b15e-4e45-9c77-63c77299ec8a","skills":null,"username":"andersongladney@gmail.com"},{"id":"002","name":"Faded","role":"admin","bio":"Welcome to my AeThex profile!","level":1,"xp":0,"passportId":"1afcc47d-4128-4f10-947e-4a0c1fedb402","skills":null,"username":"Faded"},{"id":"003","name":"Anderson","role":"oversee","bio":"As MrPiglr, the visionary behind AeThex (conceptualized in 2016, established in 2022), I'm pushing the metaverse game development boundaries.","level":1,"xp":37,"passportId":"e393ea02-6e06-42da-9917-cb4d424a87e4","skills":[],"username":"MrPiglr"}]
|
||||
9:43:55 AM [express] POST /api/auth/login 200 in 263ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
|
||||
9:43:55 AM [express] GET /api/auth/session 304 in 0ms :: {"authenticated":false}
|
||||
9:44:23 AM [express] GET /api/metrics 304 in 167ms :: {"totalProfiles":21,"totalProjects":3,"onlineUsers":1,"verifiedUsers":1,"totalXP":37,"avgLevel":1}
|
||||
9:44:25 AM [express] POST /api/auth/login 200 in 237ms :: {"success":true,"user":{"id":"f2719189-f99f-48b6-aafd-b429b0e2a804","email":"mrpiglr@gmail.com","username":"MrPiglr","isAdmin":true}}
|
||||
9:44:25 AM [express] GET /api/auth/session 304 in 0ms :: {"authenticated":false}
|
||||
9:44:37 AM [express] GET /api/os/notifications 304 in 162ms :: [{"id":1,"message":"21 architects in network","type":"info"},{"id":2,"message":"3 active projects","type":"info"},{"id":3,"message":"Aegis security active","type":"success"}]
|
||||
|
||||
[✓] Build Complete.
|
||||
Image: ~/.ops/images/aethex-kernel-v1
|
||||
|
||||
To boot the kernel:
|
||||
/home/mrpiglr/.ops/bin/ops run aethex-kernel-v1
|
||||
|
||||
To deploy to AWS/GCP:
|
||||
/home/mrpiglr/.ops/bin/ops image create -c ops.json -i aethex-kernel-v1 -t aws
|
||||
|
|
@ -10,26 +10,15 @@ const config: CapacitorConfig = {
|
|||
appName: 'AeThex OS',
|
||||
webDir: 'dist/public',
|
||||
server: {
|
||||
androidScheme: 'https',
|
||||
iosScheme: 'https',
|
||||
// Live reload: point to dev server instead of bundled assets
|
||||
...(isLiveReload && {
|
||||
url: serverUrl,
|
||||
cleartext: true, // Allow HTTP for local development
|
||||
}),
|
||||
// androidScheme: 'http', // Disable explicit http scheme, let it fall back to file or default
|
||||
url: undefined, // Ensure no server URL is set
|
||||
cleartext: true,
|
||||
},
|
||||
plugins: {
|
||||
SplashScreen: {
|
||||
launchShowDuration: 2000,
|
||||
launchShowDuration: 0,
|
||||
launchAutoHide: true,
|
||||
launchFadeOutDuration: 500,
|
||||
backgroundColor: '#0a0a0a',
|
||||
androidSplashResourceName: 'splash',
|
||||
androidScaleType: 'CENTER_CROP',
|
||||
showSpinner: true,
|
||||
androidSpinnerStyle: 'small',
|
||||
iosSpinnerStyle: 'small',
|
||||
spinnerColor: '#DC2626',
|
||||
backgroundColor: '#000000',
|
||||
splashFullScreen: true,
|
||||
splashImmersive: true
|
||||
},
|
||||
|
|
@ -65,15 +54,15 @@ const config: CapacitorConfig = {
|
|||
captureInput: true,
|
||||
webContentsDebuggingEnabled: true,
|
||||
// Allow cleartext (HTTP) for live reload
|
||||
...(isLiveReload && {
|
||||
...(isLiveReload ? {
|
||||
allowMixedContent: true,
|
||||
}),
|
||||
} : {}),
|
||||
},
|
||||
ios: {
|
||||
// iOS-specific live reload settings
|
||||
...(isLiveReload && {
|
||||
...(isLiveReload ? {
|
||||
limitsNavigationsToAppBoundDomains: false,
|
||||
}),
|
||||
} : {}),
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Service Worker for PWA functionality
|
||||
const CACHE_NAME = 'aethex-v1';
|
||||
const CACHE_NAME = 'aethex-v3';
|
||||
const urlsToCache = [
|
||||
|
||||
'/',
|
||||
'/mobile',
|
||||
'/home',
|
||||
|
|
|
|||
28
client/public/test.html
Normal file
28
client/public/test.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Page</title>
|
||||
<style>
|
||||
body {
|
||||
background-color: #00FF00; /* Bright Green */
|
||||
color: black;
|
||||
font-size: 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<h1>TEST FILE LOADED</h1>
|
||||
<p>If you see this, file access is working.</p>
|
||||
</div>
|
||||
<script>
|
||||
console.log("Test file loaded successfully");
|
||||
document.body.style.backgroundColor = "#00FF00";
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -153,8 +153,17 @@ export default function Terminal() {
|
|||
]);
|
||||
break;
|
||||
|
||||
case 'build':
|
||||
case 'migrate-status':
|
||||
case 'migrate':
|
||||
case 'seed':
|
||||
case 'test':
|
||||
executeCliCommand(command);
|
||||
break;
|
||||
|
||||
default:
|
||||
setLines((prev) => [
|
||||
|
||||
...prev,
|
||||
{
|
||||
type: 'error',
|
||||
|
|
@ -186,25 +195,25 @@ export default function Terminal() {
|
|||
setCliStatus("idle");
|
||||
};
|
||||
|
||||
const startCli = async () => {
|
||||
const executeCliCommand = async (cmd: string) => {
|
||||
if (cliStatus === "running") return;
|
||||
setCliStatus("running");
|
||||
appendCliLine('system', `▸ Running ${cliCommand}...`);
|
||||
toast({ title: "CLI", description: `Started ${cliCommand}`, variant: "default" });
|
||||
appendCliLine('system', `▸ Running ${cmd}...`);
|
||||
toast({ title: "CLI", description: `Started ${cmd}`, variant: "default" });
|
||||
|
||||
try {
|
||||
const res = await fetch('/api/admin/cli/start', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
credentials: 'include',
|
||||
body: JSON.stringify({ command: cliCommand })
|
||||
body: JSON.stringify({ command: cmd })
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
const text = await res.text();
|
||||
appendCliLine('error', `Start failed: ${text || res.status}`);
|
||||
setCliStatus("error");
|
||||
toast({ title: "CLI Error", description: `Failed to start ${cliCommand}`, variant: "destructive" });
|
||||
toast({ title: "CLI Error", description: `Failed to start ${cmd}`, variant: "destructive" });
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -222,15 +231,15 @@ export default function Terminal() {
|
|||
es.addEventListener('error', (evt) => {
|
||||
appendCliLine('error', 'Stream error');
|
||||
setCliStatus("error");
|
||||
toast({ title: "CLI Error", description: `Stream error for ${cliCommand}`, variant: "destructive" });
|
||||
toast({ title: "CLI Error", description: `Stream error for ${cmd}`, variant: "destructive" });
|
||||
es.close();
|
||||
});
|
||||
|
||||
es.addEventListener('done', (evt) => {
|
||||
const status = evt.data === 'success' ? 'done' : 'error';
|
||||
setCliStatus(status as any);
|
||||
appendCliLine(status === 'done' ? 'system' : 'error', `▸ ${cliLabel || cliCommand} ${status}`);
|
||||
toast({ title: status === 'done' ? "CLI Success" : "CLI Failed", description: `${cliLabel || cliCommand} ${status}` });
|
||||
appendCliLine(status === 'done' ? 'system' : 'error', `▸ ${data.label || cmd} ${status}`);
|
||||
toast({ title: status === 'done' ? "CLI Success" : "CLI Failed", description: `${data.label || cmd} ${status}` });
|
||||
es.close();
|
||||
currentRunId.current = null;
|
||||
});
|
||||
|
|
@ -238,10 +247,13 @@ export default function Terminal() {
|
|||
} catch (err) {
|
||||
appendCliLine('error', 'Failed to start CLI command');
|
||||
setCliStatus("error");
|
||||
toast({ title: "CLI Error", description: `Failed to start ${cliCommand}`, variant: "destructive" });
|
||||
toast({ title: "CLI Error", description: `Failed to start ${cmd}`, variant: "destructive" });
|
||||
}
|
||||
};
|
||||
|
||||
const startCli = () => executeCliCommand(cliCommand);
|
||||
|
||||
|
||||
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
if (e.key === 'Enter') {
|
||||
processCommand(input);
|
||||
|
|
|
|||
73
debug_run.log
Normal file
73
debug_run.log
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
|
||||
> rest-express@1.0.0 build:kernel
|
||||
> bash script/build-unikernel.sh
|
||||
|
||||
═══════════════════════════════════════════════════════════════
|
||||
AeThex OS - Unikernel Builder
|
||||
Target: Nanos Unikernel (Bootable Image)
|
||||
═══════════════════════════════════════════════════════════════
|
||||
[*] Detected Windows Environment (MinGW/Git Bash).
|
||||
[*] Switching to WSL Context...
|
||||
[33m[plugin vite:reporter]
|
||||
(!) C:/Users/PCOEM/AeThexOS/AeThex-OS/node_modules/@capacitor/camera/dist/esm/index.js is dynamically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts, C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-device-camera.ts but also statically imported by C:/Users/PCOEM/AeThexOS/AeThex-OS/client/src/hooks/use-native-features.ts, dynamic import will not move module into another chunk.
|
||||
[39m
|
||||
[33m
|
||||
(!) Some chunks are larger than 500 kB after minification. Consider:
|
||||
- Using dynamic import() to code-split the application
|
||||
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
|
||||
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.[39m
|
||||
|
||||
dist\index.js 1.5mb
|
||||
|
||||
Done in 463ms
|
||||
m[1m[2m 4.62 kB[22m[1m[22m[2m │ gzip: 1.43 kB[22m
|
||||
[2m../dist/public/[22m[32massets/holographic_digital_security_seal_for_certification-DujiIi4u.png [39m[1m[2m 557.88 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_subtle_digital_grid_texture-CW2Q0w3T.png [39m[1m[2m 965.43 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/abstract_holographic_world_map_data_visualization-DA4sQHBK.png [39m[1m[2m1,343.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[32massets/dark_digital_circuit_board_background-CqDjO0Wd.png [39m[1m[2m1,577.40 kB[22m[1m[22m
|
||||
[2m../dist/public/[22m[35massets/index-C25YaYOI.css [39m[1m[2m 226.22 kB[22m[1m[22m[2m │ gzip: 29.40 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DZ3HkAbg.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DPJCvkTF.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-a24r8sCo.js [39m[1m[2m 0.36 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BPkARqmR.js [39m[1m[2m 0.38 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DiUCUXaM.js [39m[1m[2m 0.42 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-jfjrrehZ.js [39m[1m[2m 0.76 kB[22m[1m[22m[2m │ gzip: 0.35 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DLPSmpR2.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.46 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-D9jibmwr.js [39m[1m[2m 0.90 kB[22m[1m[22m[2m │ gzip: 0.47 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-B4eFBhIm.js [39m[1m[2m 1.06 kB[22m[1m[22m[2m │ gzip: 0.34 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-DjK0eNnT.js [39m[1m[2m 1.15 kB[22m[1m[22m[2m │ gzip: 0.55 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-C68zp4qU.js [39m[1m[2m 2.44 kB[22m[1m[22m[2m │ gzip: 1.09 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-CONwI-Dv.js [39m[1m[2m 3.45 kB[22m[1m[22m[2m │ gzip: 1.10 kB[22m
|
||||
[2m../dist/public/[22m[36massets/web-BO91sTaU.js [39m[1m[2m 8.67 kB[22m[1m[22m[2m │ gzip: 2.95 kB[22m
|
||||
[2m../dist/public/[22m[36massets/index-CJvwTLjS.js [39m[1m[33m1,766.52 kB[39m[22m[2m │ gzip: 471.18 kB[22m
|
||||
[32m✓ built in 20.35s[39m
|
||||
building server...
|
||||
[*] Updating OPS package list...
|
||||
[*] Building Unikernel Image...
|
||||
Running: /home/mrpiglr/.ops/bin/ops pkg load eyberg/node:v18.12.1 ...
|
||||
warning: overwriting existing file "/dist/index.js" hostpath old: dist/index.js new: "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS//dist/index.js"
|
||||
running local instance
|
||||
booting /home/mrpiglr/.ops/images/aethex-kernel-v1 ...
|
||||
[0.535697] en1: assigned 10.0.2.15
|
||||
⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217
|
||||
[dotenv@17.2.3] injecting env (8) from .env -- tip: 🗂️ backup and recover secrets: https://dotenvx.com/ops
|
||||
[dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject }
|
||||
Warning: connect.session() MemoryStore is not
|
||||
designed for a production environment, as it will leak
|
||||
memory, and will not scale past a single process.
|
||||
8:23:30 AM [websocket] WebSocket server initialized
|
||||
[DEBUG] Static File Setup - CWD: /, __dirname: /dist
|
||||
[DEBUG] Final Static Path: /dist/public
|
||||
[DEBUG] Found 19 assets in /dist/public/assets
|
||||
8:23:30 AM [express] serving on port 8080
|
||||
8:23:30 AM [websocket] WebSocket available at ws://localhost:8080/socket.io
|
||||
[2.411799] en1: assigned FE80::88A5:54FF:FE60:88D0
|
||||
(node:2) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
|
||||
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
|
||||
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
|
||||
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
|
||||
[DEBUG] SPA Fallback for: /mobile
|
||||
[DEBUG] SPA Fallback for: /home
|
||||
[DEBUG] 404 for static asset: /assets/index-CLzw3Hhb.js
|
||||
2
instance.log
Normal file
2
instance.log
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
booting aethex-kernel-v1-1770277813 ...
|
||||
onprem instance 'aethex-kernel-v1-1770277813' created...
|
||||
22
ops.json
Normal file
22
ops.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"Args": ["/dist/index.js"],
|
||||
"Dirs": [
|
||||
"dist"
|
||||
],
|
||||
"Files": [
|
||||
".env"
|
||||
],
|
||||
"Env": {
|
||||
"NODE_ENV": "production",
|
||||
"PORT": "8080"
|
||||
},
|
||||
"RunConfig": {
|
||||
"Memory": "2G",
|
||||
"CPUs": 2,
|
||||
"Ports": ["8080"]
|
||||
},
|
||||
"CloudConfig": {
|
||||
"ProjectID": "aethex-os",
|
||||
"BucketName": "aethex-releases"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[Unit]
|
||||
Description=AeThex Runtime Selector
|
||||
After=graphical.target
|
||||
After=network.target
|
||||
Wants=aethex-desktop.service
|
||||
|
||||
[Service]
|
||||
|
|
|
|||
26
package-lock.json
generated
26
package-lock.json
generated
|
|
@ -129,6 +129,7 @@
|
|||
"@vitest/ui": "^4.0.16",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"concurrently": "^9.2.1",
|
||||
"cross-env": "^10.1.0",
|
||||
"drizzle-kit": "^0.31.4",
|
||||
"esbuild": "^0.25.0",
|
||||
"playwright-chromium": "^1.57.0",
|
||||
|
|
@ -746,6 +747,13 @@
|
|||
"dev": true,
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@epic-web/invariant": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz",
|
||||
"integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@esbuild-kit/core-utils": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz",
|
||||
|
|
@ -5766,6 +5774,24 @@
|
|||
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cross-env": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz",
|
||||
"integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@epic-web/invariant": "^1.0.0",
|
||||
"cross-spawn": "^7.0.6"
|
||||
},
|
||||
"bin": {
|
||||
"cross-env": "dist/bin/cross-env.js",
|
||||
"cross-env-shell": "dist/bin/cross-env-shell.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
||||
|
|
|
|||
|
|
@ -5,11 +5,12 @@
|
|||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev:client": "vite dev --port 5000",
|
||||
"dev": "NODE_ENV=development tsx server/index.ts",
|
||||
"dev": "cross-env NODE_ENV=development tsx server/index.ts",
|
||||
"dev:tauri": "cd shell/aethex-shell && npm run tauri dev",
|
||||
"build": "tsx script/build.ts",
|
||||
"build:tauri": "cd shell/aethex-shell && npm run tauri build",
|
||||
"build:mobile": "npm run build && npx cap sync",
|
||||
"build:kernel": "bash script/build-unikernel.sh",
|
||||
"android": "npx cap open android",
|
||||
"ios": "npx cap open ios",
|
||||
"cap:live-reload": "tsx script/capacitor-live-reload.ts",
|
||||
|
|
@ -17,7 +18,7 @@
|
|||
"cap:live-reload:ios": "tsx script/capacitor-live-reload.ts --ios",
|
||||
"cap:production": "tsx script/capacitor-production.ts",
|
||||
"dev:mobile": "npm run cap:live-reload && concurrently \"npm run dev\" \"echo 'Dev server started. Open Android Studio or Xcode to run the app.'\"",
|
||||
"start": "NODE_ENV=production node dist/index.js",
|
||||
"start": "cross-env NODE_ENV=production node dist/index.js",
|
||||
"check": "tsc",
|
||||
"db:push": "drizzle-kit push",
|
||||
"tauri": "cd shell/aethex-shell && npm run tauri",
|
||||
|
|
@ -147,6 +148,7 @@
|
|||
"@vitest/ui": "^4.0.16",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"concurrently": "^9.2.1",
|
||||
"cross-env": "^10.1.0",
|
||||
"drizzle-kit": "^0.31.4",
|
||||
"esbuild": "^0.25.0",
|
||||
"playwright-chromium": "^1.57.0",
|
||||
|
|
|
|||
2
run.log
Normal file
2
run.log
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
[31merror: aethex-kernel-v1: stat /home/mrpiglr/.ops/aethex-kernel-v1: no such file or directory
|
||||
[0m
|
||||
1
run_full.log
Normal file
1
run_full.log
Normal file
|
|
@ -0,0 +1 @@
|
|||
2026/02/05 00:45:16 [1;31monly ELF binaries are supported. Is this a Linux binary? run "file /home/mrpiglr/.ops/images/aethex-kernel-v1" on it[0m
|
||||
92
script/build-unikernel.sh
Normal file
92
script/build-unikernel.sh
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# AeThex OS - Unikernel Build Script (OPS)
|
||||
# Requires 'ops' (https://ops.city)
|
||||
|
||||
echo "═══════════════════════════════════════════════════════════════"
|
||||
echo " AeThex OS - Unikernel Builder"
|
||||
echo " Target: Nanos Unikernel (Bootable Image)"
|
||||
echo "═══════════════════════════════════════════════════════════════"
|
||||
|
||||
# 0. Check for MinGW/Git Bash (Windows NPM environment)
|
||||
if [ -n "$MSYSTEM" ] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]]; then
|
||||
echo "[*] Detected Windows Environment (MinGW/Git Bash)."
|
||||
echo "[*] Switching to WSL Context..."
|
||||
|
||||
# Convert the current script path to a WSL path
|
||||
# $0 is likely "script/build-unikernel.sh"
|
||||
# We assume the current directory is the project root in Windows format, accessible via /mnt/c
|
||||
|
||||
# Simple re-execution in WSL, assuming we are at project root
|
||||
wsl bash script/build-unikernel.sh
|
||||
exit $?
|
||||
fi
|
||||
|
||||
# Try to find 'ops' in various ways
|
||||
OPS_CMD=""
|
||||
|
||||
# 1. Check if 'ops' is already in PATH
|
||||
if command -v ops &> /dev/null; then
|
||||
OPS_CMD="ops"
|
||||
fi
|
||||
|
||||
# 2. Hardcoded check for known user 'mrpiglr' (The specific fix)
|
||||
if [ -z "$OPS_CMD" ]; then
|
||||
if [ -f "/home/mrpiglr/.ops/bin/ops" ]; then
|
||||
OPS_CMD="/home/mrpiglr/.ops/bin/ops"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 3. Check current user's Linux home
|
||||
if [ -z "$OPS_CMD" ]; then
|
||||
LINUX_USER=$(whoami)
|
||||
if [ -f "/home/$LINUX_USER/.ops/bin/ops" ]; then
|
||||
OPS_CMD="/home/$LINUX_USER/.ops/bin/ops"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 4. Final check
|
||||
if [ -z "$OPS_CMD" ]; then
|
||||
echo "[!] OPS binary not found."
|
||||
echo " Checked: PATH, /home/mrpiglr/.ops/bin/ops"
|
||||
echo " Please run this command directly in your WSL terminal:"
|
||||
echo " export PATH=\$PATH:\$HOME/.ops/bin"
|
||||
echo " bash script/build-unikernel.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] Using OPS binary: $OPS_CMD"
|
||||
|
||||
if [ ! -d "dist" ]; then
|
||||
echo "[!] 'dist' directory not found. Building project..."
|
||||
npm run build
|
||||
fi
|
||||
|
||||
echo "[*] Updating OPS package list..."
|
||||
$OPS_CMD update
|
||||
|
||||
echo "[*] Building Unikernel Image..."
|
||||
|
||||
# Try fully qualified name format: account/package:version
|
||||
PACKAGE="eyberg/node:v18.12.1"
|
||||
|
||||
echo " Running: $OPS_CMD pkg load $PACKAGE ..."
|
||||
if ! $OPS_CMD pkg load $PACKAGE -c ops.json -i aethex-kernel-v1; then
|
||||
echo "[!] $PACKAGE failed."
|
||||
|
||||
# Fallback to another format seen in the list
|
||||
PACKAGE="eyberg/node:20.5.0"
|
||||
echo " Trying fallback: $PACKAGE ..."
|
||||
$OPS_CMD pkg load $PACKAGE -c ops.json -i aethex-kernel-v1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "[✓] Build Complete."
|
||||
echo " Image: ~/.ops/images/aethex-kernel-v1"
|
||||
echo ""
|
||||
echo "To boot the kernel:"
|
||||
echo " $OPS_CMD run aethex-kernel-v1"
|
||||
echo ""
|
||||
echo "To deploy to AWS/GCP:"
|
||||
echo " $OPS_CMD image create -c ops.json -i aethex-kernel-v1 -t aws"
|
||||
|
|
@ -6,10 +6,13 @@ import { rm, readFile } from "fs/promises";
|
|||
// which helps cold start times
|
||||
const allowlist = [
|
||||
"@google/generative-ai",
|
||||
"@supabase/supabase-js",
|
||||
"axios",
|
||||
"bcrypt",
|
||||
"connect-pg-simple",
|
||||
"cors",
|
||||
"date-fns",
|
||||
"dotenv",
|
||||
"drizzle-orm",
|
||||
"drizzle-zod",
|
||||
"express",
|
||||
|
|
@ -24,6 +27,7 @@ const allowlist = [
|
|||
"passport",
|
||||
"passport-local",
|
||||
"pg",
|
||||
"socket.io",
|
||||
"stripe",
|
||||
"uuid",
|
||||
"ws",
|
||||
|
|
@ -56,7 +60,7 @@ async function buildAll() {
|
|||
entryPoints: ["server/index.ts"],
|
||||
platform: "node",
|
||||
bundle: true,
|
||||
format: "esm",
|
||||
format: "cjs",
|
||||
outfile: "dist/index.js",
|
||||
define: {
|
||||
"process.env.NODE_ENV": '"production"',
|
||||
|
|
@ -65,9 +69,6 @@ async function buildAll() {
|
|||
sourcemap: enableSourcemap,
|
||||
external: externals,
|
||||
logLevel: "info",
|
||||
banner: {
|
||||
js: "import { createRequire } from 'module'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; const require = createRequire(import.meta.url); const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename);",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,8 +21,11 @@ app.get("/health", (_req, res) => {
|
|||
|
||||
// API status endpoint (moved from root to /api/status)
|
||||
app.get("/api/status", (_req, res) => {
|
||||
const isKernel = process.env.OPS_Version ? true : false;
|
||||
|
||||
res.json({
|
||||
status: "AeThex OS Kernel: ONLINE",
|
||||
status: isKernel ? "AeThex OS Unikernel: ONLINE" : "AeThex OS Simulation: ONLINE",
|
||||
mode: isKernel ? "KERNEL_NATIVE" : "HOSTED_SIMULATION",
|
||||
version: "1.0.0",
|
||||
endpoints: {
|
||||
link: "/api/os/link/*",
|
||||
|
|
@ -49,13 +52,22 @@ if (process.env.NODE_ENV === "production" && !sessionSecret) {
|
|||
|
||||
// Session configuration with security best practices
|
||||
const isProduction = process.env.NODE_ENV === "production";
|
||||
|
||||
// For Unikernel local testing (localhost:8080), we must disable secure cookies
|
||||
// because there is no SSL termination in the kernel itself yet.
|
||||
// We detect if we are running in OPS/Nanos via the environment, or just assume
|
||||
// that if we are "production" but not explicitly requiring HTTPS, we might be in a kernel.
|
||||
// A safer check: if we are in OPS, process.env.OPS_Version might be present (if set),
|
||||
// OR we can just relax this for now to fix the login loop.
|
||||
const isSecure = isProduction && process.env.REQUIRE_HTTPS === "true";
|
||||
|
||||
app.use(
|
||||
session({
|
||||
secret: sessionSecret || "dev-only-secret-not-for-prod",
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
cookie: {
|
||||
secure: isProduction,
|
||||
secure: isSecure,
|
||||
httpOnly: true,
|
||||
sameSite: "lax",
|
||||
maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
|
||||
|
|
@ -64,6 +76,7 @@ app.use(
|
|||
})
|
||||
);
|
||||
|
||||
|
||||
app.use(
|
||||
express.json({
|
||||
verify: (req, _res, buf) => {
|
||||
|
|
|
|||
|
|
@ -3,17 +3,32 @@ import fs from "fs";
|
|||
import path from "path";
|
||||
|
||||
export function serveStatic(app: Express) {
|
||||
const distPath = path.resolve(__dirname, "public");
|
||||
// Robust path resolution for Unikernel environment
|
||||
const cwd = process.cwd();
|
||||
let distPath = path.resolve(__dirname, "public");
|
||||
|
||||
// Fallback: If __dirname based path fails, try relative to CWD
|
||||
if (!fs.existsSync(distPath)) {
|
||||
throw new Error(
|
||||
`Could not find the build directory: ${distPath}, make sure to build the client first`,
|
||||
);
|
||||
// Assuming structure is /dist/public or just /public depending on how CWD is set
|
||||
const altPath = path.join(cwd, "dist", "public");
|
||||
if (fs.existsSync(altPath)) {
|
||||
distPath = altPath;
|
||||
} else {
|
||||
// Try just "public" if CWD is already inside dist (unlikely but possible)
|
||||
const rootPublic = path.join(cwd, "public");
|
||||
if (fs.existsSync(rootPublic)) distPath = rootPublic;
|
||||
}
|
||||
}
|
||||
|
||||
if (!fs.existsSync(distPath)) {
|
||||
throw new Error(`Could not find the build directory: ${distPath}`);
|
||||
}
|
||||
|
||||
app.use(express.static(distPath));
|
||||
|
||||
// fall through to index.html if the file doesn't exist
|
||||
app.use("*", (_req, res) => {
|
||||
app.use("*", (req, res) => {
|
||||
res.sendFile(path.resolve(distPath, "index.html"));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
1
wget-log.4
Normal file
1
wget-log.4
Normal file
|
|
@ -0,0 +1 @@
|
|||
2026-02-05 03:04:55 URL:http://archive.ubuntu.com/ubuntu/pool/main/s/shadow/passwd_4.8.1-2ubuntu2_amd64.deb [766558/766558] -> "/mnt/c/Users/PCOEM/AeThexOS/AeThex-OS/aethex-linux-build/rootfs//var/cache/apt/archives/partial/passwd_1%3a4.8.1-2ubuntu2_amd64.deb" [1]
|
||||
Loading…
Reference in a new issue