fix: bundle small bug fixes originally submitted by @CodeLine9#813
fix: bundle small bug fixes originally submitted by @CodeLine9#813kovtcharov wants to merge 8 commits intomainfrom
Conversation
SummaryThis is a well-curated bundle of 7 small, disjoint bug fixes in different files — trivial to review as a unit with zero merge risk. The fixes are each minimal, targeted, and preserve the original contributor's authorship. The highest-impact item is the Issues Found🟢 Minor — Inconsistent extension-parsing pattern in same file (
|
Fixes `python util/lint.py --black` failure on main. Pure formatting — no behaviour change. Line width regression was introduced in #803 where the error dict exceeded black's 88-char limit.
SummaryClean bundle of seven disjoint, small-diff bug fixes preserving @CodeLine9's authorship. Each fix targets a different file so there's zero cross-cutting risk, and the two highest-impact items (Lemonade Issues Found🟢 Minor —
|
Summary
Bundles 7 small, disjoint bug fixes originally submitted by @CodeLine9 in #804–#810. He closed them himself citing bandwidth; the underlying issues (#642, #787, #788, #789, #791, #792, #793) are all still open and the fixes are still valid. Each commit preserves CodeLine9's authorship.
All fixes target different files, so the bundle carries zero merge conflicts and is easy to review as a single unit.
Fixes (one commit each)
shell=TruefromPopen(list, …)(closes Lemonade: subprocess.Popen(list, shell=True) drops arguments on POSIX #787) — On POSIX,sh -csilently droppedserve/--log-level/--ctx-size. Highest-impact item in the bundle: Linux/macOS users were running Lemonade with wrong context size and missing flags.kill_process_on_port(closes Security: kill_process_on_port uses shell=True with unvalidated port interpolation #789) — Castsporttointbefore shell interpolation. Closes a latent shell-injection vector insrc/gaia/util.py. (Follow-up candidate: consolidate onto thepsutil-based impl already used elsewhere.)missingwhen file vanishes (closes DocumentMonitor never transitions status to 'missing' when the underlying file vanishes #791) — Flips DB status so/api/documentsstops reporting a deleted file ascompleteand log spam stops after the first poll.asyncio.create_taskrefs to prevent GC (closes UI server: fire-and-forget asyncio.create_task can be GC'd mid-operation #788) — Adds a module-level_background_tasksset for/api/system/load-modeland/api/system/download-model. Fixes a latent reliability bug where model downloads (7200s timeout) could be cancelled mid-stream under GC pressure.threading.Lockaround the reset/set critical sections inconfirm_tool_execution/resolve_tool_confirmation. Closes a race where an early approval could be clobbered.READMEno longer produces extension.readmein the unsupported-file error toast.overflow: hidden→overflow-y: hiddenon.msg-bodyso the inner.md-table-wrapcan scroll horizontally.Attribution
All 7 commits carry CodeLine9 ty0907@hotmail.com as
Author:. cc @CodeLine9 — thank you for the triage and the clean small-diff style; these are all worth having in main.Test plan
python util/lint.py --blackpasses on touched Python files (pre-existingmcp_bridge.pyfailure from fix(mcp): guard JSON-RPC handler against non-dict body #803 is unrelated)gaiaon Linux; confirm--ctx-sizeis respected (previously silently dropped)gaia chat --ui, upload a file, delete it from disk, wait >30s; confirm/api/documentsflips toindexing_status: "missing"cd src/gaia/apps/webui && npm run build)/api/system/download-modelsurvives a forcedgc.collect()cycle mid-download