ERP Chatbot Dashboard
This page monitors which Android APK and Windows installer builds are currently deployed, and shows the per-platform auto-update / force-update status for each client. All data is derived server-side from public/downloads/ and the backend VersionController — no outbound calls are made.
Android APKs are served from public/downloads/; Windows installers from public/downloads/windows/. Drop a new build into the matching folder and reload this page to see it listed. The enforced minimum versions come straight from App\Http\Controllers\Api\Chatbot\VersionController (read live via reflection, so this page always matches what /version/check actually enforces).
| Platform | Auto-update | Mechanism | Detail |
|---|---|---|---|
| Android (erp-ai-chatbot-mobile) | No | Force-update gate via POST /api/v1/chatbot/version/check
POST /api/v1/chatbot/version/check
|
On every launch the mobile app posts {app_version, build_number, platform} to /version/check. The backend compares against VersionController::MIN_VERSIONS['android']; if the app is below the minimum it returns update_required: true with an update_url pointing at the latest APK. The mobile app then renders its UpdateRequiredScreen (App.js) which blocks the chat until the user taps 'Download Update' (opens the APK URL in the browser) and manually sideloads the new APK. There is no silent/in-place auto-update — install is a manual sideload.
Relevant client files
To add auto-update
|
| Windows (erp-ai-chatbot-desktop, Electron + React) | No | None wired |
The desktop app was rebuilt with React + Electron. electron-builder is present (devDependency, for packaging into NSIS + portable .exe) but electron-updater is NOT a dependency and autoUpdater is not imported in electron/main.js. The renderer declares a versionCheck endpoint in src/config/api.js and a getVersionInfo() helper in src/config/version.js, but neither is called anywhere — the version check is not wired post-rebuild. The backend VersionController has no 'windows'/'desktop' entry in MIN_VERSIONS (only android/ios), so even if the desktop sent platform:'desktop' the backend would fall back to its default min and return no Windows update_url.
Relevant client files
To add auto-update
|
| Version | Filename | Size | Deployed | Download |
|---|---|---|---|---|
| v1.0.9 Current = min enforced | erp-ai-chatbot-v1.0.9.apk | 67 MB | 2026-08-03 10:44 |
The mobile app sends its app_version to POST /api/v1/chatbot/version/check on launch; if it is below MIN_VERSIONS['android'] the backend returns update_required: true with the update_url above, and the app blocks chat until the user manually sideloads the new APK.
| Version | Type | Filename | Size | Deployed | Download |
|---|---|---|---|---|---|
| v1.1.6 Current | NSIS installer | IRIS-1.1.6-Setup-windows-x64.exe | 134.3 MB | 2026-08-03 10:03 | |
| v1.1.6 | Portable | IRIS-1.1.6-windows-x64.exe | 134.1 MB | 2026-08-03 10:03 |
windows/desktop entry
To enable Windows auto-update: add electron-updater as a dependency and wire autoUpdater in electron/main.js with a feed URL, add a windows entry to VersionController::MIN_VERSIONS plus a Windows update_url, and host the latest installer + latest.yml under public/downloads/windows/.
| Field | Description |
|---|---|
| app_version | string (e.g. "1.0.2") |
| build_number | integer (optional, not used in the comparison) |
| platform | string: "android" | "ios" (windows/desktop not yet supported) |
| Field | Description |
|---|---|
| allowed | boolean — true if app_version >= MIN_VERSIONS[platform] |
| current_version | string — echoed back app_version |
| min_version | string — the enforced floor for this platform |
| update_required | boolean — true when allowed is false |
| update_url | string|null — APK download URL when an update is required (android only); null otherwise |
| update_message | string|null — message shown in the mobile UpdateRequiredScreen |
| Platform | Min version |
|---|---|
| android | v1.0.9 |
| ios | v1.0.0 |
Both client (chatbotService.checkVersion) and backend (VersionController::check catch block) default to allowed:true on error, so a broken check never bricks the app.