scriptura- a proposed AI powered IDE that actively developing toward v1
A hybrid Qt/Rust text editor with project file browsing — Qt for the UI, Rust for safe backend services.
Note: This project is at an early development stage which expects bugs and occasional broken features.
Scriptura uses a dual-language architecture:
| Layer | Language | Technology | Responsibility |
|---|---|---|---|
| UI Layer | C++ | Qt 6 Widgets | All visual components (editor, panels, menus, dialogs) |
| Adapter Layer | C++ | Qt + C FFI | Thin wrappers bridging Qt signals/slots to Rust callbacks |
| Backend Layer | Rust | Pure Rust (no Qt) | LSP/DAP protocol, event bus, plugin manager, task runner, updater, workspace, config, permissions |
The backend services are compiled into a static library (libscriptura_backend.a) via Cargo and linked into the C++ executable. Cross-language communication uses C FFI (extern "C") with JSON strings for complex data. All state management and protocol handling runs in safe Rust.
- Project-based workflow: Open a project directory to browse files
- File tree sidebar: Navigate project structure with clickable folders
- Directory navigation: "Go Up" button to navigate to parent directories
- Tabbed editing: Multiple files open in tabs
- Qt 6 (with Widgets, Network, Sql, and LinguistTools modules)
- CMake 3.16+
- C++17 compiler (GCC, Clang, MSVC)
- Rust toolchain (for building the backend) — Install via rustup:
curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh
./build.sh./build.sh Release# Build Rust backend first
cd src/rust_backend && cargo build --release && cd ../..
# Build C++ project
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j$(nproc)./run.shOr directly:
./cmake-build-Debug/scripturaPrebuilt binaries are produced by CI (.github/workflows/build.yml / deploy.yml).
The macOS build (scriptura.app) is unsigned and not notarized (no Apple Developer account is configured in CI). macOS Gatekeeper will therefore block the first launch with "“Scriptura” can’t be opened because it is from an unidentified developer" or "damaged and can’t be opened".
To bypass the check on macOS:
Option 1 — Right-click Open (easiest)
- In Finder, locate
scriptura.app(do NOT use Launchpad). - Control-click (or right-click) the app and choose Open.
- In the dialog, click Open again. The app is now whitelisted for future launches.
Option 2 — Terminal (removes the quarantine flag)
xattr -cr /path/to/scriptura.appRun this once after downloading/extracting the app, then open it normally.
Option 3 — Allow apps from anywhere (macOS Sequoia+ may need this)
sudo spctl --master-disable # allows apps from "Anywhere" in System Settings > Privacy & Security
# ... open the app, then optionally re-enable:
sudo spctl --master-enableIf macOS still reports the app as damaged, Option 2 (
xattr -cr) is the reliable fix — it clears thecom.apple.quarantineattribute added when the archive was downloaded.
scriptura/
├── src/
│ ├── rust_backend/ # Rust backend library (Cargo project)
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs # Module tree & helpers
│ │ ├── ffi.rs # All C FFI exports (~180 functions)
│ │ ├── eventbus.rs # Pub/sub event system
│ │ ├── lsp/ # LSP protocol client
│ │ ├── dap/ # DAP protocol client
│ │ ├── plugin/ # Plugin manager & crash handler
│ │ ├── service_locator.rs, task_runner.rs, updater.rs, ...
│ │ └── workspace.rs, permission.rs, language_registry.rs, ...
│ ├── rust_adapter.cpp/h # C++ wrappers bridging Qt ↔ Rust FFI
│ ├── *.cpp, *.h, *.ui # Qt UI layer (code editor, panels, etc.)
│ ├── main.cpp # Application entry point
│ └── ...
├── include/
│ └── scriptura/
│ ├── rust_backend.h # C FFI header for all backend services
│ └── plugininterface.h # Plugin SDK interface
├── docs/ # Documentation
├── .github/workflows/ # CI/CD workflows
└── CMakeLists.txt # CMake build system