Skip to content
wdj

Changelog

Local release history

This records wdj changes. Upstream Kumo releases are maintained separately.

# Changelog​## 2026-10-12 — Open-source alpha preparation​- Document installation from GitHub; the PyPI name `wdj` belongs to another project.- Retain complete Kumo and Alpine MIT licenses, ECharts NOTICE and bundled D3 license.- Describe upstream reference copies accurately and keep them out of the wheel.- Replace placeholder project URLs, synchronize the 675-example count and use SPDX package metadata.- Remove the vulnerable build-only `braces` dependency through the watcher 2.6.0 override.- Add contribution templates, dependency monitoring, Django 6.0/6.1 CI and wheel/sdist validation.​​## 2026-10-12 — Documentation search in the Sidebar​- Pin a Search trigger below the sidebar header, including mobile and collapsed navigation.- Search the complete navigation inventory in a grouped CommandPalette with titles, descriptions, keywords and canonical destinations.- Support Ctrl/Cmd+K, arrow/Enter navigation, result counts, empty states, a touch close button and focus restoration without closing the underlying mobile drawer.​## 2026-10-12 — Grouped Toolbar and composed filters​- Replace padded, separated controls with a compact shared surface, 1px dividers, outer corners and common 20/26/36/40px heights.- Add explicit ToolbarItem composition around existing controls; Select and Combobox keep their styled popups, values and native form behavior.- Reproduce the reference search, select, combobox, input shorthand/group, sizing, button, link and accessible-label examples. Add a working search/status/reset recipe.- Add roving focus, caret-boundary navigation, popup key ownership and RTL/HTMX regression coverage.​## 2026-10-12 — ButtonGroup split-button correction​- Replace the inert caret and mismatched labelled dropdown with working primary/secondary split buttons and matched small/base/large examples.- Preserve shared 1px seams, native focus, logical RTL corners, wrapped links, single children and vertical groups.- Fix square/circle Button padding and fixed dimensions; share the primary gradient and ring with square Dropdown triggers.- Add rendered geometry, touch/keyboard menu and accessibility regressions.​## 2026-10-11 — Recursive Sidebar and searchable popups​- Add reference-shaped nested Sidebar groups, account/zone controls, loading toggles, quick search and contained mobile previews with Back/Home drill navigation.- Support arbitrary child depth, targeted scrolling across views and IDs, collapsed-rail resizing and nested disclosure transition events.- Add Combobox button/search-inside, placeholder, ghost-trigger and grouped examples with accent-insensitive filtering, form reset and native fallback.- Align Dropdown/Combobox padding and rows; place nested Dropdown menus laterally in native top-layer popovers and constrain them to the viewport.​## 2026-10-11 — Styled Select dropdown defaults​- Use the Alpine dropdown in every default Select example, with explicit native mode and a no-JavaScript fallback.- Match Kumo popup padding, background, row radii, group separators and size-specific trigger icons; restore visible selection checkmarks.- Disable loading controls and show a skeleton; preserve empty/zero values, escaped placeholders, native form submission and reset.​## 2026-10-11 — Shared card padding and documentation layout​- Give titled cards the same default body padding as untitled surfaces; preserve explicit flush content.- Align card headers with their content and let panels shrink within responsive grids.- Tighten overview/accessibility section spacing, align the accessibility heading, and keep its mapping table in a focusable local scroll region on phones.​## 2026-10-11 — Documentation navigation by purpose​- Group onboarding, design guidance, catalogs, integration examples and development resources into seven sidebar sections.- Keep Getting started visible and automatically open the active page's section on desktop and mobile.- Move catalog overviews into their sections and consolidate duplicate chart links while retaining route aliases.​## 2026-10-11 — Dimension showcase alignment and state icons​- Align control surfaces under one label in each dimension grid cell.- Keep copy/check and reveal/hide icons mutually exclusive across shared controls.- Scale calendar trigger widths and corner radii with the field size; update DatePicker dimension guidance.​## 2026-10-11 — Styled calendar defaults​- Default date/datetime and range fields to the wdj popup; retain explicit native mode and native time/month controls.- Remove native date fields from the Alpine calendar and use one icon trigger anchored to the entire field.- Match measured Kumo grid/day/navigation sizes, Sunday-first variable rows, neutral selections and range bands; retain accessible contrast in both themes.- Preserve datetime time values, ISO Django form values, HTMX mounting, keyboard entry and native form reset.​## 2026-10-11 — Combobox localization​- Expose escaped search, listbox, empty-result, required-selection and chip-removal labels for Combobox/Autocomplete.- Preserve localized chip labels after selection, HTMX mounting and form reset; document the API and test desktop/phone behavior across three browser engines.​## 2026-10-11 — Calendar completion and browser portability​- Add localized inline/popup calendars, configurable week start and responsive multiple months; validate editable single/multiple/range values and submit separately named range fields.- Expose escaped action/validation labels and preserve a keyboard entry when earlier month panels are disabled.- Render Select/Combobox lists in native manual popovers above clipped containers; enforce required multiple values and HTMX minimum query length.- Complete all four Drawer edges, pending dismissal protection and trigger focus restoration in WebKit.- Add customized map marker colors/radii/descriptions, accessible tooltips and bounded flat-map panning.- Replace approximate code coloring with free Pygments grammars and multiline token state; expand the catalog to 652 live examples.- Fix mobile sidebar backdrop activation/focus and Tabs overflow controls in Firefox/WebKit. Add repeatable three-engine verification, full-page layout/axe coverage and precise test-platform limits.- Preserve Combobox option tap activation with native buttons; validate date/month/time/datetime-local format, bounds and step when Windows WebKit falls back to text, including overnight time bounds and reset.​## 2026-10-11 — Form state regressions​- Restore calendar selection/month, TagInput and multiple Combobox chips/CSV on native form reset; respect cancelled resets.- Synchronize custom Select after native change events, clear transient validation on reset and preserve server-rendered errors.- Recalculate date-range validity, table selection summaries and autoresizing textarea height after reset.- Reject unavailable dates entered in the calendar's native field; synchronize the submitted value before emitting date-change events.- Add desktop/phone regression coverage, including forms mounted through HTMX.​## 2026-10-11 — Complete upstream page audit​- Map all 72 upstream source pages to local destinations; compare the 65 public navigation pages on desktop and mobile.- Expand the catalog to 65 entries and 643 live examples, with actual Django API tables and individual source-copy actions.- Add directed Flow diagrams, layered native dialogs, single/multiple/range calendars, rich Alpine Select, offline country/bubble maps and a draggable SVG globe.- Add escaped lexical code highlighting, external chart legends, chart interactions, resizable columns, nested choice menus and targeted sidebar scrolling.- Complete supporting docs, chart colors, registry, an advanced integration guide and explicit remaining adaptation limits.- Expand route, keyboard, touch, HTMX replacement, source-copy, mobile layout and axe checks across the full page inventory.​All notable changes to wdj are documented here. The format is based on[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project aimsto follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).​## [Unreleased]​### Added​- Kumo Tabs fidelity pass: shared sliding indicator, segmented overflow controls,  mouse drag, measured compact typography/padding, manual or automatic focus  activation, controlled Alpine selection events and dynamic-count examples.​- Complete multi-example showcase inventory: 453 live snippets across 60 in-scope  entries, with generated anchors and isolated page navigation data.- Native MenuBar, reusable Text/Label/Field, PageHeader composition,  ResourceListPage and confirmation-gated DeleteResource demo blocks.- Server-built Sankey and sparkline options; category, step, stacked area,  threshold, zoom, horizontal/grouped bar, pie and nested donut examples.- Local/multiple combobox examples and keyboard/focus handling after HTMX swaps.- Full catalog axe scans in both themes and regression coverage for open dialogs,  mobile layouts, sidebar persistence, Django Forms selection and native ranges.- Complete integration and interaction guides, a live `/guide/` playground,  local Alpine Tabs with rich panels, keyboard navigation and disabled skipping.- Exclusive native accordions and independent nested chevrons; slider defaults,  finite bounds, decimal steps, selected-track styling, pointer/keyboard use and reset.- Audit of presentation commands across every in-scope catalog page, separate demo  feedback, validated popover forms, modal triggers and repeated HTMX initialization.- Pagination recalculates page limits after page-size changes and leaves URL/HTMX  navigation to the server. Mobile sidebar controls are inert while hidden and  return focus on close; chart observers and listeners are cleaned up on removal.- Django snippets in the usage/installation guides are compiled by a regression test.- Eight composite blocks, including five wdj compositions with three examples each;  a `/blocks/` index and documentation sidebar grouped like Kumo.- PageHeader breadcrumb divider, title/description spacing and shared tabs/actions  row, with responsive hero and long-navigation examples.- Live `/dimensions/` comparison and rendered height checks; Switch and compact  Tabs sizing aligned to Kumo, plus xs clear/copy button bounds and line-height fixes.- Whole-catalog mobile layout and axe coverage, portrait/landscape touch flows,  clipboard checks and presentation commands in a mobile Chromium context.- Narrow grid/field layouts and wrapping pagination; readable stacked native date  ranges, contained sidebar bounds and viewport-constrained native popovers.​​- 15 new Kumo-parity components implemented and integrated into the catalog:  - `ButtonGroup` (split buttons, joined action controls)  - `ClipboardText` (read-only text with one-click copy button and feedback)  - `InlineCopyText` (compact borderless copy control for IDs and tokens)  - `SensitiveInput` (masked secret input with reveal toggle and copy button)  - `Code` (inline and block code display with language hint and copy button)  - `Collapsible` (accessible `<details>` disclosure with smooth chevron rotation)  - `Meter` (progress and quota bar with formatted values and status variants)  - `InputGroup` (inputs with joined prefix, suffix, and addon attachments)  - `LayerCard` (compound surface card with distinct primary and secondary layers)  - `Grid` (responsive CSS grid layout container with preset column configurations)  - `Toolbar` (horizontal action bar with grouped controls and keyboard arrow navigation)  - `TableOfContents` (page section navigation tree with active link indicator)  - `CommandPalette` (accessible spotlight search overlay with Cmd+K / Ctrl+K shortcut)  - `DateRangePicker` (paired native date inputs with preset ranges)  - `TagInput` (interactive multi-value badge input for tags and recipients)- Added new Lucide icons to runtime bundle: `command`, `terminal`, `hash`, `corner-down-left`.- Extended `wdj.js` with delegated behaviors for clipboard copying (`data-wdj-copy`), sensitive input toggle (`data-wdj-sensitive-toggle`), tag management (`data-wdj-tag-input`), command palette live search and arrow navigation (`data-wdj-command-palette`), and toolbar keyboard navigation (`role="toolbar"`).- `Chart` component: server-built Apache ECharts options (`wdj.charts.line`,  `bar`, `donut`, semantic/categorical palettes), theme-aware canvas theming, a  loading skeleton, and `wdj_json` for breakout-safe embedding. ECharts 6.1.0 is  vendored and loaded only on opt-in pages.- Sidebar rewritten on Alpine: labelled groups, icon-only collapse with tooltips,  hover-peek, drag-to-resize (pointer + keyboard), sliding views, loading  skeleton, mobile drawer with scroll-lock, and `right` / `contained` layouts.- Kumo-style multi-example component pages: catalog entries can declare an  `examples` list rendered as titled live previews with collapsible source.- Home page shows concrete live examples (buttons, badges, inputs, chart, table)  instead of a bare hero.- `docs/reference/kumo/site/kumo_skill.html` — local capture of the Kumo design  skill; its 15 rules are applied to component and demo markup (see  `docs/REFERENCES.md` and `docs/DECISIONS.md` #17).​### Changed​- Correct Django Forms radio/multiple/grouped choice mapping, disabled state,  automatic IDs and the native PasswordInput value policy.- Native date inputs and the Drawer adaptation are honestly marked partial.  Maps remain excluded by the repository rules.- Inclusive, bounded date presets; range ordering; two-handle sliders; normalized  tags; disabled link buttons; sensitive reveal/copy; dropdown and toolbar keys.- Accessible names for collapsed sidebar links, native selects and command  dialogs; solid destructive fill and API text contrast in the dark theme.- 14px content typography, reference rem sizing and ring outlines on surfaces  with shadows; compiled CSS is rebuilt.​​- `wdj.js` now loads **before** Alpine so it can register `wdjSidebar` /  `wdjChart` on `alpine:init`; swapped fragments are initialised with  `Alpine.initTree`.- Tag library: `wdjd` was renamed to the documented `wdj_uid`.- Sidebar/table/headings drop `font-bold` and `tracking-*/uppercase` per the  design skill; hover states no longer transition colour.​## [0.1.0] - 2026-10-10​First public pre-release. Server-rendered Django + HTMX components inspired byCloudflare Kumo. Independent project, not affiliated with Cloudflare.​### Added​- Token layer and base styles in `assets/css/wdj.css`, compiled with Tailwind  CSS v4.3.3 (matching the Kumo compiler baseline). Light/dark via `light-dark()`  and `color-scheme`; `.theme-icon-*` swap rules; `.wdj-range` slider styling.- `wdj` template tag library: `wdj_icon` (with `**kwargs`: `class`/`class_`,  `size`, `title`), `wdj_attrs`, `wdj_uid`, `wdj_get`, `wdj_classes`,  `wdj_page_items`, and the `wdj_component` block tag for HTML slots.- 31 components and 2 partial components across four batches:  - **A** button, link, input, textarea, checkbox, radio, switch, select (partial),    field, label, badge, banner, card, separator, loader, skeleton, empty, typography  - **B** sidebar, header, breadcrumbs, tabs, dropdown, pagination  - **C** dialog, drawer, tooltip, popover, toast  - **D** table, date-picker, combobox (partial), slider- `wdj.js`: delegated interactions for theme switching, auto-resize, sliders,  dialogs/drawers, dropdowns, sidebar, table selection, combobox keyboard  navigation, toasts, banners, and HTMX integration (`wdj:toast`, focus  restoration, error toasts).- Vendored runtime assets (HTMX 2.0.11, Alpine.js 3.17.4, 77 Lucide icons) with a  committed icon `manifest.json` and licence files.- Showcase/docs demo app (`showcase`) with a component catalog, per-component  example pages, accessibility and install pages.- Server-driven resources table demo (`resources`) with in-memory synthetic data  (deterministic, seed 20260101) exercising sort, filter, paginate and select over  the full dataset.- pytest suite: template-tag unit tests, render/ARIA tests, and integration tests  across every route.- Browser suite (`tests/e2e/`, `browser` marker): Playwright interaction tests  (theme, dialog, dropdown, table sort, server-side combobox) and axe-core  accessibility scans of the main pages. Runs from a separate GIL Python venv;  skips cleanly in the default venv.- Documentation: `README.md`, `docs/DECISIONS.md`, `docs/REFERENCES.md`,  `COMPONENT_STATUS.md`, `CONTRIBUTING.md`, `SECURITY.md`, `AGENTS.md`, `NOTICE`,  `LICENSE`.​### Notes​- The demo requires no database (`DATABASES = {}`).- `GlobeMap` / `ChoroplethMap` are intentionally out of scope; charts are  implemented via vendored ECharts (see `docs/DECISIONS.md`, decision 14).​[Unreleased]: https://example.invalid/wdj/compare/v0.1.0...HEAD[0.1.0]: https://example.invalid/wdj/releases/tag/v0.1.0- Focused wdj design skill with 15 canonical rule examples and five runnable screen  recipes, a sidebar-linked `/design-skill/` guide and a complete ZIP download.- Correct concentric-corner example and the wdj-specific 14px token mapping in  design references; live previews render the same source distributed to users.​

