This commit is contained in:
MrPiglr 2026-01-03 23:57:02 -07:00
commit 3ae5fe6280
8 changed files with 374 additions and 16 deletions

View file

@ -126,14 +126,16 @@ After deployment:
---
## Next Steps
## Next Steps (UNFINISHED DEPLOYMENT FLOW)
> **Note:** These items are tracked in `/FLOWS.md` - update both documents when completing items.
1. ✅ Railway config created
2. ⏳ Deploy to Railway
3. ⏳ Configure custom domain
4. ⏳ Update Warden bot config
5. ⏳ Test end-to-end flow
6. ⏳ Monitor logs and metrics
2. ⏳ **[UNFINISHED]** Deploy to Railway
3. ⏳ **[UNFINISHED]** Configure custom domain
4. ⏳ **[UNFINISHED]** Update Warden bot config
5. ⏳ **[UNFINISHED]** Test end-to-end flow
6. ⏳ **[UNFINISHED]** Monitor logs and metrics
---

311
FLOWS.md Normal file
View file

@ -0,0 +1,311 @@
# AeThex-OS: Complete Flows Inventory
> **Last Updated:** January 4, 2026
> **Purpose:** Track all flows, workflows, and processes in the codebase with completion status
---
## Summary
| Category | Total | Complete | Partial | Not Started |
|----------|-------|----------|---------|-------------|
| CI/CD Workflows | 3 | 2 | 1 | 0 |
| Authentication Flows | 2 | 1 | 1 | 0 |
| API Flows | 3 | 1 | 2 | 0 |
| Sales Funnel Features | 5 | 0 | 1 | 4 |
| Runtime Flows | 2 | 1 | 1 | 0 |
| Deployment Flows | 1 | 0 | 1 | 0 |
| **TOTAL** | **16** | **5** | **7** | **4** |
**Overall Completion: ~50%**
---
## CI/CD Workflows
### 1. GitHub Actions - Build ISO
- **File:** `.github/workflows/build-iso.yml`
- **Status:** ⚠️ PARTIAL
- **Flow Steps:**
1. ✅ Trigger on manual dispatch or push to main
2. ✅ Build client (npm run build)
3. ⚠️ Build ISO (creates placeholder if build script fails)
4. ✅ Verify ISO artifact
5. ✅ Upload artifacts (90-day retention)
6. ✅ Create GitHub Release (optional)
- **Issue:** Creates placeholder artifacts when `script/build-linux-iso.sh` fails (lines 59-61)
- **TODO:** Ensure build script handles all edge cases without placeholders
---
### 2. GitHub Actions - Deploy Docs
- **File:** `.github/workflows/deploy-docs.yml`
- **Status:** ✅ COMPLETE
- **Flow Steps:**
1. ✅ Trigger on push to main with `docs/**` changes
2. ✅ Checkout code
3. ✅ Setup GitHub Pages
4. ✅ Upload artifact from `docs/` directory
5. ✅ Deploy to GitHub Pages
---
### 3. GitLab CI/CD Pipeline
- **File:** `.gitlab-ci.yml`
- **Status:** ✅ COMPLETE
- **Stages:**
- ✅ `build`: Installs dependencies, runs npm build, executes full ISO build
- ✅ `release`: Creates GitLab releases on tags
---
## Authentication Flows
### 4. Basic Auth Flow
- **File:** `server/routes.ts`
- **Status:** ✅ COMPLETE
- **Endpoints:**
- ✅ `POST /api/auth/login` - Session creation
- ✅ `POST /api/auth/signup` - User registration
- ✅ `GET /api/auth/session` - Verify auth status
- ✅ `POST /api/auth/logout` - End session
---
### 5. OAuth 2.0 Identity Linking Flow
- **File:** `server/oauth-handlers.ts`, `server/routes.ts`
- **Status:** ⚠️ PARTIAL (Core complete, missing features)
- **Implemented:**
- ✅ `POST /api/oauth/link/:provider` - Start OAuth flow
- ✅ `GET /api/oauth/callback/:provider` - OAuth callback handler
- ✅ State token validation (5-minute TTL)
- ✅ PKCE support for Roblox OAuth
- ✅ Duplicate identity detection
- **UNFINISHED (docs/OAUTH_IMPLEMENTATION.md:271-278):**
- [ ] **HIGH:** Implement unlink endpoint: `DELETE /api/oauth/unlink/:provider`
- [ ] **HIGH:** Add frontend UI for identity linking (Settings page)
- [ ] **HIGH:** Redis/database for state storage (replace in-memory Map)
- [ ] **MEDIUM:** Rate limiting on OAuth endpoints
- [ ] **MEDIUM:** Logging/monitoring for OAuth events
- [ ] **LOW:** Refresh token support
- [ ] **LOW:** Additional providers (Twitter/X, Google, Steam)
---
## API Flows
### 6. Mode Preference Flow
- **File:** `server/routes.ts`
- **Status:** ✅ COMPLETE
- **Endpoints:**
- ✅ `GET /api/user/mode-preference` - Retrieve user mode
- ✅ `PUT /api/user/mode-preference` - Update user mode
---
### 7. Code Execution API
- **File:** `api/execute.ts`
- **Status:** ⚠️ PARTIAL
- **Implemented:**
- ✅ JavaScript execution
- ✅ TypeScript execution
- **UNFINISHED (lines 25-29):**
- [ ] Python execution
- [ ] Go execution
- [ ] Rust execution
- [ ] Other languages return placeholder: "Execution not yet supported in cloud environment"
---
### 8. App Registry System
- **File:** `client/src/shared/app-registry.ts`
- **Status:** ⚠️ STUB ONLY
- **Issues:**
- Line 1: "Minimal app registry stub to satisfy imports and provide types"
- Line 14: `AppRegistry` is empty `{}`
- Line 37-40: `canAccessRoute()` always returns `true` (placeholder)
- **UNFINISHED:**
- [ ] Populate `AppRegistry` with actual app definitions
- [ ] Implement proper role-based access control in `canAccessRoute()`
- [ ] Add app capability checks
---
## Sales Funnel Features
> **Reference:** `PROJECT_RUNDOWN.md` lines 99-176
### 9. INTEL Folder
- **Status:** ❌ NOT IMPLEMENTED
- **Purpose:** Weaponize Naavik research report as "secret knowledge"
- **TODO (PROJECT_RUNDOWN.md:184-189):**
- [ ] Add `INTEL` folder icon to desktop
- [ ] Create `CROSS_PLATFORM_REPORT.TXT` file app
- [ ] Write content summarizing Naavik research
- [ ] Link to analysis
---
### 10. System Upgrade Alert
- **Status:** ❌ NOT IMPLEMENTED
- **Purpose:** Sell Foundry ($500) as OS "permission upgrade"
- **TODO (PROJECT_RUNDOWN.md:190-195):**
- [ ] Add flashing system tray icon
- [ ] Create upgrade notification component
- [ ] Design modal/window with Foundry pitch
- [ ] Add iFrame or link to `.studio` Foundry page
---
### 11. Network Neighborhood App
- **Status:** ❌ NOT IMPLEMENTED
- **Purpose:** Show user directory, gamify joining
- **TODO (PROJECT_RUNDOWN.md:196-201):**
- [ ] Create `NETWORK` desktop icon
- [ ] Build user directory window
- [ ] Show current members (You, Dylan, Trevor)
- [ ] Add locked slots with "Requires Architect Access"
- [ ] Connect to actual user database
---
### 12. My Computer / Drives
- **Status:** ❌ NOT IMPLEMENTED
- **Purpose:** Show value of owning a .aethex domain
- **TODO (PROJECT_RUNDOWN.md:202-208):**
- [ ] Add `THIS PC` / `MY COMPUTER` icon
- [ ] Show Drive C (Local) and Drive D (.aethex TLD)
- [ ] Implement "not mounted" error for TLD drive
- [ ] Add call-to-action to join Foundry
---
### 13. Enhanced Login Screen
- **Status:** ⚠️ PARTIAL (basic login exists)
- **Purpose:** Dramatize system access with Passport initialization
- **TODO (PROJECT_RUNDOWN.md:209-213):**
- [ ] Upgrade boot sequence with Passport initialization
- [ ] Add "Detecting cross-platform identity" animation
- [ ] Make login feel more like system access
---
## Runtime Flows
### 14. Linux ISO Build Flow
- **File:** `script/build-linux-iso.sh` and variants
- **Status:** ✅ COMPLETE (containerized edition)
- **Flow Steps:**
1. ✅ Clean build directory
2. ✅ Check/install dependencies
3. ✅ Download Ubuntu Mini ISO base
4. ✅ Build application layer in chroot
5. ✅ Create AeThex user with auto-login
6. ✅ Configure LightDM
7. ✅ Copy application files
8. ✅ Install Node dependencies
9. ✅ Create systemd services
10. ✅ Configure Firefox kiosk mode
11. ✅ Create SquashFS filesystem
12. ✅ Setup BIOS/UEFI boot
13. ✅ Create hybrid ISO
---
### 15. Windows Runtime (Wine Launcher)
- **File:** `os/runtimes/windows/wine-launcher.sh`
- **Status:** ⚠️ PARTIAL
- **Implemented:**
- ✅ Wine installation check
- ✅ Wine prefix setup
- ✅ Attempt to run .exe with Wine
- **UNFINISHED (line 22):**
```bash
# Launch QEMU/KVM Windows VM (TODO: implement)
notify-send "VM launcher not implemented yet"
```
- [ ] Implement QEMU/KVM Windows VM fallback
- [ ] VM image management
- [ ] Hardware passthrough configuration
---
## Deployment Flows
### 16. Railway Deployment
- **File:** `DEPLOYMENT_STATUS.md`
- **Status:** ⚠️ PARTIAL (config ready, not deployed)
- **Completed:**
- ✅ Railway config created (`railway.json`, `nixpacks.toml`)
- ✅ Database schema ready
- ✅ Documentation complete
- **UNFINISHED (DEPLOYMENT_STATUS.md:131-136):**
- [ ] Deploy to Railway
- [ ] Configure custom domain
- [ ] Update Warden bot config
- [ ] Test end-to-end flow
- [ ] Monitor logs and metrics
---
## Backend/Multiplayer Features (Future)
> **Reference:** `PROJECT_RUNDOWN.md` lines 214-226
### Planned Features (Not Started)
- [ ] WebSocket presence system
- [ ] Cursor sharing
- [ ] Real-time notifications for multiplayer
- [ ] Discord bridge
- [ ] Track upgrade clicks analytics
- [ ] Log INTEL folder opens
---
## Files Requiring TODO Markers
| File | Line | Issue |
|------|------|-------|
| `os/runtimes/windows/wine-launcher.sh` | 22 | VM launcher not implemented |
| `api/execute.ts` | 25-29 | Non-JS/TS languages unsupported |
| `client/src/shared/app-registry.ts` | 1, 14, 37-40 | Stub implementation only |
| `docs/OAUTH_IMPLEMENTATION.md` | 259 | Unlink endpoint needed |
| `DEPLOYMENT_STATUS.md` | 132-136 | Deployment pending |
---
## Quick Reference: Unfinished Items by Priority
### Critical (Blocking Features)
1. OAuth unlink endpoint
2. App Registry implementation
3. Railway deployment
### High Priority (Sales Funnel)
4. INTEL Folder
5. System Upgrade Alert
6. Network Neighborhood
7. My Computer / Drives
### Medium Priority
8. Code execution for additional languages
9. Windows VM launcher
10. OAuth rate limiting
### Low Priority
11. Enhanced login screen
12. Multiplayer features
13. Additional OAuth providers
---
## How to Use This Document
1. **Before starting work:** Check this document to understand what's complete
2. **After completing a flow:** Update the status and remove from TODO lists
3. **When adding new flows:** Add an entry with status and implementation steps
4. **Regular audits:** Review quarterly to identify stale items
---
*Generated by automated flow analysis. See commit history for updates.*

