feat: full pattern matrix — M1 complete, M2 LLM chat, 30+ pattern files #10

Open
pyr0ball wants to merge 31 commits from feat/patterns-expansion into main
2 changed files with 285 additions and 42 deletions
Showing only changes of commit f7639346a6 - Show all commits

View file

@ -8,13 +8,15 @@ proton = "~/.local/share/Steam/logs/proton_log.txt"
retroarch = "~/.config/retroarch/retroarch.log" retroarch = "~/.config/retroarch/retroarch.log"
lutris = "~/.cache/lutris/logs/lutris.log" lutris = "~/.cache/lutris/logs/lutris.log"
# ── AUR / package management ────────────────────────────────────────────────
[[patterns]] [[patterns]]
id = "aur-build-failure" id = "aur-build-failure"
sources = ["journald"] sources = ["journald"]
match_text = "error: failed to build" match_text = "error: failed to build"
severity = "warn" severity = "warn"
title = "AUR package build failed" title = "AUR package build failed"
body = "A package failed to compile from source. This usually means a missing dependency or a broken AUR package." body = "A package failed to compile from source. This usually means a missing dependency or a broken AUR package. Check the output for the specific error, or look up the package comments on aur.archlinux.org."
[[patterns]] [[patterns]]
id = "aur-pgp-key" id = "aur-pgp-key"
@ -22,7 +24,133 @@ sources = ["journald"]
match_text = "unknown public key" match_text = "unknown public key"
severity = "warn" severity = "warn"
title = "Missing PGP key for AUR package" title = "Missing PGP key for AUR package"
body = "The package signature can't be verified. Run: gpg --recv-keys <keyid>" body = "The package signature can't be verified. The key ID will be in the error — run: gpg --recv-keys <keyid>"
[[patterns]]
id = "pacman-db-lock"
sources = ["journald"]
match_text = "could not lock database: File exists"
severity = "warn"
title = "Pacman database is locked"
body = "Another pacman process left a lock file behind. If nothing is running: sudo rm /var/lib/pacman/db.lck — then retry your command."
[[patterns]]
id = "pacman-dep-conflict"
sources = ["journald"]
match_text = "conflicting dependencies"
severity = "warn"
title = "Package dependency conflict"
body = "Two packages need incompatible versions of something. On Arch this sometimes happens with AUR packages. Read the conflict message carefully — one of the packages usually has to be replaced or manually removed first."
[[patterns]]
id = "dkms-build-fail"
sources = ["journald"]
match_text = "Error! Build of"
severity = "warn"
title = "Kernel module failed to build"
body = "A DKMS kernel module didn't compile after a kernel update. This can break hardware that needs out-of-tree drivers (e.g. some wifi cards, VirtualBox, NVIDIA). Check: dkms status — then reinstall the failing module package."
# ── Audio ────────────────────────────────────────────────────────────────────
[[patterns]]
id = "pipewire-connect-fail"
sources = ["journald"]
match_text = "Failed to connect to PipeWire"
severity = "warn"
title = "Audio server not responding"
body = "An app can't reach PipeWire (the audio server). Try: systemctl --user restart pipewire pipewire-pulse — if that doesn't help, log out and back in."
[[patterns]]
id = "wireplumber-fail"
sources = ["journald"]
match_text = "Failed to activate"
severity = "warn"
title = "Audio session manager error"
body = "WirePlumber (the audio session manager) had a problem activating a device. Try: systemctl --user restart wireplumber — if audio devices keep disappearing, check that your user is in the 'audio' group: groups $USER"
# ── Bluetooth ────────────────────────────────────────────────────────────────
[[patterns]]
id = "bluetooth-rfkill-blocked"
sources = ["journald"]
match_text = "Blocked through rfkill"
severity = "warn"
title = "Bluetooth is blocked by rfkill"
body = "The system's radio kill switch is blocking Bluetooth. Run: rfkill list — if Bluetooth shows 'Hard blocked: no, Soft blocked: yes', run: rfkill unblock bluetooth"
[[patterns]]
id = "bluetooth-profile-unavailable"
sources = ["journald"]
match_text = "br-connection-profile-unavailable"
severity = "info"
title = "Bluetooth profile not available"
body = "A Bluetooth device connected but a required profile isn't available. This often means missing codecs. Try: sudo pacman -S pulseaudio-bluetooth (if using PulseAudio) or check that pipewire-bluetooth is installed."
# ── GPU / display ─────────────────────────────────────────────────────────────
[[patterns]]
id = "gpu-hang"
sources = ["kmsg"]
match_text = "GPU HANG"
severity = "warn"
title = "GPU hang detected"
body = "The graphics card stopped responding. Linux recovered, but this can cause game crashes and display glitches. Common causes: overheating, or a driver bug with the current kernel. Check GPU temperature and consider updating mesa or your GPU driver package."
[[patterns]]
id = "xwayland-crash"
sources = ["journald"]
match_text = "XWayland server terminated unexpectedly"
severity = "warn"
title = "XWayland crashed"
body = "The compatibility layer for older X11 apps crashed. Apps using X11 (not Wayland-native) will stop working until you restart your session. If this keeps happening, try running the affected app with WAYLAND_DISPLAY= cleared to force X11 mode."
# ── Hardware / kernel ─────────────────────────────────────────────────────────
[[patterns]]
id = "kernel-driver-firmware"
sources = ["kmsg"]
match_text = "firmware: failed to load"
severity = "warn"
title = "Missing firmware for hardware"
body = "Your system is missing a firmware file for a hardware component. On Arch: sudo pacman -S linux-firmware — then reboot."
[[patterns]]
id = "oom-killer"
sources = ["kmsg"]
match_text = "Out of memory: Kill process"
severity = "warn"
title = "System ran out of memory"
body = "Linux had to kill a process because RAM was exhausted. On macOS, the system compresses memory instead. On Linux you can add swap space as a safety net: consider a swapfile if your machine has limited RAM."
[[patterns]]
id = "disk-io-error"
sources = ["kmsg"]
match_text = "Buffer I/O error on device"
severity = "warn"
title = "Disk read/write error"
body = "A storage device had an I/O error. This can mean a failing drive, a bad cable, or a filesystem problem. Check the device with: sudo smartctl -a /dev/sdX — replace sdX with the device from the error."
# ── Network ──────────────────────────────────────────────────────────────────
[[patterns]]
id = "networkmanager-activation-fail"
sources = ["journald"]
match_text = "Activation failed"
severity = "info"
title = "Network connection failed to activate"
body = "NetworkManager couldn't connect to a network. Common causes: wrong wifi password, a driver issue, or the network requiring a login page. Check: nmcli device status"
# ── Media ────────────────────────────────────────────────────────────────────
[[patterns]]
id = "missing-codec"
sources = ["journald"]
match_text = "GStreamer: Failed to find plugin"
severity = "info"
title = "Missing media codec"
body = "A media codec isn't installed. On Arch: sudo pacman -S gst-plugins-good gst-plugins-bad gst-libav"
# ── Gaming ────────────────────────────────────────────────────────────────────
[[patterns]] [[patterns]]
id = "proton-runtime-missing" id = "proton-runtime-missing"
@ -38,7 +166,7 @@ sources = ["applog:steam"]
match_text = "ERROR: failed to write" match_text = "ERROR: failed to write"
severity = "warn" severity = "warn"
title = "Steam disk write error" title = "Steam disk write error"
body = "Steam can't write to its library folder. Check that you own the directory: ls -la ~/.local/share/Steam" body = "Steam can't write to its library folder. Check ownership: ls -la ~/.local/share/Steam"
[[patterns]] [[patterns]]
id = "retroarch-shader-fail" id = "retroarch-shader-fail"
@ -46,20 +174,4 @@ sources = ["applog:retroarch"]
match_text = "Failed to compile shader" match_text = "Failed to compile shader"
severity = "info" severity = "info"
title = "RetroArch shader failed to compile" title = "RetroArch shader failed to compile"
body = "A graphical shader couldn't load. Try switching to a different shader preset in Settings -> Video -> Shaders." body = "A graphical shader couldn't load. Try switching preset in Settings -> Video -> Shaders."
[[patterns]]
id = "kernel-driver-firmware"
sources = ["kmsg"]
match_text = "firmware: failed to load"
severity = "warn"
title = "Missing firmware for hardware"
body = "Your system is missing a firmware file for a hardware component. On Arch, try: sudo pacman -S linux-firmware"
[[patterns]]
id = "missing-codec"
sources = ["journald"]
match_text = "GStreamer: Failed to find plugin"
severity = "info"
title = "Missing media codec"
body = "A media codec isn't installed. On Arch: sudo pacman -S gst-plugins-good gst-plugins-bad gst-libav"

