v23.2.12026-11-04
- Mark a ctrl+shift drag from a row by the ctrl+shift press rule
v23.2.02026-11-04
- Mark every row a drag from a row covers
v23.1.42026-11-03
- Check an input's edges against its holder's content box
v23.1.32026-11-03
- Let an input fill whatever holds it
- Check an input fills the box it stands in
v23.1.22026-11-03
- Size a calendar month by its day squares
v23.1.12026-11-03
- Let a popover panel take its contents' width so it flips where its control has no room
- Draw a calendar month seven days wide wherever it stands
- Check a date picker opened near the window's edge
v23.1.02026-11-02
- Let a table's head and group rows stand without their rules
- Let a table draw its rows at a list item's height
- Draw a table read as a list at a list's density without rules
- Let a panel head stand on the panel's own ground without its rule
- Format layout.test.js
v23.0.02026-11-01
- Give a modal a width of its own and let what it holds fill it
- Draw key caps as kbd elements and key letters with a class of their own
- Lay out pages, panels and full columns with plain block and flex boxes
- Give nav, toolbar, item, tile, icon, stat and step rules classes of their own in place of nesting and undoing
- Draw buttons, segments, inputs, selects and states on native states and one sweep
- Save editable fields through one path with the add box and the sheet as classes of their own
- Open a combobox's list as an auto popover found by its ARIA role
- Keep a combobox's list a manual popover that follows the input's focus
- Read keybindings with tinykeys' own parser and scope keys to the open popover
- Lay facet rows out as flex with a total class and read each tree key's rows once
- Draw table heads, bands, sort buttons and status slots with plain cells and states
- Size split panes with flex and let a gutter set its pane's flex-basis
- Give hover menus an attribute of their own and draw popovers open by :popover-open
- Use generic examples in the guides and build the stylesheet with Style Dictionary's CLI
- Draw the heatmap as a table and chart strokes in tokens
- Mark fields up as dl with dt and dd and flowing facts as q-flow
- Lay list items out by named areas and draw calendars, logs and prose states with their own rules
- Prefix series, tone, rank and heat classes with q- and shorten the wire() guide
- Restore test state by onTestFinished and use neutral fixtures
- Draw every colour key as a q-dot element
v22.0.02026-11-01
- Let a page make a row it marked the anchor of the next shift-press
- Lay a form's fields out several to a row
- Size a detail or palette modal by the page's share of the window
- Remove the Files screen, keeping its drop zone and disclosure as general parts
- Replace Comments with a general Feed of entries
- Let the page lay out the status bar's slots
- Replace the order book chart with a general step chart
- Leave an editor's formatting buttons to the page
- Keep the design system page's title card beside the site instead of among the components
- Define the keybinding grammar of data-hotkey in the library's own terms
- Style Markdown's task lists and a placeholder block in prose, naming no editor
- Make a sheet an edit that fills its panel, saved through the save event
- Remove Bounds, narrowing a number column to a range through its filter
- Let any state control step through states by its gestures, removing the round cycle dot
- Draw every share of a whole as a fill, thin or with its value, coloured by its thresholds
- Draw every figure with its label as one stat block, compact with its icon beside or over
- Remove Gauge, drawing a budget as a compact stat over a fill
- Format behaviour.test.js
- Stand a budget's fill a step below its figure
- Fold Picks into Facets, a picking facet's rows lighting up when on and keeping their buttons
- Draw rows with headed figure columns as a table in lists and combos alike
- Make Steps a generic row of filled or bordered squares, leaving shapes of its own to the page
- Draw a refused boxed input in danger, focused or not
- Draw editable prose whose save was refused as a refused field
- Show times in the viewer's zone, or in UTC on a page that declares it
- Removed Boundsgone
- Removed Commentsgone
- Removed DepthChartgone
- Removed Filesgone
- Removed Gaugegone
- Removed Picksgone
- Removed Readoutgone
v21.0.22026-11-01
- Set a run of marked rows to one state in one place
v21.0.12026-11-01
- Keep a table's anchor as a row index
- Mark rows from a drag below a table by the press rules
v21.0.02026-11-01
- Remove the checkbox column for picking table rows
v20.9.02026-11-01
- Mark table rows as a file explorer selects files
v20.8.12026-11-01
- Draw one rule between a full column's scroll and a toolbar above it
v20.8.02026-11-01
- Frame editable prose as a boxed field
- Part a full column's scroll from its fixed parts with a soft rule
- Cut a name that is prose at its end
- Fit the Tree card's task title uncut at half a screen
- Size a detail modal's tables to their columns
v20.7.12026-11-01
- Stand an editor's list items a list's step apart
- Align a task item's box and content at their top as TipTap's styles do
v20.7.02026-11-01
- Hide a control while it keeps its room
- Keep a button as wide as the longer of the two words it switches between
- Fade a table row being written until its write is confirmed
- Frame and size canvases in a block cell as pictures are, stacked
- Draw TipTap's task list in prose with each box on its item's first line
- Show an empty text's TipTap placeholder as an empty line reads
- Let a reference chip take the pointer as a link does
- Set a reference chip a step after its link while the text is edited
- Edit a text's Markdown source in prose with its markers faint and its headings bold
v20.6.12026-10-31
- Keep the spaces at the cut of a small item's detail written as a q-mid
v20.6.02026-10-31
- Let a small item hold glyphs before its name and a fact after it on one line
v20.5.02026-10-31
- Let a split column or a panel keep its parts in place while one of them scrolls
v20.4.22026-10-30
- Leave a sheet on Escape as a field is left
v20.4.12026-10-30
- Allow the empty object pattern Vitest fixtures take
- Set up the browser tests through setupFiles and fixtures
v20.4.02026-10-30
- Press a button in a marked row on every marked row
v20.3.02026-10-30
- Let a picks line hold buttons that act without switching it
v20.2.12026-10-30
- Let facets in a filtered split reach the gutter beside them
v20.2.02026-10-30
- Let a grid of panels fill the height of a full main area
- Add Sheet, a pane of free text written where it stands
v20.1.02026-10-29
- Let a table hold only its rows in view of data too long to render whole
v20.0.02026-10-29
- List a version's commits with go-git's commit walkers
- Format changelog/history.go
- Draw chart x axes with d3-axis
- Keep row text unselected with user-select
- Draw a select's chevron as its picker icon turning over while open
- Format src/chart.ts
- Draw the rules between columns and split halves as gap decorations
- Indent a tree row from its aria-level alone
- Test hidden elements with checkVisibility
- Wait on the repaint in the resize test
- Hear test events with vi.fn
- Read style and attributes in tests with expect.element
- Split the row marking test in two
- Write the same-shape layout tests as one test.for table
- Let a drag from a marked tree row carry every marked row
- Name a held press on a marked row as its own press kind
- Drive finished pointer gestures in tests through userEvent
- Sort a table by the button in its header, by key as well as click
- Mark the current step with aria-current and the shown one as pressed
- Draw a fill's bar as a meter under its written value
- Let a gutter be moved by the arrow keys as a window splitter
- Show a refused field through its validity and a saving edit as busy
- Make a segmented control a radio group
- Mark up a calendar month as the date picker grid with its full keys
- Browse every listbox a field controls with one list cursor
- Mark up the palette, browsed lists and combo kinds as the listbox pattern
- Fold tree rows and disclosure twists through one expand event with the treegrid's keys
v19.9.02026-10-29
- Let a list item start with a tag
v19.8.02026-10-29
- Let a comment thread stay open and edge by state
v19.7.02026-10-29
- Let a q-edit save on Enter where it stands
v19.6.02026-10-29
- Let a table draw its rows without rules
v19.5.02026-10-29
- Let a table open a row on a plain click and mark only under ctrl or shift
v19.4.22026-10-28
- Find the span under the pointer with the browser's own hit test
v19.4.12026-10-28
- Pick where a click that moved a few pixels let go
v19.4.02026-10-28
- Let a palette carry a label and a slot and take the width and height the page sets
v19.3.02026-10-28
- Let a boxed chip keep its label in its own colour at rest
v19.2.02026-10-28
- Let prose fill its pane at the pane's text size with its headings stepped
v19.1.02026-10-28
- Let a log pane draw its lines at the dense size
v19.0.12026-10-28
- Indent a tree row's name cell and its guides, leaving the cells before it flush left
v19.0.02026-10-28
- Fix table columns and split halves whatever their rows hold
v18.0.32026-10-28
- Size split tracks from a tenth of the row, never from their content
v18.0.22026-10-28
- Read the image tags once HEAD is tagged
- Read the image tags in the shell with svu
v18.0.12026-10-28
- Run the changelog as a package
v18.0.02026-10-28
- Leave a select's open list to the browser where it has no base-select
- Type-check the behaviour with strict on
- Format and lint the TypeScript, JavaScript and CSS through qlty
- Format the TypeScript, JavaScript and CSS with Prettier
- Fix Stylelint's findings in components.css
- Run the tests on Playwright Test
- Fail a test on an error a page leaves uncaught
- Bring the key, held menu and gutter handlers under the complexity limit
- Let a grid shrink at once when an item under the pointer goes
- Stop Stylelint flagging rules for their order against stronger selectors
- Format signed numbers with Intl's signDisplay
- Format a pie share with Intl's percent style
- Format every UTC date with d3-time-format
- Place category points and bands with d3's point and band scales
- Sort copies with toSorted
- Summarise arrays with d3-array
- Match select-all through the key layer
- Draw the y axis with d3-axis
- Make q-edit a form control
- Open a drawer as a popover
- Point the combobox cursor with ariaActiveDescendantElement
- Make the repeated literals in components.css tokens
- Size chart points with the CSS r property
- Size the timeline from a lanes custom property
- Serve test pages with page.route
- Format components.css
- Run the previews at each width as Playwright projects
- Wait on the page in place of fixed sleeps
- Run the tests on one worker
- Stop painting a chart taken off the page
- Load a preview's stylesheet and script from the site root
- Run the tests in Vitest, the browser tests in one Chrome
- Rerun only the tests a saved file touches while working
- Show a reach drawer and hide the others with togglePopover
- Check the tips and the menus in helpers of their own
- Check custom properties and underlines with Stylelint rules
- Read the changelog's versions with go-git
- Put a preview's assets into its head with goquery
- Loop over the image tags with go-task
- Build the showcase once, outside the Dockerfile
- Indent tree rows from a level the page writes
- Place grouped bars with an inner band scale
- Find the datum under the pointer with bisectCenter
- Bump the next patch tag with svu
- Draw chart marks with d3-selection's data join
- Ask for a time window with d3-brush and d3-zoom
v17.2.22026-10-27
- Configure qlty so nag runs it
- Format changelog/main.go
- Keep qlty's hadolint config
- Split quacklab.ts into a module per job
- Write the changelog page in one write
- Write the site's index in one write
- Return the error of the walk that reads a guide's summary
- Name the tests' example stage Queued
- Give each drawer listener a function of its own
- Give each row-moving listener a function of its own
- Give each row-marking listener a function of its own
- Give each select-list listener a function of its own
- Move hover menus into a module of their own
- Split keys into their bindings, the waiting sequence and the status bar's slot
- Split time charts, timelines, the time axis and its gestures into modules
- Split the test finders into a module per kind of fault
- Read a guide in the function that takes its summary
v17.2.12026-10-27
- Find the row under a drag with the browser's hit test
- Compile the stylesheet from the tokens with Style Dictionary
v17.2.02026-10-27
- Carry the keys held with Enter into the click it makes
- Ring a combo list written without popover in danger
- Forget a combo's selected option when its text changes
- Let a combo list hold columns of two-line options under their own heads
- Add Filters, a text filter per column under a table's labels
v17.1.02026-10-27
- Frame a file's preview in a line, a picture at most its rows tall
- Cover a file drop zone in a dashed accent edge with its label while files are dragged over it
- Centre an Empty in a pane with nothing in it yet
- Mark the block and the pane a page's keys are on
v17.0.02026-10-26
- Show the field, segment and button examples on a backup job
- Set a few words of state on a tint of their colour
- Let a button or a segmented control set its labels in capitals or in the words' face
- Press a control on any of several keys listed in its data-hotkey
- Select a field's text when a key focuses it
- Empty a search field on the Escape that leaves it
- Let an input be boxed and hold its key inside its box
- Keep a key-holding input's end inset inside its field
- Allow a pixel of rounding when finding text a box cuts off
- Give the status bar's notices, errors and half-typed keys a slot each
- Draw a radio as a checkbox's square holding a square dot
- Mark a calendar's weekend days, days gone by and today
- Set a calendar's months side by side
- Open a panel from its control as a popover that takes its own keys
- Let fields flow across the width, each key over its value
- Read a search field's value through its input type
v16.2.02026-10-26
- Let a button be boxed, set in capitals or barred in its colour
- Confirm a data-confirm button on its own second click, armed in its colour
v16.1.02026-10-26
- Give segments, field buttons and field inputs the width of their content
- Make a field row as tall as what it holds, with no rule under it
- Show a field's value in full, wrapping, its key on the value's first line
- Tint a picked segment, chip or pressed button in its own colour
- Head a view's fields with its title and set field keys in small capitals
- Let a page colour its own data's states with a class of its own
- Finish a component built for an app only beside the app's own render
v16.0.02026-10-26
- Close a reported error from its slot
- Let a tree's rows be dragged under another row or to the top
- Show a control's key as the underlined letter of its label
- Draw attached files as table rows with their previews in block cells
- Fold a comment thread with the tree's twist
- Take the state colours for the tones that share their hue
- Walk up a quiet row's pill to read the opacities around it
- Hold each attached file and its preview in a tbody of their own
- Carry a calendar's one Tab stop with the arrows
- Read a tree row's level from its aria-level
- Leave a menu button's menu to popovertarget and the auto popover
- Close every top-level menu as an auto popover
- Add a palette, a search over everything in a box over the screen
- Close nested menus with their parent as auto popovers
v15.1.02026-10-26
- Light the key caps of the controls a half-typed sequence's next key presses
- Give a page eight tones for the states of its own data
- Add five ranks from calm to urgent
- Draw a state as one character in a square, filled or hollow
- Open a menu from its button and pick its items by their keys
- Draw a tree's depth guides
- Let a tree whose rows are always open draw no twists
- Let a tree add a row under a row
- Let a table load more rows from its foot
- Let a table row read as context with only its name faint
- Split the quiet row check out of the quiet item finder
- Add a calendar to pick a day from, alone or under a menu's presets
- Split a menu item's arrow keys out of the menu's keys
- Add a block of attached files with previews, taking dropped files
- Let Prose be edited where it stands
- Draw a link to one of the app's things in Prose as its reference and state
- Add a comment thread
- Let a combo list open at the caret in edited text
v15.0.02026-10-26
- Draw every list on the page's ground with no rules between its rows
v14.1.32026-10-26
- Draw a bare list on the page's ground with no rule under its head
- Let a list's figure column take a colour of the page's own
- Leave a count of things waiting blank where there are none
v14.1.22026-10-24
- Cut UTC dates and times from toISOString
- Write quacklab in TypeScript
- Test a control's keys with the page's real keyboard
- Match each key press against the controls in force where focus is
- Draw chart scales, ticks and heat steps with d3-scale
- Draw chart paths with d3-shape
- Drive every interaction test with the page's real mouse and keyboard
- Read a sheet's custom properties with postcss
- Put a preview's assets into its head with an HTML parser
- Read a README's summary with goldmark
v14.1.12026-10-24
- Keep a scrollbar gutter only on the boxes that scroll
v14.1.02026-10-24
- Run a scrolled table's ground under its scrollbar's strip
- Let a list's figure column take its colour down to every figure
- Make Escape the page's go back key, one step per press
- Type the back event a page hears on the document
- Let a list fade its idle items and drop the rules between items
v14.0.12026-10-23
- Keep a state pill one width while its word changes
- Bound a gutter's drag by the content beside it
- Let a chart shrink to its head
- Test three charts sharing a region that shrinks to its content
v14.0.02026-10-23
- Size every component by its container or its content
v13.2.12026-10-21
- Remove w and s row movement
- Install the package's dependencies before bundling the showcase script
v13.2.02026-10-21
- Press controls on their data-hotkey keys through @github/hotkey
- Bind data-hotkey keys through tinykeys with focus scopes
- Let a held w or s keep moving through the rows
- Group hotkey controls by scope in one pass
- Let keys held with ctrl, alt or meta reach their controls from inside a field
- Leave the copy to a focused number or email field
- Type a mark event's rows as table rows
- Leave out a lone key whose press starts a sequence
- Bind a digit key so it waits its turn behind sequences
- Put back the accent key caps of a picked segment or chip
- Bring the keys docs in line with how keys behave
v13.1.02026-10-21
- Tell a table which of its rows are marked
- Copy marked rows while a focused field has no text highlighted
- Copy a marked row as the text the page gives it
- Bind keys and chords to the page whatever is on screen
- Lay out where a chord's next keys show as a choices card
- Light a two-key shortcut's next keys on the controls they press
- Show two-key shortcuts on a Keys card in place of the choices card
v13.0.02026-10-21
- Let React and Svelte pages render the elements wire() works on
v12.1.12026-10-19
- Take the version back out of package.json
v12.1.02026-10-19
- Open a menu at a point from openMenu
v12.0.12026-10-19
- Draw every preview without taking focus from the page holding it
- Tag an untagged HEAD with the next patch version on release
v12.0.02026-10-19
- Hide anything given the hidden attribute
- Let a combobox fill its table cell like an input
- Take the release version from the git tag alone
- Format relative times and durations with Intl
- Read size tokens in pixels from registered properties
- Resolve a type style's canvas font with a probe element
- Generate the showcase and changelog pages with html/template
- Run the browser tests through puppeteer
- Show tips, menus and the select list as popovers anchored to what opened them
- Let git leave release commits out of the changelog
- Sort the showcase cards and font families with slices
- Leave candidate cards out of the showcase as the changelog does
- Take a component's summary from its guide's first paragraph
- Open a card tip itself as a popover beside its element
- Name a browsed list's active item in its field's aria-activedescendant
- Generate quacklab.css without the select list's cursor rule
- Drop a time chart's drag when the browser cancels it
- Check the stylesheet's underlines and rule order through the CSSOM
- Shorten wireSelects under the length limit
- Embed the changelog card's guide and header from files
- Date each version in the changelog by its tag
- Count spanned columns in a sort event's column as bounds does
- Track tip and hover menu hover with pointer events
- Browse a list from its field as a listbox of options
- Open the combo list as a popover while its input has focus
- Capture the pointer while a drag marks table rows
- Read length tokens in the tests without probe elements
- Split a version tag's line into fields without a discard
- Split the test finders that run past lizard's complexity limit
- Tie the select fallback's list to its select while it is open
- Split the select fallback test's tie check into a helper
- End each drag on lost capture of the element that captured it
- Name the end of a picks drag so lizard reads wirePainting whole
- Load the in-page test finders from frames.js
- Format UTC dates and times from one Intl formatter
- Anchor pointer and chart mark tips and the right-click menu to a drawn box
- Put the now button finder's comment back above it
- Type-check quacklab.js's events with tsc in place of the regex test
v11.3.02026-10-18
- Lay out the stale candidates as a choices card
- Wrap the stale candidates to the card's width
- Fade a stale panel's values under its head
v11.2.02026-10-18
- Let a list item carry a series colour
v11.1.02026-10-18
- Let a panel head carry a faint summary after its title
v11.0.22026-10-18
- Stand a toolbar label a step off its control
v11.0.12026-10-18
- Declare the bounds event in the type declarations
v11.0.02026-10-18
- Make every clickable thing light up like a button
v10.0.02026-10-18
- Take every control's box and margins away
v9.6.12026-10-18
- Sit a head's buttons as words too
v9.6.02026-10-18
- Add candidate cards for how a button sits in a row
- Sit a button in a row as a centred word
v9.5.12026-10-18
- Keep a stat's text off its holder's edge
v9.5.02026-10-18
- Add candidate cards for how an input sits in a row
- Sit an input in a row as the row's own text
v9.4.02026-10-17
- Show links in data as the text they sit in
v9.3.52026-10-17
- Centre a timeline's now button in its head
v9.3.42026-10-17
- Pan a timeline without it jumping
v9.3.32026-10-17
- Start a filtered split's list one facet wide
v9.3.22026-10-17
- Keep a figure's line as tall with a unit in it
v9.3.12026-10-17
- Keep a page's scroll area as wide when its scrollbar appears
v9.3.02026-10-17
- Let a page set how many legend rows of a shares chart stand in view
v9.2.02026-10-17
- Let a page set how many lanes of a timeline stand in view
v9.1.02026-10-17
- Bring a timeline back to now with a button
v9.0.02026-10-17
- Let a time chart's window pan past now
v8.11.22026-10-17
- Open one drawer of a view at a time
v8.11.12026-10-17
- Drop removed cards from the generated site
v8.11.02026-10-17
- Lay filters beside the results they leave, one filter wide
v8.10.12026-10-17
- Make an info modal as narrow as what it holds
v8.10.02026-10-17
- Add candidate cards for where a loading panel's line sits
- Add candidate cards for how wide a short modal is
- Add candidate cards for how wide filters beside results start
- Keep a reloading panel's content faded under its loading line
v8.9.02026-10-17
- Let list items and combo options end in figures lined up under heads
v8.8.02026-10-17
- Let a scrolled table hold a set number of rows whatever it holds
v8.7.02026-10-17
- Add candidate cards for how wide a facet is
- Make every facet one width that holds most values
v8.6.02026-10-17
- Keep the status bar still while running work comes and goes
v8.5.22026-10-17
- Give every segment the width of the widest
v8.5.12026-10-17
- Hold a grid under the pointer without moving its items or its width
v8.5.02026-10-17
- Open a select's list square in Firefox and Safari too
v8.4.02026-10-17
- Let the list column of a filtered split take a gutter of its own
v8.3.02026-10-17
- Let a drawer open while the pointer is within a reach of its edge
v8.2.02026-10-17
- Describe a done row as faded whole in the table guide
- Let an item without a picture be its name over its detail line
v8.1.22026-10-17
- Fade a done row whole, its tags and coloured cells included
v8.1.12026-10-17
- Remove the decided candidate cards
v8.1.02026-10-17
- Add Alarm, a glow that pulls the eye to a value
v8.0.02026-10-17
- Draw steps as filled, hollow or plus shapes the page picks
v7.23.22026-10-17
- Keep a lead cell's colour and give an item's name its weight
v7.23.12026-10-17
- Add candidate cards for station stops and attention signals
- Show a card's late content in its open tip
v7.23.02026-10-17
- Mark the selected step and the steps already done
v7.22.02026-10-17
- Give a canvas the design system's tokens and fonts
v7.21.02026-10-17
- Let a drawer be wider than panel-w with --col-w
v7.20.02026-10-17
- Let a stat card or figure carry data colour
v7.19.02026-10-17
- Add failing tests for late card tips and lead cells
- Draw gains and losses in a time chart and start its lines at zero
v7.18.02026-10-17
- Open a drawer as the pointer reaches its edge with data-reach
v7.17.22026-10-16
- Draw each new component in the changelog
v7.17.12026-10-16
- List only components and changes in the changelog
v7.17.02026-10-16
- Let free-text columns give way before the name column
v7.16.12026-10-16
- Remove the decided candidate cards
v7.16.02026-10-16
- Draw ranked shares of many named things as a strip with shares
v7.15.02026-10-16
- Shade a heatmap in a series colour with tall cells where it has room
v7.14.02026-10-16
- Add Steps, a strip of coloured squares for a sequence
v7.13.02026-10-16
- Mark a list's keyboard cursor apart from its selected item
v7.12.02026-10-16
- Add drawers along the edge of a full-screen view
v7.11.02026-10-16
- Put a column of filters beside a list and its detail
v7.10.12026-10-16
- Let the Number preview's big stats wrap on a narrow window
v7.10.02026-10-16
- Add big headline figures, centred stat cards and figure strips
v7.9.02026-10-16
- Let a table column take weight, a colour or a gradient
v7.8.02026-10-16
- Generate a changelog of each version's design elements
v7.7.32026-10-16
- Open a tree row's combo list over the rows below
v7.7.22026-10-16
- Keep a tree row's item on its twist's line
v7.7.12026-10-16
- Lay out stat, facet and tile grids before their widths are measured
v7.7.02026-10-16
- Lay spans of time out in lanes with timeline
v7.6.02026-10-16
- Draw an order book on a price axis with depth
v7.5.02026-10-16
- Draw series on a time axis with times
v7.4.12026-10-16
- Pick the cut test's frames in a helper of their own
v7.4.02026-10-16
- Skip candidate cards in the cut test
- Add a card of table layout candidates
- Add a card of headline figure candidates
- Add a card of filter column and drawer candidates
- Add a card of list cursor candidates
- Add a card of step strip candidates
- Add a card of heatmap colour and height candidates
- Add a card of ranked share candidates
- Let a row's tip follow the pointer with data-follow
v7.3.02026-10-16
- Let a grid ask for columns wider than panel-w with --col-w
v7.2.02026-10-16
- Add failing layout tests for three known bugs
- Let one view fill the main area with q-main is-full
v7.1.02026-10-16
- Mark table rows by dragging and copy them with Ctrl+C
v7.0.42026-10-16
- Declare the gutter's resized event
v7.0.32026-10-16
- Step a cycle back one state on right-click
v7.0.22026-10-16
- Encode the facets preview's middle dots as UTF-8
v7.0.12026-10-16
- Test that table columns hold their colgroup width
- Hold table columns at their colgroup width beside a name column
- Size the drones preview's value columns
v7.0.02026-10-16
- Add left and right alignments to table cells
- Leave a fill column head's alignment to the page
- Let a tree's rest-taking column be the one marked name
- Let the page set a panel grid's column count
- Let the page set a tile grid's column count
- Leave the facets' layout counts to the page
- Let the page set a stat grid's column count
- Let the page set how many pairs a fields row holds
- Leave a gauge figure's colour to the page
- Treat page-set pair and row counts as defined in the stylesheet test
- Fit the counted panel grid preview in half a screen
- Let the page size a slider's value column
- Let the page set how many rows a select's open list shows
- Let the page set how many rows a combobox list shows
- Let the page put a row of buttons at its start or middle
- Keep a prose table's own column alignment
v6.5.02026-10-16
- Leave cell alignment to the page through a centre class
v6.4.02026-10-16
- Centre figures only under icon heads
- Raise a tip above sticky table heads
- Keep the icon placeholder for an empty slot only
- Add group labels inside a menu
- Add a detail modal as wide as its tables
- Show candidates for stale values
- Add Picks for switching a list of things on and off
- Add Panes with grips that drag the border between panels
- Merge remote-tracking branch 'origin/master'
- Remove Panes in favour of Gutter
v6.3.02026-10-16
- Add Gutter for resizing a grid's tracks
v6.2.32026-10-16
- Centre figures only under icon heads
- Raise a tip above sticky table heads
v6.2.22026-10-15
- Keep a submenu open while the pointer crosses its siblings to it
v6.2.12026-10-15
- Centre numbers under their heads in a table with no name column
v6.2.02026-10-15
- Centre an icon column head over its values
v6.1.02026-10-15
- Allow a remove the page undoes in a menu
- Scroll a menu taller than the window
- Show candidates for icon column heads
- Stack the Columns preview's panels
v6.0.12026-10-15
- Declare quacklab.js an ES module
v6.0.02026-10-15
- Let the page set a q-columns column count
- Add Readout for small icon stats
v5.4.02026-10-15
- Drop the unpicked candidates from the previews
- Draw a cycle's state as a dot
v5.3.02026-10-15
- Add Icon for app pictures as labels and table cells
- Add Fill for a bar filled to a share in a colour
- Add Columns to lay fields out side by side
- Add Gauge for a budget's used and total over a thick bar
- Add Band to colour a table's row groups
- Add Cycle for a state icon changed by clicking
v5.2.02026-10-15
- Read typed numbers with or without grouping commas
- Stick a table's head as one block
- Add Bounds for a range under each number column
v5.1.12026-10-15
- Keep middle-cut text whole outside a table's name column
v5.1.02026-10-15
- Let middle-cut text ask for its full width
- Give a split's list all but one panel's width
v5.0.02026-10-15
- Add widest to measure the longest value a column holds
- Size facet columns to the longest value and total
- Size tile columns to the longest name and note
- Size stat columns to the longest figure
- Show a long site name in the Page preview
v4.4.02026-10-15
- Give the Tip preview's table the free width
- Fail the tests when a preview cuts off text
- Cut text that runs out of room in its middle
v4.3.02026-10-15
- Keep a facet head on one line
- Widen the narrowest facet column to 20rem
- Put panel heads on bg
- Open every table with a head row holding its title
- Add q-stack to group panels into columns
v4.2.12026-10-15
- Ignore lizard's misread of undefinedVariables
v4.2.02026-10-15
- Format numbers to three significant digits without abbreviating
- Write preview figures in the number format
v4.1.02026-10-15
- Open nesting menus on hover
v4.0.132026-10-15
- Show a held card in an element's tip
- Pin a tip on a click
v4.0.122026-10-15
- Truncate only a table's name column, once nothing is left
- Size status bar slots to their text
- Widen an open combo list to its longest option
v4.0.112026-10-15
- Keep everything under the pointer in place
- Keep a picked facet value in its place
- Show a split's detail column before anything is picked
- Let an open combo list grow past a narrow input
v4.0.102026-10-15
- Name the Chromium floor for a select's drawn list
- Keep a select's value on one line
- Set a select's options in the value's typeface
- Let a select's highlighted row reach the list's edge
v4.0.92026-10-15
- Leave the keys typed in an open select to the select
- Draw a select's open list in the stylesheet
v4.0.82026-10-14
- Send keys only into an open modal
- Add a modal component
v4.0.72026-10-14
- Make a tree row that holds others expand on a click anywhere in it
- Keep row actions in the row and is-link off them in the Button guide
- Add toggle chips
- Add a prose component for rendered rich text
- Add a right-click menu for an element's actions
- Open the Tree preview's ships from a right-click menu
v4.0.62026-10-13
- Add a Tip component for any element
v4.0.52026-10-13
- Make a table cell the hit area of its one control
v4.0.42026-10-09
- Link every showcase component from a nav on top
v4.0.32026-10-09
- Pass the image tags with echo, which Task's shell handles
v4.0.22026-10-09
- Open the showcase site to the internet
- Tag the image with the commit and tags prepare made
v4.0.12026-10-09
- Give the design system page the type variables it lacks
- Split quacklab.js into functions under the complexity limits
- Give the toolbar's inputs one width
- Right-align a table's row actions
- Widen the list column of a split to 40%
- Size the status bar's end slots to their text
- Make every value column of the table previews sortable
- Fix the status bar's freshness slot to one width
- Draw a table row's icon buttons without a resting border
- Let the main area and split columns reach the page edge
- Generate a showcase site of every component
- Serve the showcase site from an nginx image
- Deploy the showcase site with cooler
- Ship the showcase image from task
- Link the showcase site from the README
v4.0.02026-10-09
- Set every font from the type tokens
- Give every control one height
- Take every size from a size token
- Name the failure state danger everywhere
- Let the text colour helpers win over component colours
- Name the status bar slots
- Sweep a busy button's bottom edge
- Draw square checkboxes, chevrons and spinnerless number inputs
- Ship the fonts in the package
- Draw charts from data in quacklab.js
- Build bundle.js locally instead of committing it
- Split the token writer and name the chart locals
v3.0.22026-10-09
- Enter the progress band as it leaves
v3.0.12026-10-09
- Load quacklab.js into the design system previews through bundle.js
- Animate whatever the system's reduced motion setting says
- Sweep the progress band fully across the bar
v3.0.02026-10-09
- Name hover as a surface in the colour rules
- Style disabled inputs, checks, segments and sliders
- Add a master and detail page layout
- Add a progress bar and a level meter
- Add an empty, loading and failed line for tables and panels
- Add a heatmap on the magnitude ramp
- Ship the shared behaviour and number formatters as quacklab.js
- Add keyboard shortcuts for filter focus, row movement and segments
- Add a combobox for picking from many items
- Add a table totals row and bulk row selection
v2.0.12026-10-09
- Set log text at the size of field values
v2.0.02026-10-07
- Give every facet child the same inset
- Size table columns to their content
- Fit the fields key column to its longest key
- Draw no empty space around or between components
v1.0.32026-10-07
- Keep the armed fill on link buttons
- Draw the tag outline as a border
v1.0.22026-10-07
- Distribute the package through the Gitea npm registry
v1.0.12026-10-07
- Add Taskfile to tag and push
v1.0.02026-10-07
- Add design tokens
- Add component stylesheet
- Add Go module embedding the generated stylesheet
- Add package manifest exporting the stylesheet
- Add usage rules
- Add component guides and previews
- Add stacked chart
- Light up facet rows in place of checkboxes
- Exclude facet values with right-click
- Add interaction cost rules
- Add in-place editable text
- Keep the root font size at the browser default