View file

@ -15,6 +15,8 @@
- ✅ Capacitor mobile apps (iOS/Android)
- 🔄 **Need to implement: Sales funnel features**
> **📋 For complete flow tracking, see [FLOWS.md](./FLOWS.md)** - comprehensive list of all implemented and unfinished flows.
---
## 📊 The Architecture

View file

@ -22,7 +22,12 @@ export default async function handler(req: VercelRequest, res: VercelResponse) {
return;
}
// For other languages, return a placeholder
// TODO: [UNFINISHED FLOW] Add support for additional languages
// Priority languages to implement:
// - Python (via pyodide or server-side execution)
// - Go (via server-side compilation)
// - Rust (via server-side compilation)
// See: FLOWS.md section "Code Execution API"
res.status(200).json({
output: `// Language: ${language}\n// Execution not yet supported in cloud environment\n// Run locally for full support`,
status: 'info'

View file

@ -230,17 +230,34 @@ export default function AeThexOS() {
const [batteryInfo, setBatteryInfo] = useState<{ level: number; charging: boolean } | null>(null);
useEffect(() => {
let battery: any = null;
let levelChangeHandler: (() => void) | null = null;
let chargingChangeHandler: (() => void) | null = null;
if ('getBattery' in navigator) {
(navigator as any).getBattery().then((battery: any) => {
(navigator as any).getBattery().then((bat: any) => {
battery = bat;
setBatteryInfo({ level: Math.round(battery.level * 100), charging: battery.charging });
battery.addEventListener('levelchange', () => {
levelChangeHandler = () => {
setBatteryInfo(prev => prev ? { ...prev, level: Math.round(battery.level * 100) } : null);
});
battery.addEventListener('chargingchange', () => {
};
chargingChangeHandler = () => {
setBatteryInfo(prev => prev ? { ...prev, charging: battery.charging } : null);
});
};
battery.addEventListener('levelchange', levelChangeHandler);
battery.addEventListener('chargingchange', chargingChangeHandler);
});
}
// Cleanup: remove battery event listeners to prevent memory leak
return () => {
if (battery) {
if (levelChangeHandler) battery.removeEventListener('levelchange', levelChangeHandler);
if (chargingChangeHandler) battery.removeEventListener('chargingchange', chargingChangeHandler);
}
};
}, []);
const { data: weatherData, isFetching: weatherFetching } = useQuery({

View file

@ -1,3 +1,11 @@
// TODO: [UNFINISHED FLOW] This is a minimal stub - full implementation required
// Required implementation:
// 1. Populate AppRegistry with actual app definitions from os.tsx
// 2. Implement proper role-based access control
// 3. Add app capability checks
// 4. Connect to user permission system
// See: FLOWS.md section "App Registry System"
// Minimal app registry stub to satisfy imports and provide types
export type AppId = string;
@ -34,7 +42,11 @@ export enum Realm {
Network = "network"
}
// Minimal route access check placeholder (always allows)
// TODO: [UNFINISHED FLOW] Implement proper route access control
// This placeholder always allows access - needs real implementation:
// - Check user roles against route requirements
// - Validate user capabilities
// - Enforce realm restrictions (foundation/studio/network)
export function canAccessRoute(_user: unknown, _route?: string): boolean {
return true;
}

View file

@ -268,10 +268,12 @@ function getRedirectUri(provider: string): string {
---
## 🚧 TODO / Future Improvements
## 🚧 TODO / Future Improvements (UNFINISHED FLOWS)
> **Note:** These items are tracked in `/FLOWS.md` - update both documents when completing items.
### High Priority
- [ ] Implement unlink endpoint: `DELETE /api/oauth/unlink/:provider`
- [ ] **[UNFINISHED]** Implement unlink endpoint: `DELETE /api/oauth/unlink/:provider`
- [ ] Add frontend UI for identity linking (Settings page)
- [ ] Redis/database for state storage (replace in-memory Map)
- [ ] Rate limiting on OAuth endpoints

View file

@ -19,7 +19,14 @@ wine "$EXE_FILE" 2>&1 | tee /tmp/wine-debug.log
if [ $? -ne 0 ]; then
zenity --question --text="Wine failed. Use Windows VM instead?"
if [ $? -eq 0 ]; then
# Launch QEMU/KVM Windows VM (TODO: implement)
# TODO: [UNFINISHED FLOW] Implement QEMU/KVM Windows VM launcher
# Required steps:
# 1. Check for QEMU/KVM installation
# 2. Download or locate Windows VM image
# 3. Configure hardware passthrough (GPU, USB)
# 4. Launch VM with proper networking
# 5. Pass the .exe file to the VM for execution
# See: FLOWS.md section "Windows Runtime (Wine Launcher)"
notify-send "VM launcher not implemented yet"
fi
fi