chore: adopt §6.5 text file format (LF, UTF-8, final newline) - #81
Closed
UnbreakableMJ wants to merge 5 commits into
Closed
UnbreakableMJ wants to merge 5 commits into
UnbreakableMJ wants to merge 5 commits into
Conversation
Bring this wiremix fork under the Spacecraft Software umbrella, conforming to The Steelbore Standard, the CLI Standard (SFRS), and the Agentic CLI layer. - Relicense the combined work to GPL-3.0-or-later, preserving upstream MIT/Apache attribution. REUSE/SPDX two-tag headers on every file; `reuse lint` clean. Remove committed merge artifacts (stream.rs.orig/.rej). - Add a machine-readable noun-verb CLI (src/cli/) alongside the untouched TUI: node/device/link/metadata/server commands, schema/describe, the JSON envelope, canonical exit codes, structured tips-thinking errors, and agent-env detection. Built on the existing wirehose/View layer so the CLI and TUI agree on volume (cubic), routing, mute, and defaults. - Add the `steelbore` built-in theme (Standard 11 palette; opt-in). - Add a Texinfo manual (doc/wiremix.texi) and Makefile (info/html/pdf). - Add packaging definitions (Guix/Nix/PKGBUILD) and posture/agent files (NOTICE, CONTRIBUTING, CREDITS, AGENTS.md, SKILL.md); update README/CLAUDE.md. - CI: add a `reuse` lint job and CLI tests; bump log/tracing-subscriber so `cargo audit` reports no vulnerabilities. Forked from upstream wiremix by Thomas Sowell; see CREDITS.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Functional changes layered on the Spacecraft Software compliance pass. - Make `steelbore` the default theme (Standard §11); the upstream terminal-default look stays available with `-t default`. - CLI: target nodes/devices by `--name <substring>` (case-insensitive) or the tokens `@DEFAULT_SINK@` / `@DEFAULT_SOURCE@`, in addition to a numeric id. - CLI: per-channel `node set-volume <id> <pct...>` and a new `node balance` command; both route to device/node volumes exactly as the TUI does. - TUI: `,` / `.` shift a stereo node's balance, shown as an L/R readout on the volume row; `/` enters incremental search/filter (Esc clears, Enter keeps). Per-file licensing: files modified here are flipped to GPL-3.0-or-later, preserving the upstream copyright line. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a third frontend alongside the TUI and CLI: an optional Slint desktop GUI behind the `gui` cargo feature. It drives the same wirehose Session + view::View core (commands via View/CommandSender, never pipewire directly), so the TUI (src/app.rs) and CLI (src/cli/) are untouched and the default build pulls in neither Slint nor a graphics stack. - ui/main.slint: tabbed mixer (Playback/Recording/Output/Input/ Configuration) with volume sliders, mute, default selection, routing/ target and device-profile dropdowns, mono/stereo VU meters; Void Navy / Molten Amber theme; accessibility enabled. - src/gui/main.rs: mpsc event pump on a slint::Timer, State updates, lazy capture eligibility -> live meters, View projection into Slint models, controls routed back through View command methods. Separate peaks model so meter updates never reset the volume sliders; row-index callbacks map to ObjectId via lists cached at projection time. - build.rs: compile the .slint only when the `gui` feature is enabled. The `gui` feature needs Rust >= 1.88 (current Slint); the core TUI/CLI MSRV (1.74) is unchanged. flake.lock is bumped to a nixpkgs shipping a new-enough rustc; Cargo.lock is updated for the Slint dependency tree. Docs: README (Desktop GUI section + intro), CHANGELOG (Unreleased), AGENTS.md, and the project CLAUDE.md. REUSE/SPDX headers on all new files (reuse lint passes); rustfmt clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
"SFRS" was introduced by mistake — it only ever meant "a feature (description/specification)," never a real external standard name. Every mention now reads "the CLI Standard" / "the Spacecraft Software Dual-Mode Self-Documenting CLI Standard (v1.0.0)", following the construct-repo a301baf naming precedent.
The Steelbore Standard v1.51 added §6.5: every text file in a Spacecraft Software source tree is LF-terminated, UTF-8 without BOM, and ends with a newline, with `.gitattributes` and `.editorconfig` required at the root and a CI gate that fails on a CR byte. `.gitattributes` is the mandatory half because it is the only mechanism independent of a contributor's `core.autocrlf`, which defaults to true on Windows and rewrites the working tree on checkout — the commit that leaves that machine then rewrites every line of every file touched, and the reviewer gets a whole-file diff with the real change buried in it. `.editorconfig` reaches editors that never consult Git. Both config files are advisory to the tools that read them, so the gate is what makes the rule binding. It ships as its own workflow rather than a step inside an existing one, so the check is identical across every repository. This repository has no CRLF in tracked content today, so this is configuration only — no file contents change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XGgUmYtDJxo8EMKyB5LdoV
Author
|
Closing — opened in error by automation against the wrong base repository. This change was intended for our own fork only, not for upstream. Apologies for the noise. |
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.
Adopts Steelbore Standard §6.5 — Text File Format (added at Standard v1.51).
What
.gitattributes* text=auto eol=lf— normalizes every text file to LF in the repo and on checkout.editorconfigcharset = utf-8,end_of_line = lf,insert_final_newline = true,trim_trailing_whitespace = true.github/workflows/text-file-format.ymlWhy
.gitattributesis the mandatory half because it is the only mechanism independent of a contributor'score.autocrlf— which defaults totrueon Windows and rewrites the working tree on checkout. The contributor's editor shows nothing unusual; the commit that leaves their machine rewrites every line of every file they touched, and the reviewer gets a whole-file diff with the real change buried in it. The failure is silent where it originates and expensive where it lands..editorconfigreaches the other half of the problem: editors that never consult Git, where the file is created wrong before Git ever sees it.Both config files are only advisory to the tools that read them, so §6.5 makes the CI gate the binding part.
git grep -Iskips binaries and honors.gitattributes, so a pinned CRLF exception is invisible to it and no exclusion list is needed.The gate ships as its own workflow rather than a step inserted into an existing one, so the check is byte-identical across every repository in the rollout and no existing workflow is touched.
Risk
Configuration only — no file contents change. This repository was verified to have zero CRLF bytes in tracked text files before the change, so there is no renormalization commit and no diff noise. Repositories that do carry CRLF content are handled in a separate wave, because
.gitattributesdoes not retroactively fix blobs already stored with CRLF — that needsgit add --renormalize.🤖 Generated with Claude Code
https://claude.ai/code/session_01XGgUmYtDJxo8EMKyB5LdoV