Skip to content

Add files via upload#18

Merged
spiralgang merged 1 commit into
masterfrom
spiralgang-patch-2
Sep 14, 2025
Merged

Add files via upload#18
spiralgang merged 1 commit into
masterfrom
spiralgang-patch-2

Conversation

@spiralgang
Copy link
Copy Markdown
Owner

@spiralgang spiralgang commented Sep 14, 2025

Summary by Sourcery

Add a complete mobile-first web IDE with integrated terminal, editor, proxy, and AI chat features, plug it into an Android WebView app, and wire up an agentic Python backend for AI-powered file operations and build orchestration

New Features:

  • Introduce a full web-based IDE with terminal, code editor, proxy client, AI chat, and settings panels
  • Provide both a monolithic HTML/JS implementation and a modular front-end using separate JS modules
  • Add Android integration with a WebView activity, Gradle config, and manifest to bundle the web IDE as an APK
  • Implement an AI-driven agent backend in Python for file generation, refactoring, shell execution, and audit logging
  • Add build scripts and in-UI APK packaging simulation using JSZip for demo purposes

Enhancements:

  • Minor comment formatting fix in build_apk.sh

Build:

  • Add Android Gradle configuration and build script support for packaging the app

@sourcery-ai
Copy link
Copy Markdown
Contributor

sourcery-ai Bot commented Sep 14, 2025

Reviewer's Guide

This PR bootstraps a full-stack, mobile-first, web-based IDE and agentic build system by uploading two monolithic HTML prototypes, extracting a modular JS frontend, introducing a Python AI agent backend, and adding Android integration to run the IDE in a WebView and simulate APK builds.

Sequence diagram for AI Chat interaction (frontend to backend)

sequenceDiagram
  actor User
  participant Frontend
  participant Backend
  User->>Frontend: Enter question in AI Chat
  Frontend->>Backend: Send prompt to AI API (queryAI)
  Backend->>Backend: Process prompt, call HuggingFace/DeepSeek
  Backend-->>Frontend: Return AI response
  Frontend-->>User: Display AI response in chatbox
Loading

Sequence diagram for APK build simulation in QuantumAIIDE_Monolith.html

sequenceDiagram
  actor User
  participant Frontend
  User->>Frontend: Click "Build APK" button
  Frontend->>Frontend: Zip files as APK (simulate build)
  Frontend-->>User: Download APK (zip) file
Loading

Class diagram for modular JS frontend components

classDiagram
  class files {
    + files: Object
    + openFile(fname)
    + saveFile(content)
    + deleteFile()
    + downloadFile()
  }
  class editor {
    + initEditor(container)
  }
  class terminal {
    + initTerminal(container)
  }
  class ai {
    + initAIChat(container)
    + runAIChat(prompt, source, cb)
  }
  class proxy {
    + initProxy(container)
  }
  class settings {
    + loadSettings(container)
  }
  class utils {
    + androidCompatCheck()
  }

files <|-- editor
files <|-- terminal
files <|-- ai
editor --> files
terminal --> files
ai --> files
settings --> ai
proxy --> utils
Loading

File-Level Changes

Change Details Files
Add standalone HTML IDE prototypes with full app code in single files
  • Upload QuantumWebIDE.html — mobile-first proxy shell IDE using xterm.js
  • Upload QuantumAIIDE_Monolith.html — self-compiling APK agentic IDE with JSZip build simulation
QuantumWebIDE.html
QuantumAIIDE_Monolith.html
Modularize frontend into JS components and wiring
  • Create index.html + main.js to load panels dynamically
  • Split terminal, editor, AI chat, proxy, settings, file store into separate modules
  • Add theme.css and update build_apk.sh minor fix
index.html
main.js
terminal.js
editor.js
ai-chat.js
proxy.js
settings.js
files.js
theme.css
build_apk.sh
Introduce Python agent backend and utilities
  • Add agent.py for agentic GitHub/AI operations with async FastAPI style
  • Add ai.py helper for HF chat completions
  • Add shell.py and audit.py for command execution and logging
agent.py
ai.py
shell.py
audit.py
Add Android native integration and APK build support
  • Add WebView activity in Kotlin and AndroidManifest.xml for loading monolith HTML
  • Add build.gradle configuration for Android app
  • Embed JSZip-based APK build simulation in UI and expose build_apk.sh
QuantumAIIDEWebViewActivity.kt
AndroidManifest.xml
build.gradle
Add reusable AI frontend in ai.js
  • Implement initAIChat and runAIChat functions
  • Move in-memory file context import
  • Handle user input and HF API calls
