Commit graph

7 commits

Author SHA1 Message Date
c356c1d4c5 feat(patterns): add boot, SSH, Flatpak, AppArmor, XWayland patterns across all 25 distro files
Adds 141 new pattern entries via expansion script:

Universal (all 25 files):
- slow-boot-network-wait: detect NetworkManager-wait-online stalling boot
- slow-boot-device-timeout: detect fstab entries for disconnected devices
- slow-boot-long-running-job: surface slow service with systemd-analyze hint
- ssh-permissions-key: catch unprotected private key file warning
- flatpak-missing-runtime: detect missing Flatpak runtime with update/reinstall advice

Per distro family:
- apparmor-denial: added to windows-to-debian (only missing debian target)
- xwayland-crash: added to all files missing it, with distro-correct install cmd
  (apt/pacman/dnf/zypper per target family)

All 42 Rust unit tests pass.
2026-05-24 22:00:23 -07:00
d7c41f07fe feat(patterns): add missing-shared-library pattern to all distro families
Real-world trigger: libQt6PrintSupport.so.6 missing from CheatEngine
portable binary on Linux Mint 22.3.

Windows/macOS migrants double-click a binary, nothing happens, and they
have no idea why — the dynamic linker error goes to journald silently.
Robin catches 'cannot open shared object file: No such file or directory'
in journald and explains the Linux shared library model, pointing to the
right package manager command (apt/pacman/dnf/zypper) per distro family.

Also documents why 'pip install pyqt6' doesn't fix system library errors.

Added to 23 pattern files covering all source OS / target distro family
combinations.
2026-05-20 13:14:36 -07:00
e4a682be2f feat(patterns): mobile-origin users + dual-boot supplement system
New SourceOs variants: Android, IpadOs — routed to android-to-* and
ipad-to-* pattern files respectively. Pattern bodies assume zero terminal
experience; every command explained from first principles with App Store /
iOS analogies.

Dual-boot supplement system: PatternFile::extend() + load_supplement()
in patterns.rs; lib.rs loads dualboot-{windows,macos}.toml on top of the
primary pattern file when migration.dual_boot_with is set. Supplement
covers NTFS dirty flag from Fast Startup, clock skew (RTC local vs UTC),
GRUB overwrite by Windows Update, BitLocker, APFS/HFS+ access, T2 Secure
Boot.

complete_onboarding() now accepts dual_boot_with: Option<String> and
normalises it to "windows"/"macos". Onboarding.vue becomes a 3-step flow:
source OS -> (Linux distro if linux) -> (dual-boot if windows/macos).
Mobile users skip the dual-boot step entirely.

10 new pattern files (8 mobile + 2 supplements), config.rs tests updated.
2026-05-19 09:32:18 -07:00
19286e9860 feat(patterns): full Linux-to-Linux distro matrix + M2 LLM chat wiring
Pattern files: 12 cross-family migration pairs covering debian, fedora, arch,
opensuse — each tuned to the user's prior tooling (apt, dnf, pacman, zypper).
Includes the custom linux-to-arch file for experienced distro-hoppers and
the macos-to-arch / windows-to-debian expansions from the prior session.

Code changes:
- patterns::load() accepts source_distro_family: Option<&str> — tries
  specific debian-to-arch.toml before falling back to linux-to-arch.toml
- MigrationConfig adds source_distro_family: Option<String> with serde default
- complete_onboarding() accepts optional source_distro arg and derives family
  via distro_family() for Linux-to-Linux migrations
- llm.rs: Ollama streaming client with Vec<u8> buffer for UTF-8 safety,
  emit errors logged not silenced
- commands::chat: spawns stream task, returns immediately so frontend
  isn't blocked waiting for full LLM response
- lib.rs: registers mod llm and commands::chat in invoke_handler
2026-05-19 08:24:06 -07:00
89271f08f8 feat(patterns): add linux-to-arch pattern set for experienced distro-hopper on CachyOS
Targets an experienced Debian/Fedora user on first Arch install. Body text
is terse and technical — no hand-holding, just Arch-specific gotchas.

- pacman.log as watched applog source (catches terminal pacman/AUR runs)
- pacman/AUR: db lock, dep conflicts, conflicting files, build failures,
  PGP keys, missing makedepends, partial upgrade warning, Chaotic-AUR sig
- DKMS: build failures + CachyOS kernel module signature mismatch
- System: locale not generated (Arch vs Debian difference), systemd-resolved,
  OOM (zram suggestion), disk I/O
- Audio: PipeWire/WirePlumber, Bluetooth rfkill + profile
- GPU: hang (mesa-git/DKMS version mismatch context), XWayland crash
- Gaming: Proton, Lutris Wine runner
- Network: NetworkManager + Realtek firmware callout for CachyOS
2026-05-19 08:10:13 -07:00
f7639346a6 feat(patterns): expand macOS-to-Arch and Windows-to-Debian pattern sets
macOS-to-Arch: +9 patterns (pacman lock, dep conflict, DKMS build fail,
PipeWire, WirePlumber, Bluetooth rfkill/profile, GPU hang, XWayland crash,
OOM killer, disk I/O, NetworkManager)

Windows-to-Debian: +11 patterns (dpkg interrupted, PipeWire, PulseAudio,
Bluetooth rfkill/profile, NTFS dirty/force flags, disk I/O, USB reset,
OOM killer, GPU hang, NetworkManager, CUPS unavailable)

All patterns target sources Robin actually watches: journald, kmsg, applog.
match_text strings use invariant substrings from real log output.
2026-05-19 08:07:22 -07:00
8195ad98b0 feat(m1): starter pattern files — macos-to-arch and windows-to-debian 2026-05-18 18:25:11 -07:00