View file

@ -6,6 +6,9 @@ target_distro_family = "debian"
steam = "~/.local/share/Steam/logs/content_log.txt" steam = "~/.local/share/Steam/logs/content_log.txt"
proton = "~/.local/share/Steam/logs/proton_log.txt" proton = "~/.local/share/Steam/logs/proton_log.txt"
retroarch = "~/.config/retroarch/retroarch.log" retroarch = "~/.config/retroarch/retroarch.log"
libreoffice = "~/.config/libreoffice/4/user/registrymodifications.xcu"
# ── Package management ───────────────────────────────────────────────────────
[[patterns]] [[patterns]]
id = "apt-lock" id = "apt-lock"
@ -13,7 +16,7 @@ sources = ["journald"]
match_text = "Could not get lock /var/lib/dpkg/lock" match_text = "Could not get lock /var/lib/dpkg/lock"
severity = "warn" severity = "warn"
title = "Package manager is locked" title = "Package manager is locked"
body = "Another process is using apt. Wait a moment and try again. If it's stuck: sudo rm /var/lib/dpkg/lock-frontend" body = "Another process is using apt — usually an automatic update running in the background. Wait a minute and try again. If it's been stuck a long time: sudo rm /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock"
[[patterns]] [[patterns]]
id = "apt-unmet-dependency" id = "apt-unmet-dependency"
@ -23,6 +26,150 @@ severity = "warn"
title = "Package dependency conflict" title = "Package dependency conflict"
body = "apt can't resolve a dependency. Try: sudo apt --fix-broken install" body = "apt can't resolve a dependency. Try: sudo apt --fix-broken install"
[[patterns]]
id = "dpkg-interrupted"
sources = ["journald"]
match_text = "dpkg was interrupted"
severity = "warn"
title = "Package install was interrupted"
body = "A previous install didn't complete cleanly. This is like a Windows installer that got cut off mid-run. Fix it with: sudo dpkg --configure -a — then run your install again."
# ── Audio ────────────────────────────────────────────────────────────────────
[[patterns]]
id = "pipewire-connect-fail"
sources = ["journald"]
match_text = "Failed to connect to PipeWire"
severity = "warn"
title = "Audio server not responding"
body = "An app can't reach PipeWire (the audio system). Try: systemctl --user restart pipewire pipewire-pulse — if sound still doesn't work, log out and back in."
[[patterns]]
id = "pulseaudio-connect-fail"
sources = ["journald"]
match_text = "Failed to connect to pulseaudio"
severity = "warn"
title = "Audio server not responding"
body = "An app can't reach the audio server. Try: pulseaudio --kill && pulseaudio --start — if that doesn't help, log out and back in."
# ── Bluetooth ────────────────────────────────────────────────────────────────
[[patterns]]
id = "bluetooth-rfkill-blocked"
sources = ["journald"]
match_text = "Blocked through rfkill"
severity = "warn"
title = "Bluetooth is software-blocked"
body = "A software switch is blocking Bluetooth. Run: rfkill unblock bluetooth — if it's showing Hard blocked, there may be a physical switch or BIOS setting involved."
[[patterns]]
id = "bluetooth-profile-unavailable"
sources = ["journald"]
match_text = "br-connection-profile-unavailable"
severity = "info"
title = "Bluetooth profile not available"
body = "A Bluetooth device connected but a required audio profile isn't available. Try: sudo apt install pulseaudio-module-bluetooth — then restart pulseaudio."
# ── Filesystem / storage ──────────────────────────────────────────────────────
[[patterns]]
id = "ntfs-volume-dirty"
sources = ["kmsg"]
match_text = "volume is dirty"
severity = "warn"
title = "External drive needs Windows check"
body = "An NTFS drive (probably from Windows) wasn't safely ejected and needs a check. Mount it in Windows and run chkdsk, or force-mount on Linux with: sudo mount -o remove_hiberfile /dev/sdX /mnt/point"
[[patterns]]
id = "ntfs-force-required"
sources = ["kmsg"]
match_text = "Dirty flag is set"
severity = "warn"
title = "Drive mounted read-only (dirty flag)"
body = "Linux mounted this NTFS drive read-only because Windows marked it as needing a check. Boot into Windows and do a safe shutdown, or use: sudo ntfsfix /dev/sdX"
[[patterns]]
id = "disk-io-error"
sources = ["kmsg"]
match_text = "Buffer I/O error on device"
severity = "warn"
title = "Disk read/write error"
body = "A storage device had an error. This could be a failing USB drive, a bad cable, or a corrupted filesystem. Check: sudo smartctl -a /dev/sdX — replace sdX with the device shown in the error."
[[patterns]]
id = "usb-device-reset"
sources = ["kmsg"]
match_text = "device descriptor read/64, error"
severity = "info"
title = "USB device not recognised"
body = "A USB device is having trouble connecting. Try a different USB port, or unplug and replug. If it's a hub, try plugging directly into the computer."
# ── Hardware / kernel ─────────────────────────────────────────────────────────
[[patterns]]
id = "kernel-driver-firmware"
sources = ["kmsg"]
match_text = "firmware: failed to load"
severity = "warn"
title = "Missing firmware for hardware"
body = "Your system is missing a firmware file. On Debian/Ubuntu/Mint: sudo apt install firmware-linux firmware-linux-nonfree — then reboot."
[[patterns]]
id = "oom-killer"
sources = ["kmsg"]
match_text = "Out of memory: Kill process"
severity = "warn"
title = "System ran out of memory"
body = "Linux had to forcibly close a program to free RAM. Windows handles this differently with virtual memory. If this keeps happening, consider adding a swap file or closing more background apps."
[[patterns]]
id = "gpu-hang"
sources = ["kmsg"]
match_text = "GPU HANG"
severity = "warn"
title = "GPU hang detected"
body = "The graphics card stopped responding. Linux recovered, but games or video apps may have crashed. Check for overheating, and make sure your GPU drivers are up to date."
# ── Network ──────────────────────────────────────────────────────────────────
[[patterns]]
id = "networkmanager-activation-fail"
sources = ["journald"]
match_text = "Activation failed"
severity = "info"
title = "Network connection failed"
body = "NetworkManager couldn't connect. Common causes: wrong wifi password, a captive portal (hotel/coffee shop wifi), or a driver issue. Check: nmcli device status"
# ── Printing ──────────────────────────────────────────────────────────────────
[[patterns]]
id = "cups-server-error"
sources = ["journald"]
match_text = "Unable to connect to CUPS server"
severity = "info"
title = "Printer service not running"
body = "The print server (CUPS) isn't running. Start it: sudo systemctl start cups — and enable it to start automatically: sudo systemctl enable cups"
# ── Media ────────────────────────────────────────────────────────────────────
[[patterns]]
id = "missing-codec"
sources = ["journald"]
match_text = "GStreamer: Failed to find plugin"
severity = "info"
title = "Missing media codec"
body = "A media codec isn't installed. On Ubuntu/Mint: sudo apt install ubuntu-restricted-extras — this installs common video, audio, and font packages."
[[patterns]]
id = "snap-confinement"
sources = ["journald"]
match_text = "snap: cannot use strict"
severity = "info"
title = "Snap package permission issue"
body = "A Snap package is having permission trouble. Try running it with --devmode, or look for a Flatpak or apt alternative. Note: Snap is disabled by default on Linux Mint — use apt or Flatpak instead."
# ── Gaming ────────────────────────────────────────────────────────────────────
[[patterns]] [[patterns]]
id = "proton-runtime-missing" id = "proton-runtime-missing"
sources = ["applog:proton"] sources = ["applog:proton"]
@ -32,25 +179,9 @@ title = "Proton runtime issue"
body = "Steam Proton couldn't find a required file. Right-click the game -> Properties -> Local Files -> Verify game files." body = "Steam Proton couldn't find a required file. Right-click the game -> Properties -> Local Files -> Verify game files."
[[patterns]] [[patterns]]
id = "kernel-driver-firmware" id = "steam-disk-write"
sources = ["kmsg"] sources = ["applog:steam"]
match_text = "firmware: failed to load" match_text = "ERROR: failed to write"
severity = "warn" severity = "warn"
title = "Missing firmware for hardware" title = "Steam disk write error"
body = "Your system is missing a firmware file. On Debian/Ubuntu/Mint: sudo apt install firmware-linux firmware-linux-nonfree" body = "Steam can't write to its library folder. Check: ls -la ~/.local/share/Steam"
[[patterns]]
id = "missing-codec"
sources = ["journald"]
match_text = "GStreamer: Failed to find plugin"
severity = "info"
title = "Missing media codec"
body = "A media codec isn't installed. Try: sudo apt install ubuntu-restricted-extras"
[[patterns]]
id = "snap-confinement"
sources = ["journald"]
match_text = "snap: cannot use strict"
severity = "info"
title = "Snap package confinement issue"
body = "A Snap package is having permission trouble. Try running it with --devmode, or look for a Flatpak or apt alternative."