Merge pull request #3 from logos-co/chore/updateLogosAppName

chore: update name oif logos-app to logos-basecamp
This commit is contained in:
Khushboo-dev-cpp
2026-03-18 14:23:44 +01:00
committed by GitHub
4 changed files with 39 additions and 39 deletions
+1 -1
View File
@@ -250,7 +250,7 @@ Item {
root.result = ""
if (typeof logos === "undefined" || !logos.callModule) {
root.errorText = "Logos bridge not available (run inside logos-app)"
root.errorText = "Logos bridge not available (run inside logos-basecamp)"
return
}
+19 -19
View File
@@ -25,9 +25,9 @@ A comprehensive guide to creating, building, testing, packaging, and distributin
- [4.1 The lgpm CLI](#41-the-lgpm-cli)
- [4.2 Installing from Local Files](#42-installing-from-local-files)
- [4.3 Installing from a Registry](#43-installing-from-a-registry)
- [Part 5: Running in the Logos App](#part-5-running-in-the-logos-app)
- [5.1 Building logos-app](#51-building-logos-app)
- [5.2 Module Types in logos-app](#52-module-types-in-logos-app)
- [Part 5: Running in logos-basecamp](#part-5-running-in-logos-basecamp)
- [5.1 Building logos-basecamp](#51-building-logos-basecamp)
- [5.2 Module Types in logos-basecamp](#52-module-types-in-logos-basecamp)
- [5.3 Development Mode](#53-development-mode)
- [Part 6: Inter-Module Communication](#part-6-inter-module-communication)
- [6.1 The LogosAPI](#61-the-logosapi)
@@ -52,7 +52,7 @@ The **Logos platform** is a modular application framework built in C++ on top of
- **Process isolation** -- each module runs in its own host process (on desktop), communicating via Qt Remote Objects
- **Cross-platform support** -- macOS (arm64, x86_64) and Linux (arm64, x86_64)
- **A package format** (`.lgx`) for distributing modules with platform-specific variants
- **A desktop application shell** (`logos-app`) with a sidebar, tabbed workspace, and plugin management UI
- **A desktop application shell** (`logos-basecamp`) with a sidebar, tabbed workspace, and plugin management UI
- **A CLI runtime** (`logoscore`) for running modules headlessly
## Architecture
@@ -60,7 +60,7 @@ The **Logos platform** is a modular application framework built in C++ on top of
```
+---------------------------------------------------------------+
| Application Layer |
| logos-app (Desktop GUI) or logoscore (CLI Runtime) |
| logos-basecamp (Desktop GUI) or logoscore (CLI Runtime) |
+---------------------------------------------------------------+
| | |
v v v
@@ -94,7 +94,7 @@ The **Logos platform** is a modular application framework built in C++ on top of
| **logos-liblogos** | [logos-co/logos-liblogos](https://github.com/logos-co/logos-liblogos) | Core runtime (`logoscore`, `logos_host`, `liblogos_core`) |
| **logos-package** | [logos-co/logos-package](https://github.com/logos-co/logos-package) | LGX package format library + `lgx` CLI |
| **logos-package-manager-module** | [logos-co/logos-package-manager-module](https://github.com/logos-co/logos-package-manager-module) | Package manager module + `lgpm` CLI |
| **logos-app** | [logos-co/logos-co/logos-app](https://github.com/logos-co/logos-app) | Desktop application shell |
| **logos-basecamp** | [logos-co/logos-basecamp](https://github.com/logos-co/logos-basecamp) | Desktop application shell |
## Prerequisites
@@ -663,24 +663,24 @@ The package manager automatically:
---
## Part 5: Running in the Logos App
## Part 5: Running in logos-basecamp
### 5.1 Building logos-app
### 5.1 Building logos-basecamp
```bash
# Build the full application
nix build 'github:logos-co/logos-app#app' --out-link ./logos-app
nix build 'github:logos-co/logos-basecamp#app' --out-link ./logos-basecamp
# Run it
./logos-app/bin/logos-app
./logos-basecamp/bin/logos-basecamp
# Or build platform-specific distributions:
nix build 'github:logos-co/logos-app#bin-appimage' # Linux AppImage
nix build 'github:logos-co/logos-app#bin-macos-app' # macOS .app bundle
nix build 'github:logos-co/logos-app#bin-macos-dmg' # macOS DMG
nix build 'github:logos-co/logos-basecamp#bin-appimage' # Linux AppImage
nix build 'github:logos-co/logos-basecamp#bin-macos-app' # macOS .app bundle
nix build 'github:logos-co/logos-basecamp#bin-macos-dmg' # macOS DMG
```
### 5.2 Module Types in logos-app
### 5.2 Module Types in logos-basecamp
The application supports three types of modules:
@@ -725,7 +725,7 @@ For rapid iteration on QML UI modules, use the development mode launcher:
```bash
# Build once
nix build 'github:logos-co/logos-app'
nix build 'github:logos-co/logos-basecamp'
# Run with live QML reloading (edits to .qml files take effect immediately)
./run-dev.sh
@@ -992,7 +992,7 @@ Or in `metadata.json`:
}
```
When your module is installed via `lgpm`, its dependencies are automatically resolved and installed first. When loaded via `logos-app`, core module dependencies are loaded before your module.
When your module is installed via `lgpm`, its dependencies are automatically resolved and installed first. When loaded via `logos-basecamp`, core module dependencies are loaded before your module.
---
@@ -1006,7 +1006,7 @@ When your module is installed via `lgpm`, its dependencies are automatically res
| [logos-liblogos](https://github.com/logos-co/logos-liblogos) | Core runtime | `logoscore` (CLI), `logos_host`, `liblogos_core` |
| [logos-package](https://github.com/logos-co/logos-package) | Package format | `lgx` (CLI), `liblgx` (library) |
| [logos-package-manager-module](https://github.com/logos-co/logos-package-manager-module) | Package management | `lgpm` (CLI), `package_manager_plugin` |
| [logos-app](https://github.com/logos-co/logos-app) | Desktop app shell | `LogosApp` (GUI), MDI workspace, plugin loader |
| [logos-basecamp](https://github.com/logos-co/logos-basecamp) | Desktop app shell | `LogosApp` (GUI), MDI workspace, plugin loader |
## Reference: CLI Tools Summary
@@ -1073,7 +1073,7 @@ experimental-features = nix-command flakes
### Module loads but LogosAPI is not available
This happens when running a module outside the full Logos runtime (e.g., in the module viewer). The `LogosAPI` is only available when the module is loaded by `logoscore` or `logos-app`.
This happens when running a module outside the full Logos runtime (e.g., in the module viewer). The `LogosAPI` is only available when the module is loaded by `logoscore` or `logos-basecamp`.
### Build fails finding Qt
@@ -1084,7 +1084,7 @@ nix develop # Enter dev shell with all dependencies
cmake -B build -GNinja && cmake --build build
```
### Module not discovered by logos-app
### Module not discovered by logos-basecamp
Check that:
1. The module binary is in the correct directory (modules dir for core, plugins dir for UI)
+18 -18
View File
@@ -9,7 +9,7 @@ This is Part 2 of the Logos module tutorial series. In [Part 1](tutorial-wrappin
- How QML UI plugins work in the Logos platform
- The `logos.callModule()` bridge that connects QML to core modules
- The project structure and metadata for a QML plugin
- How to build, install, and run your UI inside `logos-app`
- How to build, install, and run your UI inside `logos-basecamp`
**Prerequisites:**
@@ -33,7 +33,7 @@ Before writing code, let's understand the architecture:
| loaded by | loaded by
v v
+---------------------------------------------------------------+
| logos-app |
| logos-basecamp |
| QML sandbox engine | logos_host process |
+---------------------------------------------------------------+
```
@@ -69,13 +69,13 @@ mkdir icons
### 1.2 Add an icon (optional)
Place a PNG icon at `icons/calc.png`. This appears in the `logos-app` sidebar. If you don't have one, the app will use a default icon.
Place a PNG icon at `icons/calc.png`. This appears in the `logos-basecamp` sidebar. If you don't have one, the app will use a default icon.
---
## Step 2: Write `metadata.json`
This tells `logos-app` what your plugin is and how to load it.
This tells `logos-basecamp` what your plugin is and how to load it.
```json
{
@@ -101,7 +101,7 @@ This tells `logos-app` what your plugin is and how to load it.
| `type` | Must be `"ui_qml"` for QML UI plugins |
| `pluginType` | Must be `"qml"` |
| `main` | Entry point QML file — always `"Main.qml"` |
| `dependencies` | Core modules this UI needs. `logos-app` loads these before your UI. |
| `dependencies` | Core modules this UI needs. `logos-basecamp` loads these before your UI. |
| `category` | Groups plugins in the sidebar (e.g., `"tools"`, `"misc"`) |
| `icon` | Path to the sidebar icon, relative to the plugin directory |
@@ -186,7 +186,7 @@ This is the most important part — the function that calls your core module. Ad
// The logos object is injected by the host at runtime.
// It won't exist if you open Main.qml in a standalone QML viewer.
if (typeof logos === "undefined" || !logos.callModule) {
root.errorText = "Logos bridge not available (run inside logos-app)"
root.errorText = "Logos bridge not available (run inside logos-basecamp)"
return
}
@@ -205,7 +205,7 @@ logos.callModule(moduleName, methodName, argsArray)
└── Module name from metadata.json (e.g., "calc_module")
```
The call is synchronous from QML's perspective. Under the hood, `logos-app` routes it via IPC to the `logos_host` process running `calc_module`, which calls `CalcModulePlugin::add()`, which calls `calc_add()` from libcalc. The result comes back through the same chain.
The call is synchronous from QML's perspective. Under the hood, `logos-basecamp` routes it via IPC to the `logos_host` process running `calc_module`, which calls `CalcModulePlugin::add()`, which calls `calc_add()` from libcalc. The result comes back through the same chain.
### 3.3 The complete file
@@ -464,7 +464,7 @@ Item {
root.result = ""
if (typeof logos === "undefined" || !logos.callModule) {
root.errorText = "Logos bridge not available (run inside logos-app)"
root.errorText = "Logos bridge not available (run inside logos-basecamp)"
return
}
@@ -606,12 +606,12 @@ That's it. A QML plugin is just its source files packaged for installation.
---
## Step 6: Run in `logos-app`
## Step 6: Run in `logos-basecamp`
### 6.1 Build `logos-app`
### 6.1 Build `logos-basecamp`
```bash
nix build 'github:logos-co/logos-app#app' --out-link ./logos-app
nix build 'github:logos-co/logos-basecamp#app' --out-link ./logos-basecamp
```
### 6.2 Set up the modules directory
@@ -637,14 +637,14 @@ mkdir -p ui-plugins
### 6.3 Launch
```bash
./logos-app/bin/logos-app \
./logos-basecamp/bin/logos-basecamp \
--modules-dir ./modules \
--ui-plugins-dir ./ui-plugins
```
You should see:
1. The `logos-app` window opens with a sidebar
1. The `logos-basecamp` window opens with a sidebar
2. "Calculator UI" appears as a tab (with your icon if you provided one)
3. Click the tab to see your QML interface
4. Enter numbers and click **Add**, **Multiply**, **Factorial**, or **Fibonacci**
@@ -658,7 +658,7 @@ Here's the full chain when you enter `3` and `5` and click **Add**:
1. QML: Button.onClicked → callTwoOp("add", "3", "5")
2. QML: callTwoOp() → callModule("add", [3, 5])
3. QML: logos.callModule("calc_module", "add", [3, 5])
4. logos-app: Routes call via IPC to logos_host process
4. logos-basecamp: Routes call via IPC to logos_host process
5. logos_host: QMetaObject::invokeMethod(plugin, "add", 3, 5)
6. C++: CalcModulePlugin::add(3, 5) → calc_add(3, 5)
7. C: Returns 8
@@ -676,7 +676,7 @@ For rapid iteration, use development mode. This watches your QML source files an
```bash
# Point QML_UI at your source directory
QML_UI=$(pwd) ./logos-app/bin/logos-app \
QML_UI=$(pwd) ./logos-basecamp/bin/logos-basecamp \
--modules-dir ./modules \
--ui-plugins-dir ./ui-plugins
```
@@ -685,7 +685,7 @@ Edit `Main.qml`, save, and the UI updates without rebuilding.
### 7.2 Debugging
Since QML plugins are sandboxed, you can't use `console.log()` to write to the terminal in production. But in development mode, `console.log()` output appears in the terminal where you launched `logos-app`.
Since QML plugins are sandboxed, you can't use `console.log()` to write to the terminal in production. But in development mode, `console.log()` output appears in the terminal where you launched `logos-basecamp`.
Add debug logging to your bridge function:
@@ -699,7 +699,7 @@ function callModule(method, args) {
}
```
### 7.3 Testing without `logos-app`
### 7.3 Testing without `logos-basecamp`
You can open `Main.qml` in any QML viewer (e.g., `qml` from Qt) to test the layout. The `logos` bridge won't be available, so clicking buttons will show "Logos bridge not available" — but you can verify the layout and styling work correctly.
@@ -732,7 +732,7 @@ nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./pm
./pm/bin/lgpm --modules-dir ./ui-plugins install --file calc_ui.lgx
```
> **Local vs portable:** Local builds of `logos-app` (via `nix build '.#app'`) expect **local** `.lgx` packages. Portable builds (via `nix build '.#bin-bundle-dir'`, `.#bin-appimage`, or `.#bin-macos-app`) expect **portable** `.lgx` packages. See the [logos-app README](https://github.com/logos-co/logos-app/blob/master/README.md) for details.
> **Local vs portable:** Local builds of `logos-basecamp` (via `nix build '.#app'`) expect **local** `.lgx` packages. Portable builds (via `nix build '.#bin-bundle-dir'`, `.#bin-appimage`, or `.#bin-macos-app`) expect **portable** `.lgx` packages. See the [logos-basecamp README](https://github.com/logos-co/logos-basecamp/blob/master/README.md) for details.
---
+1 -1
View File
@@ -729,7 +729,7 @@ nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./pm
./pm/bin/lgpm --modules-dir ./modules install --file calc_module.lgx
```
> **Note:** Local builds of `logoscore` / `logos-app` (via `nix build`) expect **local** `.lgx` packages. Portable builds (via `nix build '.#bin-bundle-dir'`, `.#bin-appimage`, or `.#bin-macos-app`) expect **portable** `.lgx` packages. See the [logos-app README](https://github.com/logos-co/logos-app/blob/master/README.md) for details.
> **Note:** Local builds of `logoscore` / `logos-basecamp` (via `nix build`) expect **local** `.lgx` packages. Portable builds (via `nix build '.#bin-bundle-dir'`, `.#bin-appimage`, or `.#bin-macos-app`) expect **portable** `.lgx` packages. See the [logos-basecamp README](https://github.com/logos-co/logos-basecamp/blob/master/README.md) for details.
---