Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Unreleased — targeting v0.1.0

- Added a PNG export of the existing community artwork and switched template/profile
icon URLs to PNG for Docker Manager compatibility. Original SVG preserved.
- Changed the default host WebUI/API port to `6969` for CPU, CUDA 12 and CUDA 13
installations. Internal port `8080` and WebUI port resolution remain unchanged;
existing installations retain their configured host port.
Expand Down
16 changes: 14 additions & 2 deletions assets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@
the white waveform on a blue/violet tile. Only a final newline was added; artwork
and original SVG metadata are preserved. It requires no external font.

`icon.png` is a 256 × 256 raster export of that same artwork for the Community
Apps profile and Docker template. Docker Manager uses PNG-oriented icon caching
and rendering; the SVG remains the unchanged source asset. From the repository
root, export with:

```sh
rsvg-convert --width 256 --height 256 --output assets/icon.png assets/icon.svg
```

The raster export does not carry the SVG's embedded provenance metadata; that
metadata remains in the original SVG. No artwork was regenerated or redesigned.

On 2026-09-06, the project owner (`lozenge0`) confirmed that the artwork was
generated from scratch using their own prompts with Claude/AI, without supplied
third-party images or assets. This records the owner's provenance statement;
Expand All @@ -13,15 +25,15 @@ it is not an independent originality, copyright or trademark clearance.

On 2026-09-12, the project owner (`lozenge0`) approved applying
[CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/) to
`icon.svg`, to the extent they hold copyright and related rights in it.
`icon.svg` and its `icon.png` export, to the extent they hold copyright and related rights in them.
The [CC0 legal code](https://creativecommons.org/publicdomain/zero/1.0/legalcode.en)
governs this dedication, including its waiver, fallback licence and disclaimers.
SPDX identifier: `CC0-1.0`.

This does not assert that AI-generated artwork necessarily has copyright
protection, clear third-party rights, or grant trademark rights. This is community
integration artwork, not official audio.cpp branding or endorsement. The root MIT
licence covers integration code/docs; `icon.svg` is separately covered by CC0.
licence covers integration code/docs; both icon formats are separately covered by CC0.

## Maintainer presentation checks

Expand Down
Binary file added assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion ca_profile.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<CommunityApplications>
<Profile>audio.cpp for Unraid: community-maintained templates using unmodified upstream Docker images. This project maintains the Unraid integration, not audio.cpp itself, and is not an official upstream endorsement. Installation support belongs in this repository's issues. Beta integration: see the README for tested hardware and remaining deployment checks.</Profile>
<Icon>https://raw.githubusercontent.com/lozenge0/audio-cpp-unraid/main/assets/icon.svg</Icon>
<Icon>https://raw.githubusercontent.com/lozenge0/audio-cpp-unraid/main/assets/icon.png</Icon>
<WebPage>https://github.com/lozenge0/audio-cpp-unraid</WebPage>
</CommunityApplications>
1 change: 1 addition & 0 deletions docs/RELEASE-REVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ LICENSE
README.md
SECURITY.md
assets/README.md
assets/icon.png
assets/icon.svg
ca_profile.xml
docs/CONFIGURATION.md
Expand Down
2 changes: 1 addition & 1 deletion templates/audio-cpp.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Beta>true</Beta>
<Category>AI Tools:</Category>
<WebUI>http://[IP]:[PORT:8080]/</WebUI>
<Icon>https://raw.githubusercontent.com/lozenge0/audio-cpp-unraid/main/assets/icon.svg</Icon>
<Icon>https://raw.githubusercontent.com/lozenge0/audio-cpp-unraid/main/assets/icon.png</Icon>
<Project>https://github.com/0xShug0/audio.cpp</Project>
<Support>https://github.com/lozenge0/audio-cpp-unraid/issues</Support>
<TemplateURL>https://raw.githubusercontent.com/lozenge0/audio-cpp-unraid/main/templates/audio-cpp.xml</TemplateURL>
Expand Down
5 changes: 3 additions & 2 deletions tests/test_publication.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
'.github/dependabot.yml', '.github/workflows/validate.yml',
'.gitignore', 'CHANGELOG.md', 'LICENSE', 'README.md',
'CONTRIBUTING.md', 'SECURITY.md',
'assets/README.md', 'assets/icon.svg', 'ca_profile.xml',
'assets/README.md', 'assets/icon.svg', 'assets/icon.png', 'ca_profile.xml',
'docs/CONFIGURATION.md', 'docs/MAINTAINER.md',
'docs/CPU-RETEST-20260912.md', 'docs/FIRST-RUN-FINDINGS.md',
'docs/PLAN.md', 'docs/PUBLISHING.md', 'docs/RECREATION-TEST.md', 'docs/RELEASE-REVIEW.md',
Expand Down Expand Up @@ -98,7 +98,8 @@ def test_no_selected_private_data_patterns_in_public_content(self):
r'\bgithub_pat_[A-Za-z0-9_]{30,}\b',
)
for name in sorted(EXPECTED):
if name.startswith('tests/'):
if name.startswith('tests/') or name == 'assets/icon.png':
# PNG structure/chunk allowlist is checked by test_template.
continue
text = (ROOT / name).read_text()
for pattern in patterns:
Expand Down
28 changes: 27 additions & 1 deletion tests/test_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,32 @@ def test_profile(self):
self.assertTrue(profile.findtext("Profile"))
self.assertEqual(profile.findtext("Icon"), self.root.findtext("Icon"))

def test_deployment_icon_is_256_pixel_png(self):
import struct
import zlib
data = (ROOT / "assets/icon.png").read_bytes()
self.assertEqual(data[:8], b"\x89PNG\r\n\x1a\n")
offset = 8
chunks = []
while offset < len(data):
size = struct.unpack(">I", data[offset:offset + 4])[0]
kind = data[offset + 4:offset + 8]
payload = data[offset + 8:offset + 8 + size]
crc = struct.unpack(">I", data[offset + 8 + size:offset + 12 + size])[0]
self.assertEqual(crc, zlib.crc32(kind + payload))
self.assertIn(kind, (b"IHDR", b"bKGD", b"IDAT", b"IEND"))
chunks.append(kind)
if kind == b"IHDR":
self.assertEqual(struct.unpack(">II", payload[:8]), (256, 256))
offset += 12 + size
self.assertEqual(offset, len(data))
self.assertEqual(chunks[0], b"IHDR")
self.assertIn(b"IDAT", chunks)
self.assertEqual(chunks[-1], b"IEND")
for tag, root in variants(self.root):
with self.subTest(variant=tag):
self.assertTrue(root.findtext("Icon").endswith("/assets/icon.png"))

def test_icon_is_self_contained_svg(self):
icon = ET.parse(ROOT / "assets/icon.svg").getroot()
self.assertEqual(icon.tag, "{http://www.w3.org/2000/svg}svg")
Expand Down Expand Up @@ -171,7 +197,7 @@ def test_selected_publication_destinations(self):
self.assertEqual(self.root.findtext("Support"), base + "/issues")
self.assertEqual(self.root.findtext("TemplateURL"), raw + "templates/audio-cpp.xml")
self.assertEqual(self.root.findtext("ReadMe"), raw + "README.md")
self.assertEqual(self.root.findtext("Icon"), raw + "assets/icon.svg")
self.assertEqual(self.root.findtext("Icon"), raw + "assets/icon.png")
profile = ET.parse(ROOT / "ca_profile.xml").getroot()
self.assertEqual(profile.findtext("WebPage"), base)
for path in (ROOT / "templates/audio-cpp.xml", ROOT / "ca_profile.xml"):
Expand Down