-
Notifications
You must be signed in to change notification settings - Fork 1
Web_kit #105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
deleted: SDK/00_start_here.sh deleted: SDK/10_validate_module.sh deleted: SDK/20_promote_module.sh deleted: SDK/30_docstring.sh deleted: SDK/40_consolidate_module.sh deleted: SDK/50_array_to_json.sh deleted: SDK/60_icon_set_from_svg.sh deleted: SDK/README.md deleted: SDK/configng_v2.sh modified: staging/web_kit.sh assets/ contributors.html public_html/ staging/initialise.conf staging/initialise.sh staging/web_icon.sh staging/web_kit.conf svg_meta.json web/ workflow/
new file: assets/images/logos/armbian_font.v2.1.svg new file: assets/images/logos/armbian_mascot_v2.3.svg new file: assets/images/logos/armbian_social.svg new file: assets/images/logos/configng_cog_v1.0.svg new file: assets/images/logos/configng_mascot_v2.0.svg new file: assets/images/logos/configng_v1.0.svg new file: assets/images/logos/favicon.ico new file: assets/images/logos/legacy/armbian_font_v1.5.svg new file: assets/images/logos/legacy/armbian_os_v1.1.svg new file: assets/images/logos/legacy/armbian_sdk_v1.1.svg new file: contributors.html new file: public_html/contributors.html new file: public_html/favicon.ico new file: public_html/images.html new file: public_html/images/logos/1024x1024/armbian_cpu_v1.0.png new file: public_html/images/logos/1024x1024/armbian_font.v2.1.png new file: public_html/images/logos/1024x1024/armbian_font_v1.5.png new file: public_html/images/logos/1024x1024/armbian_mascot_v2.3.png new file: public_html/images/logos/1024x1024/armbian_os_v1.1.png new file: public_html/images/logos/1024x1024/armbian_sdk_v1.1.png new file: public_html/images/logos/1024x1024/armbian_social.png new file: public_html/images/logos/1024x1024/configng_cog_v1.0.png new file: public_html/images/logos/1024x1024/configng_mascot_v2.0.png new file: public_html/images/logos/1024x1024/configng_v1.0.png new file: public_html/images/logos/128x128/armbian_cpu_v1.0.png new file: public_html/images/logos/128x128/armbian_font.v2.1.png new file: public_html/images/logos/128x128/armbian_font_v1.5.png new file: public_html/images/logos/128x128/armbian_mascot_v2.3.png new file: public_html/images/logos/128x128/armbian_os_v1.1.png new file: public_html/images/logos/128x128/armbian_sdk_v1.1.png new file: public_html/images/logos/128x128/armbian_social.png new file: public_html/images/logos/128x128/configng_cog_v1.0.png new file: public_html/images/logos/128x128/configng_mascot_v2.0.png new file: public_html/images/logos/128x128/configng_v1.0.png new file: public_html/images/logos/16x16/armbian_cpu_v1.0.png new file: public_html/images/logos/16x16/armbian_font.v2.1.png new file: public_html/images/logos/16x16/armbian_font_v1.5.png new file: public_html/images/logos/16x16/armbian_mascot_v2.3.png new file: public_html/images/logos/16x16/armbian_os_v1.1.png new file: public_html/images/logos/16x16/armbian_sdk_v1.1.png new file: public_html/images/logos/16x16/armbian_social.png new file: public_html/images/logos/16x16/configng_cog_v1.0.png new file: public_html/images/logos/16x16/configng_mascot_v2.0.png new file: public_html/images/logos/16x16/configng_v1.0.png new file: public_html/images/logos/180x180/armbian_cpu_v1.0.png new file: public_html/images/logos/180x180/armbian_font.v2.1.png new file: public_html/images/logos/180x180/armbian_font_v1.5.png new file: public_html/images/logos/180x180/armbian_mascot_v2.3.png new file: public_html/images/logos/180x180/armbian_os_v1.1.png new file: public_html/images/logos/180x180/armbian_sdk_v1.1.png new file: public_html/images/logos/180x180/armbian_social.png new file: public_html/images/logos/180x180/configng_cog_v1.0.png new file: public_html/images/logos/180x180/configng_mascot_v2.0.png new file: public_html/images/logos/180x180/configng_v1.0.png new file: public_html/images/logos/192x192/armbian_cpu_v1.0.png new file: public_html/images/logos/192x192/armbian_font.v2.1.png new file: public_html/images/logos/192x192/armbian_font_v1.5.png new file: public_html/images/logos/192x192/armbian_mascot_v2.3.png new file: public_html/images/logos/192x192/armbian_os_v1.1.png new file: public_html/images/logos/192x192/armbian_sdk_v1.1.png new file: public_html/images/logos/192x192/armbian_social.png new file: public_html/images/logos/192x192/configng_cog_v1.0.png new file: public_html/images/logos/192x192/configng_mascot_v2.0.png new file: public_html/images/logos/192x192/configng_v1.0.png new file: public_html/images/logos/256x256/armbian_cpu_v1.0.png new file: public_html/images/logos/256x256/armbian_font.v2.1.png new file: public_html/images/logos/256x256/armbian_font_v1.5.png new file: public_html/images/logos/256x256/armbian_mascot_v2.3.png new file: public_html/images/logos/256x256/armbian_os_v1.1.png new file: public_html/images/logos/256x256/armbian_sdk_v1.1.png new file: public_html/images/logos/256x256/armbian_social.png new file: public_html/images/logos/256x256/configng_cog_v1.0.png new file: public_html/images/logos/256x256/configng_mascot_v2.0.png new file: public_html/images/logos/256x256/configng_v1.0.png new file: public_html/images/logos/32x32/armbian_cpu_v1.0.png new file: public_html/images/logos/32x32/armbian_font.v2.1.png new file: public_html/images/logos/32x32/armbian_font_v1.5.png new file: public_html/images/logos/32x32/armbian_mascot_v2.3.png new file: public_html/images/logos/32x32/armbian_os_v1.1.png new file: public_html/images/logos/32x32/armbian_sdk_v1.1.png new file: public_html/images/logos/32x32/armbian_social.png new file: public_html/images/logos/32x32/configng_cog_v1.0.png new file: public_html/images/logos/32x32/configng_mascot_v2.0.png new file: public_html/images/logos/32x32/configng_v1.0.png new file: public_html/images/logos/384x384/armbian_cpu_v1.0.png new file: public_html/images/logos/384x384/armbian_font.v2.1.png new file: public_html/images/logos/384x384/armbian_font_v1.5.png new file: public_html/images/logos/384x384/armbian_mascot_v2.3.png new file: public_html/images/logos/384x384/armbian_os_v1.1.png new file: public_html/images/logos/384x384/armbian_sdk_v1.1.png new file: public_html/images/logos/384x384/armbian_social.png new file: public_html/images/logos/384x384/configng_cog_v1.0.png new file: public_html/images/logos/384x384/configng_mascot_v2.0.png new file: public_html/images/logos/384x384/configng_v1.0.png new file: public_html/images/logos/48x48/armbian_cpu_v1.0.png new file: public_html/images/logos/48x48/armbian_font.v2.1.png new file: public_html/images/logos/48x48/armbian_font_v1.5.png new file: public_html/images/logos/48x48/armbian_mascot_v2.3.png new file: public_html/images/logos/48x48/armbian_os_v1.1.png new file: public_html/images/logos/48x48/armbian_sdk_v1.1.png new file: public_html/images/logos/48x48/armbian_social.png new file: public_html/images/logos/48x48/configng_cog_v1.0.png new file: public_html/images/logos/48x48/configng_mascot_v2.0.png new file: public_html/images/logos/48x48/configng_v1.0.png new file: public_html/images/logos/512x512/armbian_cpu_v1.0.png new file: public_html/images/logos/512x512/armbian_font.v2.1.png new file: public_html/images/logos/512x512/armbian_font_v1.5.png new file: public_html/images/logos/512x512/armbian_mascot_v2.3.png new file: public_html/images/logos/512x512/armbian_os_v1.1.png new file: public_html/images/logos/512x512/armbian_sdk_v1.1.png new file: public_html/images/logos/512x512/armbian_social.png new file: public_html/images/logos/512x512/configng_cog_v1.0.png new file: public_html/images/logos/512x512/configng_mascot_v2.0.png new file: public_html/images/logos/512x512/configng_v1.0.png new file: public_html/images/logos/64x64/armbian_cpu_v1.0.png new file: public_html/images/logos/64x64/armbian_font.v2.1.png new file: public_html/images/logos/64x64/armbian_font_v1.5.png new file: public_html/images/logos/64x64/armbian_mascot_v2.3.png new file: public_html/images/logos/64x64/armbian_os_v1.1.png new file: public_html/images/logos/64x64/armbian_sdk_v1.1.png new file: public_html/images/logos/64x64/armbian_social.png new file: public_html/images/logos/64x64/configng_cog_v1.0.png new file: public_html/images/logos/64x64/configng_mascot_v2.0.png new file: public_html/images/logos/64x64/configng_v1.0.png new file: public_html/images/logos/96x96/armbian_cpu_v1.0.png new file: public_html/images/logos/96x96/armbian_font.v2.1.png new file: public_html/images/logos/96x96/armbian_font_v1.5.png new file: public_html/images/logos/96x96/armbian_mascot_v2.3.png new file: public_html/images/logos/96x96/armbian_os_v1.1.png new file: public_html/images/logos/96x96/armbian_sdk_v1.1.png new file: public_html/images/logos/96x96/armbian_social.png new file: public_html/images/logos/96x96/configng_cog_v1.0.png new file: public_html/images/logos/96x96/configng_mascot_v2.0.png new file: public_html/images/logos/96x96/configng_v1.0.png new file: public_html/images/logos/scalable/armbian_cpu_v1.0.svg new file: public_html/images/logos/scalable/armbian_font.v2.1.svg new file: public_html/images/logos/scalable/armbian_mascot_v2.3.svg new file: public_html/images/logos/scalable/armbian_social.svg new file: public_html/images/logos/scalable/configng_cog_v1.0.svg new file: public_html/images/logos/scalable/configng_mascot_v2.0.svg new file: public_html/images/logos/scalable/configng_v1.0.svg new file: public_html/images/logos/scalable/legacy/armbian_font_v1.5.svg new file: public_html/images/logos/scalable/legacy/armbian_os_v1.1.svg new file: public_html/images/logos/scalable/legacy/armbian_sdk_v1.1.svg new file: public_html/json/contributors/build.json new file: public_html/json/contributors/configng-v2.json new file: public_html/json/contributors/configng.json new file: public_html/json/contributors/documentation.json new file: public_html/json/images/logos.json new file: staging/initialise.conf new file: staging/initialise.sh new file: staging/web_icon.sh new file: staging/web_kit.conf modified: staging/web_kit.sh new file: svg_meta.json new file: web/css/blue.css new file: web/css/green.css new file: web/css/grey.css new file: web/css/red.css new file: web/css/style.css new file: web/css/white.css new file: web/favicon.ico new file: web/index.html new file: web/js/configng.js new file: web/js/contact.js new file: web/js/home.js new file: web/js/nav.js new file: web/js/script.js new file: web/js/templates.js new file: web/js/theme.js new file: web/json/author.json new file: web/json/configng_v2.json new file: web/json/contact-info.json new file: web/json/contributors.json new file: web/json/home.json new file: web/json/logos.json renamed: SDK/00_start_here.sh -> workflow/00_start_here.sh renamed: SDK/10_validate_module.sh -> workflow/10_validate_module.sh renamed: SDK/20_promote_module.sh -> workflow/20_promote_module.sh renamed: SDK/30_docstring.sh -> workflow/30_docstring.sh renamed: SDK/40_consolidate_module.sh -> workflow/40_consolidate_module.sh renamed: SDK/50_array_to_json.sh -> workflow/50_array_to_json.sh renamed: SDK/60_icon_set_from_svg.sh -> workflow/60_icon_set_from_svg.sh renamed: SDK/README.md -> workflow/README.md renamed: SDK/configng_v2.sh -> workflow/configng_v2.sh
WalkthroughAdds new modules and tooling: environment initializer, web asset builder, and scaffolding generator; introduces related configuration files and a static contributors HTML. Removes legacy web UI/site assets, media-kit tooling, and the modules_browser toolchain (HTML/JS/CSS/JSON and Go/Python helpers). Adjusts two workflow scripts and adds an incomplete svg_meta.json. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Caller
participant initialize_env as initialize_env.sh
participant OS as /etc/*release
participant Net as ip/route
Caller->>initialize_env: initialize_env [help|show|default]
alt help
initialize_env-->>Caller: print usage/help
else show/default
initialize_env->>OS: source /etc/os-release /etc/armbian-release (if present)
initialize_env->>Net: detect default adapter, local IP, subnet
initialize_env-->>Caller: export variables (or print on show)
end
sequenceDiagram
autonumber
participant User
participant webkit as web_kit.sh
participant IM as ImageMagick
participant FS as Filesystem
participant Py as PythonServer
User->>webkit: web_kit [icons|json|contrib|pages|server|build]
alt icons
webkit->>IM: convert SVG -> PNG sizes, create favicon
IM-->>FS: write image assets
else json
webkit->>FS: scan SVG/PNG, extract meta -> write images/logo.json
else contrib
webkit->>FS: fetch GitHub -> write contributors JSON
else pages
webkit-->>FS: render contributors.html & images.html referencing JSON
else server
webkit->>Py: start Python HTTP server serving WEB_ROOT
else build
webkit->>webkit: icons -> json -> contrib -> pages
webkit->>Py: start server
end
sequenceDiagram
autonumber
participant Dev
participant scaffold as setup_scafolding.sh
participant FS as Filesystem
Dev->>scaffold: setup_scafolding <ModuleName>
scaffold->>scaffold: validate name, ensure staging dir
scaffold-->>FS: create <ModuleName>.conf and <ModuleName>.sh (if absent)
scaffold-->>Dev: summary (Created / Skipped counts)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. 📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 💡 Knowledge Base configuration:
You can enable these sources in your CodeRabbit configuration. 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (3)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
new file: public_html/json/images/armbian_font.v2.1.json new file: public_html/json/images/armbian_font_v1.5.json new file: public_html/json/images/armbian_mascot_v2.3.json new file: public_html/json/images/armbian_os_v1.1.json new file: public_html/json/images/armbian_sdk_v1.1.json new file: public_html/json/images/armbian_social.json new file: public_html/json/images/configng_cog_v1.0.json new file: public_html/json/images/configng_mascot_v2.0.json new file: public_html/json/images/configng_v1.0.json deleted: public_html/json/images/logos.json modified: staging/web_kit.sh
with '' will be ignored, and an empty message aborts the commit. On branch web_kit Your branch is up to date with 'origin/web_kit'. Changes to be committed: modified: src/core/initialize/initialize_env.sh modified: staging/web_kit.sh deleted: web_kit/README.md deleted: web_kit/brand/armbian_cpu_v1.0.svg deleted: web_kit/brand/armbian_font.v2.1.svg deleted: web_kit/brand/armbian_mascot_v2.3.svg deleted: web_kit/brand/armbian_social.svg deleted: web_kit/brand/configng_cog_v1.0.svg deleted: web_kit/brand/configng_mascot_v2.0.svg deleted: web_kit/brand/configng_v1.0.svg deleted: web_kit/brand/legacy/armbian_font_v1.5.svg deleted: web_kit/brand/legacy/armbian_os_v1.1.svg deleted: web_kit/brand/legacy/armbian_sdk_v1.1.svg deleted: web_kit/media_kit.sh deleted: web_kit/src/css/blue.css deleted: web_kit/src/css/green.css deleted: web_kit/src/css/grey.css deleted: web_kit/src/css/red.css deleted: web_kit/src/css/style.css deleted: web_kit/src/css/white.css deleted: web_kit/src/favicon.ico deleted: web_kit/src/images/16x16/armbian_cpu_v1.0.png deleted: web_kit/src/images/16x16/armbian_font.v2.1.png deleted: web_kit/src/images/16x16/armbian_font_v1.5.png deleted: web_kit/src/images/16x16/armbian_mascot_v2.3.png deleted: web_kit/src/images/16x16/armbian_os_v1.1.png deleted: web_kit/src/images/16x16/armbian_sdk_v1.1.png deleted: web_kit/src/images/16x16/armbian_social.png deleted: web_kit/src/images/16x16/configng_cog_v1.0.png deleted: web_kit/src/images/16x16/configng_mascot_v2.0.png deleted: web_kit/src/images/16x16/configng_v1.0.png deleted: web_kit/src/images/32x32/armbian_cpu_v1.0.png deleted: web_kit/src/images/32x32/armbian_font.v2.1.png deleted: web_kit/src/images/32x32/armbian_font_v1.5.png deleted: web_kit/src/images/32x32/armbian_mascot_v2.3.png deleted: web_kit/src/images/32x32/armbian_os_v1.1.png deleted: web_kit/src/images/32x32/armbian_sdk_v1.1.png deleted: web_kit/src/images/32x32/armbian_social.png deleted: web_kit/src/images/32x32/configng_cog_v1.0.png deleted: web_kit/src/images/32x32/configng_mascot_v2.0.png deleted: web_kit/src/images/32x32/configng_v1.0.png deleted: web_kit/src/images/48x48/armbian_cpu_v1.0.png deleted: web_kit/src/images/48x48/armbian_font.v2.1.png deleted: web_kit/src/images/48x48/armbian_font_v1.5.png deleted: web_kit/src/images/48x48/armbian_mascot_v2.3.png deleted: web_kit/src/images/48x48/armbian_os_v1.1.png deleted: web_kit/src/images/48x48/armbian_sdk_v1.1.png deleted: web_kit/src/images/48x48/armbian_social.png deleted: web_kit/src/images/48x48/configng_cog_v1.0.png deleted: web_kit/src/images/48x48/configng_mascot_v2.0.png deleted: web_kit/src/images/48x48/configng_v1.0.png deleted: web_kit/src/images/512x512/armbian_cpu_v1.0.png deleted: web_kit/src/images/512x512/armbian_font.v2.1.png deleted: web_kit/src/images/512x512/armbian_font_v1.5.png deleted: web_kit/src/images/512x512/armbian_mascot_v2.3.png deleted: web_kit/src/images/512x512/armbian_os_v1.1.png deleted: web_kit/src/images/512x512/armbian_sdk_v1.1.png deleted: web_kit/src/images/512x512/armbian_social.png deleted: web_kit/src/images/512x512/configng_cog_v1.0.png deleted: web_kit/src/images/512x512/configng_mascot_v2.0.png deleted: web_kit/src/images/512x512/configng_v1.0.png deleted: web_kit/src/images/scalable/armbian_cpu_v1.0.svg deleted: web_kit/src/images/scalable/armbian_font.v2.1.svg deleted: web_kit/src/images/scalable/armbian_mascot_v2.3.svg deleted: web_kit/src/images/scalable/armbian_social.svg deleted: web_kit/src/images/scalable/configng_cog_v1.0.svg deleted: web_kit/src/images/scalable/configng_mascot_v2.0.svg deleted: web_kit/src/images/scalable/configng_v1.0.svg deleted: web_kit/src/images/scalable/legacy/armbian_font_v1.5.svg deleted: web_kit/src/images/scalable/legacy/armbian_os_v1.1.svg deleted: web_kit/src/images/scalable/legacy/armbian_sdk_v1.1.svg deleted: web_kit/src/index.html deleted: web_kit/src/js/configng.js deleted: web_kit/src/js/contact.js deleted: web_kit/src/js/home.js deleted: web_kit/src/js/nav.js deleted: web_kit/src/js/script.js deleted: web_kit/src/js/templates.js deleted: web_kit/src/js/theme.js deleted: web_kit/src/json/author.json deleted: web_kit/src/json/configng_v2.json deleted: web_kit/src/json/contact-info.json deleted: web_kit/src/json/contributors.json deleted: web_kit/src/json/home.json deleted: web_kit/src/json/logos.json
new file: share/icons/hicolor/128x128/armbian_font.v2.1.png new file: share/icons/hicolor/128x128/armbian_mascot_v2.3.png new file: share/icons/hicolor/128x128/armbian_social.png new file: share/icons/hicolor/128x128/configng_cog_v1.0.png new file: share/icons/hicolor/128x128/configng_mascot_v2.0.png new file: share/icons/hicolor/128x128/configng_v1.0.png new file: share/icons/hicolor/16x16/armbian_cpu_v1.0.png new file: share/icons/hicolor/16x16/armbian_font.v2.1.png new file: share/icons/hicolor/16x16/armbian_mascot_v2.3.png new file: share/icons/hicolor/16x16/armbian_social.png new file: share/icons/hicolor/16x16/configng_cog_v1.0.png new file: share/icons/hicolor/16x16/configng_mascot_v2.0.png new file: share/icons/hicolor/16x16/configng_v1.0.png new file: share/icons/hicolor/256x256/armbian_cpu_v1.0.png new file: share/icons/hicolor/256x256/armbian_font.v2.1.png new file: share/icons/hicolor/256x256/armbian_mascot_v2.3.png new file: share/icons/hicolor/256x256/armbian_social.png new file: share/icons/hicolor/256x256/configng_cog_v1.0.png new file: share/icons/hicolor/256x256/configng_mascot_v2.0.png new file: share/icons/hicolor/256x256/configng_v1.0.png new file: share/icons/hicolor/32x32/armbian_cpu_v1.0.png new file: share/icons/hicolor/32x32/armbian_font.v2.1.png new file: share/icons/hicolor/32x32/armbian_mascot_v2.3.png new file: share/icons/hicolor/32x32/armbian_social.png new file: share/icons/hicolor/32x32/configng_cog_v1.0.png new file: share/icons/hicolor/32x32/configng_mascot_v2.0.png new file: share/icons/hicolor/32x32/configng_v1.0.png new file: share/icons/hicolor/48x48/armbian_cpu_v1.0.png new file: share/icons/hicolor/48x48/armbian_font.v2.1.png new file: share/icons/hicolor/48x48/armbian_mascot_v2.3.png new file: share/icons/hicolor/48x48/armbian_social.png new file: share/icons/hicolor/48x48/configng_cog_v1.0.png new file: share/icons/hicolor/48x48/configng_mascot_v2.0.png new file: share/icons/hicolor/48x48/configng_v1.0.png new file: share/icons/hicolor/512x512/armbian_cpu_v1.0.png new file: share/icons/hicolor/512x512/armbian_font.v2.1.png new file: share/icons/hicolor/512x512/armbian_mascot_v2.3.png new file: share/icons/hicolor/512x512/armbian_social.png new file: share/icons/hicolor/512x512/configng_cog_v1.0.png new file: share/icons/hicolor/512x512/configng_mascot_v2.0.png new file: share/icons/hicolor/512x512/configng_v1.0.png new file: share/icons/hicolor/64x64/armbian_cpu_v1.0.png new file: share/icons/hicolor/64x64/armbian_font.v2.1.png new file: share/icons/hicolor/64x64/armbian_mascot_v2.3.png new file: share/icons/hicolor/64x64/armbian_social.png new file: share/icons/hicolor/64x64/configng_cog_v1.0.png new file: share/icons/hicolor/64x64/configng_mascot_v2.0.png new file: share/icons/hicolor/64x64/configng_v1.0.png modified: workflow/60_icon_set_from_svg.sh
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 18
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (6)
svg_meta.json (1)
1-2: Fix invalid JSON: file ends before closing the array.The file currently contains only the opening bracket, which breaks JSON parsers and the build step flagged by Biome. If this is meant to be a placeholder, use an empty array to remain valid.
Apply this diff:
-[ +[]Follow-up:
- If consumers expect objects with specific fields (e.g., title, desc), consider adding a minimal schema or a placeholder object and add a JSON validation step in CI.
workflow/50_array_to_json.sh (4)
1-3: Harden the script: fail fast on errors and failed pipelines.Add strict mode so JSON generation or cp failures stop the script instead of silently producing partial artifacts.
Apply this diff:
#!/usr/bin/env bash +set -euo pipefail +# If you rely on word-splitting anywhere intentionally, opt out locally with: +# # shellcheck disable=SC2086
84-93: Escape JSON values safely; current interpolation can break on quotes/newlines.Directly embedding strings like "${arr[$mod,description]}" into JSON will break if values contain quotes, backslashes, or newlines. The same applies to command elements. Use jq to JSON-escape each string and build arrays robustly.
Apply these diffs in two places (the direct-group block around Lines 84–93 and the grouped block around Lines 154–163):
- # Command array - cmds="${arr[$mod,command]}" - IFS=',' read -ra cmd_array <<< "$cmds" - cmd_json="" - for idx in "${!cmd_array[@]}"; do - c="$(echo "${cmd_array[$idx]}" | xargs)" - [ $idx -gt 0 ] && cmd_json+=", " - cmd_json+="\"$c\"" - done + # Command array (robust JSON array using jq) + cmds="${arr[$mod,command]}" + IFS=',' read -ra cmd_array <<< "$cmds" + # Build a NUL-delimited stream to preserve spaces/commas, then JSONify + cmd_json="$(printf '%s\0' "${cmd_array[@]}" | jq -R -s 'split("\u0000")[:-1]')"And adjust the heredoc object fields to JSON-escape values (see next comment for the heredoc changes).
Also applies to: 154-163 --- `94-111`: **Use JSON-escaped substitutions inside the heredoc (direct-group item).** Leverage jq to escape each field. This prevents malformed JSON if any source contains quotes or special characters. Apply this diff: ```diff - { - "id": "$feature_id", - "feature": "${arr[$mod,feature]}", - "description": "${arr[$mod,description]}", - "options": "${arr[$mod,options]}", - "author": "${arr[$mod,contributor]}", - "arch": "${arr[$mod,arch]}", - "require_os": "${arr[$mod,require_os]}", - "require_kernel": "${arr[$mod,require_kernel]}", - "status": "Stable", - "helpers": "${arr[$mod,helpers]}", - "about": "${arr[$mod,extend_desc]}", - "condition": "${arr[$mod,condition]}", - "command": [ - $cmd_json - ] - } + { + "id": "$feature_id", + "feature": $(jq -Rn --arg v "${arr[$mod,feature]}" '$v'), + "description": $(jq -Rn --arg v "${arr[$mod,description]}" '$v'), + "options": $(jq -Rn --arg v "${arr[$mod,options]}" '$v'), + "author": $(jq -Rn --arg v "${arr[$mod,contributor]}" '$v'), + "arch": $(jq -Rn --arg v "${arr[$mod,arch]}" '$v'), + "require_os": $(jq -Rn --arg v "${arr[$mod,require_os]}" '$v'), + "require_kernel": $(jq -Rn --arg v "${arr[$mod,require_kernel]}" '$v'), + "status": "Stable", + "helpers": $(jq -Rn --arg v "${arr[$mod,helpers]}" '$v'), + "about": $(jq -Rn --arg v "${arr[$mod,extend_desc]}" '$v'), + "condition": $(jq -Rn --arg v "${arr[$mod,condition]}" '$v'), + "command": $cmd_json + }Note: Using jq -Rn --arg v '...' '$v' avoids forking Python and keeps dependencies consistent since jq is already required.
--- `165-181`: **Mirror the JSON-escaping fix in the grouped-item heredoc.** Apply the same safe substitutions here to keep both code paths consistent. Apply this diff: ```diff - { - "id": "$feature_id", - "feature": "${arr[$mod,feature]}", - "description": "${arr[$mod,description]}", - "options": "${arr[$mod,options]}", - "author": "${arr[$mod,contributor]}", - "arch": "${arr[$mod,arch]}", - "require_os": "${arr[$mod,require_os]}", - "require_kernel": "${arr[$mod,require_kernel]}", - "status": "Stable", - "helpers": "${arr[$mod,helpers]}", - "about": "${arr[$mod,extend_desc]}", - "condition": "${arr[$mod,condition]}", - "command": [ - $cmd_json - ] - } + { + "id": "$feature_id", + "feature": $(jq -Rn --arg v "${arr[$mod,feature]}" '$v'), + "description": $(jq -Rn --arg v "${arr[$mod,description]}" '$v'), + "options": $(jq -Rn --arg v "${arr[$mod,options]}" '$v'), + "author": $(jq -Rn --arg v "${arr[$mod,contributor]}" '$v'), + "arch": $(jq -Rn --arg v "${arr[$mod,arch]}" '$v'), + "require_os": $(jq -Rn --arg v "${arr[$mod,require_os]}" '$v'), + "require_kernel": $(jq -Rn --arg v "${arr[$mod,require_kernel]}" '$v'), + "status": "Stable", + "helpers": $(jq -Rn --arg v "${arr[$mod,helpers]}" '$v'), + "about": $(jq -Rn --arg v "${arr[$mod,extend_desc]}" '$v'), + "condition": $(jq -Rn --arg v "${arr[$mod,condition]}" '$v'), + "command": $cmd_json + }workflow/60_icon_set_from_svg.sh (1)
35-41: Not recursive: nested SVGs (e.g., scalable/legacy) are skipped.Current glob only matches "$SRC_DIR/*.svg". Assets under nested folders won’t be processed.
Apply this diff to include nested SVGs:
-shopt -s nullglob -svg_files=("$SRC_DIR"/*.svg) -if [ ${#svg_files[@]} -eq 0 ]; then +mapfile -t svg_files < <(find "$SRC_DIR" -type f -name '*.svg' | sort -u) +if [ "${#svg_files[@]}" -eq 0 ]; then echo "Error: No SVG files found in '$SRC_DIR'." exit 1 fi -shopt -u nullglob
🧹 Nitpick comments (23)
src/core/initialize/initialize_env.sh (4)
85-88: Avoid double initialization in _initialize_env_showinitialize_env show already calls _initialize_env_vars; calling it again inside _initialize_env_show duplicates work.
Apply:
_initialize_env_show() { - # Make sure variables are initialized first - _initialize_env_vars + # Assumes _initialize_env_vars was called by the caller
36-41: Make BIN_ROOT resolution symlink-aware (optional)If this script is symlinked, pwd may not resolve the real location. Prefer readlink -f or realpath when available; fall back to pwd.
-BIN_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BIN_ROOT="$( + cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 || exit 1 + if command -v readlink >/dev/null 2>&1 && readlink -f "${BASH_SOURCE[0]}" >/dev/null 2>&1; then + dirname "$(readlink -f "${BASH_SOURCE[0]}")" + elif command -v realpath >/dev/null 2>&1; then + dirname "$(realpath "${BASH_SOURCE[0]}")" + else + pwd + fi +)"
161-171: Extend the self-test to cover show/export outputs (optional)The test only asserts help usage. Adding minimal checks for show/export improves confidence without heavy dependencies.
Example snippet to append:
# Basic sanity checks (non-fatal if ip/armbian files are absent) initialize_env show >/dev/null # Verify export emits at least one export line if ! initialize_env export | grep -q '^export BIN_ROOT='; then echo "fail: export did not emit BIN_ROOT" echo "test complete" exit 1 fiI can integrate this and align with your CI expectations.
118-139: Consider gating full file dumps behind a verbose flagDumping entire /etc/os-release and /etc/armbian-release is noisy in non-debug runs. Consider printing paths by default and the contents only when a VERBOSE or DEBUG flag is set.
If desired, I can wire a --verbose flag so initialize_env show only cats files when VERBOSE=1.
src/core/initialize/initialize_env.conf (2)
14-15: Document the export command in the [options] sectionoptions includes export, but [options] lacks a description. Add an entry to keep module metadata consistent.
[options] help=Show help for this module show=Print discovered variables as key=value for inspection +export=Emit export statements (export KEY=VALUE) suitable for evalAlso applies to: 46-47
30-31: Confirm require_os scope (Armbian only?)The implementation works broadly for any distro exposing /etc/os-release; require_os=Armbian narrows availability. If intended to run on Debian/Ubuntu as well, widen this list. If not, ignore.
I can update require_os to Armbian,Debian,Ubuntu if that matches the intended surface. Want me to open a small follow-up?
public_html/json/contributors/configng.json (1)
1-104: Dataset looks consistent and UI-ready; consider freezing order to reduce churn in diffs.The structure (login, contributions, avatar_url, html_url) matches the new UI’s expectations. To minimize noisy diffs in future updates, pre-sort entries (e.g., by contributions desc, then login asc) before committing. If bots are intentionally included, you may want to add a “type”: "bot" | "user" in the future to allow UI filtering without dropping data.
workflow/50_array_to_json.sh (1)
80-83: Sanitize feature_id prefix to alphanumerics to avoid accidental invalid IDs.If grp begins with non-letters (e.g., symbols), IDs like "___001" could be undesirable. Suggest normalizing to A–Z and digits.
Example:
- group_prefix="$(echo "${grp:0:3}" | tr '[:lower:]' '[:upper:]')" + group_prefix="$(echo "${grp:0:3}" | tr '[:lower:]' '[:upper:]' | tr -cd 'A-Z0-9')" + [[ -z "$group_prefix" ]] && group_prefix="GRP"Also applies to: 150-153
public_html/json/contributors/documentation.json (1)
1-338: Large dataset looks well-formed; add periodic re-gen note or timestamp if this feeds “top contributors.”Structure is correct and consistent with other blocks. Consider adding a top-level sibling asset (e.g., public_html/json/contributors/last_updated.json) or embedding a timestamp in the page that fetches these to communicate data freshness to users.
contributors.html (1)
1-7: Optional: De-duplicate with public_html/contributors.html to avoid two UIs.If the richer UI in public_html/ is the new canonical page, consider either redirecting this file or removing it to reduce maintenance overhead and possible confusion over data locations.
public_html/json/images/logo.json (2)
97-99: Trim trailing whitespace in title.Minor cleanliness nit.
- "title": "Armbian SDK Icon ", + "title": "Armbian SDK Icon",
13-16: Normalize naming: dots vs underscores in asset names.armbian_font.v2.1 uses a dot in the basename, while others use underscores. Mixed conventions can complicate globbing, sorting, and cross-tool assumptions.
Consider standardizing to underscores (armbian_font_v2.1) across file names and JSON to reduce edge cases in scripts and UIs.
workflow/60_icon_set_from_svg.sh (1)
8-26: Apt-only installer prompt will break on macOS and in non-interactive CI.Interactive apt install hangs in CI and doesn’t work on macOS. Add OS detection and a non-interactive fallback.
-if ! command -v convert &> /dev/null; then +if ! command -v convert &> /dev/null; then echo "Error: ImageMagick 'convert' command not found." - read -p "Would you like to install ImageMagick using 'sudo apt install imagemagick'? [Y/n] " yn - case "$yn" in - [Yy]* | "" ) - echo "Installing ImageMagick..." - sudo apt update && sudo apt install imagemagick - if ! command -v convert &> /dev/null; then - echo "Installation failed or 'convert' still not found. Exiting." - exit 1 - fi - ;; - * ) - echo "Cannot proceed without ImageMagick. Exiting." - exit 1 - ;; - esac + case "$(uname -s)" in + Linux) + if command -v apt >/dev/null 2>&1; then + echo "Attempting non-interactive install via apt..." + sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick + else + echo "Please install ImageMagick via your distro package manager." + exit 1 + fi + ;; + Darwin) + if command -v brew >/dev/null 2>&1; then + echo "Attempting install via Homebrew..." + brew install imagemagick + else + echo "Install Homebrew first (https://brew.sh) or install ImageMagick manually." + exit 1 + fi + ;; + *) + echo "Unsupported OS for auto-install. Please install ImageMagick manually." + exit 1 + ;; + esac if ! command -v convert &> /dev/null; then echo "Installation failed or 'convert' still not found. Exiting." exit 1 fi fipublic_html/contributors.html (2)
281-286: Avoid stale caches on refresh; disable cache for JSON fetches.Browsers may cache the JSON aggressively, making Refresh ineffective.
- const resp = await fetch(block.file); + const resp = await fetch(block.file, { cache: 'no-store' });
140-155: Improve accessibility feedback for loading and errors.Consider adding aria-live="polite" to the container so screen readers announce load/error state changes when data refreshes.
- <div id="contributors-container"></div> + <div id="contributors-container" aria-live="polite"></div>public_html/images.html (6)
242-249: Add lazy-loading and decode hints to thumbnails to improve page responsivenessImages are created without lazy-loading, which can slow initial render on large datasets. Add loading="lazy" and decode="async" for better perceived performance.
- const img = document.createElement('img'); + const img = document.createElement('img'); + img.loading = 'lazy'; + img.decode = 'async';
243-247: Provide a graceful thumbnail fallback for missing/broken assetsWhen neither PNG nor SVG exists, img.src remains empty, resulting in a broken image icon. Add a tiny transparent data URI (or hide the image) and an onerror fallback.
- img.src = src || ''; + img.src = src || 'data:image/gif;base64,R0lGODlhAQABAAAAACw='; + img.onerror = () => { img.style.display = 'none'; };
237-238: Pluralize item count for better UXMinor UX nit: show “1 item” vs “N items”.
- countEl.textContent = items.length + ' items'; + countEl.textContent = items.length + ' item' + (items.length === 1 ? '' : 's');
163-176: Associate labels to form controls explicitly for accessibilityWrapping inputs with labels works, but adding for/id pairs improves assistive tech navigation and click targets when markup changes.
- <label> - Category - <select id="categoryFilter" class="input" aria-label="Filter by category"> + <label for="categoryFilter">Category</label> + <select id="categoryFilter" class="input" aria-label="Filter by category"> <option value="">All</option> </select> - </label> ... - <label> - Search - <input id="search" class="input" type="search" placeholder="name, title or description" - aria-label="Search images"> - </label> + <label for="search">Search</label> + <input id="search" class="input" type="search" placeholder="name, title or description" + aria-label="Search images">
177-181: Name the downloaded file consistently with the data sourceDownload currently saves as logo.json even if the source path changes. Derive the filename from JSON_URL to avoid confusion.
- a.download = 'logo.json'; + a.download = JSON_URL.split('/').pop() || 'logos.json';
205-218: Normalize error type and avoid mixed return types from fetchJson()Returning an object with {error} vs an array forces downstream type checks. Prefer throwing and catching at the caller, or consistently returning [] with a surfaced status.
Option A (throw; simplest here):
async function fetchJson() { try { const res = await fetch(JSON_URL + '?_=' + Date.now(), { cache: 'no-cache' }); if (!res.ok) throw new Error('HTTP ' + res.status); const data = await res.json(); if (!Array.isArray(data)) throw new Error('JSON root is not an array'); return data; } catch (err) { console.error('Failed to load', JSON_URL, err); - return { error: err }; + throw err; } }And at call site:
- const result = await fetchJson(); - if (result && result.error) { + try { + const result = await fetchJson(); + window._IMAGES_CACHE = result; + populateCategories(result); + render(result); + } catch (e) { empty.textContent = 'Failed to load JSON: ' + result.error.message; empty.style.display = 'block'; countEl.textContent = '0'; window._IMAGES_CACHE = []; return; - } - window._IMAGES_CACHE = result; - populateCategories(result); - render(result); + }staging/web_kit.sh (2)
970-1004: Icon rendering: set SVG density adaptively and skip redundant resizes for small targetsFor tiny sizes (16–32), a constant -density 384 is fine, but for very large outputs 1024 it can be insufficient for some SVG engines and wasteful for small ones. Consider scaling density proportional to size; also avoid recomputing if target file exists and is newer than source.
- $IM -background none -density 384 "$svg" \ + local density=$(( size < 64 ? 192 : (size < 256 ? 384 : 512) )) + # Skip if up-to-date + if [[ -f "${OUT_DIR}/${base}.png" && "${OUT_DIR}/${base}.png" -nt "$svg" ]]; then + continue + fi + $IM -background none -density "${density}" "$svg" \ -resize "${size}x${size}" \ -gravity center -extent "${size}x${size}" \ "${OUT_DIR}/${base}.png"Also applies to: 1008-1034
1089-1112: Self-test invokes web_kit help via the function; ensure PATH-free execution works when sourcedThis is fine when executing the script, but if included from another script, calling web_kit help here may be unexpected. Consider gating the help assertion behind an env flag (e.g., WEB_KIT_SELFTEST!=0).
- # --- Capture and assert help output --- - help_output="$(web_kit help)" + # --- Capture and assert help output (opt-out with WEB_KIT_SELFTEST=0) --- + if [[ "${WEB_KIT_SELFTEST:-1}" != "0" ]]; then + help_output="$(web_kit help)" echo "$help_output" | grep -q "Usage: web_kit" || { echo "fail: Help output does not contain the expected usage string" echo "test complete" exit 1 } - # --- end assertion --- + fi + # --- end assertion ---
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (176)
assets/images/logos/armbian_cpu_v1.0.svgis excluded by!**/*.svgassets/images/logos/armbian_font.v2.1.svgis excluded by!**/*.svgassets/images/logos/armbian_mascot_v2.3.svgis excluded by!**/*.svgassets/images/logos/armbian_social.svgis excluded by!**/*.svgassets/images/logos/configng_cog_v1.0.svgis excluded by!**/*.svgassets/images/logos/configng_mascot_v2.0.svgis excluded by!**/*.svgassets/images/logos/configng_v1.0.svgis excluded by!**/*.svgassets/images/logos/legacy/armbian_font_v1.5.svgis excluded by!**/*.svgassets/images/logos/legacy/armbian_os_v1.1.svgis excluded by!**/*.svgassets/images/logos/legacy/armbian_sdk_v1.1.svgis excluded by!**/*.svgmodules_browsers/go.sumis excluded by!**/*.sumpublic_html/favicon.icois excluded by!**/*.icopublic_html/images/logos/1024x1024/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/1024x1024/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/128x128/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/16x16/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/180x180/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/192x192/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/256x256/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/32x32/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/384x384/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/48x48/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/512x512/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/64x64/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/armbian_cpu_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/armbian_font.v2.1.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/armbian_font_v1.5.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/armbian_mascot_v2.3.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/armbian_os_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/armbian_sdk_v1.1.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/armbian_social.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/configng_cog_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/configng_mascot_v2.0.pngis excluded by!**/*.pngpublic_html/images/logos/96x96/configng_v1.0.pngis excluded by!**/*.pngpublic_html/images/logos/scalable/armbian_cpu_v1.0.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/armbian_font.v2.1.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/armbian_mascot_v2.3.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/armbian_social.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/configng_cog_v1.0.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/configng_mascot_v2.0.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/configng_v1.0.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/legacy/armbian_font_v1.5.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/legacy/armbian_os_v1.1.svgis excluded by!**/*.svgpublic_html/images/logos/scalable/legacy/armbian_sdk_v1.1.svgis excluded by!**/*.svgweb_kit/src/images/16x16/armbian_font.v2.1.pngis excluded by!**/*.pngweb_kit/src/images/16x16/armbian_font_v1.5.pngis excluded by!**/*.pngweb_kit/src/images/16x16/armbian_mascot_v2.3.pngis excluded by!**/*.pngweb_kit/src/images/16x16/armbian_os_v1.1.pngis excluded by!**/*.pngweb_kit/src/images/16x16/armbian_sdk_v1.1.pngis excluded by!**/*.pngweb_kit/src/images/16x16/armbian_social.pngis excluded by!**/*.pngweb_kit/src/images/16x16/configng_cog_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/16x16/configng_mascot_v2.0.pngis excluded by!**/*.pngweb_kit/src/images/16x16/configng_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/32x32/armbian_cpu_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/32x32/armbian_font.v2.1.pngis excluded by!**/*.pngweb_kit/src/images/32x32/armbian_font_v1.5.pngis excluded by!**/*.pngweb_kit/src/images/32x32/armbian_mascot_v2.3.pngis excluded by!**/*.pngweb_kit/src/images/32x32/armbian_os_v1.1.pngis excluded by!**/*.pngweb_kit/src/images/32x32/armbian_sdk_v1.1.pngis excluded by!**/*.pngweb_kit/src/images/32x32/armbian_social.pngis excluded by!**/*.pngweb_kit/src/images/32x32/configng_cog_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/32x32/configng_mascot_v2.0.pngis excluded by!**/*.pngweb_kit/src/images/32x32/configng_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/48x48/armbian_cpu_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/48x48/armbian_font.v2.1.pngis excluded by!**/*.pngweb_kit/src/images/48x48/armbian_font_v1.5.pngis excluded by!**/*.pngweb_kit/src/images/48x48/armbian_mascot_v2.3.pngis excluded by!**/*.pngweb_kit/src/images/48x48/armbian_os_v1.1.pngis excluded by!**/*.pngweb_kit/src/images/48x48/armbian_sdk_v1.1.pngis excluded by!**/*.pngweb_kit/src/images/48x48/armbian_social.pngis excluded by!**/*.pngweb_kit/src/images/48x48/configng_cog_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/48x48/configng_mascot_v2.0.pngis excluded by!**/*.pngweb_kit/src/images/48x48/configng_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/512x512/armbian_cpu_v1.0.pngis excluded by!**/*.pngweb_kit/src/images/512x512/armbian_font.v2.1.pngis excluded by!**/*.pngweb_kit/src/images/512x512/armbian_font_v1.5.pngis excluded by!**/*.pngweb_kit/src/images/512x512/armbian_social.pngis excluded by!**/*.pngweb_kit/src/images/512x512/configng_v1.0.pngis excluded by!**/*.png
📒 Files selected for processing (42)
contributors.html(1 hunks)modules_browsers/README.md(0 hunks)modules_browsers/go.mod(0 hunks)modules_browsers/modules_browser.go(0 hunks)modules_browsers/modules_browser.html(0 hunks)modules_browsers/modules_browser.py(0 hunks)modules_browsers/modules_metadata.json(0 hunks)modules_browsers/web-server.go(0 hunks)public_html/contributors.html(1 hunks)public_html/images.html(1 hunks)public_html/json/contributors/configng-v2.json(1 hunks)public_html/json/contributors/configng.json(1 hunks)public_html/json/contributors/documentation.json(1 hunks)public_html/json/images/logo.json(1 hunks)src/core/initialize/initialize_env.conf(1 hunks)src/core/initialize/initialize_env.sh(1 hunks)staging/web_kit.conf(1 hunks)staging/web_kit.sh(1 hunks)svg_meta.json(1 hunks)web_kit/README.md(0 hunks)web_kit/media_kit.sh(0 hunks)web_kit/src/css/blue.css(0 hunks)web_kit/src/css/green.css(0 hunks)web_kit/src/css/grey.css(0 hunks)web_kit/src/css/red.css(0 hunks)web_kit/src/css/style.css(0 hunks)web_kit/src/css/white.css(0 hunks)web_kit/src/index.html(0 hunks)web_kit/src/js/configng.js(0 hunks)web_kit/src/js/contact.js(0 hunks)web_kit/src/js/home.js(0 hunks)web_kit/src/js/nav.js(0 hunks)web_kit/src/js/script.js(0 hunks)web_kit/src/js/templates.js(0 hunks)web_kit/src/js/theme.js(0 hunks)web_kit/src/json/author.json(0 hunks)web_kit/src/json/configng_v2.json(0 hunks)web_kit/src/json/contact-info.json(0 hunks)web_kit/src/json/home.json(0 hunks)web_kit/src/json/logos.json(0 hunks)workflow/50_array_to_json.sh(1 hunks)workflow/60_icon_set_from_svg.sh(1 hunks)
💤 Files with no reviewable changes (28)
- web_kit/src/js/home.js
- web_kit/src/js/configng.js
- web_kit/src/js/script.js
- web_kit/src/json/home.json
- web_kit/src/json/configng_v2.json
- web_kit/src/js/nav.js
- modules_browsers/modules_metadata.json
- web_kit/README.md
- web_kit/src/index.html
- web_kit/src/css/green.css
- web_kit/src/js/theme.js
- web_kit/src/css/grey.css
- web_kit/src/css/red.css
- modules_browsers/web-server.go
- web_kit/src/js/templates.js
- modules_browsers/modules_browser.py
- web_kit/src/json/contact-info.json
- modules_browsers/go.mod
- web_kit/src/js/contact.js
- modules_browsers/modules_browser.go
- web_kit/src/css/blue.css
- modules_browsers/modules_browser.html
- web_kit/src/json/author.json
- web_kit/src/css/white.css
- web_kit/src/json/logos.json
- web_kit/src/css/style.css
- web_kit/media_kit.sh
- modules_browsers/README.md
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: Tearran
PR: Tearran/configng-v2#36
File: src/network/interface/network_manager.sh:46-53
Timestamp: 2025-06-23T18:54:21.952Z
Learning: Tearran prefers heredoc over echo/printf for multi-line templating work, especially for generating dynamic content from metadata. Heredoc provides better readability, easier maintenance, and is more forgiving for complex formatting than chained echo statements.
📚 Learning: 2025-07-24T05:52:42.317Z
Learnt from: Tearran
PR: Tearran/configng-v2#92
File: workflow/50_array_to_json.sh:236-236
Timestamp: 2025-07-24T05:52:42.317Z
Learning: In workflow/50_array_to_json.sh, core_options are intentionally excluded from the arrays list because they are internal/administrative commands not meant for TUI/GUI/UX interfacing. The JSON output is specifically for user-facing interfaces, so core options should remain separate from the user-facing system/network/software options.
Applied to files:
workflow/50_array_to_json.sh
📚 Learning: 2025-07-23T18:29:39.709Z
Learnt from: Tearran
PR: Tearran/configng-v2#89
File: modules_browsers/modules_browser.html:470-476
Timestamp: 2025-07-23T18:29:39.709Z
Learning: Tearran's configng-v2 project has excellent implementation across most goals: 15/15 modules with matching .conf/.sh files, robust documentation automation (4 workflow scripts), existing scaffolding (20_promote_module.sh), strong frontend/backend separation (20 interface modules), and active JSON generation. The main verification needed is CLI compatibility between the new ID system (USE001, MAN001) and existing armbian/configng integration points.
Applied to files:
workflow/50_array_to_json.sh
📚 Learning: 2025-06-16T21:50:00.575Z
Learnt from: Tearran
PR: Tearran/configng-v2#23
File: staging/interface/test_info_box.sh:6-10
Timestamp: 2025-06-16T21:50:00.575Z
Learning: Tearran's project currently uses only a 'contributor' field in configuration files, not a 'maintained' field. The contributor field appears to indicate both authorship and maintenance responsibility.
Applied to files:
public_html/json/contributors/configng-v2.json
🧬 Code graph analysis (6)
workflow/60_icon_set_from_svg.sh (1)
media_kit/media_kit.sh (2)
_icon_set_from_svg(280-370)_index_json(168-248)
staging/web_kit.conf (1)
SDK/00_start_here.sh (1)
_template_conf(25-76)
public_html/images.html (1)
media_kit/media_kit.sh (1)
_index_json(168-248)
src/core/initialize/initialize_env.conf (1)
SDK/00_start_here.sh (1)
_template_conf(25-76)
public_html/json/images/logo.json (1)
media_kit/media_kit.sh (1)
_index_json(168-248)
staging/web_kit.sh (2)
media_kit/media_kit.sh (4)
media_kit(6-30)_about_media_kit(372-406)_index_json(168-248)_html_index(32-166)SDK/00_start_here.sh (1)
_template_sh(78-149)
🪛 Biome (2.1.2)
svg_meta.json
[error] 1-1: expected ] but instead the file ends
the file ends here
(parse)
🔇 Additional comments (6)
src/core/initialize/initialize_env.sh (1)
144-156: Help text omits supported commands and short flagsHelp should reflect help|show|export and their short forms for discoverability and to satisfy the self-test intent.
-_about_initialize_env() { - cat <<"EOF" -Usage: initialize_env [help|-h|--help] - -About: - The 'initialize_env' module provides environment detection utilities. - -Commands: - help - Show this help message. - -Notes: - - To set variables in the current shell: source this file and call _initialize_env_vars - - When executed, this file's test entrypoint verifies the environment and prints variables. -EOF -} +_about_initialize_env() { + cat <<"EOF" +Usage: initialize_env [help|-h|--help|show|-s|export|-e] + +About: + The 'initialize_env' module provides environment detection utilities. + +Commands: + help - Show this help message. + show|-s - Print discovered variables and OS info for inspection. + export|-e - Emit export statements (export KEY=VALUE) suitable for: eval "$(initialize_env export)" + +Notes: + - To set variables in the current shell: source this file and call _initialize_env_vars + - When executed, this file's test entrypoint verifies the environment and prints variables. +EOF +}⛔ Skipped due to learnings
Learnt from: Tearran PR: Tearran/configng-v2#36 File: src/network/interface/network_manager.sh:46-53 Timestamp: 2025-06-23T18:16:55.123Z Learning: In Tearran's CLI tools, help text intentionally shows simplified "command" terminology with only preferred options for UI parsing and integration purposes, while the actual implementation includes additional standard flags (like -h, --help) for bash/shell conventions. This creates an intentional discrepancy between displayed help and full functionality.workflow/50_array_to_json.sh (1)
94-111: Nice use of heredocs for templating JSON.This aligns with the project preference for readability and maintenance over chained echoes.
Also applies to: 165-181
public_html/json/contributors/configng-v2.json (1)
4-4: Contributions count verifiedThe “contributions” value for Tearran (243) in
public_html/json/contributors/configng-v2.jsonmatches the GitHub API response. No updates are needed.workflow/60_icon_set_from_svg.sh (1)
49-52: Icon output path is correct and not used by the web gallery
Theworkflow/60_icon_set_from_svg.shscript installs PNGs intoshare/icons/hicolor/...for packaging as a freedesktop‐compliant icon theme. The web gallery and JSON generator live underpublic_html/json/imagesand reference SVGs (and any web‐served logos) inimages/logos, not the hicolor directory. A search across the repo shows no references toimages/${size}x${size}or toshare/icons/hicolorin the gallery or JSON code, so there are no broken links inpublic_html. You can safely ignore the suggested path change.Likely an incorrect or invalid review comment.
staging/web_kit.conf (1)
40-41: All listed helpers are present in staging/web_kit.shI’ve confirmed that every helper referenced in the
helpers=line ofstaging/web_kit.confis implemented instaging/web_kit.sh, including:
_about_web_kit(line 1037)_web_kit_logo_json(line 57)_web_kit_images_page(line 204)_web_kit_server_py(line 551)_web_kit_contributors_json(line 594)_web_kit_contrib_page(line 625)_web_kit_icon_set(line 954)json_escape(line 95)extract_tag_content(line 104)No missing helpers—module validation should pass.
staging/web_kit.sh (1)
204-548: Good use of heredocs for page generation; matches maintainer preferenceBoth _web_kit_images_page and _web_kit_contrib_page use heredocs with minimal shell interpolation, improving readability and maintainability. This aligns with the stated preference for heredocs over echoed strings.
deleted: public_html/favicon.ico deleted: public_html/images.html deleted: public_html/images/logos/1024x1024/armbian_cpu_v1.0.png deleted: public_html/images/logos/1024x1024/armbian_font.v2.1.png deleted: public_html/images/logos/1024x1024/armbian_font_v1.5.png deleted: public_html/images/logos/1024x1024/armbian_mascot_v2.3.png deleted: public_html/images/logos/1024x1024/armbian_os_v1.1.png deleted: public_html/images/logos/1024x1024/armbian_sdk_v1.1.png deleted: public_html/images/logos/1024x1024/armbian_social.png deleted: public_html/images/logos/1024x1024/configng_cog_v1.0.png deleted: public_html/images/logos/1024x1024/configng_mascot_v2.0.png deleted: public_html/images/logos/1024x1024/configng_v1.0.png deleted: public_html/images/logos/128x128/armbian_cpu_v1.0.png deleted: public_html/images/logos/128x128/armbian_font.v2.1.png deleted: public_html/images/logos/128x128/armbian_font_v1.5.png deleted: public_html/images/logos/128x128/armbian_mascot_v2.3.png deleted: public_html/images/logos/128x128/armbian_os_v1.1.png deleted: public_html/images/logos/128x128/armbian_sdk_v1.1.png deleted: public_html/images/logos/128x128/armbian_social.png deleted: public_html/images/logos/128x128/configng_cog_v1.0.png deleted: public_html/images/logos/128x128/configng_mascot_v2.0.png deleted: public_html/images/logos/128x128/configng_v1.0.png deleted: public_html/images/logos/16x16/armbian_cpu_v1.0.png deleted: public_html/images/logos/16x16/armbian_font.v2.1.png deleted: public_html/images/logos/16x16/armbian_font_v1.5.png deleted: public_html/images/logos/16x16/armbian_mascot_v2.3.png deleted: public_html/images/logos/16x16/armbian_os_v1.1.png deleted: public_html/images/logos/16x16/armbian_sdk_v1.1.png deleted: public_html/images/logos/16x16/armbian_social.png deleted: public_html/images/logos/16x16/configng_cog_v1.0.png deleted: public_html/images/logos/16x16/configng_mascot_v2.0.png deleted: public_html/images/logos/16x16/configng_v1.0.png deleted: public_html/images/logos/180x180/armbian_cpu_v1.0.png deleted: public_html/images/logos/180x180/armbian_font.v2.1.png deleted: public_html/images/logos/180x180/armbian_font_v1.5.png deleted: public_html/images/logos/180x180/armbian_mascot_v2.3.png deleted: public_html/images/logos/180x180/armbian_os_v1.1.png deleted: public_html/images/logos/180x180/armbian_sdk_v1.1.png deleted: public_html/images/logos/180x180/armbian_social.png deleted: public_html/images/logos/180x180/configng_cog_v1.0.png deleted: public_html/images/logos/180x180/configng_mascot_v2.0.png deleted: public_html/images/logos/180x180/configng_v1.0.png deleted: public_html/images/logos/192x192/armbian_cpu_v1.0.png deleted: public_html/images/logos/192x192/armbian_font.v2.1.png deleted: public_html/images/logos/192x192/armbian_font_v1.5.png deleted: public_html/images/logos/192x192/armbian_mascot_v2.3.png deleted: public_html/images/logos/192x192/armbian_os_v1.1.png deleted: public_html/images/logos/192x192/armbian_sdk_v1.1.png deleted: public_html/images/logos/192x192/armbian_social.png deleted: public_html/images/logos/192x192/configng_cog_v1.0.png deleted: public_html/images/logos/192x192/configng_mascot_v2.0.png deleted: public_html/images/logos/192x192/configng_v1.0.png deleted: public_html/images/logos/256x256/armbian_cpu_v1.0.png deleted: public_html/images/logos/256x256/armbian_font.v2.1.png deleted: public_html/images/logos/256x256/armbian_font_v1.5.png deleted: public_html/images/logos/256x256/armbian_mascot_v2.3.png deleted: public_html/images/logos/256x256/armbian_os_v1.1.png deleted: public_html/images/logos/256x256/armbian_sdk_v1.1.png deleted: public_html/images/logos/256x256/armbian_social.png deleted: public_html/images/logos/256x256/configng_cog_v1.0.png deleted: public_html/images/logos/256x256/configng_mascot_v2.0.png deleted: public_html/images/logos/256x256/configng_v1.0.png deleted: public_html/images/logos/32x32/armbian_cpu_v1.0.png deleted: public_html/images/logos/32x32/armbian_font.v2.1.png deleted: public_html/images/logos/32x32/armbian_font_v1.5.png deleted: public_html/images/logos/32x32/armbian_mascot_v2.3.png deleted: public_html/images/logos/32x32/armbian_os_v1.1.png deleted: public_html/images/logos/32x32/armbian_sdk_v1.1.png deleted: public_html/images/logos/32x32/armbian_social.png deleted: public_html/images/logos/32x32/configng_cog_v1.0.png deleted: public_html/images/logos/32x32/configng_mascot_v2.0.png deleted: public_html/images/logos/32x32/configng_v1.0.png deleted: public_html/images/logos/384x384/armbian_cpu_v1.0.png deleted: public_html/images/logos/384x384/armbian_font.v2.1.png deleted: public_html/images/logos/384x384/armbian_font_v1.5.png deleted: public_html/images/logos/384x384/armbian_mascot_v2.3.png deleted: public_html/images/logos/384x384/armbian_os_v1.1.png deleted: public_html/images/logos/384x384/armbian_sdk_v1.1.png deleted: public_html/images/logos/384x384/armbian_social.png deleted: public_html/images/logos/384x384/configng_cog_v1.0.png deleted: public_html/images/logos/384x384/configng_mascot_v2.0.png deleted: public_html/images/logos/384x384/configng_v1.0.png deleted: public_html/images/logos/48x48/armbian_cpu_v1.0.png deleted: public_html/images/logos/48x48/armbian_font.v2.1.png deleted: public_html/images/logos/48x48/armbian_font_v1.5.png deleted: public_html/images/logos/48x48/armbian_mascot_v2.3.png deleted: public_html/images/logos/48x48/armbian_os_v1.1.png deleted: public_html/images/logos/48x48/armbian_sdk_v1.1.png deleted: public_html/images/logos/48x48/armbian_social.png deleted: public_html/images/logos/48x48/configng_cog_v1.0.png deleted: public_html/images/logos/48x48/configng_mascot_v2.0.png deleted: public_html/images/logos/48x48/configng_v1.0.png deleted: public_html/images/logos/512x512/armbian_cpu_v1.0.png deleted: public_html/images/logos/512x512/armbian_font.v2.1.png deleted: public_html/images/logos/512x512/armbian_font_v1.5.png deleted: public_html/images/logos/512x512/armbian_mascot_v2.3.png deleted: public_html/images/logos/512x512/armbian_os_v1.1.png deleted: public_html/images/logos/512x512/armbian_sdk_v1.1.png deleted: public_html/images/logos/512x512/armbian_social.png deleted: public_html/images/logos/512x512/configng_cog_v1.0.png deleted: public_html/images/logos/512x512/configng_mascot_v2.0.png deleted: public_html/images/logos/512x512/configng_v1.0.png deleted: public_html/images/logos/64x64/armbian_cpu_v1.0.png deleted: public_html/images/logos/64x64/armbian_font.v2.1.png deleted: public_html/images/logos/64x64/armbian_font_v1.5.png deleted: public_html/images/logos/64x64/armbian_mascot_v2.3.png deleted: public_html/images/logos/64x64/armbian_os_v1.1.png deleted: public_html/images/logos/64x64/armbian_sdk_v1.1.png deleted: public_html/images/logos/64x64/armbian_social.png deleted: public_html/images/logos/64x64/configng_cog_v1.0.png deleted: public_html/images/logos/64x64/configng_mascot_v2.0.png deleted: public_html/images/logos/64x64/configng_v1.0.png deleted: public_html/images/logos/96x96/armbian_cpu_v1.0.png deleted: public_html/images/logos/96x96/armbian_font.v2.1.png deleted: public_html/images/logos/96x96/armbian_font_v1.5.png deleted: public_html/images/logos/96x96/armbian_mascot_v2.3.png deleted: public_html/images/logos/96x96/armbian_os_v1.1.png deleted: public_html/images/logos/96x96/armbian_sdk_v1.1.png deleted: public_html/images/logos/96x96/armbian_social.png deleted: public_html/images/logos/96x96/configng_cog_v1.0.png deleted: public_html/images/logos/96x96/configng_mascot_v2.0.png deleted: public_html/images/logos/96x96/configng_v1.0.png deleted: public_html/images/logos/scalable/armbian_cpu_v1.0.svg deleted: public_html/images/logos/scalable/armbian_font.v2.1.svg deleted: public_html/images/logos/scalable/armbian_mascot_v2.3.svg deleted: public_html/images/logos/scalable/armbian_social.svg deleted: public_html/images/logos/scalable/configng_cog_v1.0.svg deleted: public_html/images/logos/scalable/configng_mascot_v2.0.svg deleted: public_html/images/logos/scalable/configng_v1.0.svg deleted: public_html/images/logos/scalable/legacy/armbian_font_v1.5.svg deleted: public_html/images/logos/scalable/legacy/armbian_os_v1.1.svg deleted: public_html/images/logos/scalable/legacy/armbian_sdk_v1.1.svg deleted: public_html/json/contributors/configng-v2.json deleted: public_html/json/contributors/configng.json deleted: public_html/json/contributors/documentation.json deleted: public_html/json/images/logo.json new file: staging/setup_scafolding.conf new file: staging/setup_scafolding.sh modified: staging/web_kit.sh modified: workflow/00_start_here.sh
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (6)
staging/setup_scafolding.sh (4)
6-15: Gracefully handle no-argument invocation by defaulting to help.Treating an empty first arg as help improves UX and avoids descending into _setup_scafolding_main just to handle emptiness again.
setup_scafolding() { - case "${1:-}" in - help|-h|--help) + case "${1:-}" in + ""|help|-h|--help) _about_setup_scafolding ;; *) _setup_scafolding_main "$@" ;; esac }
130-139: Pass through CLI args to the generated module main.Forwarding "$@" makes the template more generally useful without requiring users to rewire the dispatcher later.
case "\${1:-}" in help|-h|--help) _about_${MODULE} ;; *) - _${MODULE}_main + _${MODULE}_main "$@" ;; esac
64-66: Prefer printf over echo -e for portability and format safety.printf avoids implementation-specific escape handling and lets you format variables safely.
-echo -e "Staging: Complete\nScaffold for ${MODULE} can be found at ${STAGING_DIR}/." -echo "Created: $created, Skipped: $skipped" +printf "Staging: Complete\nScaffold for %s can be found at %s/.\n" "${MODULE}" "${STAGING_DIR}" +printf "Created: %d, Skipped: %d\n" "${created}" "${skipped}"
4-15: Unify “scaffolding” spelling across script and metadataThe project currently uses the misspelling “scafolding” in both the shell script and its accompanying
.conffile, which may lead to confusion and hinder searchability. These need to be renamed and updated consistently.Files and locations to update:
Rename files
staging/setup_scafolding.sh→staging/setup_scaffolding.shstaging/setup_scafolding.conf→staging/setup_scaffolding.confIn staging/setup_scafolding.sh (all occurrences of “scafolding” should become “scaffolding”):
- Header comment (line 4)
- Function declarations and invocations:
setup_scafolding()→setup_scaffolding()(line 6)_setup_scafolding_main→_setup_scaffolding_main_about_setup_scafolding→_about_setup_scaffolding- Usage text (lines 197–198):
Usage: setup_scafolding <module-name> [options]→Usage: setup_scaffolding <module-name> [options]- Example commands (lines 207, 210, 213):
setup_scafolding testmod→setup_scaffolding testmod- Test assertion (line 231): update grep to expect
Usage: setup_scaffoldingIn staging/setup_scafolding.conf (update section name, feature key, helpers list):
- Section header
[setup_scafolding]→[setup_scaffolding](line 3)feature=setup_scafolding→feature=setup_scaffolding(line 5)helpers=_setup_scafolding_main,_template_conf,_template_sh,_about_setup_scafolding→helpers=_setup_scaffolding_main,_template_conf,_template_sh,_about_setup_scaffolding(line 43)Run a global search for the old spelling to catch any remaining references:
rg -nP 'scafold' -S -C2staging/setup_scafolding.conf (2)
11-14: Flatten extend_desc to a single line (INI parsers typically don’t support multiline values).Unless your loader explicitly supports multiline fields, these continuation lines will likely be treated as stray keys/garbage. Safer to collapse to a single line.
-extend_desc=Creates starter `.conf` and `.sh` files for new Configng V2 modules. -Validates the provided module name, ensures the staging directory exists, -and writes template files to it. Intended to standardize the structure of -new modules and speed up development. +extend_desc=Creates starter .conf and .sh files for new Configng V2 modules. Validates the provided module name, ensures the staging directory exists, and writes template files to it. Intended to standardize the structure of new modules and speed up development.If multiline is required, consider a separate docs file or an escaped newline convention handled by your parser.
1-1: Standardize spelling of “scaffolding” in setup_scaffolding modulesTo align with the project-wide scaffolding conventions and improve discoverability (per learned preference for consistent scaffolding standards), rename all occurrences of “scafolding” → “scaffolding”. Verified instances below.
• staging/setup_scafolding.conf
• staging/setup_scafolding.shDiff examples:
# staging/setup_scafolding.conf -# setup_scafolding - Configng V2 metadata +# setup_scaffolding - Configng V2 metadata -[setup_scafolding] +[setup_scaffolding] -feature=setup_scafolding +feature=setup_scaffolding# staging/setup_scafolding.sh -setup_scafolding() { +setup_scaffolding() { … -_about_setup_scafolding() { +_about_setup_scaffolding() { … -Usage: setup_scafolding <module-name> [options] +Usage: setup_scaffolding <module-name> [options]Also update:
- File names (
setup_scafolding.conf→setup_scaffolding.conf,setup_scafolding.sh→setup_scaffolding.sh)- Any helper functions or invocations in the test entrypoint (lines ~228–239)
You can run:
rg -nP '\bsetup_scafold\w*\b' -S -C2to locate all remaining references.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (3)
staging/setup_scafolding.conf(1 hunks)staging/setup_scafolding.sh(1 hunks)staging/web_kit.sh(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- staging/web_kit.sh
🧰 Additional context used
🧠 Learnings (7)
📓 Common learnings
Learnt from: Tearran
PR: Tearran/configng-v2#36
File: src/network/interface/network_manager.sh:46-53
Timestamp: 2025-06-23T18:54:21.952Z
Learning: Tearran prefers heredoc over echo/printf for multi-line templating work, especially for generating dynamic content from metadata. Heredoc provides better readability, easier maintenance, and is more forgiving for complex formatting than chained echo statements.
📚 Learning: 2025-07-05T16:08:27.350Z
Learnt from: Tearran
PR: Tearran/configng-v2#58
File: tools/configng_v2.sh:25-27
Timestamp: 2025-07-05T16:08:27.350Z
Learning: In tools/configng_v2.sh, the staging code block (lines 23-31) is specifically for development and refining mini modules. The TRACE=true setting within this block is intentional for development purposes and would be stripped out if/when this becomes the main binary entry point for production. The staging folder and its associated code are temporary development tools, not production code.
Applied to files:
staging/setup_scafolding.shstaging/setup_scafolding.conf
📚 Learning: 2025-07-23T18:29:39.709Z
Learnt from: Tearran
PR: Tearran/configng-v2#89
File: modules_browsers/modules_browser.html:470-476
Timestamp: 2025-07-23T18:29:39.709Z
Learning: Tearran's configng-v2 project has excellent implementation across most goals: 15/15 modules with matching .conf/.sh files, robust documentation automation (4 workflow scripts), existing scaffolding (20_promote_module.sh), strong frontend/backend separation (20 interface modules), and active JSON generation. The main verification needed is CLI compatibility between the new ID system (USE001, MAN001) and existing armbian/configng integration points.
Applied to files:
staging/setup_scafolding.shstaging/setup_scafolding.conf
📚 Learning: 2025-06-15T15:37:25.466Z
Learnt from: Tearran
PR: Tearran/configng-v2#12
File: src/test_checkpoint.sh:4-8
Timestamp: 2025-06-15T15:37:25.466Z
Learning: In the configng-v2 project, test files like `src/test_checkpoint.sh` are generated by `tools/staging_setup_scaffold.sh`. In the generator script, variables need to be escaped with backslashes (e.g., `\${BASH_SOURCE[0]}`, `\${0}`) so they are evaluated at runtime in the generated script rather than during the scaffold generation process.
Applied to files:
staging/setup_scafolding.sh
📚 Learning: 2025-06-14T07:07:36.487Z
Learnt from: Tearran
PR: Tearran/configng-v2#11
File: staging/src_tests.sh:4-7
Timestamp: 2025-06-14T07:07:36.487Z
Learning: The file `staging/src_tests.sh` in the configng-v2 repository is a temporary test file created specifically to test the GitHub workflow `.github/workflows/02_github_workflows_staging.yml`, not a production module meant for implementation.
Applied to files:
staging/setup_scafolding.sh
📚 Learning: 2025-07-23T18:29:39.709Z
Learnt from: Tearran
PR: Tearran/configng-v2#89
File: modules_browsers/modules_browser.html:470-476
Timestamp: 2025-07-23T18:29:39.709Z
Learning: Tearran's configng-v2 project shows strong implementation in metadata systems, documentation automation, and frontend/backend separation, but has a critical gap in scaffolding infrastructure (missing tools/ directory) and needs verification of CLI compatibility with the new ID system (USE001, MAN001) for backward compatibility with armbian/configng.
Applied to files:
staging/setup_scafolding.shstaging/setup_scafolding.conf
📚 Learning: 2025-07-16T17:31:03.723Z
Learnt from: Tearran
PR: Tearran/configng-v2#71
File: staging/start_here.sh:0-0
Timestamp: 2025-07-16T17:31:03.723Z
Learning: In configng-v2, scaffold templates are intentionally incomplete and should fail validation until developers complete all required fields. This fail-fast design enforces proper completion before module promotion. The staging validation mode only checks for duplicates, allowing incomplete scaffolds to exist in staging/ while preventing naming conflicts.
Applied to files:
staging/setup_scafolding.shstaging/setup_scafolding.conf
🧬 Code graph analysis (2)
staging/setup_scafolding.sh (2)
workflow/00_start_here.sh (1)
_about_setup_module(6-23)SDK/00_start_here.sh (5)
_template_sh(78-149)_make_module(185-234)_template_conf(25-76)setup_module(249-259)_about_setup_module(6-23)
staging/setup_scafolding.conf (2)
SDK/00_start_here.sh (3)
_template_conf(25-76)_make_module(185-234)_template_sh(78-149)SDK/20_promote_module.sh (1)
promote_module(5-55)
🔇 Additional comments (2)
staging/setup_scafolding.sh (1)
176-191: Good heredoc escaping in the template entrypoint.Escaping BASH_SOURCE, 0, and intermediate variables ensures they evaluate at runtime in the generated script, not during scaffolding. Nicely aligned with prior guidance/preference for heredocs.
staging/setup_scafolding.conf (1)
41-44: Helpers-to-implementation mapping looks correct.Declared helpers match the functions implemented in staging/setup_scafolding.sh, including the help function. This should satisfy your validation rule.
@coderabbitai
Summary by CodeRabbit
New Features
Improvements
Chores