ai.js

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @spiralgang, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request establishes the foundational elements for a 'QuantumAIIDE' project, envisioning a mobile-first, agentic development environment. It sets up an Android application to serve a web-based Integrated Development Environment (IDE) that integrates a terminal, code editor, proxy capabilities, and an AI-powered chat for development assistance. Complementing the client-side IDE, a Python agent is included to enable advanced functionalities such as AI-driven code manipulation and direct shell command execution, aiming to provide a comprehensive and intelligent development workflow.

Highlights

  • New Android Application: Introduced a new Android application (com.quantumaiide.agent) designed to host a web-based Integrated Development Environment (IDE) within a WebView, making it mobile-first.
  • Web-Based IDE Implementation: Added two versions of a comprehensive web IDE: QuantumAIIDE_Monolith.html (featuring a terminal, code editor, proxy, AI chat, and simulated APK build) and QuantumWebIDE.html (a similar IDE with advanced web features like Web Crypto and OAuth2 examples).
  • Python Agent for AI-Driven Development: Developed a Python-based agent (agent.py) capable of interacting with GitHub repositories, executing shell commands, and leveraging AI models for tasks such as code refactoring and file generation.
  • Modular Web IDE Structure: The web IDE components have been modularized into separate JavaScript files (terminal.js, editor.js, ai.js, proxy.js, settings.js, files.js, utils.js) and a dedicated CSS file (theme.css) for improved organization and maintainability.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes and found some issues that need to be addressed.

Blocking issues:

  • User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities (link)
  • User controlled data in a div.innerHTML is an anti-pattern that can lead to XSS vulnerabilities (link)
  • Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. (link)
  • Found 'subprocess' function 'run' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead. (link)
  • Use of shell=True may introduce security risks if input is not sanitized. (link)

General comments:

  • There’s a lot of duplicated UI and logic across those two massive HTML monoliths—extract common components (styles, header/sidebar panels, and shared scripts) into separate CSS/JS modules to reduce repetition and improve maintainability.
  • Every fetch and GitHub/AI call needs consistent error handling and input validation—wrap network requests (both in browser and in agent.py) with try/catch (or equivalent) and surface clear user‐friendly errors instead of silent failures.
  • Instead of inlining hundreds of lines of script and style in the HTML, break the code into well-scoped modules and use a simple build or templating system so assets can be versioned, tested, and cached independently.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- There’s a lot of duplicated UI and logic across those two massive HTML monoliths—extract common components (styles, header/sidebar panels, and shared scripts) into separate CSS/JS modules to reduce repetition and improve maintainability.
- Every fetch and GitHub/AI call needs consistent error handling and input validation—wrap network requests (both in browser and in agent.py) with try/catch (or equivalent) and surface clear user‐friendly errors instead of silent failures.
- Instead of inlining hundreds of lines of script and style in the HTML, break the code into well-scoped modules and use a simple build or templating system so assets can be versioned, tested, and cached independently.

## Individual Comments

