Releases
20 versions from Oct 27 to Oct 29, 2026. 1 MINOR release and 18 PATCH releases came after the first release.
Each mark is one version, on a time axis in UTC. Select a mark to show its changes.
- MINOR: new features (before 1.0.0, also a change of the API)
- PATCH: fixes and small additions
- The first release
3 changes in 1 package. The changes with the most packages come first.
PATCH: docs only, with no change to the API.
The package README has a table of each doc that the comments name, with its link in the repository.
The TSDoc of
ShapeBoundhas the table of what a bound value proves, so a consumer reads it in the package.
12 changes in 1 package. The changes with the most packages come first.
boundlists the kinds where the value of a measure is a bound of the true value, and its sideupperorlower.docs/SHAPES.mdtells what a bound value proves for eachdirectionof a measure, and why the level isboundand notsafe.ShapeCheck.levelhas the new valuebound.shapeLevel(use, kind)givesexact,safe,boundornone.shapeSupportProblemsrefuses a kind in two of the listsshapes,safeandbound.shapes.A sample throws a
RangeErroronly when the space has no config for the kinds.By default,
checkShapesrefuses a bound kind.Each input, manifest, record, hash and
configIdof 0.2.16 stays the same.Each sample that 0.2.16 gave stays the same, byte for byte.
Fix: with
meta: "sample"andshapes, a sample does not throw for a meta option without a member list.PATCH: a new optional field, new exports and a fix, with no break.
The new exports are
shapeLevel,ShapeLevelandShapeBound.
13 changes in 1 package. The changes with the most packages come first.
boxAreagives the area of a box, orundefinedfor afreebox.checkShapesrefuses a safe kind by default, as before.precisionchanges only that compare.precisionrounds a numeric value and its default before theinvalidatescompare.regionAreagives the exact area of a region.safelists the kinds with a safe count.shapeSupportProblemsrefuses a kind inshapesand insafe, an unknown kind and a repeated kind.Each input, manifest, record, hash and
configIdof 0.2.15 stays the same.PATCH: new optional exports and fields, with no break (L57).
The new exports are
regionArea,boxArea,ruleLevel,RuleLevel,shapeSupportProblemsandShapeCheck.The new optional fields are
ShapeSupport.safe,MemberRule.viewandCorpusDimension.precision.With
view: "bounds",checkConfig,spaceSize,enumerateSpaceand the pool entries userectfor the members.With
view: "bounds", a meta option gives its members the bounding box of each item.
11 changes in 1 package. The changes with the most packages come first.
checkInputrefusesalongwithout a side, outside [0, 1] or withxory.dimensionSupports(dim, value)tells a site if a family accepts a value.invalidateslists the output fields that a value other than the default makes wrong.ownerDimension(name, spec)gives a dimension of one owner.Port.alongfixes a port at a fraction of its side (L56).resolveandgenerateof a registry refuse another value with aRangeErrorthat has the text "not supported by".supportedmarks the values that one family accepts (L51).Each input, manifest, record and hash of 0.2.14 stays the same.
PATCH: new optional exports and fields, with no break.
The new exports are
ownerDimension,OwnerDimensionSpec,dimensionSupports,SupportedValues,SupportedRange,INVALIDATED_FIELDandportPoint.The new optional fields are
CorpusDimension.supported,CorpusDimension.invalidates,CorpusFamily.hash,LayoutInput.invalidatedandPort.along.
12 changes in 1 package. The changes with the most packages come first.
canonicalInputsorts the pairs.checkInputrefuses an unknown box, a pair of one box, a repeated pair in either order, a badgapand badlanes.checkSpacechecks each entry of a pool.LayoutInput.pairGapsgives a minimum distance to a pair of boxes (L49).MemberRule.poolis a fixed list of member lists (L39).A pair of the list breaks
no-overlaponly when the boxes are nearer than the gap on each axis.Each input, verdict, record, hash and
configIdof 0.2.13 stays the same.PATCH: new optional exports and fields, with no break:
MemberRule.pool,PairGap,LayoutInput.pairGapsandcanonicalInput.The fix:
generate,resolve,cellOfandrngOfof a registry accept a cell ofcellOf.The hard rule
no-overlapreadspairGaps.With a
pool,spaceSizecounts each entry one time.With a pool of 1 list on
cell-portfolio, the meta count ofpackingat 3 levels goes from approximately 1.49e25 to approximately 1.72e15.
6 changes in 1 package. The changes with the most packages come first.
LayoutBox.shapeKind, the cell dimensionitemShapeand the record fieldshapesare new and optional.MeasureSpec.shapesandPACK_HARD_RULESgive the kinds of each measure and rule.SHAPE_KINDSdeclares 4 kinds:rect,polygon,circleandfree.StageOption.supports.shapegives the kinds of an option.Each input, record, hash and
configIdof 0.2.12 stays the same.The shape kind of an item is a dimension of the contract (L46).
4 changes in 1 package. The changes with the most packages come first.
breadthis{ against, of, ties }: the count of the families against the side of the verdict, of all the families and of the ties.scopeis"these families".summarygives the label, the scope and the breadth in one line, for examplebetter on these families, worse on 2 of 6 (1 tie).The result of
verdicthas 3 new fields:scope,breadthandsummary.
7 changes in 1 package. The changes with the most packages come first.
checkDeclaredchecks the keys: a missing dimension, a missing kind, a kind without an entry and two cells with the same key.docs/PROMOTION.mdhas the new shared blockverdict-family.verdict(records, options)compares two strategies on one measure, with the family as the unit.A verdict counts only when it holds under both weightings.
The claim
claims.declaredcan havefamilyBy: the key of the family of each input.The flat form of
familyByis a list of dimensions.The verdict gives the mean of the family means and the mean of the inputs, each with a seeded bootstrap interval.
6 changes in 1 package. The changes with the most packages come first.
checkSpaceandcheckConfiggive aClaimBreakfor each problem.enumerateSpacegives the grid, or a seeded Latin hypercube sample.spaceSizecounts the grid points, with the meta configs apart.A meta option has
members: whole configs of the same space, with a depth of 1.A param can have a
when.The contract has the strategy space
strategy-space/1: the stages of an engine, their options and the ranges of their params, as data.
7 changes in 1 package. The changes with the most packages come first.
checkDeclared(inputs, declares, claim, ids)checks the claimclaims.declared.checkSplit(split, corpus, name)checks a split filecorpus-split/1.ClaimBreakis one broken claim of a corpus.corpusHashOf(corpus, inputs)gives the hash of a corpus.declaredCountscounts the inputs of each property.leaveOneSeedOut(seeds)gives one fold for each seed.The contract has the corpus checks of
packing,highwaysand the joint corpus.
5 changes in 1 package. The changes with the most packages come first.
portfoliohas the optionhashes.A value of
hashesthat is notallorpickcauses aRangeError.The output hash is most of the key cost of a member.
Under
pick, a hash that throws makespickthrow aRangeError.With
hashes: "pick", the members get no output hash before the pick.
5 changes in 1 package. The changes with the most packages come first.
compareMeasurecompares whole grid steps ofRECORD_EPS.RECORD_SCALE(1000) is the count of grid steps in one unit, andRECORD_EPSis1 / RECORD_SCALE.A change below one grid step is a tie.
A live value and its rounded record give the same verdict.
Round with
Math.round(v * RECORD_SCALE), as the records do.
5 changes in 1 package. The changes with the most packages come first.
pickMoves(trace)gives the movepick(the trace measuremove.pickof a record), soexercisedreads the effect of a pick.portfolio(id, members, key, options)starts a list of members on an input and gives the output of the best member.selectBest(candidates, levels)is the pick rule.The level 0 of a portfolio is the count of hard breaks.
The options
maxMembersandbudgetMscut the members.
5 changes in 1 package. The changes with the most packages come first.
docs/PROMOTION.mdtells the two promotion guards.documentHashgives the input hash ofdocs/FORMAT.mdofpacking.outputGroupsputs the candidates with equal output hashes on each decision input in oneOutputGroup.outputHash(value, options)gives the first 16 hex characters of the SHA-256 of the canonical JSON of an output.The option
grid(HashOptions) sets the step of the grid.
3 changes in 1 package. The changes with the most packages come first.
countOutsideandpackHardhave the optional last parameteroptions(ContainerTest).rectInRegion(region, rect)tells if all of a rectangle is inside a region and not over a hole.The exact test applies only to a shaped container with the size
fixed.
4 changes in 1 package. The changes with the most packages come first.
EdgeShape,EdgeStepParams,EDGE_DENSITYandEDGE_STEP_VERSIONdescribe the step.edgeStep(input, params, seed)adds edges, groups and ports to an input without positions, from its topology alone.LayoutInputhas the optional fieldsteps: the stamps of the steps after the generator.mulberry32,fnv1a32,stepRandomandrandomIntgive the seeded random numbers of the generators.
2 changes in 1 package. The changes with the most packages come first.
compareMeasure(candidate, baseline, spec)givesbetter,worseortiefor one measure on one input.MeasureSpechas the fieldminEffect: an absolute change, or{ rel }, a share of the larger of the two values.
3 changes in 1 package. The changes with the most packages come first.
A record can have
env(RunEnv), the facts of the computer of the run.A record can have
msRuns, the time of each timed repeat.A record can have
outputHash, the hash of the output of the stage.
8 changes in 1 package. The changes with the most packages come first.
checkInputgives the problems of an input file, for example a locked box without a position.packHard(input, output, tolerance)applies the output itself.Port.sideandLayoutInput.containerare optional.turnPortturns a port with onlyxor onlyy.A locked box breaks
locked-keptonly for a move of more thanRECORD_EPS, or without a placement.New:
toLayoutRecord,StrategyInfo,MeasureSpecand the specs of the joint measures (JOINT_MEASURES,JOINT_MOVED_MIN).The input has the fields
generator,cellandstep, andchangehas the valuepacked.The type-fit tests of
highways(highways#82) andpacking(packing#21) found gaps.
The sources have no change entry for this version.
Source: the CHANGELOG.md files, the git tags, the GitHub releases and npm, read when the site was built.