diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index eb92ac3..2f1a711 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -21,8 +21,6 @@
-
-
diff --git a/android/app/src/main/java/com/aethex/os/MainActivity.java b/android/app/src/main/java/com/aethex/os/MainActivity.java
index 3416ce7..a678b96 100644
--- a/android/app/src/main/java/com/aethex/os/MainActivity.java
+++ b/android/app/src/main/java/com/aethex/os/MainActivity.java
@@ -1,77 +1,9 @@
package com.aethex.os;
-import android.os.Bundle;
-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 android.util.Log;
-
-import android.os.Handler;
-
-import android.view.View;
-
public class MainActivity extends BridgeActivity {
-
- @Override
- public void onStart() {
- super.onStart();
- if (this.bridge != null && this.bridge.getWebView() != null) {
- // Delay loading to ensure WebView is ready and avoid race conditions
- new Handler().postDelayed(this::loadCustomUrl, 1000);
- }
- }
-
- private void loadCustomUrl() {
- WebView webView = this.bridge.getWebView();
-
- // Disable software rendering (Revert)
- // webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
-
- // 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 onPageFinished(WebView view, String url) {
- Log.i("AeThexOS", "Page Loaded: " + url);
- runOnUiThread(() -> {
- Toast.makeText(MainActivity.this, "Loaded: " + url, Toast.LENGTH_SHORT).show();
- });
- }
- });
-
- // NUCLEAR CACHE CLEAR
- webView.clearCache(true);
- webView.clearHistory();
-
- // LOAD THE REAL APP (SINGLE FILE BUILD)
- webView.loadUrl("file:///android_asset/public/index.html");
- }
+ // Reverting to standard Capacitor implementation.
+ // The BridgeActivity handles the WebView creation and loading of assets
+ // via the scheme configured in capacitor.config.ts (androidScheme: "https").
}
diff --git a/capacitor.config.ts b/capacitor.config.ts
index ce00311..3f7e90b 100644
--- a/capacitor.config.ts
+++ b/capacitor.config.ts
@@ -10,7 +10,7 @@ const config: CapacitorConfig = {
appName: 'AeThex OS',
webDir: 'dist/public',
server: {
- // androidScheme: 'http', // Disable explicit http scheme, let it fall back to file or default
+ androidScheme: 'https',
url: undefined, // Ensure no server URL is set
cleartext: true,
},
diff --git a/client/index.html b/client/index.html
index c0a0b92..a30292d 100644
--- a/client/index.html
+++ b/client/index.html
@@ -95,16 +95,13 @@
.safe-area-inset-left { padding-left: var(--safe-area-inset-left) !important; }
.safe-area-inset-right { padding-right: var(--safe-area-inset-right) !important; }
/* Disable pull-to-refresh on body */
- body {
- overscroll-behavior-y: contain;
- background-color: #FF00FF; /* MAGENTA DEBUG */
+ body {
+ overscroll-behavior-y: contain;
+ background-color: #0a0a0a;
}
diff --git a/client/src/lib/platform.ts b/client/src/lib/platform.ts
index f5b18b5..e461f10 100644
--- a/client/src/lib/platform.ts
+++ b/client/src/lib/platform.ts
@@ -37,10 +37,19 @@ export function detectPlatform(): PlatformType {
}
// Capacitor check - sometimes injected late, so don't cache 'web' result immediately
+ // IMPORTANT: Capacitor has a web implementation that creates window.Capacitor
+ // We need to check if we're in a REAL native app, not just the web polyfill
if (window.Capacitor !== undefined) {
- console.log('[Platform] Detected: mobile (Capacitor)');
- cachedPlatform = 'mobile';
- return cachedPlatform;
+ // Check if we're actually in a native app by checking for native platform
+ const isRealNative = (window.Capacitor as any)?.getPlatform &&
+ (window.Capacitor as any).getPlatform() !== 'web';
+ if (isRealNative) {
+ console.log('[Platform] Detected: mobile (Capacitor native)');
+ cachedPlatform = 'mobile';
+ return cachedPlatform;
+ } else {
+ console.log('[Platform] Capacitor detected but running on web - treating as web');
+ }
}
// Flutter check
diff --git a/client/src/pages/os.tsx b/client/src/pages/os.tsx
index b472699..c36257d 100644
--- a/client/src/pages/os.tsx
+++ b/client/src/pages/os.tsx
@@ -1385,9 +1385,10 @@ export default function AeThexOS() {
// Native Android App Layout
if (layout.isMobile) {
+ console.log('📱 [OS] Rendering MOBILE layout (isMobile=true)', { layout });
const activeWindows = windows.filter(w => !w.minimized);
const currentWindow = activeWindows[activeWindows.length - 1];
-
+
// Dynamic theme colors based on clearance mode
const isFoundation = clearanceMode === 'foundation';
const mobileTheme = {
diff --git a/dist/public/index.html b/dist/public/index.html
index 800b4fd..20845ec 100644
--- a/dist/public/index.html
+++ b/dist/public/index.html
@@ -106,816 +106,8 @@
document.body.style.backgroundColor = '#FF00FF';
});
-
-
+
+
diff --git a/package-lock.json b/package-lock.json
index 5cc2f6d..51c0f83 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -138,7 +138,6 @@
"tsx": "^4.20.5",
"typescript": "5.6.3",
"vite": "^7.1.9",
- "vite-plugin-singlefile": "^2.3.0",
"vitest": "^4.0.16"
},
"optionalDependencies": {
@@ -5416,19 +5415,6 @@
"node": ">= 5.10.0"
}
},
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/browserslist": {
"version": "4.28.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
@@ -6699,19 +6685,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/finalhandler": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
@@ -7118,16 +7091,6 @@
"node": ">=8"
}
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -7600,33 +7563,6 @@
"node": ">= 0.6"
}
},
- "node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/micromatch/node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -8145,6 +8081,7 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=12"
},
@@ -9332,19 +9269,6 @@
"node": ">=14.0.0"
}
},
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -10254,23 +10178,6 @@
}
}
},
- "node_modules/vite-plugin-singlefile": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/vite-plugin-singlefile/-/vite-plugin-singlefile-2.3.0.tgz",
- "integrity": "sha512-DAcHzYypM0CasNLSz/WG0VdKOCxGHErfrjOoyIPiNxTPTGmO6rRD/te93n1YL/s+miXq66ipF1brMBikf99c6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "micromatch": "^4.0.8"
- },
- "engines": {
- "node": ">18.0.0"
- },
- "peerDependencies": {
- "rollup": "^4.44.1",
- "vite": "^5.4.11 || ^6.0.0 || ^7.0.0"
- }
- },
"node_modules/vite/node_modules/@esbuild/aix-ppc64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz",
diff --git a/package.json b/package.json
index 87ac290..a668211 100644
--- a/package.json
+++ b/package.json
@@ -157,7 +157,6 @@
"tsx": "^4.20.5",
"typescript": "5.6.3",
"vite": "^7.1.9",
- "vite-plugin-singlefile": "^2.3.0",
"vitest": "^4.0.16"
},
"optionalDependencies": {
diff --git a/vite.config.ts b/vite.config.ts
index 3a02481..e0c1075 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -4,7 +4,6 @@ import tailwindcss from "@tailwindcss/vite";
import path from "path";
import runtimeErrorOverlay from "@replit/vite-plugin-runtime-error-modal";
import { metaImagesPlugin } from "./vite-plugin-meta-images";
-import { viteSingleFile } from "vite-plugin-singlefile";
export default defineConfig({
plugins: [
@@ -12,7 +11,6 @@ export default defineConfig({
runtimeErrorOverlay(),
tailwindcss(),
metaImagesPlugin(),
- viteSingleFile(), // <--- INLINE EVERYTHING
...(process.env.NODE_ENV !== "production" &&
process.env.REPL_ID !== undefined
? [