Skip to content

History / API Reference

Revisions

  • Internal Flow Tracking, HTTP Tracking Setup, Report Configuration, API Reference, OpenTelemetry Extension, Diagnostics and Debugging: from 5.34.0 a gRPC call is one step named for its method, its transport spans folded into it (#138); the handler options' InternalFlowActivitySources, the listener constructor and the DI overload that take source names are obsolete, as none was ever read, with overloads that take none; ReportConfigurationOptions.InternalFlowActivitySources filters what a report draws under Manual.

    @lemonlion lemonlion committed Nov 7, 2026
  • BDDfy: since 5.31.1 an async step's time is its task's, and a test of several stories reads the result xUnit gave it (#122). API Reference: the BDDfy configurator and executor set a test's phase and its Setup/Action boundary.

    @lemonlion lemonlion committed Nov 5, 2026
  • 5.28.6: a Background step is what the feature file wrote, and each scenario keeps its own steps (#222). Step-Tracking's section says what the mark means and when the detector still guesses; a section holding a failure starts open; the accent stands left of a step's triangle.

    @lemonlion lemonlion committed Nov 5, 2026
  • 5.27.14: a database call is a call, and a merge keeps what the run wrote. Spanner and the hand-called BigQuery and Bigtable trackers log Default, RequestResponseMetaType has a rule (Event means the call moves a message), and a merge reads a method as it is written, so merge --history raises no false behaviour-changed from a method's casing (#220).

    @lemonlion lemonlion committed Nov 2, 2026
  • 5.19.0: who made a call and what it was, and the run's templating rules in its report (#192 R2). Querying-Reports gives the caller and route dimensions (what route reads, the recorded rules, the note on a report that cannot say whether its run had rules, the cut), --phase on interactions and values, and caller on the interactions --json rows; Generated-Reports the shapeTemplates block; Merging-Parallel-Reports how a merge keeps the rules and what --history now reads; Ingesting-External-Captures --shape-templates; Cross-Run-History, Report-Configuration and API-Reference that the report carries the rules; Phase-Aware-Tracking --phase.

    @lemonlion lemonlion committed Oct 28, 2026
  • 5.16.5: Step-Tracking's Method Name Humanization section gives the rule a title made from a method's name now reads by (GetHTTPResponse reads "Get HTTP response", where it read "Get http response"): a run of capitals is one word up to the capital that starts the next, a plural of capitals stays whole, a digit parts from capitals only where they start a word, a word in capitals keeps them, and a name with no lower-case letter reads as an ordinary sentence. API-Reference says what FormatScenarioDisplayName and ResolveScenarioTitle do now and that Kronikol's adapters keep their ids. Generated-Reports adds nameAsWritten, stableIdName (with stableIdOutlineId and stableIdExampleValues) and outlineTitle, and says what the stableId is computed from. The xUnit v2, xUnit v3, NUnit and TUnit pages say a name the test wrote is shown as written; Search-Syntax, Ingesting-External-Captures and Cross-Run-History say what the rule changes there.

    @lemonlion lemonlion committed Oct 28, 2026
  • 5.9.1: the filter box says filter (Search Syntax is Filter Syntax, at the same address), blocks a filter empties go with what they held, no frame in the engine's colours, names as written (ReqNRoll feature titles, outline headings, Titleize), step bars like the step tables, the zoom slider's place, phone widths, aria-pressed on the Status and Duration buttons, a scenario skipped after a failure filtered as skipped, and the API reference's StringCasing members corrected

    @lemonlion lemonlion committed Oct 26, 2026
  • 5.6.0: TestRunReport.html and Specifications.html are written compressed. Generated-Reports describes the page (its frames, the loading screen, a damaged file, JavaScript off), kronikol decode for a plain copy, the export of a compressed report, and how a script or a browser test waits for window.__kronikolReady; its Diagram Storage Format recipe reads #puml-data from the plain page. Querying-Reports gives kronikol decode a page. PlantUML-Browser-Rendering, Internal-Flow-Tracking, Step-Tracking, Report-Configuration and Capture-Time-Redaction say what the compressed page changes for each; API-Reference adds HtmlReportFile; Migrating-to-v5 and Migrating-to-v5-Report say what a script or a browser test does. Found on the way and corrected: the Diagram Storage Format recipe read data-plantuml-z, which only an activity diagram carried inline uses, and passed 'Decompress' as a string that PowerShell 7 cannot match to one GZipStream constructor; Troubleshooting said the data files hold no diagrams, where kronikol query diagram reads them from the data file; Querying-Reports said no run writes a .krkl yet, where every run has by default since 5.0.0

    @lemonlion lemonlion committed Oct 24, 2026
  • 5.4.3: each row of a Reqnroll Scenario Outline is named as Gherkin names its pickle (#101). The Scenario Outlines sections of the three Reqnroll integration pages say how a row is named (its title's <column> placeholders filled from its values, one column at a time in written order, from the pickle Reqnroll embeds or else by Gherkin's own rule), where the filled name shows, and that its stableId, place and link are as they were; Generated-Reports' stableId row says what a Reqnroll row hashes and a new keyedByOutline row describes the data key; Querying-Reports, API-Reference (ScenarioStableId) and Integration-Cucumber-Messages (Pickle.name) say the same in a sentence each

    @lemonlion lemonlion committed Oct 22, 2026
  • 5.2.6: a scenario that is not a test is counted as none. Ingesting External Captures gives it a section of its own: the scenario --fold-unknown adds is drawn like any scenario, with a muted not a test badge, and the run band, the features table, the timeline, the percentiles, the CI summary, Failures.md, Run.json, the CTRF report, the CSV export and the specifications leave it out; the data files write notATest on it, so kronikol merge and kronikol query keep it; its status stays Passed, and the component diagram still counts its calls. The --fold-unknown row links the section, the --run-start row says a --run-end before --run-start is refused with exit 2, and the run window says a window that ends before it starts is not applied. Generated Reports lists notATest among the scenario keys and says the run band counts tests and the features that hold one; API Reference lists Scenario.NotATest; Querying Reports says summary counts tests and adds notATest, and scenarios carries it; Cross-Run History says a merged report reads the flag, where before its history called the fold passing

    @lemonlion lemonlion committed Oct 22, 2026
  • 5.0.0: labels and categories are one list of tags (TAGS_PLAN T4): Tags and Attributes, Migrating to v5: Tags (new), Marking New and Changed Tests, Search Syntax, Generated Reports, the integration pages and the rest of the 29 pages the tags reach

    @lemonlion lemonlion committed Oct 20, 2026
  • 4.22.3: the wiki edits of the audit of WEAVER_SOURCE_PATHS_PLAN.md (#165's releases, 4.20.4 and 4.21.0). Assertion-Tracking says the weave follows the compiler's fallback for a source that is neither UTF-8 nor marked (UTF-8 with U+FFFD on Linux and macOS from 4.22.3; Windows-1252 on Windows, where the compiler reads the machine's ANSI code page); that a project with the switch off has the two internal attribute types since 4.20.4, so one that grants InternalsVisibleTo to a weaving project makes it warn CS0436, with the workaround (NoWarn or WarningsNotAsErrors in the weaving project); that from 4.22.3 the types are generated for C# projects only and written only when they change; that KRONIKOL002 counts the statements the weave instruments, names a mapped file that changed since the compile, and becomes an error with -warnaserror or WarningsAsErrors but not TreatWarningsAsErrors; and, in Limitations, that a file under its own name is read as it is, a changed one under a mapped name falls back, and a Windows PDB has no checksum the weave can read. API-Reference's FailureClusterer and ErrorDiffParser rows, Generated-Reports' clustering and diff bullets (the diff's bound for long values, emoji shown whole), Querying-Reports' ledger sentences, Report-Configuration's HistoryErrorKeys and Cross-Run-History's import paragraph (a failure keyed as a run keys it) say what the cluster key is for a Shouldly message written without its source

    @lemonlion lemonlion committed Oct 15, 2026
  • 4.18.0: KafkaTrackingOptions.TraceMessageProcessing traces Kafka message processing with no change to the consuming code. Consume returns with the message's Kronikol.Kafka span current and the consume open until the consumer's next call, and a produce runs under a {topic} publish span. The Kafka page's new section says where it falls short and the scope does not; the options table, API reference and internal flow page name it (plans/KAFKA_INTERCEPTION_AND_TRACE_PLAN.md R2, #135)

    @lemonlion lemonlion committed Oct 12, 2026
  • 4.17.0: the Kafka extension's W3C trace ids and traceparent (PropagateTraceContext, only where Kronikol's wrapper is the last before Confluent), the kronikol-trace-id header, DependentProducerBuilder interception, the message's value as the note's body with its key as a kafka-key header and a Key line, and KafkaTracker.TrackProduce and TrackConsume for decorating a client of your own, TrackConsume's scope running the handler under a Kronikol.Kafka span (plans/KAFKA_INTERCEPTION_AND_TRACE_PLAN.md R1, #135, #160, #167). The API reference, internal flow (Kronikol.Kafka among the well-known sources), generated reports, ingest, querying, export and filtering pages say the same

    @lemonlion lemonlion committed Oct 12, 2026
  • 4.16.2: Kafka build interception and the producer and consumer fixes (#135, plans/KAFKA_INTERCEPTION_AND_TRACE_PLAN.md R0). Integration-Kafka-Extension: one patch per code shape that stays for the process (Reset and Disable clear tracking, not patches), every other pair gets Confluent's own client, the tiering note with its remedy and measured cost (Option G's row names the setting), Produce logged at the call when delivery reports are off, the manual DI example sharing its options with the wrapper, and identity headers only for a message produced inside a scenario, added to a copy and never to the caller's Message. API-Reference: the missing options, the transaction members, the factory registrations and the interceptors; the option's accessor wins. Background-Thread-Correlation: a message's identity ends at the next poll. Generated-Reports and Exporting-to-OpenTelemetry: a Kafka failure's status is its error code, and an entry logged at one instant carries no duration. Querying-Reports and Integration-OpenTelemetry-Extension: which trackers record W3C ids. Event-Driven-Architecture-Testing and Parallel-Safe-Background-Correlation: AddKafkaTracking does not exist

    @lemonlion lemonlion committed Oct 12, 2026
  • 4.16.1: what the #134 audit fixed (a gRPC call recorded however it fails, a message holding an Any, a stream disposed under another span, a call logged with the trace id it carries, HeadersToForward on a request that already carries the header, the ignore header in any casing, TrackingProxy after an awaited call, Spanner LogSqlText and phase content on every path and the server observer's failed status), and stale pages corrected: CurrentStepTypeFetcher is read only by the HTTP handler, the identity headers are written by the gRPC interceptor too, a host with AddTestTrackingContextPropagation resolves through its scope without an accessor, and the trace id nests a host's calls only for trackers that reuse it

    @lemonlion lemonlion committed Oct 12, 2026
  • 4.14.11: stale pages found by the audit of #132's release Sample pins: every Kronikol.* package in the samples of the adapter pages (xUnit2, xUnit3, NUnit, TUnit, BDDfy-xUnit3, LightBDD-xUnit2, LightBDD-xUnit3, LightBDD-TUnit, ReqNRoll-xUnit2, ReqNRoll-xUnit3, ReqNRoll-TUnit) and of Step-Tracking is 4.14.11, and the other packages take the versions their templates use: Microsoft.AspNetCore.Mvc.Testing 10.0.7, where 8.0.12 and 10.0.5 were downgrades from the 10.0.7 Kronikol depends on (NU1605); Microsoft.NET.Test.Sdk 18.3.0; xunit.v3 3.2.2, where 1.0.1 and 2.0.2 restored into a mix with the 3.2.2 Kronikol.xUnit3 depends on; TUnit 1.53.0, where 1.33.0 ran its engine against the newer TUnit.Core Kronikol.TUnit pulls in and failed with MissingFieldException; NUnit 4.6.0, the version Kronikol.NUnit4 depends on; NUnit3TestAdapter 6.2.0, NUnit.Analyzers 4.12.0, LightBDD.XUnit2 3.12.0, and xunit.runner.visualstudio 3.1.5 for xUnit v3 and 2.8.2 for xUnit v2. The dotnet add package commands that name a version match. Integration-xUnit2: the troubleshooting lines and the retrofitting step point a suite whose TestFramework attribute already names another framework at WithKronikolReporting() (a second attribute fails with CS0579); the drawing says "writes the reports" in place of an internal method; the xUnit v3 column says the base class captures an IAsyncLifetime test after it runs (4.13.3); scenario names under methodDisplayOptions and with a DisplayName (4.14.11). Generated-Reports and Ingesting-External-Captures: the specifications are also written blank for a result that is a default rather than a verdict (4.11.1); since 4.14.11 kronikol ingest's line says why, and the --fold-unknown scenario is not counted. Diagnostics-and-Debugging: a ResultDefaulted row and the four History* rows, worded as on the ingest page; UnattributedInteractions leaves out calls the tracking ignores and records with no test id (4.14.11). Integration-xUnit3: an IAsyncLifetime class is captured after the test (4.13.3) and its DisposeAsync calls stay with the test (4.14.11); the naming note the xUnit2 page has (4.14.11); a Known gaps section. Integration-MSTest: a data row of an overloaded method takes the overload that accepts its values (4.14.11); a Known gaps note. Integration-NUnit and Integration-TUnit: the tests the tear-down never sees are added only to a report of the whole run (4.14.11); NUnit's [Explicit] tests a run does not select stay out (4.14.11). Integration-TUnit, Integration-ReqNRoll-TUnit, Integration-LightBDD-TUnit and Framework-Integration-Guides: on the .NET 10 SDK, tests of a Microsoft.Testing.Platform project run with dotnet run, and with dotnet test only in the SDK's Microsoft.Testing.Platform mode (global.json "test": { "runner": "Microsoft.Testing.Platform" }); TestingPlatformDotnetTestSupport is not required and does not change that. Project-Templates: BDDfy's PlaceholderApiFactory is in Infrastructure/BDDfyTestSetup.cs; --Framework net8.0 and net9.0 restore and run (4.14.11); the API's Program and the placeholder factory refusing it (4.14.11). API-Reference: TestFrameworkExecutorExtensions.WithKronikolReporting() (4.12.0), and the [Framework]ReportGenerator row moved back into its table, where it rendered inside the deprecation note.

    @lemonlion lemonlion committed Oct 12, 2026
  • 4.14.7: outside a test, TrackingDiagramOverride.StartSetup() and StartAction() set the phase again (the audit of #133's release). API-Reference's TrackingDiagramOverride row says the markers go to a scope or the global fallback and are dropped otherwise, while the phase is set either way (xUnit v3's sets none outside a test; ReqNRoll's and LightBDD's throw outside a scenario). Event-Annotations' null-safety note says a delegate may throw outside a test, as every framework's CurrentTestInfo.Fetcher does, and the tracker then tries a scope and the global fallback. The gRPC recipes on Diagnostics-and-Debugging and Integration-Grpc-Extension pass CurrentTestInfo.Fetcher, where they called a GetCurrentTestInfo() the pages never define

    @lemonlion lemonlion committed Oct 12, 2026
  • 4.14.1: assertion tracking reads Shouldly, and a weave that instruments nothing warns. Assertion-Tracking gains a Shouldly section (recognised by Shouldly's [ShouldlyMethods] marker, its own message kept as the failure, values after the subject), says what KRONIKOL001 means and how to silence or escalate it, and that TUnit's fluent assertions read as sentences. Querying-Reports says the data file marks each tracked assertion from 4.14.1 and how an earlier report is read; API-Reference lists ScenarioStep.IsAssertion; Ingesting-External-Captures documents an assertion record's sourceFile and sourceLine. 4.14.0 was tagged and never published; 4.14.1 carries it

    @lemonlion lemonlion committed Oct 8, 2026
  • 4.13.1: outside a test, Kronikol.xUnit2's and Kronikol.NUnit4's fetchers throw, so a call made there goes to a TestIdentityScope, the global fallback or the background, as on the other frameworks (#133). The pages that said every fetcher returns ("Unknown", "unknown") or throws now say which did not until 4.13.1 and what that cost; xUnit v2 runs a test class's constructor, InitializeAsync, DisposeAsync and Dispose outside the test (Integration-xUnit2 table row and troubleshooting entry, Tracking-Custom-Dependencies), as NUnit runs a fixture's one-time set-up and tear-down (Integration-NUnit); Diagnostics-and-Debugging gains "Calls made outside a test are missing, and a scope or fallback does not bring them back"; Assertion-Tracking lists every integration that sets Track.TestIdResolver; and the custom-tracker recipe takes its identity from TestInfoResolver.Resolve(null, CurrentTestInfo.Fetcher) and skips the call when nothing names a test, where it read XUnit2TestTrackingContext.GetCurrentTestInfo(), whose id outside a test no scenario owns

    @lemonlion lemonlion committed Oct 8, 2026
  • 4.13.0: a host called over gRPC attributes its own calls to the scenario (#134). Integration-Grpc-Extension gains "A host called over gRPC": the interceptor puts the four test-tracking headers into each call's metadata, on every hop and whatever the phase, only for an identity that names a scenario, keeping a header the caller set, with the serving request's Kronikol trace id and the UTF-8'' form; GrpcTrackingOptions.PropagateTestIdentity (default true) turns it off; HasHttpContextAccessor is listed. Multi-Host-Test-Architectures gains "Hosts That Call Each Other" for gRPC hops, Background-Thread-Correlation lists the gRPC call into a host among the priority-1 sources, and API-Reference names the option and the member

    @lemonlion lemonlion committed Oct 8, 2026
  • 4.12.3: Assertion-Tracking gains "Assertion Scopes" (a failing assertion in a FluentAssertions or AwesomeAssertions AssertionScope, or TUnit's Assert.Multiple(), is drawn failed with the scope's message for it, where 4.12.2 and earlier drew every one passed, and the limit for a failure uninstrumented code adds) and "When Nothing Is Drawn" (the build log line, symbols with embedded PDBs read since 4.12.3, the libraries, a test identity); labels read a lambda condition by its body and keep a ! in a literal, in != or in a negation; the templates no longer claim to set up assertion tracking (they stopped in 2.37.1) and the package versions read 4.*. API-Reference names FailureClusterer.Cluster and ErrorDiffParser.TryParseExpectedActual as they are, and the clustering key everywhere it is described takes a Shouldly message's check from its second line

    @lemonlion lemonlion committed Oct 8, 2026
  • 4.6.0: history and report diagnostics leave the default report for the labs page beside it. Cross-Run-History's status paragraph gains 4.6.0, and In the HTML report (3.11.0) is rewritten as In the HTML (4.6.0): the labs page by default (its header, the History section, the Every scenario table, the Report diagnostics list), when it is written, GenerateLabsReport, and the report's opt-ins ShowScenarioHistory and ShowHistorySection with the verdict search and the export; Which runs a run is read against becomes a heading of its own with its slug kept, merged reports say --history writes the page and leaves the merged report clean, the action's read row names the run's labs page, the retry tooltip says where it is drawn, and the options table gains GenerateLabsReport, ShowScenarioHistory and the ShowHistorySection row it never had, with EmbedHistoryInReport rewritten as the master switch. Search-Syntax's History verdicts opens with when the operators apply (a report drawn with ShowScenarioHistory) and says they match nothing in a default report. Report-Configuration names the page in ShowReportDiagnosticsSection, ShowHistorySection, HistoryCompareBranch and DiagnosticsOpen, rewrites EmbedHistoryInReport, adds GenerateLabsReport and ShowScenarioHistory, and gains the five history options it lacked (HistorySlowerMinMs, HistoryAlternatingRuns, HistoryCountRuns, HistoryShapeTemplates, HistoryDegradedBy). Generated-Reports gains an Output Files row and a section for the page, says the report carries neither view by default, points the export bullet at the new anchor (a default report's export has no history), qualifies the width bullet's History section, and shows GenerateHtmlReport's whole signature with what it draws when handed history; its Output Files table gets back the Run.json and runs/ rows a blank line had cut off, and a DiagnosticReport.html row. Diagnostics-and-Debugging lists four history kinds (HistoryShapeTemplate was missing) and where they land, puts the labs page among the places host diagnostics land with the report's section as the opt-in it is, and says ReportDiagnostics.Analyse writes to the console, not a footer. Ingesting-External-Captures gains a --diagnostics-section row and names the page for host diagnostics and an ingested run's verdicts. Merging-Parallel-Reports says --history shows the history on <output>.labs.html and leaves the merged report clean and that --no-json still writes the page, lists the page among the files a merge writes and in the workflow's upload paths (each comment now on a line of its own rather than after a path), and says Render follows its options and its diagnostics section lists the shards' diagnostics. FAQ and Home say the sparklines and verdicts are on the labs page, with ShowScenarioHistory for the report. Capture-Time-Redaction's derived files include the HTML reports and the labs page. CI-Artifact-Upload lists the page among the uploaded files, API-Reference says ReportDiagnostics.Analyse's strings go to the console, and _Sidebar puts the four Querying Reports links back under Querying Reports

    @lemonlion lemonlion committed Oct 5, 2026
  • 4.4.0: Ingesting from Jest, a harness for a Node service tested in-process under Jest that writes the tests NDJSON, the interactions and the services' spans with no change to the service or the tests, run end to end before it was written up; Ingesting External Captures gains Spans (kronikol ingest --spans, the OTLP/JSON lines format, the join by activityTraceId and activitySpanId, the rules and the diagnostics), the --spans flag row and the id row; Internal Flow Tracking gains Ingested runs and FlowSpan, and its correlation line, which still said spans were matched by timestamp alone, now gives the 3.35.1 rule; the OTLP extension documents ReadJsonLines and ToFlowSpan; the API reference lists FlowSpan and InternalFlowSegment.FlowSpans; Home and the sidebar link the new page

    @claude claude committed Oct 1, 2026
  • 3.32.0: every run writes query.cs beside its report, and from the reports directory `dotnet run --file query.cs -- <verb> .` answers as `kronikol query` does, byte for byte, with no tool installed and no network: where the engine comes from (the run's own Kronikol.dll on .NET 10, else lib/net10.0 in the NuGet cache, at exactly the version, and the cache a NuGet.config moved), what it needs (the .NET 10 SDK), why --file, a global.json pinning an older SDK, a consumer's Directory.Build.props and .targets, no query.cs where a C# project would compile it (bin, obj and a dot-folder such as .logs/kronikol are fine), and one Kronikol did not write or cannot read is left alone (Querying Reports; query.py kept for a machine without the SDK). WriteQueryScript, default on (Report Configuration). query.cs beside the report, not in Run.json and never under runs/ (Generated Reports). The OptionNotApplied warning for a reports folder inside a project (Diagnostics and Debugging). The no-tool line in Debug this run (CI Summary Integration). query.cs in the uploaded artifact on both CIs, and what it needs on another machine (CI Artifact Upload). A merge writes it too, and the combined-report recipe uploads it (Merging Parallel Reports). Kronikol.Query.QueryCommand, public, net10.0 only (API Reference). Home and the AI integration prompt name it beside kronikol query

    @claude claude committed Sep 28, 2026
  • 3.31.9: the internal-flow segment data is one element in the head, <script id="iflow-segments" type="application/json">, holding the map gzipped and base64-encoded and the arrow ids the page needs, decoded once on the first popup, with the consumer's measured sizes (Content Strategy). HideLink leaves the arrow a plain text under every rendering mode (No-Data Behaviour; before 3.31.9 a Server or Local inline SVG kept the link). Five options no report reads say so: InternalFlowDisplay.Inline, InternalFlowTrigger.Hover, InternalFlowContentStrategy.SeparateFragments with InternalFlowFragmentsFolderName (which the Content Strategy section recommended), and InternalFlowNoDataBehavior.VisualDistinction, which behaves as ShowMessage (Internal-Flow-Tracking, Report-Configuration, API-Reference). The DecompressionStream floor now names the segment map too (PlantUML-Browser-Rendering)

    @lemonlion lemonlion committed Sep 28, 2026
  • 3.31.4: a step bar or an assertion note draws no line in the whole-test flame chart, and a scenario that made no tracked call has no whole-test flow (since 3.15.1 each marker drew a line labelled ': /' and such a scenario showed every span of the run). The whole-test flow's Output section describes the views as the report shows them, in the diagrams section, and names GenerateWholeTestFlowHtml for the collapsed <details> block. The LightBDD sentence said WholeTestFlowHtmlProvider is wired up in both LightBDD packages; it was retired in 2.0.61-beta. API-Reference: BuildSegments gives a marker or a user action no segment (Internal-Flow-Tracking, API-Reference)

    @lemonlion lemonlion committed Sep 27, 2026
  • 3.29.2: Report-Configuration says the specifications stylesheet is added after the built-in stylesheets and never replaced the base one (the default violet theme is an overlay on it), and with Internal-Flow-Tracking that InternalFlowPopupCustomStyleSheet is applied from 3.29.2; API-Reference says what HtmlReportStyleSheet and VioletThemeStyleSheet are; Generated-Reports gains the layout by window width (column at 768 px and below, the filtering box on its own row from 769 to 1160 px, toolbars wrap whole buttons)

    @lemonlion lemonlion committed Sep 24, 2026
  • Roadmap stage 0: every anchored [[...]] link resolves (164 rewritten: 100 space-form anchors to their heading's slug, 5 reversed label|target links turned round, 39 bare slug links labelled, 16 [[Integration: X Extension]] links pointed at the pages that exist, 4 renamed sections repointed, 2 typos); CI-Summary-Integration describes the summary that exists (server URLs plus source, no inline images in any mode, the split fires whenever the compact form differs); PlantUML-Browser-Rendering: themes have no effect under BrowserJs, the phantom CiSummaryPlantUmlRendering option is gone, Node.js rendering documented here; report sizes given as measured, 10.7 and 82.7 MB

    @lemonlion lemonlion committed Sep 22, 2026
  • Merged and ingested reports say what the run ran on; correct two YAML statements in Generated-Reports

    @lemonlion lemonlion committed Sep 13, 2026