diff --git a/docs/superpowers/evidence/librewolf-local-gio-2026-11-01.json b/docs/superpowers/evidence/librewolf-local-gio-2026-11-01.json new file mode 100644 index 00000000..d666d421 --- /dev/null +++ b/docs/superpowers/evidence/librewolf-local-gio-2026-11-01.json @@ -0,0 +1,32 @@ +{ + "intent": "LibreWolf opens in seconds instead of ~4 min after login: it no longer waits on gvfs D-Bus calls that hit the 25 s timeout.", + "scope": [ + "linux_configuration/scripts/librewolf-local-gio.sh (symlinked as ~/.local/bin/librewolf)", + "meta/requirements.txt, meta/requirements-test.txt: stale pins that kept the Pre-commit CI baseline red", + "Non-goal: the .desktop entry (calls /usr/lib/librewolf/librewolf directly); launcher is PATH-based" + ], + "changes": [ + "PATH wrapper exec's /usr/bin/librewolf with GIO_USE_VFS=local, same pattern as krita-scaled.sh", + "anthropic 2.1.0->2.3.0 (CI finding) plus 17 other patch/minor pins bumped to newest stable" + ], + "verification": [ + { + "command": "check_librewolf_gio.sh (Xvfb, throwaway profile, reads /proc//environ)", + "result": "pass", + "evidence": "wrapper on PATH: PASS; /usr/bin/librewolf only: FAIL: GIO_USE_VFS not set; user confirmed real launch is fast" + }, + { + "command": "scripts/check_dependency_freshness.sh meta/requirements.txt meta/requirements-test.txt && uv pip compile -p 3.14 both", + "result": "pass", + "evidence": "exit=0, no findings; RESOLVES" + } + ], + "risks": [ + "GTK dialogs inside LibreWolf lose gvfs URIs (smb://, sftp://)", + "Minor bumps (flake8 7.5, pyflakes 4.1, prospector 1.20, python-kasa 0.12) may surface new lint findings" + ], + "rollback": [ + "rm ~/.local/bin/librewolf restores /usr/bin/librewolf; git revert for the pins", + "After rollback: `command -v librewolf` prints /usr/bin/librewolf" + ] +} diff --git a/linux_configuration/scripts/librewolf-local-gio.sh b/linux_configuration/scripts/librewolf-local-gio.sh new file mode 100755 index 00000000..b788e911 --- /dev/null +++ b/linux_configuration/scripts/librewolf-local-gio.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# +# LibreWolf launcher (shadows /usr/bin/librewolf on PATH). +# GIO_USE_VFS=local -> GIO skips gvfs entirely. Right after login gvfs's +# D-Bus calls can hang for the 25 s D-Bus timeout each; LibreWolf made ~9 of +# them serially and took ~4 min to open (2026-11-01). Cost: GTK dialogs lose +# gvfs URIs (smb://, sftp://), which LibreWolf never needed. +# +exec env GIO_USE_VFS=local /usr/bin/librewolf "$@" diff --git a/meta/requirements-test.txt b/meta/requirements-test.txt index 511df934..88dc3460 100644 --- a/meta/requirements-test.txt +++ b/meta/requirements-test.txt @@ -21,7 +21,7 @@ # suite itself fails loudly here on a missing import. # ============================================================================== -anthropic==2.1.0 +anthropic==2.3.0 beautifulsoup4==4.15.0 coverage==7.17.0 defusedxml==0.7.1 @@ -29,7 +29,7 @@ genanki==0.13.1 markdownify==1.2.3 numpy==2.5.4 pillow==13.0.0 -pytest==9.1.1 +pytest==9.2.0 pytest-cov==7.1.0 pytest-randomly==5.0.0 pytest-sugar==1.1.1 diff --git a/meta/requirements.txt b/meta/requirements.txt index 890a3036..e7d99369 100644 --- a/meta/requirements.txt +++ b/meta/requirements.txt @@ -22,10 +22,10 @@ dead==2.1.0 defusedxml==0.7.1 docformatter==1.7.8 fixit==2.2.1 -flake8==7.4.1 -flake8-annotations==3.3.0 +flake8==7.5.0 +flake8-annotations==3.3.1 flake8-bandit==4.1.1 -flake8-bugbear==26.9.30 +flake8-bugbear==26.10.27 flake8-comprehensions==3.17.0 flake8-docstrings==1.7.0 flake8-eradicate==1.5.0 @@ -39,7 +39,7 @@ gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.11.0#subdirectory=gate genanki==0.13.1 geopandas==1.2.0 howlongtobeatpy==1.0.24 -hypothesis==6.170.9 +hypothesis==6.170.14 importlib-metadata==10.1.0 interrogate==1.7.0 # isort is deliberately not pinned: nothing here imports it (ruff's isort @@ -50,43 +50,43 @@ lxml==6.1.3 markdownify==1.2.3 matplotlib==3.11.2 mccabe==0.7.0 -mypy==2.4.0 +mypy==2.4.1 numpy==2.5.4 opencv-python==5.0.0.93 pillow==13.0.0 pip-audit==2.10.1 -pipdeptree==4.2.9 +pipdeptree==4.2.13 pre-commit==4.7.0 -prospector==1.19.1 +prospector==1.20.0 pycodestyle==2.15.0 pydocstyle==6.3.0 -pyflakes==4.0.3 +pyflakes==4.1.0 pygame==2.6.1 pylint==4.1.3 pyright==1.1.414 -pytest==9.1.1 +pytest==9.2.0 pytest-cov==7.1.0 pytest-randomly==5.0.0 pytest-sugar==1.1.1 pytest-timeout==2.4.0 pytest-xdist==3.8.0 python-chess==1.999 -python-kasa==0.11.0.1 +python-kasa==0.12.0 pyupgrade==3.22.0 radon==6.0.1 reorder-python-imports==3.19.0 requests==2.34.2 rich==15.0.0 -ruff==0.17.2 +ruff==0.17.3 # safety is deliberately not pinned: its only reference in this repo is a # commented-out pre-commit hook, and safety 3.8.1 declares `typer<0.26`, # which would hold the typer this repo actually imports below latest. secretstorage==3.5.0 -selenium==4.51.0 +selenium==4.52.0 typer==0.27.3 -types-python-dateutil==2.9.0.20261021 -types-PyYAML==6.0.12.20260906 -types-requests==2.33.0.20261006 +types-python-dateutil==2.9.0.20261029 +types-PyYAML==6.0.12.20261030 +types-requests==2.33.0.20261030 types-setuptools==84.0.0.20261006 typing_extensions==4.16.0 # Self annotation on py310 target (session_autopsy store lock) -websockets==17.3 +websockets==17.4