### Comment 1
<location> `settings.js:1` </location>
<code_context>
+import { aiKey } from './ai.js';
+
+export function loadSettings(container) {
</code_context>

<issue_to_address>
Direct assignment to imported 'aiKey' may not update state as expected.

Direct assignment may not synchronize changes across modules. Use a setter or event-based method to ensure updates are properly propagated.
</issue_to_address>

### Comment 2
<location> `files.js:12` </location>
<code_context>
+  return activeFile;
+}
+export function saveFile(content) { files[activeFile] = content; }
+export function deleteFile() { delete files[activeFile]; activeFile = Object.keys(files)[0];}
+export function downloadFile() {
+  const a = document.createElement('a');
</code_context>

<issue_to_address>
deleteFile does not handle case when no files remain after deletion.

If files is empty after deletion, activeFile will be set to undefined, which may cause errors. Add a check to handle this scenario.
</issue_to_address>

### Comment 3
<location> `ai.js:3` </location>
<code_context>
+</manifest>`
+    };
+    let activeFile = "README.md";
+    let aiKey = "";
+    let proxyHeaders = {};
+    let theme = "dark";
</code_context>

<issue_to_address>
aiKey is declared as a local variable, which may limit cross-module updates.

Consider implementing a setter/getter or shared state management if cross-module access or updates to aiKey are required.
</issue_to_address>

### Comment 4
<location> `ai-chat.js:17` </location>
<code_context>
+    let result = await aiExecute(val);
+    addChatMsg('AI', result.message);
+    // If result includes action (code, command), execute directly
+    if (result.action === 'write_file') {
+      await githubWrite(result.file, result.content);
+      auditLog('write_file', result.file);
+    }
+    if (result.action === 'run_shell') {
</code_context>

<issue_to_address>
No error handling for failed githubWrite or auditLog operations.

Please add error handling and user notifications for failures in githubWrite and auditLog to prevent UI inconsistencies.
</issue_to_address>

### Comment 5
<location> `proxy.js:14` </location>
<code_context>
+      const url = document.getElementById('proxy-url').value.trim();
+      const method = document.getElementById('proxy-method').value.trim();
+      let headers = {};
+      try { headers = JSON.parse(document.getElementById('proxy-headers').value || "{}"); } catch(e){}
+      let body = document.getElementById('proxy-body').value.trim();
+      let options = { method, headers };
</code_context>

<issue_to_address>
Silent catch on JSON.parse may hide header parsing errors.

Invalid JSON in headers is ignored, resulting in empty headers. Please add error handling to inform users of parsing failures.
</issue_to_address>

### Comment 6
<location> `terminal.js:31` </location>
<code_context>
+  }
+  if (cmd === 'ls') { term.write(Object.keys(files).join('  ') + '\r\n'); return; }
+  if (cmd.startsWith('cat ')) { term.write((files[cmd.slice(4).trim()] || 'File not found.') + '\r\n'); return; }
+  if (cmd.startsWith('edit ')) { openFile(cmd.slice(5).trim()); term.write('Editing ' + cmd.slice(5).trim() + '\r\n'); return; }
+  if (cmd.startsWith('ai ')) { runAIChat(cmd.slice(3).trim(),"cli",out=>term.write(out+'\r\n')); return; }
+  term.write('Unknown command. Type help.\r\n');
</code_context>

<issue_to_address>
No check for file existence before editing.

Without a file existence check, openFile may fail silently and the editor could display incorrect information. Please add a check and notify the user if the file is missing.
</issue_to_address>

### Comment 7
<location> `audit.py:4` </location>
<code_context>
+import time, json
+def log_action(action, params):
+    entry = {"ts": time.time(), "action": action, "params": params}
+    with open("agent_audit.log", "a") as f:
+        f.write(json.dumps(entry) + "\n")
\ No newline at end of file
</code_context>

<issue_to_address>
No error handling for file write operations in log_action.

Wrap the file write in a try/except block to prevent agent crashes from disk errors.
</issue_to_address>

### Comment 8
<location> `shell.py:4` </location>
<code_context>
+import subprocess
+def run_shell_command(cmd):
+    try:
+        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=120)
+        return result.stdout if result.returncode == 0 else result.stderr
+    except Exception as e:
</code_context>

<issue_to_address>
Use of shell=True may introduce security risks if input is not sanitized.

If cmd comes from user input or external sources, this can enable shell injection. Prefer shell=False with argument lists, or ensure thorough sanitization.
</issue_to_address>

## Security Issues

### Issue 1
<location> `ai.js:34` </location>

<issue_to_address>
**security (javascript.browser.security.insecure-document-method):** User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities

*Source: opengrep*
</issue_to_address>

### Issue 2
<location> `ai.js:34` </location>

<issue_to_address>
**security (javascript.browser.security.insecure-innerhtml):** User controlled data in a `div.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities

*Source: opengrep*
</issue_to_address>

### Issue 3
<location> `shell.py:4` </location>

<issue_to_address>
**security (python.lang.security.audit.dangerous-subprocess-use-audit):** Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'.

*Source: opengrep*
</issue_to_address>

### Issue 4
<location> `shell.py:4` </location>

<issue_to_address>
**security (python.lang.security.audit.subprocess-shell-true):** Found 'subprocess' function 'run' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.

```suggestion
        result = subprocess.run(cmd, shell=False, capture_output=True, text=True, timeout=120)
```

*Source: opengrep*
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread settings.js
@@ -0,0 +1,19 @@
import { aiKey } from './ai.js';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: Direct assignment to imported 'aiKey' may not update state as expected.

Direct assignment may not synchronize changes across modules. Use a setter or event-based method to ensure updates are properly propagated.

Comment thread files.js
return activeFile;
}
export function saveFile(content) { files[activeFile] = content; }
export function deleteFile() { delete files[activeFile]; activeFile = Object.keys(files)[0];}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: deleteFile does not handle case when no files remain after deletion.

If files is empty after deletion, activeFile will be set to undefined, which may cause errors. Add a check to handle this scenario.

Comment thread ai.js
@@ -0,0 +1,51 @@
import { files } from './files.js';

