You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue tracks upgrade-path findings discovered while validating the merged Ubuntu Desktop work from #29 on a real Ubuntu installation.
The validation upgraded an existing OpenMausBot 0.1.7 DEB installation to a locally built and fully verified 0.1.27 package on Ubuntu 24.04 x86_64 with GNOME/X11. Clean-package verification passed, but the real in-place upgrade exposed behavior that extraction-only checks cannot detect.
This is an accumulating validation issue. We will keep adding confirmed findings here and implement them after the verification pass is complete.
Product contract
An Ubuntu user should be able to:
Download OpenMausBot.
Install or upgrade it through the normal desktop/package flow.
Open it and use the supported features without a terminal, manual chmod, path configuration, or separate CUA Driver installation.
Only consent that must belong to the user should remain interactive: administrator authorization, OS screen/control permission, OAuth login, and credentials for optional paid services.
Confirmed findings
1. A DEB upgrade can retain unsafe legacy directory modes
Make an in-place DEB upgrade repair the exact app-owned executable path automatically.
The new 0.1.27 DEB contains these directories as root:root 0755, but upgrading over the existing 0.1.7 installation retained legacy 0775 modes for:
/opt/OpenMausBot
/opt/OpenMausBot/resources
The bundled CUA Driver correctly refuses a group-writable parent path, so local computer control remained unavailable after an otherwise successful upgrade. Applying 0755 to those two directories and rerunning the installed-package smoke made the real bundled CUA runtime pass.
The permanent fix should be an idempotent DEB install/upgrade hook that repairs and verifies only the exact app-owned directories. Users must never be asked to run chmod themselves, and the runtime validator must not be weakened.
2. CI does not currently prove the real in-place upgrade path
Add a DEB upgrade regression lane, not only clean extraction/install checks.
The package verifier correctly validated the modes stored in the newly built archive, but that could not reveal modes preserved from an older installed package.
The regression lane should:
Install the oldest supported Ubuntu DEB fixture.
Upgrade it with the newly built DEB.
Assert root:root 0755 on every parent of the bundled driver.
Launch /opt/OpenMausBot/openmausbot with CUA_DRIVER_PATH unset.
Prove the bundled driver is selected and ready after the explicit in-app opt-in.
Prove normal quit and hard-death cleanup leave no daemon, socket, PID file, stale descriptor, or private AppImage stage.
Prove bots, messages, configuration, and encrypted credentials survive the upgrade.
3. Optional managed-service latency can delay desktop readiness
Ensure an unavailable or slow managed Composio service cannot prevent the desktop window from becoming usable.
The first packaged smoke timed out while startup waited for the managed Composio installation request in a restricted-network environment. The complete Linux smoke passed once the optional broker dependency was made deterministic, and the normal online launch also succeeded.
This is cross-platform startup behavior discovered during Ubuntu validation. The product contract should be explicit: chat and local engines must open promptly when an optional hosted integration is offline, slow, or blocked. CI should not depend on the public broker for desktop-readiness assertions.
4. Managed Connected Apps inventory endpoint is out of sync
Restore the complete Connected Apps inventory contract or split this into a dedicated broker issue once ownership is confirmed.
On the installed app:
managed Composio registration succeeded;
/api/connectors/catalog returned the live API catalog;
/api/connectors?services=gmail,github returned 200 with correct per-service states;
/api/connectors/connected returned 404 {"error":"not found"} because the hosted broker did not expose the expected /v1/connectors/connected route.
The UI catches that error, but the Connected tab can appear empty even when the rest of managed Composio is healthy. This is not Ubuntu-specific, but it was found in the Ubuntu end-user validation and belongs here until it is assigned to the correct app or broker fix.
Confirmed working in the same validation
0.1.27 DEB installed over 0.1.7 without losing the two existing bots or their messages.
Credential migration created credentials.bin with mode 0600.
The real installed Electron window rendered with native Ubuntu window chrome.
The embedded server answered /api/health with the expected app identity and static UI enabled.
The bundled CUA Driver 0.19.3 passed the installed-package smoke after repairing the inherited directory modes.
A real Codex turn returned the expected response; the temporary validation bot was deleted afterward.
Grok, Claude, Codex, Antigravity, and OpenCode Go were detected as available on the host.
The updater correctly reported 0.1.27 as current.
Unit, type, packaged-server, Linux package, AppImage, X11, guarded Wayland, lifecycle, and hard-death smoke suites passed.
Final acceptance criteria
A supported old Ubuntu DEB upgrades to the current version through the normal package flow with no terminal steps.
Clean install and upgrade produce the same secure runtime modes and ownership.
The first launch works online, offline, and with a slow optional broker.
Supported local engines and ordinary chat remain usable without Box or self-hosted Composio credentials.
Local computer control needs only the explicit in-app consent required by the security model; driver installation and filesystem repair are automatic.
GNOME/X11 and GNOME/Wayland show truthful capability states and never ask users to configure implementation details.
Existing bots, messages, settings, and encrypted credentials survive the upgrade.
CI installs and runs the actual upgraded DEB payload, rather than validating only an extracted archive.
Summary
This issue tracks upgrade-path findings discovered while validating the merged Ubuntu Desktop work from #29 on a real Ubuntu installation.
The validation upgraded an existing OpenMausBot
0.1.7DEB installation to a locally built and fully verified0.1.27package on Ubuntu 24.04 x86_64 with GNOME/X11. Clean-package verification passed, but the real in-place upgrade exposed behavior that extraction-only checks cannot detect.This is an accumulating validation issue. We will keep adding confirmed findings here and implement them after the verification pass is complete.
Product contract
An Ubuntu user should be able to:
chmod, path configuration, or separate CUA Driver installation.Only consent that must belong to the user should remain interactive: administrator authorization, OS screen/control permission, OAuth login, and credentials for optional paid services.
Confirmed findings
1. A DEB upgrade can retain unsafe legacy directory modes
The new
0.1.27DEB contains these directories asroot:root 0755, but upgrading over the existing0.1.7installation retained legacy0775modes for:The bundled CUA Driver correctly refuses a group-writable parent path, so local computer control remained unavailable after an otherwise successful upgrade. Applying
0755to those two directories and rerunning the installed-package smoke made the real bundled CUA runtime pass.The permanent fix should be an idempotent DEB install/upgrade hook that repairs and verifies only the exact app-owned directories. Users must never be asked to run
chmodthemselves, and the runtime validator must not be weakened.2. CI does not currently prove the real in-place upgrade path
The package verifier correctly validated the modes stored in the newly built archive, but that could not reveal modes preserved from an older installed package.
The regression lane should:
root:root 0755on every parent of the bundled driver./opt/OpenMausBot/openmausbotwithCUA_DRIVER_PATHunset.3. Optional managed-service latency can delay desktop readiness
The first packaged smoke timed out while startup waited for the managed Composio installation request in a restricted-network environment. The complete Linux smoke passed once the optional broker dependency was made deterministic, and the normal online launch also succeeded.
This is cross-platform startup behavior discovered during Ubuntu validation. The product contract should be explicit: chat and local engines must open promptly when an optional hosted integration is offline, slow, or blocked. CI should not depend on the public broker for desktop-readiness assertions.
4. Managed Connected Apps inventory endpoint is out of sync
On the installed app:
/api/connectors/catalogreturned the live API catalog;/api/connectors?services=gmail,githubreturned200with correct per-service states;/api/connectors/connectedreturned404 {"error":"not found"}because the hosted broker did not expose the expected/v1/connectors/connectedroute.The UI catches that error, but the Connected tab can appear empty even when the rest of managed Composio is healthy. This is not Ubuntu-specific, but it was found in the Ubuntu end-user validation and belongs here until it is assigned to the correct app or broker fix.
Confirmed working in the same validation
0.1.27DEB installed over0.1.7without losing the two existing bots or their messages.credentials.binwith mode0600./api/healthwith the expected app identity and static UI enabled.0.19.3passed the installed-package smoke after repairing the inherited directory modes.0.1.27as current.Final acceptance criteria
Related umbrella: #29