Record the Caddy reverse-proxy at /etc/caddy/ (14 *.localhost sites,
mkcert TLS, systemd caddy.service) as a manual override in
docs/tech/manual-overrides.md - no caddy Ansible role exists yet.
Add a 'Local Dev Services' section to docs/tech/stack.md listing all
*.localhost sites and useful Caddy commands.
New learning record docs/learnings/2026-07-06-caddy-onlyoffice-mcp-sse-
investigation.md: Caddy emits 'context canceled' SSE aborts (~1.5ms) on
onlyoffice.localhost/mcp -> localhost:3847. Upstream verified alive
(HTTP 406 to plain GET = expected). Handed off to GitLab issue
satware/mcp/onlyoffice#92 with 5 hypotheses, 7 tasks, and a proposed
flush_interval -1 + transport http { versions 1.1 } mitigation (not
applied yet to avoid masking root cause).
11 KiB
11 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Documented local dev services in
docs/tech/stack.md: Caddy (systemdcaddy.serviceon port 443) with 14*.localhostsites and mkcert TLS at/etc/caddy/. Registered as a manual override indocs/tech/manual-overrides.md(nocaddyAnsible role exists yet) (2026-07-06). - Investigation learning record
docs/learnings/2026-07-06-caddy-onlyoffice-mcp-sse-investigation.md: Caddycontext canceledSSE aborts (~1.5ms) ononlyoffice.localhost/mcpforwarded tolocalhost:3847(OnlyOffice MCP server). Upstream verified alive (HTTP 406 to plain GET = expected). Handed off to GitLab issue satware/mcp/onlyoffice#92 with 5 hypotheses, 7 investigation tasks, and a proposed Caddyflush_interval -1+transport http { versions 1.1 }mitigation (not applied yet) (2026-07-06).
Fixed
- tuigreet boot error: removed invalid
--numlockflag from greetd config (not a valid tuigreet parameter). Replaced X11-onlynumlockx onin Hyprland with nativenumlock_by_default = truein theinputsection (2026-06-01). - hypridle SEGV crash loop (ADR N/A, hotfix): sdbus-cpp 2.3.0 had an ABI incompatibility causing hypridle to SIGSEGV in
libsdbus-c++.so.2registerSignalHandler. Fixed by upgrading sdbus-cpp from 2.3.0-1 to 2.3.1-1 (Arch upstream, pulled ahead of Manjaro mirror sync). Also resolves latent ABI issues for hyprlock and xdg-desktop-portal-hyprland (2026-05-22).
Added
- Waybar USB module: auto-mount USB sticks via udisks2, show hover details (device/model/size/fs/mountpoint), left-click opens in yazi, right-click ejects. Script at
~/.config/waybar/scripts/usb.sh, Ansible-managed viahyprlandrole templatewaybar_usb_script.sh.j2(2026-05-22). udisks2explicitly listed inhyprland_packages(was transitive dep of Dolphin; now direct dep of USB module) (2026-05-22).- Yazi optional deps provisioned via Ansible:
chafa,7zip,resvgadded tohyprland_packages(2026-05-22). - X11 package removal list
hyprland_packages_removeinansible/vars/main.ymlwith corresponding task inhyprlandrole — removesxclipandxselon Wayland-only system (2026-05-22). - ADR 0006: Chrome/Chromium normalization and cleanup decision record (2026-05-22).
- New Ansible role
ansible/roles/system-upgrade/that runs as the first role inworkstation.yml. Performs a fullpacman -Syu, dual-installslinux612(LTS, fallback) andlinux70(stable, new default) kernels with matching headers, and verifies both initramfs images and GRUB menu entries post-install. Invoke stand-alone withansible-playbook ansible/workstation.yml --tags system-upgrade; idempotent on re-runs (2026-05-18). docs/adr/0002-kernel-and-nvidia-strategy.md— ADR documenting the LTS+stable kernel choice and the575xx → 595.71NVIDIA migration for Hyprland/Wayland preparation (2026-05-18).- Pre-flight safety gate in the new role: aborts if free space on
/drops belowmin_free_root_gb(5 GiB by default) (2026-05-18). - Comprehensive NVMe benchmark for Samsung PM9A1 before firmware update: SMART health, hdparm, fio seq/rand benchmarks (2026-04-02). See
docs/tech/nvme-benchmark-pre-gxa7802q.md. - CLI suite update script
scripts/update-cli-suite.shfor Manjaro/Arch tool maintenance (2026-04-02). - Created formal stability tests report documenting the 2026-03-17 memory management improvements (2026-03-17).
- System stability improvements: enabled
systemd-oomdandzswapvia Ansible (2026-03-17). - Memory resource limits for Firebird and Mailpit Docker containers (2026-03-17).
- Implemented and verified advanced memory optimizations: zswap 30% pool, THP madvise, and proactive kernel reclaim tuning (2026-03-17).
- Integrated 16GB swap file management into Ansible roles for consistency and persistence (2026-03-17).
- Comprehensive health report for
mw-pfeddersheim-workstation(2026-03-09).
Removed
alesi-routine-morning.service/alesi-routine-morning.timeruser-level systemd units — daily 07:45 morning routine was failing (exit 128, git outside repo). Scriptscripts/daily-routine.shretained for manual use (2026-05-26).- Tier 1 package cleanup (ADR 0007): removed 25 X11/KDE/legacy packages via Ansible — lightdm, lightdm-slick-greeter, lightdm-settings, sddm, sddm-kcm, sddm-breath-theme, xf86-video-{amdgpu,ati,intel,nouveau,vesa}, xf86-input-synaptics, xterm, xorg-{twm,xinit,xkill,server-xvfb}, x11vnc, numlockx, startup-notification, illyria-wallpaper, ntp, spectacle, pamac-tray-icon-plasma. All have Wayland-native replacements already in use. Frees ~80-120 MiB direct + cascade deps (2026-05-22).
- Tier 2 package cleanup (ADR 0007): removed KDE Plasma stack — kwin, plasma-desktop, plasma-workspace, kdeplasma-addons, plasma-nm, plasma-pa, plasma-x11-session, kde-gtk-config, powerdevil, xdg-desktop-portal-kde, plasma-integration, dolphin, dolphin-plugins, kdegraphics-thumbnailers. Plus 45 cascade orphan deps. Dolphin replaced by yazi. Frees ~400 MiB total (2026-05-22).
- Tier 3 package cleanup (ADR 0007): removed ruby (38 packages), love, xorg-server, xf86-input-libinput. No active Ruby usage; no .love files; xorg-server no longer required (xorg-xwayland is independent). Frees ~30 MiB (2026-05-22).
- Tier 2b: removed kscreen, kscreenlocker (KDE screen management) + 10 cascade orphan deps (libkscreen, kdeclarative, plasma5support, libksysguard, etc.). Freed 35 MiB. Replaced by wlr-randr/hyprlock (2026-05-22).
- Removed stale
org.kde.kwalletd6.serviceD-Bus stub from~/.local/share/dbus-1/services/(was a brokenExec=/bin/trueplaceholder) (2026-05-22). - Disabled
bluetooth.service(no BT hardware) andNetworkManager-wait-online.service(unnecessary on wired workstation, speeds up boot) (2026-05-22). - Documented PCIe slot misconfiguration: GPU (GTX 1050 Ti) installed in bottom PCIEX4 slot (PCIe 2.0 x4, ~2 GB/s) instead of top PCIEX16 (PCIe 3.0 x16, ~16 GB/s). 8x bandwidth loss. Physical move required. NVMe also running at Gen2 instead of Gen3 (2026-05-22).
Changed
- Tier 4 package reclassification (ADR 0007): 13 "Misc" packages reclassified to functional domains in
docs/tech/stack.md— uv→Python Toolchain, jq→Shell/Terminal, inxi→Hardware, lsof/zram-generator/mkinitcpio-openswap→Core OS, iproute2/openresolv→Network, perl-image-exiftool/icoutils/innoextract-git→Dev Tools, opencl-headers→GPU Compute, libxnvctrl-580xx→NVIDIA. No packages removed; documentation-only change (2026-05-22). - Chrome/Chromium normalization: removed all Chromium artifacts —
~/.config/chromium/(1.4 GB),~/.local/chrome-cdp/(8.6 GB), 13 broken PWA.desktopfiles, 4 stale PWA manifests from Chrome Preferences,chromium-widevineorphan package (17 MB). System now usesgoogle-chrome-stableexclusively with Wayland-native flags (2026-05-22). ~/.bashrc: removed deadBROWSER_CDP_URLauto-population (curl to localhost:9222 on every shell startup) (2026-05-22).~/.config/chrome-flags.conf: restored Ansible-managed Wayland flags (--ozone-platform=auto, VA-API on NVIDIA,--use-angle=gl, Vulkan disable) — was drifted to X11 mode with garbage flags (2026-05-22).- Waybar config: added
custom/usbmodule tomodules-rightbar (2026-05-22). - Waybar style: added CSS for
#custom-usbwith hover state and color classes (usb-none,usb-unmounted,usb-mounted) (2026-05-22). - Executed
system-upgradeplaybook on the live workstation (2026-05-18).pacman -Syuupgraded 1103 packages; kernel set nowlinux612 6.12.85-1(LTS, was 6.12.77-1) +linux70 7.0.3-1(NEW); NVIDIA migrated to mainline595.71.05for bothlinux612-nvidiaandlinux70-nvidia; legacy*-nvidia-575xxpackages removed. Both/boot/initramfs-6.12-x86_64.img(54 MB) and/boot/initramfs-7.0-x86_64.img(122 MB) generated; GRUB regenerated with menuentries for both kernels. Reboot required: selectlinux70from the GRUB "Advanced options for Manjaro Linux" submenu to activate the new kernel and NVIDIA 595.71.05 modules. Logs:logs/system-upgrade-20260518-101253-live.log. - NVIDIA driver migrated from the pinned
*-nvidia-575xx(575.64.05) branch to the mainline*-nvidia(595.71.05) branch via the newsystem-upgraderole.linux612-nvidia-575xx,nvidia-575xx-utils,lib32-nvidia-575xx-utils,nvidia-575xx-settingsare removed;linux612-nvidia,linux70-nvidia,nvidia-utils,lib32-nvidia-utils,opencl-nvidia,nvidia-settingsare installed in one atomic pacman transaction (2026-05-18). ansible/workstation.yml:system-upgraderegistered as the first role, guarded bywhen: os_type == 'archlinux', with tagsystem-upgrade(2026-05-18).ansible/vars/main.yml: addedkernel_packages,nvidia_kernel_modules,nvidia_userspace_packages,nvidia_packages_to_remove,min_free_root_gbso future kernel/driver pins are a one-line change (2026-05-18).docs/tech/setup.md: new bootstrap step "Run system upgrade & kernel install" before the main playbook, with--tags system-upgradeexamples and a reboot-into-linux70callout (2026-05-18).- Samsung PM9A1 NVMe firmware update applied: GXA7401Q → GXA7801Q (non-SED variant, reboot pending to activate). All nvme-cli steps succeeded (2026-04-02).
- Corrected firmware research: GXA7802Q is SED-only (
00B07); non-SED drives (00B00) require GXA7801Q. Updateddocs/tech/firmware-update-research.mdwith naming convention and correct source. - Updated
.gitignore: addedlogs/anddocs/tech/capabilities/exclusions (2026-04-02). - Increased system swap file size from 4GB to 16GB to prevent OOM-related system hangs (2026-03-17).
- Updated system status in
README.mdanddocs/tech/workstation-health.md(2026-03-17). - Cleaned up deprecated software information from
docs/tech/stack.md(2026-03-13). - Synchronized software versions across documentation files (2026-03-13).
Fixed
- Resolved kitty cursor keys not working by disabling the
TERM=xterm-256coloroverride in.bashrc, allowing Kitty to correctly setTERM=xterm-kitty. Added Ansible management forkitty.confto ensure proper terminal behavior and shell integration (2026-05-19). system-upgraderole: GRUB menu assertion now matches Manjaro's realmenuentry 'Manjaro Linux (Kernel: X.Y.Z-MANJARO x64)'format (counted per-kernel-family) instead of the wrongmenuentry .*linux(612|70)regex that always returned 0 hits on Manjaro and broke the live run with a false-negative failure (2026-05-18).system-upgraderole: migration taskchanged_whennow matches pacman's progress lines^<!--(SECTION)-->(N/M)<!--(--SECTION)-->s+(installing|upgrading|removing)sinstead of plain substring matching, so the role's own echo lines no longer trigger spuriouschanged=trueon idempotent re-runs. Verified: second live re-run reportsok=16 changed=0 failed=0 skipped=5(2026-05-18).- Resolved system unresponsiveness issue by addressing critical memory/swap pressure with increased headroom and proactive OOM killing (2026-03-17).
- Identified failed
archlinux-keyring-wkd-sync.servicein system health check.