let aiKey = "";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: aiKey is declared as a local variable, which may limit cross-module updates.

Consider implementing a setter/getter or shared state management if cross-module access or updates to aiKey are required.

Comment thread ai-chat.js
Comment on lines +17 to +19
if (result.action === 'write_file') {
await githubWrite(result.file, result.content);
auditLog('write_file', result.file);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (bug_risk): No error handling for failed githubWrite or auditLog operations.

Please add error handling and user notifications for failures in githubWrite and auditLog to prevent UI inconsistencies.

Comment thread proxy.js
const url = document.getElementById('proxy-url').value.trim();
const method = document.getElementById('proxy-method').value.trim();
let headers = {};
try { headers = JSON.parse(document.getElementById('proxy-headers').value || "{}"); } catch(e){}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (bug_risk): Silent catch on JSON.parse may hide header parsing errors.

Invalid JSON in headers is ignored, resulting in empty headers. Please add error handling to inform users of parsing failures.

Comment thread shell.py
import subprocess
def run_shell_command(cmd):
try:
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=120)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 issue (security): Use of shell=True may introduce security risks if input is not sanitized.

If cmd comes from user input or external sources, this can enable shell injection. Prefer shell=False with argument lists, or ensure thorough sanitization.

Comment thread ai.js
let chatbox = document.getElementById('chatbox');
let div = document.createElement('div');
div.className = 'chat-msg';
div.innerHTML = `<span class="${user==='AI'?'chat-ai':'chat-user'}">${user}:</span> <span class="chat-text">${text}</span>`;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security (javascript.browser.security.insecure-document-method): User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities

Source: opengrep

Comment thread ai.js
let chatbox = document.getElementById('chatbox');
let div = document.createElement('div');
div.className = 'chat-msg';
div.innerHTML = `<span class="${user==='AI'?'chat-ai':'chat-user'}">${user}:</span> <span class="chat-text">${text}</span>`;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security (javascript.browser.security.insecure-innerhtml): User controlled data in a div.innerHTML is an anti-pattern that can lead to XSS vulnerabilities

Source: opengrep

Comment thread shell.py
import subprocess
def run_shell_command(cmd):
try:
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=120)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security (python.lang.security.audit.dangerous-subprocess-use-audit): Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'.

Source: opengrep

Comment thread shell.py
import subprocess
def run_shell_command(cmd):
try:
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=120)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security (python.lang.security.audit.subprocess-shell-true): Found 'subprocess' function 'run' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.

Suggested change
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=120)
result = subprocess.run(cmd, shell=False, capture_output=True, text=True, timeout=120)

Source: opengrep

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant amount of new functionality, creating a mobile-first web IDE. However, the current implementation has several critical security vulnerabilities, including multiple avenues for Remote Code Execution and Cross-Site Scripting, which must be addressed immediately. Additionally, there are several critical bugs that will prevent the modular version of the application from running, and other high-severity issues like potential crashes and insecure configurations. I've provided detailed comments on the most severe issues.

Comment thread index.html
Comment on lines +1 to +22
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>QuantumAIIDE Mobile Agentic IDE</title>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<link rel="stylesheet" href="theme.css">
<script src="main.js" type="module"></script>
</head>
<body>
<header><h1>QuantumAIIDE</h1><span id="status"></span></header>
<nav>
<button id="nav-terminal">Terminal</button>
<button id="nav-editor">Editor</button>
<button id="nav-ai">AI Chat</button>
<button id="nav-proxy">Proxy</button>
<button id="nav-settings">Settings</button>
</nav>
<main id="main-panel"></main>
</body>
<!-- References: /reference vault, OWASP, Android10+ UI, DeepSeek API -->
</html> No newline at end of file
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This HTML file serves as the entry point for the modular version of the IDE, but it's missing the necessary <script> tags for third-party dependencies like xterm.js that are used by the JavaScript modules (e.g., terminal.js). This will lead to runtime errors, and the application will not function. These dependencies need to be included.

Comment thread QuantumAIIDE_Monolith.html
Comment thread agent.py
Comment thread ai.js
Comment thread AndroidManifest.xml
Comment thread QuantumAIIDE_Monolith.html
Comment thread ai.py
Comment thread QuantumAIIDE_Monolith.html
Comment thread build.gradle
Comment thread proxy.js
@spiralgang spiralgang merged commit 80e47e7 into master Sep 14, 2025
1 of 13 checks passed
@spiralgang spiralgang deleted the spiralgang-patch-2 branch September 14, 2025 20:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant