Skip to content

Harden for production + wire cross-platform release installers - #12

Merged
dev-josias merged 3 commits into
mainfrom
feat/ai-assistant
Jun 29, 2026
Merged

Harden for production + wire cross-platform release installers#12
dev-josias merged 3 commits into
mainfrom
feat/ai-assistant

Conversation

@dev-josias

Copy link
Copy Markdown
Contributor

Summary

Production-readiness + cross-platform release hardening for the AI-assistant branch. Opening this PR triggers the release-workflow dry-run (full build matrix, no publish) so we can confirm the macOS DMG, Windows MSI, and Linux .deb all build on CI before tagging a real release.

Release pipeline

  • publish now waits on linux + windows + macos (was macOS-only → partial/failed releases)
  • Build Windows MSI from extra/windows/wix/umide.wxs (WiX 3, -arch x64, version templated from Cargo.toml, output UMIDE-windows.msi)
  • Build Linux .deb via cargo deb (new [package.metadata.deb]; bundles binaries + .desktop + icon + metainfo)
  • Renamed extra/linux/umide.desktopdev.umide.umide.desktop (fixes RPM/.deb install; matches metainfo launchable)
  • In-app updater asset names aligned: UMIDE-macos.dmg / umide-linux-x86_64.tar.gz / UMIDE-windows.msi

AI assistant hardening

  • LLM request/connect timeouts (client.rs, openai.rs)
  • run_command wall-clock cap + per-OS shell (cmd /C on Windows, was sh -c only)
  • Linux keyring backend (secret-service) so API keys persist on Linux

Correctness / legal

  • Updater no longer queries lapce/lapce (would self-update users to a different product)
  • Apache-2.0 attribution restored to Lapce + added NOTICE
  • Makefile macOS template/icon paths (UMIDE.app, umide.icns)

Verification

  • ✅ Local: build / clippy / tests (60+) / fmt all green; signed macOS DMG built and launches (UMIDE 0.1.2)
  • ⚠️ MSI/.deb steps run only on CI — this PR's dry-run is the validation
  • ⚠️ Windows MSI is unsigned (needs an Authenticode cert to avoid SmartScreen)

See docs/RELEASE-AND-PARITY.md for the full status and the path to true three-OS parity — including the hard constraint that the iOS Simulator is macOS-only and that Android-emulator embedding on Windows/Linux is the remaining multi-week graphics task.

🤖 Generated with Claude Code

Add an optional AI Assistant panel and a new `umide_agent` engine that
brings a coding agent into UMIDE with the unique ability to see and drive
the embedded Android/iOS emulators in a closed loop.

Engine (crates/umide_agent):
- Streaming Anthropic Messages API client (claude-opus-4-8, adaptive
  thinking, prompt caching, vision), agentic tool loop, cancellation.

Editor integration (crates/umide):
- New optional PanelKind::AiAssistant with a streaming chat panel.
- Read-only tools: read_file / list_dir / grep (workspace-bounded).
- Approval-gated edit_file (buffer-aware, undo-preserving) and run_command,
  surfaced as diff / command cards.
- Vision + device driving: screenshot_device, tap, swipe, type_text,
  press_key, read_logs for Android (adb) and iOS (simctl + idb).
- BYO Anthropic key via OS keychain or ANTHROPIC_API_KEY.
- Dedicated sparkle panel icon.

Purely additive: the editor and embedded emulators are unchanged;
mutations are approval-gated and the agent runs off the UI thread.

18 unit tests cover the wire format, provider/key resolution, the
path-traversal guard, vision encoding, and edit position math.
Production-readiness pass over the AI-assistant branch:

- Release pipeline: `publish` now waits on linux+windows+macos (was macOS-only,
  which shipped partial/failed releases); build a Windows MSI (WiX 3, version
  templated) and a Linux .deb (cargo-deb); align in-app updater asset names.
- Cross-platform code: Linux keyring backend (secret-service); per-OS shell for
  run_command/device tools (was `sh -c` only); run_command wall-clock cap; LLM
  request/connect timeouts.
- Correctness/legal: updater no longer points at lapce/lapce (would self-update
  users to the wrong product); Apache-2.0 attribution to Lapce + NOTICE;
  Makefile template/icon paths; renamed extra/linux/umide.desktop ->
  dev.umide.umide.desktop (fixes RPM/.deb install).
- Includes the in-progress multi-provider AI engine (Anthropic + OpenAI-compat
  backends) and a release/parity plan (docs/RELEASE-AND-PARITY.md).
Addresses the PR #12 release-workflow dry-run failures:
- umide_native: cfg-gate the macOS-only FFI extern block; add no-op C-ABI
  stubs for non-macOS so Windows/Linux link (emulator panel reports
  unavailable at runtime; embedding tracked in docs/RELEASE-AND-PARITY.md).
- release.yml: build the Windows MSI by substituting the version into the
  wix manifest (candle -d preprocessor var did not expand).
- release.yml: skip macOS signing on PR dry-runs (cert is not imported there)
  so packaging validates unsigned.
@dev-josias
dev-josias merged commit d8ce5f7 into main Jun 29, 2026
12 checks passed
@dev-josias
dev-josias deleted the feat/ai-assistant branch June 29, 2026 17:55
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