mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-12 08:31:03 +01:00
OctoForge (~/octoforge) is app #10 in the shared launcher-icon family. It was still shipping the stock Flutter icon, which is not a finished state. The glyph is a filled silhouette rather than a stroked outline: a stroked anvil is a long thin horn plus a narrow waist, and at the family's 72px stroke weight the waist closes up solid at 48dp. An octopus (GitHub trade dress, and a tangle of thin curves that blurs at launcher size) and a bare hammer (reads as a generic tool, not a forge) were both rejected. The horn is a separate wedge projecting off the face, not a rounded corner on it. Two earlier drafts folded the taper into the slab's left end and both rendered as a bump, leaving the shape reading as an I-beam. It now tapers to a 40px blunt tip, above MIN_NEGATIVE_SPACE so it survives at 48dp. Registered with linux=True: unlike the other phone-first apps this one has a real desktop target with a .desktop entry, so it needs the hicolor set. Verified: generated for Android and Linux, checked against the family preview sheet at all three sizes, and confirmed in the device app drawer next to todo. Committed from a temporary worktree: the working tree held another session's in-flight kuhylog entry in the same hunk, and git-rules.md forbids stashing around other agents' uncommitted work. That work is untouched. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WzEA5srk8VPn6mKKjCaGpb
53 lines
4.0 KiB
JSON
53 lines
4.0 KiB
JSON
{
|
|
"intent": "Give OctoForge (~/octoforge) an on-style launcher icon from the shared family, replacing the stock Flutter logo it was still shipping. Registers it as app #10 with a new anvil glyph.",
|
|
"scope": [
|
|
"python_pkg/app_icons/glyphs.py: adds the _ANVIL fragment and its GLYPHS entry",
|
|
"python_pkg/app_icons/apps.py: adds the octoforge AppIcon registry entry",
|
|
"Non-goal: no change to style.py, the renderer, or any existing app's icon - a style change would restyle the whole family",
|
|
"Non-goal: no iOS assets; OctoForge cannot be built for iOS here (no Xcode)"
|
|
],
|
|
"changes": [
|
|
"Anvil drawn as a filled silhouette rather than a stroked outline: at the family's 72px stroke weight the narrow waist closes up solid at 48dp. Same reasoning as the existing quill-nib and receipt-split glyphs.",
|
|
"The horn is a separate wedge projecting off the face, tapering to a 40px blunt tip (above MIN_NEGATIVE_SPACE so it survives at launcher size). Two earlier drafts folded the taper into the face slab and rendered as a bump, leaving the shape reading as an I-beam.",
|
|
"Registered with linux=True: OctoForge has a real desktop target with a .desktop entry, unlike the phone-first apps that scaffolded linux/ but ship no entry.",
|
|
"Accent is the shared #B8862E, matching all nine existing apps - apps are distinguished by glyph shape, not colour."
|
|
],
|
|
"verification": [
|
|
{
|
|
"command": "pre-commit run --files python_pkg/app_icons/glyphs.py python_pkg/app_icons/apps.py",
|
|
"result": "pass",
|
|
"evidence": "All hooks Passed or Skipped, including ruff, mypy, pylint, bandit, 'pytest with coverage enforcement' and 'Block binary/image files'."
|
|
},
|
|
{
|
|
"command": "python3 -m pytest python_pkg/app_icons/tests/ -q --cov=python_pkg.app_icons",
|
|
"result": "pass",
|
|
"evidence": "44 passed; every app_icons module at 100% (apps.py, glyphs.py, cli.py, generate.py, preview.py, render.py, style.py). Registry tests are data-driven so they cover the new entry."
|
|
},
|
|
{
|
|
"command": "python3 -m python_pkg.app_icons generate --app octoforge --android --linux-out <app>/desktop/icons",
|
|
"result": "pass",
|
|
"evidence": "Wrote 6 asset files, 8 hicolor PNGs and regenerated the Android mipmaps with no safe-box warning. All five mipmap-*/ic_launcher.png md5s changed from the stock Flutter values."
|
|
},
|
|
{
|
|
"command": "python3 -m python_pkg.app_icons preview -o sheet.png",
|
|
"result": "pass",
|
|
"evidence": "Inspected the three rows (full size, circle-masked, 48dp). The anvil is legible at 48dp and sits with the family in weight and style."
|
|
},
|
|
{
|
|
"command": "adb -s 23181JEGR08034 install -r app-debug.apk && open the app drawer",
|
|
"result": "pass",
|
|
"evidence": "Icon renders correctly in the launcher on the physical device, next to todo's checklist glyph on the same charcoal field."
|
|
}
|
|
],
|
|
"risks": [
|
|
"Glyph legibility is a visual judgement; it was checked on the preview sheet at 48dp and in the real device app drawer, not asserted by a test.",
|
|
"Committed from a temporary git worktree because the working tree held another session's in-flight kuhylog registry entry in the same hunk. Only the anvil and octoforge additions are in this commit; the kuhylog work is untouched and still uncommitted in the main checkout.",
|
|
"app-icon/SKILL.md still documents charcoal #1B1D21 and accent #4C7DF0, which the live generator and all ten registered apps contradict. Following the skill text literally would produce an off-palette icon. Not fixed here."
|
|
],
|
|
"rollback": [
|
|
"git revert the commit; it only adds a glyph and a registry entry, so nothing else depends on it.",
|
|
"After rollback, run python3 -m python_pkg.app_icons list and confirm nine apps and nine glyphs, then re-run the app_icons test suite.",
|
|
"OctoForge's already-generated icon assets live in its own repo and are unaffected by a revert here; regenerating them would then fail with 'unknown app octoforge', which is the expected signal."
|
|
]
|
|
}
|