Repository navigation
audit batch 2026-10-24: composed CI for 13 PRs (do not merge) - #8083
Closed
Lightheartdevs wants to merge 44 commits into
Closed
Lightheartdevs wants to merge 44 commits into
Lightheartdevs wants to merge 44 commits into
Conversation
#7531 made the Linux installer carry N8N_API_KEY, HF_TOKEN, LLAMA_ARC_IMAGE and the AUDIO_TTS_* keys across its .env rewrite. On Windows, New-ODSEnv still replaces .env with its template and reuses only keys that template writes, so a rerun dropped them. The n8n key cannot be shown again by n8n and has to be recreated. Carry the same named keys from the previous .env, keeping their last assignment line exactly as written. Key names match case-sensitively. A key the template writes keeps the template's value. tests/test-windows-owner-env-carry.ps1 runs the real generator twice, checks the list matches Linux's ODS_OWNER_ENV_KEYS, and fails if the generator starts writing a listed key. It runs in the PowerShell workflow on Ubuntu and Windows (PowerShell 7 and Windows PowerShell). Fixes #7578 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream added ODS_MODEL_PROFILES to the Linux owner keys (#7584). The Windows list must match it, or the parity check in test-windows-owner-env-carry.ps1 fails and a Windows rerun drops an owner's ODS_MODEL_PROFILES=enabled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ods-cli changes into INSTALL_DIR before using paths the user typed, so relative paths pointed inside the install. `ods remote-provider ... --api-key-file ./key.txt` (and the SSH key / known_hosts files) failed with "file not found", `ods doctor --report ./r.json` wrote silently into the install directory, and `ods backup -o ./backups` put the backup on the same disk it was meant to leave. Capture the caller's directory at startup and resolve these arguments against it; absolute paths are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r tests The doctor fresh-report harness evals cmd_doctor alone, so _caller_path was undefined and the report path came out empty; load the helper too. The backup arg-passing check grepped for a literal $@, which no longer appears once -o/--output is rewritten into backup_args; check the ods-backup.sh invocation forwards either. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ot loaded Headless servers running the proprietary driver without nvidia-drm.ko have no /sys/class/drm card for the GPU, so detect_gpu ignored a working nvidia-smi and fell back to CPU. Also accept a 0x10de PCI device with a display class (0x03xxxx, incl. 3D controller 0x0302), keeping the #917 guard against stray nvidia-smi on AMD-only hosts, and warn when nvidia-smi lists GPUs with no NVIDIA PCI/DRM device. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dware profiler Apply the same rule as detect_gpu() to ods-preflight.sh detect_backend() and scripts/detect-hardware.sh detect_nvidia(): when no NVIDIA DRM card exists (nvidia_drm not loaded), accept a 0x10de PCI device with display class 0x03xxxx. ODS_PCI_SYS overrides the PCI sysfs root for tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#7748 added DISABLE_UPDATE_CHECK to Linux's ODS_OWNER_ENV_KEYS, so the parity check in test-windows-owner-env-carry.ps1 failed against current main and a Windows rerun would drop an owner's update-check opt-out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Builds before llama.cpp's generic NextN loader (b9014, still shipped for CPU, AMD, Intel, Apple and native Windows) read `<arch>.nextn_predict_layers` only for a few architectures. A Qwen3.5-format file with a NextN/MTP block passes the architecture check, downloads, and then llama-server fails to load it (#7914). generate-llama-architectures.py now also reads src/llama-model.cpp at each pinned tag and records `nextnLoader` (the generic `hparams.n_layer_nextn`): b9014 false, b11429 true. The Hugging Face preflight gate adds an overridable `runtime_nextn_unsupported` refusal for a chat GGUF whose header has NextN layers on a build without that loader; the import reuses the cached header, so it enforces the same verdict, and the Models page offers "import anyway" for it like the other runtime refusals.
mypy's func-returns-value flags list.append inside the lambda; match the neighbouring import tests.
- Replace misleading 'download' timeout message with 'reading the model file\'s header timed out' in hf_gguf_header.py - Update PreflightSummary in HuggingFaceModelBrowser.jsx to instruct the user to close and reopen the list only on transient failures, and append HelpLink for Discord support - Add unit test in test_hf_gguf_header.py for range read timeout message - Add component tests in HuggingFacePreflight.test.jsx for transient recovery notice and permanent failure cases
_resolve_container_name listed containers with `docker ps`, which shows only running ones. Once a service whose container is not ods-<id> exited (Open WebUI is ods-webui), the lookup fell back to ods-open-webui: the logs view said "Container is not running." instead of the crash output, and Restart answered "no such container". List with -a. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Phase 06 read the previous .env with `grep -m1`, the first KEY= line, while Compose and every other ODS reader use the last. The generated .env already has an empty OPENAI_API_KEY= line, so an owner who follows the FAQ and adds their key at the end gets a working cloud route, until the next installer rerun rewrites .env from the empty first copy and drops theirs. A secret rotated the same way reverts to its old value. Read the last assignment in _env_get and _env_get_preserve_empty.
The installer merges its llama-server provider into an owner's existing ~/.config/opencode/opencode.json and keeps their other providers, MCP servers and agents. Uninstall, even with --keep-data, then deleted the whole file whenever it mentioned llama-server, taking the owner's API keys and settings with it. A JSONC file was deleted the same way. Remove only what ODS added (its provider and the model, small_model and agent models that point at it), keep the file's mode, and delete a file only when nothing else is left. A file jq cannot parse is kept with a notice to edit it by hand. The config.json copy the installer writes is cleaned the same way instead of being left pointing at a removed server.
…cess-shutdown-20261021 # Conflicts: # ods/tests/ci-suite.txt
…started stack ods disable hermes stops the container but leaves it in place, and a stopped container keeps its last health status (unhealthy). A full ods restart then found the container, waited the whole 300 s readiness timeout, tried to recreate a service the stack no longer has (no such service: hermes) and exited 1. Wait for Hermes only when its Compose file is among the files the restart used.
Collaborator
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Do not merge. This draft runs CI on current main plus 13 audited PRs merged together. Each PR will be squash-merged on its own afterwards, so contributors keep the credit. This draft is then closed.
Base: main
7e9d2ed62. Each head is pinned to the SHA it was reviewed at:ods restartno longer waits 300 s for a disabled Hermesrepair voicesurvives a curl timeout on PowerShell 5.1ods restore --listreads compressed backup manifestsKEY=assignment.envsettingsAll 13 merge into main without textual conflicts.
🤖 Generated with Claude Code