Repository navigation
Tags: a-programmers-programmer/leviath
Tags
feat(setup): a drag-to-reorder Provider priority in place of a single… … default The Defaults screen's "Default provider" was a one-of-many chooser, which could not express the ordered provider_order the resolver now reads. Replace it with a "Provider priority" field whose value is that order, best first, its head the default provider. Enter opens a modal to arrange it: drag a row by its grip or move the one under the cursor with Shift+arrows, mirroring the agent editor's model-chain reorder - the list is not mutated until the drop. A new Reorder widget carries the modal (lift-and-insert drag, arrow move, confirm/cancel), a sibling to the shared Picker. The wizard holds it beside the chooser, routes keys and mouse to it, and writes provider_order plus the head as default_provider on confirm - only when the order has more than one entry, so a config that never wanted an order does not grow a one-line one. Naming a subscription (Codex, Claude Code) as the head is how the wizard now routes a bare model name onto a plan, matching lev providers, PUT /api/config and lev setup's own written config. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ci(release): use RELEASE_TOKEN for channel release creation Reverts the invalid workflows: write permission key (not a value GitHub accepts in a workflow permissions block - beta.yml and prod.yml failed to parse on main). The underlying problem stands: promotion tags an older commit, and when .github/workflows changed on main since then, ref creation demands contents+workflows - a set GITHUB_TOKEN can never hold. The three softprops release steps now use a RELEASE_TOKEN secret (fine-grained PAT, Contents + Workflows read/write on this repo), falling back to github.token so the no-drift case still works before the secret exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Km9mfcU1ezK2HgB9SJa2R2
ci(release): use RELEASE_TOKEN for channel release creation Reverts the invalid workflows: write permission key (not a value GitHub accepts in a workflow permissions block - beta.yml and prod.yml failed to parse on main). The underlying problem stands: promotion tags an older commit, and when .github/workflows changed on main since then, ref creation demands contents+workflows - a set GITHUB_TOKEN can never hold. The three softprops release steps now use a RELEASE_TOKEN secret (fine-grained PAT, Contents + Workflows read/write on this repo), falling back to github.token so the no-drift case still works before the secret exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Km9mfcU1ezK2HgB9SJa2R2
ci(release): use RELEASE_TOKEN for channel release creation Reverts the invalid workflows: write permission key (not a value GitHub accepts in a workflow permissions block - beta.yml and prod.yml failed to parse on main). The underlying problem stands: promotion tags an older commit, and when .github/workflows changed on main since then, ref creation demands contents+workflows - a set GITHUB_TOKEN can never hold. The three softprops release steps now use a RELEASE_TOKEN secret (fine-grained PAT, Contents + Workflows read/write on this repo), falling back to github.token so the no-drift case still works before the secret exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Km9mfcU1ezK2HgB9SJa2R2
ci(release): use RELEASE_TOKEN for channel release creation Reverts the invalid workflows: write permission key (not a value GitHub accepts in a workflow permissions block - beta.yml and prod.yml failed to parse on main). The underlying problem stands: promotion tags an older commit, and when .github/workflows changed on main since then, ref creation demands contents+workflows - a set GITHUB_TOKEN can never hold. The three softprops release steps now use a RELEASE_TOKEN secret (fine-grained PAT, Contents + Workflows read/write on this repo), falling back to github.token so the no-drift case still works before the secret exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Km9mfcU1ezK2HgB9SJa2R2
chore(lint): forbid unsafe_code workspace-wide; upgrade to edition 2024 Leviath now contains zero `unsafe` in its own source, enforced at compile time. - Add `[workspace.lints.rust] unsafe_code = "forbid"` and opt every member crate in via `[lints] workspace = true`. `forbid` (not `deny`) cannot be re-enabled by a local `#[allow(unsafe_code)]`, so new unsafe is a hard error caught by the existing clippy/test/doc gates and the pre-commit hook — no new CI job needed. The unavoidable OS-level unsafe lives in audited deps (nix, temp-env), never in our crates; bevy_ecs's `Component`/`Resource` derives emit no unsafe. - Upgrade the workspace to edition 2024 (which makes `set_var`/`remove_var` `unsafe fn`, the change that motivated routing all test env access through temp-env). `cargo fix --edition` handled the match-ergonomics migration; edition-2024 let-chains let clippy collapse a batch of nested `if let` guards. All 9 packages stay at 100% coverage; clippy/fmt/rustdoc clean under -D warnings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DokREjAU5Jy2DXju6e3nZH
feat: add read_files batch tool + executor description patching - Batch file reading reduces API round trips (15 files = 1 call not 15) - File tracking for each file in batch - Dynamic tool descriptions explain file tracking behavior - Blueprint updated: analyze/implement stages get read_files
feat: add Linux ARM64 release builds; switch reqwest to rustls rustls-tls-native-roots replaces the default native-tls stack: Linux binaries no longer need a runtime libssl (the README's 'single binary, no runtime deps' claim was false on Linux before this), and the new aarch64-unknown-linux-gnu release target cross-compiles from the x64 runner with just the gcc cross toolchain -- no OpenSSL sysroot. System cert stores are still honored via native roots. The dist repo's formulas and install.sh already reference leviath-linux-arm64.tar.gz; this makes that asset real. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PreviousNext