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 ? [