Components

Components overview
AutocompleteFree-form input with local or HTMX-filtered suggestions.
BadgeSolid, tinted, outline and dot status labels.
BannerInline message bar with variants and optional action.
BreadcrumbsTrail navigation in two sizes.
ButtonVariants, sizes, shapes, icons and loading state.
ButtonGroupJoins a small set of tightly-coupled buttons into a single control (split buttons).
CheckboxSingle checkbox and indeterminate state.
ClipboardTextRead-only text field with a one-click copy-to-clipboard button.
Code / CodeHighlightedEscaped Pygments grammar highlighting, multiline tokens, line numbers, highlighted lines and localized copying.
CollapsibleComposable disclosure component for showing and hiding content.
Combobox / AutocompleteKumo-styled input/button triggers, search inside the popup, grouped local choices and debounced HTMX search.
CommandPaletteAccessible spotlight search overlay with Cmd+K keyboard shortcut.
DatePickerKumo-styled date and datetime popups; inline single, multiple and range calendars with bounds/presets.
DateRangePickerStyled popup or inline range calendar with bounds, presets and separately named form values.
DialogNative <dialog> modal with focus management.
DrawerEdge-anchored modal panel. LayerDialog has its own layered component.
DropdownMenuNative details menu with delegated keyboard navigation and dismissal.
EmptyEmpty-state placeholder with icon and action.
FieldLabel + description + error wrapper. Built into each control.
FlowDirected diagrams with branches, SVG connectors, custom anchors and responsive local scrolling.
GridResponsive CSS grid layout container with preset column configurations.
InlineCopyTextCompact borderless copy control for IDs and short values.
InputText field with label, description, leading/trailing icons.
InputAreaMulti-line textarea with auto-resize option.
InputGroupInput field with seamless prefix, suffix, and addon attachments.
LabelForm field label, optional marker and tooltip.
LayerCardCompound surface card with distinct primary and secondary layers.
LayerDialogLayered native modal with actions, forms, nested dialogs and pending states.
LinkInline, current and plain text links.
LoaderAnimated spinner in three sizes.
MenuBarCompact view selector using native radio semantics.
MeterProgress bar showing a measured value within a known range.
PaginationA page navigation component for navigating through paginated content.
PopoverAnchored popup with interactive content.
RadioRadio group, vertical and horizontal.
SelectKumo-styled Alpine dropdown with groups, rich options and multiple selection; native form values and fallback.
SensitiveInputPassword/secret input with reveal toggle and copy button.
SeparatorHorizontal / vertical rules with optional label.
SidebarRecursive navigation groups, account/zone views, search, loading, resize and full-screen mobile breadcrumbs.
SkeletonShimmer placeholder.
SliderInset single/range selection with vertical grips, value badges, endpoint labels and native keyboard/form behavior.
SurfaceBordered surface panel with header slot.
SwitchOn/off toggle in three sizes.
TableServer-driven table: sort, filter, select and paginate the full dataset.
Table of contentsPage section navigation tree with active link indicator.
TabsSegmented and underline tabs with a sliding indicator, responsive overflow and local Alpine or URL/HTMX state.
TagInputMulti-value badge input for tags and recipients.
TextHeading, body, secondary, success, error and mono text.
ToastyExpandable notification stack with variants, paused expiry and a live region.
ToolbarCompact grouped controls with shared borders, composed filters and keyboard arrow navigation.
TooltipHover and focus tooltip with grouped delays, Escape dismissal and viewport bounds.
↑ ↓ Navigate ↵ Select