mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 23:05:46 +00:00
8692e50603
* feat(licenses): tooling and initial data generation Adds the maintainer-only generator that produces src/data/licenses.json: - src-tauri/about.toml + about.hbs: cargo-about config + handlebars template for the Rust-side license enumeration - scripts/generate-licenses.mjs: orchestrator that runs cargo-about and license-checker-rseidelsohn (via npx, no devDep), merges the outputs into a single per-crate JSON with full license texts, and writes the result to src/data/licenses.json The script is invoked directly with `node scripts/generate-licenses.mjs` — no npm script wrapper on purpose, since adding one to package.json would trigger the nix-npm-deps-hash-sync workflow on every push. Initial generation covers 575 cargo crates + 71 npm packages (646 entries total, all with full license text bundled, ~1.4 MB JSON). * feat(licenses): Settings panel UI Adds a new Open Source Licenses section under Settings → System, sitting below Contributors. Components: - LicensesPanel.tsx: search input, curated highlight block of ~10 key dependencies (Tauri, React, rodio, symphonia, etc.), TanStack-Virtual list of all 600+ entries - LicenseTextModal.tsx: full-screen-ish modal showing the bundled license text plus name/version/license-id badges + repository link - licensesData.ts: lazy dynamic-import loader (Vite emits the JSON as a separate chunk, so the heavy ~1.4 MB payload is only loaded when the user actually opens the panel — no runtime fetch, the data is fixed into the build artifact) The panel registers itself in the Settings in-page search index under the System tab. * feat(licenses): i18n in 8 locales Adds the `licenses` namespace (title, intro, highlights, search placeholder, no-results, loading / load error, no-license-text, view-source, total line, generated-at) across en, de, fr, nl, zh, nb, ru, es. License names themselves (MIT, Apache-2.0, GPL-3.0, …) stay universal and are rendered as-is. * docs(release): document licenses regeneration step Adds a Step A.3 to the release SOP describing the maintainer-only `node scripts/generate-licenses.mjs` workflow, the cargo-about prerequisite, and explicitly notes why no npm script wrapper exists (would trigger the nix-npm-deps-hash-sync workflow).
43 lines
1.2 KiB
TOML
43 lines
1.2 KiB
TOML
# cargo-about config — controls which licenses are allowed in the dependency
|
|
# tree and how the licenses listing is generated. Permissive list: anything
|
|
# the Rust ecosystem commonly publishes under, plus a few exceptions.
|
|
#
|
|
# Run via `npm run licenses:generate` (which calls `cargo about generate`).
|
|
|
|
accepted = [
|
|
"MIT",
|
|
"Apache-2.0",
|
|
"Apache-2.0 WITH LLVM-exception",
|
|
"BSD-2-Clause",
|
|
"BSD-3-Clause",
|
|
"ISC",
|
|
"MPL-2.0",
|
|
"Unicode-DFS-2016",
|
|
"Unicode-3.0",
|
|
"Zlib",
|
|
"0BSD",
|
|
"CC0-1.0",
|
|
"Unlicense",
|
|
"OpenSSL",
|
|
"BSL-1.0",
|
|
"CDLA-Permissive-2.0",
|
|
]
|
|
|
|
# Skip the build host's own platform-pinning; we want a list across all targets
|
|
# we ship binaries for so the Linux user sees Linux-only deps too, etc.
|
|
targets = [
|
|
"x86_64-unknown-linux-gnu",
|
|
"aarch64-unknown-linux-gnu",
|
|
"x86_64-pc-windows-msvc",
|
|
"x86_64-apple-darwin",
|
|
"aarch64-apple-darwin",
|
|
]
|
|
|
|
# Show transitive deps (we want everything in the binary) but skip dev-deps
|
|
# (test-only crates aren't in the shipped artifact).
|
|
ignore-build-dependencies = false
|
|
ignore-dev-dependencies = true
|
|
ignore-transitive-dependencies = false
|
|
filter-noassertion = false
|
|
workarounds = ["ring"]
|