Unreleased
Added
- Chinese guides and developer documentation at
https://banyan.swaw.com/. - Hugo Module at
github.com/SwawHQ/banyan/module, with matchingswaw-banyanSkill versions.doctor [directory]checks Module and theme-directory versions, vendored dependencies and local development. Local theme versions come fromtheme.toml. Doctor also checks selected tools and runtime launchers, including a damaged launcher or bindings file, and provides manual recovery steps. Ordinary tasks do not check pairing. Check switches and repair hints are maintained inreferences/doctor.toml. Extracted project ZIPs pair their built-in Skill and Module usingmodule/theme.toml, without a.gitdirectory. Recovery messages include the project URL, theme source ZIP and Module version commands. - Windows x64 CLI with Node/npm, Git, Go, Hugo and optional Bun and GitHub CLI.
uv and Python 3.13 support isolated Python scripts and CLI packages in the Skill,
including sites that already use uv. The system PATH and Python registry stay unchanged.
Portable downloads are checksum-verified. npm prepares parser packages
on demand for
sync/extand content checks, isolated from parent workspaces; site builds need no npm dependencies. - Name and product list views with shared column navigation and sorting. Site-owned taxonomies define product classifications.
- Powered by page with the effective theme and Hugo versions, site build details, and PWA status and update checks.
- Versioned release notes in the demo site’s
content/changelog/.params.theme_changelogsets the Powered by release-notes URL. - Browser checks for navigation, layout, language settings, images, prefetch
and PWA, with Chromium and selected WebKit checks.
check/browser/sitediscovers representative pages and reports skipped coverage. - Static and HTTP checks for content, HTML, sitemap, robots, LLMS, images,
CSP, SRI, cache headers and prefetch, plus asset-size and payload reports.
HTML checks also validate article date rows, path order, aside controllers
and static update controls.
check/deliverychecks generated platform formats, fingerprint policy agreement and published file names without reading resource bodies. Use--base-pathfor subdirectory deployments; URL path characters and EdgeOne host redirects retain their platform syntax. sync/extfor declared external resources anddeploy/edgeone/syncfor generated deployment configuration.deploy/cloudflare/clianddeploy/cloudflare/wranglerrun pinned Cloudflare CLIs with native arguments. Each hasensure [--force]and a localcheck; normal commands prepare packages as needed. Authentication uses each CLI’s native per-user credentials or a shared API Token in Windows Credential Manager. Native configuration, sign-in credentials and storage remain CLI-managed; compatible sign-in from system installations can be reused.auth/token/checkalso finds manually added credentials. Resource names and explicit boolean flag values no longer change credential selection.auth whoamiuses the same credential priority as resource commands. cf and Wrangler commands, including page sign-in and status checks, use fixed%TEMP%/swaw/banyan/cf/and%TEMP%/swaw/banyan/wrangler/directories. The directories and caches persist. Local paths use these directories; use absolute local paths. For a project, pass Wrangler’s native--cwdwith an absolute project path. cf resource-management commands use an empty configuration; development and builds need an actual project configuration.deploy/tencent/cliruns a pinned tccli with automatic uv/Python preparation in an isolated Skill environment. It providesensure [--force]and a local read-onlycheck, preserving native Tencent Cloud and EdgeOne commands. Sign-in and credential refresh require TLS certificate verification.auth/key/checkreturns a nonzero exit code when the local credential is absent. Configuration and sign-in follow tccli’s native rules. The page explains its plaintext sign-in storage and recommends API keys saved in Windows Credential Manager. tccli commands, including page sign-in and status checks, use the fixed%TEMP%/swaw/banyan/tccli/directory and retain its caches. Use absolute local paths.deploy/auth/setupopens one local authorization page for Cloudflare and Tencent Cloud. Each platform’sauth/setupentry selects its tab. The page supports native sign-in, Windows-stored API credentials and read-only environment status, with credential priority, site icons in their original colors and system-language text in English or Chinese. A title-bar language switch preserves inputs and progress; reloading returns to the system language without saving the selection. Platform navigation and method tabs use a monochrome layout with a thin column divider. Credential priority sits below the title; Close is in the upper-right corner. Supplementary notes follow the controls or variable table. Sign-in and API Token notes use numbered lists for setup, permissions and credential storage. Sign-in tabs prepare tools in the background, show readiness and support retry, then check existing cf and Wrangler sign-in and usable tccli native credentials, including after reload or reopening. tccli uses a native STS identity query with the same profile as sign-in; it does not distinguish stored sign-in from keys or check product permissions. Sign-in buttons show request progress immediately. API Token setup stays available during downloads and checks; Close stops preparation, checks and sign-in. The page no longer expires automatically; each CLI keeps its own authorization timeout. The page avoids browser-blocked ports. Cancellation still closes the session after a credential write if the save connection disconnects. Narrow screens stack the columns. Both platforms use the API Token tab label. Tencent access keys useswban/tencent/default;auth/key/checkchecks local presence.- MIT licenses for the repository, Module and Skill, with third-party notices.
Changed
Skill tool commands use
base/<tool>,base/<tool>/checkandbase/<tool>/ensure. The entry uses Node and prepares Node/npm and required tools on demand; Bun remains an independent tool.base/ensureis removed. Hugo and Go prepare Git as needed. The theme no longer enables unused Git page information. GitHub CLI is prepared when used. Run npm and npx withbase/node/npmandbase/node/npx. Python commands usebase/uv/python,base/uv/python/checkandbase/uv/python/ensure; common help lists uv as the Python tool manager. Prepare parser packages withbase/packages/ensurebefore working offline; use--forceto reinstall. Doctor reports missing packages without installing them. Prepare browsers withbase/browser/ensureandbase/browser/ensure.webkit.help/en [depth|path [depth]]andhelp/zh [depth|path [depth]]list commands and categories or show full help. Depth can start below a selected path; lists retain full paths and mark categories with a trailing/. With no argument, help shows common commands, including build, preview and release examples.helpselects the system language. Invalid help files report their path and the JSON parse reason or specific field.Use unified
[prefetch]settings by icon and column scope, with conservative, moderate, eager and immediate levels. Scopes useroot,tail,"root+N","tail-N", andall; root navigation is column zero. Prefetch and prerender resolve independently; tail folder links default to moderate prerender. Select native rules, an active Banyan SW, or link automatically; optional scopes enable native prerender. Inline native rules use CSP hashes and wait for navigation and sorting. Initialize custom prefetch once, keep page URL deduplication and remove session gates. The diagnostic page provides per-page backend selection, reload testing and dispatch status; unconfigured icons use the default. Remove the invalid legacy URL count from prefetch size reports.Move the frontend
from,sort, andsortsfields into URL fragments, preserving them in chapter links. Back and Forward restore the source and breadcrumb sorting. Removenavigation-state-default.toml; query parameters no longer control the navigation view.Delivery settings use
data/delivery.tomlin both the Module and site. Prefetch and Service Worker settings apply to all languages. Site declarations replace complete top-level fields, including nested tables and route arrays; copy the complete table to change it. Empty route arrays remove all default routes. Deployment fields useplatform.edgeone.makers; route overrides usehttp.edgeone.makersandhttp.cloudflare.pages, with independenthttpandswfields. SW uses onlysw.bucket(versioned,fingerprinted, oroff), supports one wildcard anywhere in a case-sensitive URL path, and gives later matching rules priority. The default covers same-origin GET requests, including JSON and XML. Versioned cache misses validate the HTTP cache; related-resource warmup selects only fingerprinted URLs. Platformenabledswitches control Cloudflare Pages_headers/_redirectsand EdgeOne Makersedgeone.json; omitted platforms are disabled. Enabled SW builds also publishsw-policy.json, a copy of their path/bucket rules in matching order. Off and disable builds omit this copy. Remove the unused/icon/*immutable-cache rule.Sitemaps include rendered, indexable HTML pages regardless of
build.list. Use nativesitemap.disablein content front matter to exclude a page; removeparams.sitemap.include_pages. Noindex pages and excluded translations stay outside sitemap entries and alternate-language links.Distribute the theme from
module/; keep the demo at the repository root and site-specific content and configuration outside the Module.Use native Hugo for builds and previews, and native Git and GitHub CLI for releases.
Build and minify JavaScript with Hugo, and generate CSP and deployment headers during the build. Sites must set
minify.disableJS = trueto preserve inline script hashes.Ordinary pages only register the Service Worker after load; prerendered pages wait until activation. The Powered by page owns PWA status and manual checks. The browser manages program update checks and activation. Links, refresh and history keep native behavior. The first visit does not receive extra cache warmup. Remove the
update_check_intervalandupdate_visibility_throttlesettings. Publish content versions at the fixedsw-version.jsonURL, so content-only releases do not changesw.js. The SW checks 15 seconds after a successful navigation response.service_worker.content_check_intervalsets the minimum interval in minutes, with a default of 5. A new content version switches caches and removes old content caches without reloading the current page; fingerprinted resource caches remain shared across versions. Waiting programs do not pause content checks. Program updates prepare offline pages before activation. Re-enabling restores the content version; reinstalling the same program refreshes its offline pages. Activation preserves newer offline pages cached during the waiting period and fills missing paths from prepared pages.List dates and date sorting use
lastmod, thendate. Git commits and filesystem times do not change editorial dates.List fields use fixed widths. Long values stay within their fields; tooltips retain the full values. Name-only collections use one navigation column without reserving extra reading width. Custom list styles use
item-list,list-item,item-field, anditem-control; custom palettes use--item-*color roles. List field widths use--item-*-inlineand--item-field-gap.
Fixed
- Commands can reuse a prepared Python environment concurrently without installation-lock errors.
- Build-version and browser prefetch checks accept the version JSON and valid empty inline rules.
- Prefetch diagnostics display configuration and runtime state without a registered Service Worker.
- Navigation sorting checks accept selectable text truncated by fixed field widths.
- Mobile aside checks evaluate each requested width without retained browser zoom.
- Browser checks retry local ports denied by the operating system.
- Cloudflare cache and XML CSP overrides explicitly remove inherited headers before setting their values, preventing conflicting values from being combined.
- Chapter navigation uses the current URL fragment when scrolling runs, so a pending chapter scroll cannot override a newer skip-to-content action.