Open tabatkins opened 4 years ago
Feature: Added darkmode styles!
This is the reason for the version bump, as if you were adding your own styles to your document, they probably aren't darkmode-aware and will look bad when the readers are in darkmode. If you're just using Bikeshed's own styles, tho, everything will work exactly as before.
Feature: Added new conditional-inclusion feature, allowing you to remove sections of a spec (typically in boilerplate) based on the document's Status. If you have more things you want to base a conditional inclusion off of, let me know!
(Currently, the processing order of this happens after all the 'datablocks' (pre
with special class that triggers Bikeshed handling) happens, so even if those are inside of a conditional that gets excluded, they'll still get processed. But everything else happens after conditional stuff is removed.)
Bugfix: The rest of IDL's built-in types are now autolinked.
Feature enhancement: Conditional inclusion can now conditionalize on the presence of a custom boilerplate element (something with boilerplate=foo
attribute) or the presence of a custom text macro, so you can include a chunk of related HTML only when the thing it's trying to refer to actually exists!
Feature: Autolink conjugations (the thing that lets you write [=applying=]
when the original definition was just <dfn>apply</dfn>
now apply to the first word of a phrase as well as the last. This will usually catch the verb in a multi-word phrase, like "apply the widget", so you can write [=applying the widget=]
and have it Just Work. (But all the conjugations apply, so noun-headed terms like "widget controlled by the user" can be autolinked with [=widgets controlled by the user=]
now.)
Feature: Biblio autolinks (like [[FOO]]
) can now be switched into "inline" display mode, where rather than displaying as "[FOO]" and linking to the bibliography, they display as the actual document's title and link straight to them. (They still get added to the index.) You can turn it on individually with [[FOO inline]]
, or set the default for all biblios in the spec with Default Biblio Display (and switch them back to "index" mode with [[FOO index]]
).
Bugfix: Better darkmode styles! Various fixes thruout, including to certain boilerplates.
Bugfix: bumped the versions for several dependencies to the most recent form, just for general dependency-hygiene reasons
Bugfix: If you used Editor Term
to rename what the spec-metadata section called "Editors", various small side-effects that should specially trigger for the Editor lines... wouldn't. They do now.
Whoops, didn't write release notes for the 2.2 versions! Oh well!
Feature: Global -a
flag to force Bikeshed to emit ASCII-only in all its messages.
Feature: When using WPT Path Prefix
with a lot of tests missing, don't spam the full list out, just log a warning that there are a bunch.
Feature: Biblio autolinks can now take the obsolete
keyword to allow an intentionally-obsolete reference (otherwise Bikeshed complains and automatically switches your ref to what obsoleted it).
Feature: Finally got daily test updates working, so we run with the most modern set of specs rather than ones that are obsolete by months.
Bugfix: Stop ignoring certain test types from WPT, so any test can be linked.
Bugfix: Track what data files exist locally manually, rather than relying on the list matching what the remote data last contained.
Bugfix: Grab the correct set of boilerplates for the specified Status.
Misc: Lots and lots of fixes to make Bikeshed lint-clean.
<img>
elements don't already have width/height attributes on them, Bikeshed will do its best to auto-detect what the sizes are, and insert them into your markup automatically. This is a small but nice perf improvement for specs, avoiding layout-jiggle as images load in.<wpt>
elements have some new features:
<wpt hidden>
processes the element but omits it from the output (useful for leveled specs that need to include all the tests in their folder so they can benefit from WPT Prefix
, but don't actually have a place to put the tests for up/down-level versions)<wpt title>
lets you specify a descriptive paragraph for the tests in the block, formatting it just above the test list in the output<wpt>
elements will now be merged in the output<wpt>
elements are now <details>
elements, and the new WPT Display: closed
renders them closed by default (the previous inline
value and its new alias open
render them open by default, looking approximately the same as they previously did). The default styling for a closed <wpt>
is a tiny out-of-the-way "TESTS", suitable for displaying even in live, published specs. Play with it for now, consider adding it to your defaults.include
file. I plan to flip this to be the default in a near-future version.<wpt title>
attribute is now parsed as Bikeshed source<pre class=include-code>
elements from the output document, so they won't cause your document to fail HTML validation.lol been skipping release notes for a while!
cite
, such semantic https://github.com/tabatkins/bikeshed/commit/e4a654b463a551cb611500b18bd5f777e2103132bikeshed update
like any other data files. bikeshed issues-list
) can now have intro text https://github.com/tabatkins/bikeshed/commit/c2f0309eeade8c20550a4cbd08c79349f8fe7db1Big new WPT features - inline test results!
<wpt>
blocks now contain pass/fail information in the main browsers! https://github.com/tabatkins/bikeshed/commit/f07e1bf21590ce19405c02e483aa4520b4877ef4wpt
lines indicate when a test file contains multiple tests, and how manyAnd some other random stuff:
bikeshed template
now outputs a Status that actually works, so you can use its output immediately, as intended.html
, meta
/link
/style
/script
elements) https://github.com/tabatkins/bikeshed/commit/8eaccd9f127bedc5566dcac0c27aa196601adad7pre
elements https://github.com/tabatkins/bikeshed/commit/53a81004f02671f93a75e16f7b9ad85a24fd8474<wpt hidden>
to do a well-targeted silencing when required, that's no longer a problem, so let'er rip. https://github.com/tabatkins/bikeshed/commit/f965859122fd22d04fb9094bf7c5b00b5ba48ca6wpt
elements, Bikeshed no longer adds the JS, spec-metadata entries, etc. Style still comes thru so the blocks render, at least. https://github.com/tabatkins/bikeshed/commit/4d354f1e58e5760fb0f2db49a08bd005b0bdc6dbThe legacy processor Bikeshed replaced handled links to properties and descriptors identically; 'font-family' would gladly link to the property or the @font-face descriptor, depending on what was in the spec. That never worked well in the first place (the Fonts spec would randomly link to each), and while Bikeshed could at least detect the issue and complain about it, it's annoying to deal with when properties are usually what you wanted to link to. It's gotten worse as we've added more descriptors whose names collide with properties, like 'width' or 'aspect-ratio'.
So, propdesc autolinks without an explicit for value are now always treated as property autolinks; 'width'
will always link to the 'width' property, and never ask if you meant the 'width' MQ or CQ descriptor. You can still use the syntax with a for value, like '@media/width'
, to link to descriptors. This might cause some new link failures, but more likely it'll cause some existing link failures to go away and link correctly. https://github.com/tabatkins/bikeshed/commit/f9584d2c0f419a220c9d60f9998c3ed8d846496f
(I accidentally forgot to pull on my release box before I cut the 3.4.1 release, so 3.4.2 actually contains all the stuff.)
[:http header:]
autolink syntaxdiv
around dt
/dd
, including markdown-generated ones, since that's valid in HTML. Previously it would often kinda work by accident if you contorted your markup in a certain way, but it was real bad. https://github.com/tabatkins/bikeshed/commit/790e00888925ef861f2f4b1246c5f17736f7c090<div assert>
now works, to get the same auto-generated ID as <assert>
does, but for block-level. (<assert>
turns itself into a <span>
in the output.) (Thanks, @dj2!)Been a while since my last batch of release notes!
Complain About: broken-links yes
now has a timeout so it can't hang indefinitely.bikeshed test
does...)die()
doesn't stop the program) it would end up with inconsistent state and cause a Python error anyway.bikeshed update --force-manifest
that forces it to do a manifest update even if the remote's date indicates your local data should be more recent.from __future__ import annotations
that was causing a crash in older Python versions.Complain About: mixed-indents yes
to catch when you mix tabs and spaces in bad ways.New big batch of release notes:
title
(unless they're inline
, since those already have the title as their text)bikeshed echidna --just-tar
option to actually echo the TAR file, rather than whatever broken nonsense it had ended up doing.<length [-100px, 100px]>
syntax, and just switched to using hyphen-minus rather than the fancy math minus.Turns out using just a little of a new HTML parser causes problems when my old hacky line-based code is, well, doing things line-by-line, and thus only feeding the parser part of a tag when a tag is split across multiple lines. So now I just use the HTML parser for the entire pre-Markdown parsing pipeline. (Then Markdown runs, generates some HTML, and feeds its result straight to the lxml parser. Both of these will be rewritten in time as well.)
It looks like this doesn't cause any issues with the testsuite, and hopefully should resolve the spurious fatal errors that 3.11.16 was throwing. Lmk if you see any issues!
So, 3.11.14 caused some problems. I was throwing my new HTML parser at my datablocks.py
code, so I could reliably parse the start tag and preserve all of its attributes. Problem is that the datablocks code was processing the spec line-by-line, so if you had a multi-line tag (such as, for example, having a newline in an attribute value), the parser would complain that it hit EOF without the tag being closed. This didn't have an effect on any of my tests, because nobody had a multiline tag for one of their datablocks, so it didn't actually matter for the spec itself. It did matter that it was suddenly throwing spurious fatal errors, however, as that breaks people's builds. (First mistake.)
At this point I could have reverted the code and worked on it more in a branch, and should have. (Second mistake.) Instead I dug in - my new code was nicer, and I wanted to replace all my hacky text munging anyway, so I might as well just rip it out entirely and use my new parser.
This took a few days, but it was productive work, and I was happy with it. I did this via a big chain of "wip" commits, with test rebasing going on arbitrarily in commits, so when I thought I was done, I did a big squash commit - git reset --soft
to the first commit, commit all the code, rebuild tests and verify, commit them, done. The tests looked good! Surprisingly few tests changed, and those that did were almost entirely catching errors, which was great! Problem is I did the squash wrong - I needed to reset to the commit before my first in the chain. Due to my mistake, I didn't see all the test changes my code had made, only the changes my commits after the first commit made. So I ended up missing a ton of problems that would have been fairly obvious. (Third mistake.)
Thanks Tab for the quick response and the postmortem. I'm really excited about work on tracking build messages, and also only making changes as PRs on GitHub. The way in which ~half of the commits on https://github.com/speced/bikeshed/commits/main have red Xs next to them has made me very nervous about using Bikeshed in the past, and moving to a PRs-with-CI-checks model would be a huge boost to my confidence in the software. Especially once those CI checks include build messages.
only making changes as PRs on GitHub
That's not what I said, and definitely not what I intend. The problem here was that I thought I fixed my branch appropriately, then merged it into main; had I pushed my branch to github and merged via the PR mechanism, I'd have seen that rather than the ~20 tests I thought had changed, several hundred had, and realized I'd done something wrong.
What I decided was to use PRs to merge "whenever I do this kind of significant work in a branch". Working in main directly is still fine for smaller things.
The way in which ~half of the commits on main (commits) have red Xs next to them
A large % of those are linting failures (mostly black
complaining it wants to reformat something), and a large % of the remaining are from me doing test updates as a separate commit from the code updates for convenience. For the remaining, I'm happy with my work mode being to treat main as my trunk, an occasionally messy place, and letting CI remind me when I make a mistake - that's what it's for.
The "stable" channel is meant to be the releases via pip
, which I'm much more conservative with. (The failure noted here notwithstanding; as documented, it was a result of two overlapping failures that caused my test suite to be green and me to think that the test changes were minimal and desirable.)
Oh. That's disappointing. I wish you would treat main with the same care as you treat releases, and used CI to validate your changes, like modern software best practice requires (e.g. on the Chromium project we both contribute to).
Now that Bikeshed is part of SpecEd, is there a way to ask "SpecEd" for that sort of working mode?
I wish you would treat main with the same care as you treat releases, and used CI to validate your changes, like modern software best practice requires (e.g. on the Chromium project we both contribute to).
Why? This isn't a rhetorical question - what is the reasoning behind you wanting this?
Chromium is a massive multi-contributor project; it needs a core that is stable/correct for all the contributors to work from. Bikeshed is largely a single-contributor (me) project, and I don't believe my working mode is what's stopping more contributions. Bureaucracy exists for a good reason, but it's also a significant drag on its host; this is more than worthwhile when it's cutting thru the N^2 growth of personal connections between contributors, but not when that N is very low (again, approximately 1 here).
The group of people that do need stability in reference to Bikeshed are, currently, just the users, and they're served well by my release process. You are also in that group; as WHATWG uses the API server, which now follows releases rather than main, you're exposed solely to what I do in releases. What happens in main is irrelevant in practice for you.
Now that Bikeshed is part of SpecEd, is there a way to ask "SpecEd" for that sort of working mode?
No. I moved Bikeshed to SpecEd for continuity reasons; my getting hit by a bus will no longer mean that the development has to fork to continue. I did not move it to enable non-contributors to impose currently-unneeded bureaucracy on the project.
It's sad to me that you see proper software engineering practices (which are used by teams of all sizes, including one) as bureaucracy. If there's such an ideological gap at this point, I don't think we'll be able to make further progress through discussion, at least not until more incidents of this sort (or others we've seen throughout Bikeshed's history) accumulate.
I wonder if there is just a misunderstanding going on here. Given my limited knowledge of git, I may be missing something, but a few things are clear to me, and as one of the contributors of a small fraction of changes to Bikeshed, I may have a few useful insights.
One thing we should be able to agree on is that the error status of commits should be considered totally irrelevant as long as the last commit before squashing and merging is "green". The commits are just intermediate states that are steps along the path toward a final PR submission, which is true both for main and any branches. In fact, I find the extra steps of staging changes, then committing changes, and then syncing changes, almost entirely annoyingly extraneous.
Doing independent work on branches separate from origin/main, such that once we merge a PR from any branch into main, it will typically require only a single commit that very likely will have no errors, is yet another step that I am happy to avoid, as long as we can avoid problems. I believe, with small teams, this is common practice, and it works fine as long as there are sufficient tests to ensure PRs won't cause unexpected problems. I don't know what the dividing line between small and large teams is, but it probably depends a lot on the nature of the project as well, and how the work is typically distributed.
The Bikeshed repo already does have a moderately large test suite that is applied after each commit. Running these same tests locally, before commit, is also possible, but not essential to ensure a reasonable level of integrity. Sharing intermediate state of a draft PR with co-workers by way of committing changes that might still be very incomplete and full of errors is a very useful technique which we should not sacrifice.
Whether origin/main itself with all the current accumulation of PRs has errors is another question. I would expect that we should never merge in PRs that result in known errors, unless we have high confidence that they are spurious, or that we will quickly fix the errors in a subsequent PR. Then the next boundary condition happens when origin/main is released to the public, which should only happen once more rigorous testing and sufficient reflection result in even higher confidence that everything should be OK.
So, is the discussion about whether PRs to origin/main should ever result in known errors, or whether we have sufficient tests to have confidence about whether known errors are relevant, or something else?
@domenic I'm pretty sad to see this level of condescension, yes. I asked specific questions and gave specific reasoning for my decisions, and I'm getting back generic platitudes about "good software engineering", implying strongly that I am being a bad software engineer by not immediately adopting your suggestions.
Bureaucracy is not a bad word: it is both an essential part of any organization as it grows (to linearize communication pathways as the network of participants grows), and a significant cost to all participants (as they have to service the bureaucracy rather than working directly on the task or with each other). Adding bureaucracy needs justification.
Whether origin/main itself with all the current accumulation of PRs has errors is another question. I would expect that we should never merge in PRs that result in known errors, unless we have high confidence that they are spurious, or that we will quickly fix the errors in a subsequent PR. Then the next boundary condition happens when origin/main is released to the public, which should only happen once more rigorous testing and sufficient reflection result in even higher confidence that everything should be OK.
Right. Bikeshed started as a single-developer project (with frequent but relatively minor contributions from others) with a small community of users (the CSSWG). At that time, working directly in main, and serving directly from main, made sense; the community was small and close-knit, so problems could be immediately communicated and fixed. Keeping main in a working condition was important, but short-term failures, quickly detected and fixed, were okay. Branches were used when doing larger projects that needed the checkpointing of commits, but might leave the codebase in a broken state until it's finished.
Bikeshed has grown since then. Currently the developer situation is still fairly similar - it's mostly just me, with occasional contributions from others. (In fact, spot contributions have mostly dried up as it's become larger and more complex.) So working in main, with occasional branches when necessary, is still pretty reasonable.
But the community has massively expanded, to encompass most of the W3C and a large and diverse set of disparate users elsewhere. I can no longer count on people reporting issues to me; it's more likely that they work around the issues instead. (I do still get plenty of bug reports, which I of course love.) And due to this size, it's more likely that every exposed version is used by a non-trivial number of people, so short-lived failures can still cause significant pain. Thus moving to a release model made a lot of sense, and this has been largely successful. This also means that users are insulated from whatever happens before the point of "cutting a release".
If Bikeshed ever starts getting more community contributions, more stringently maintaining a known-good main
would make sense, so short-lived failures accidentally introduced by one dev don't overly affect the other devs. Until that happens (and I'm not confident it ever will), the current main
shepherding continues to work fine. We could also change it if we believe that the current main
shepherding is preventing people from feeling comfortable contributing, but I don't believe this is the case currently.
Significant refactoring of the "dfn panels" that show up on definitions and list all the links in the document. To reduce the amount of repetitive HTML sent down the wire, these are now sent in a reduced JSON form and constructed in JS on load.
Added a new Ignore MDN Failures
metadata, allowing you to silence an MDN failure (to deal with transient errors due to something moving between specs and MDN temporarily being wrong about where a feature lives).
You can use <wpt skip-existence-check>
to make the WPT block, well, skip the existence check. This lets you use URLs that aren't in WPT at all, or aren't there yet, and still get a similar-looking test block. (No pass/fail data or the helper links like source vs live, but otherwise same as normal.)
Fixed a bug in highlighting, where sometimes a <pre class=include-code>
would drop the last line of the include. (#2521)
Slightly improved how I auto-generate IDs for some links (that need to be linked to by dfn panels, etc.) If you were depending on those auto-genned IDs, uh, they're different now. (#2531)
Darkmode
metadata you can use to turn off Bikeshed's darkmode styles.Removed the ABSTRACTATTR macro, now that nobody consumes it. (It was the same as the ABSTRACT
macro, but escaped to be suitable for use in an attribute value. But ABSTRACT
is HTML content so it was weird to do that in the first place.) This almost certainly doesn't affect you either.
Removed flake8 from my linting pipeline, added ruff to replace it, and turned on a FUCKTON of lints. It can't quite replace pylint yet, but it's close, and it's SO FAST.
If you do something that makes an invalid spec (like invoking Bikeshed without an input file, with no .bs
file in the current directory), I now properly catch that and fail gracefully from several commands rather than dying with a Python stacktrace.
Did a bunch of refactoring of the Install/Use section of the docs to emphasize using pipx
to install and manage Bikeshed, as a much easier and safer install tool, and to expand some examples of how to use Bikeshed within GitHub CI.
Bikeshed now checks if your datafiles are relatively old and automatically attempts to update them, so you don't need to run bikeshed update
yourself. I did a lot of refactoring in this code and it seems to be great, but please let me know if there are any issues.
Let's try that HTML parser rewrite again! Coming at it more gradually now; I do one early pass over the document with the new parser and then just reserialize back to a string. I haven't yet replaced the datablock, markdown, or shorthand parsing, and I still pass it to the pre-existing HTML parser to actually build a tree, so mostly this is just some extra work being done, but those'll all be absorbed into this work in later phases.
As I say in https://github.com/speced/bikeshed/pull/2602, this brings a few benefits immediately:
<<type>>
autolinks, and CSS ''maybe''
autolinks correctly, in the parser, rather than hackily via a regex.It then still runs the datablock, markdown, and finally the existing HTML parser over the spec, so this is probably slightly slower at the moment, but those will be eaten by the parser in later phases.
Known issues with existing specs' markup:
If you were working around the hacky `
parsing by using \`
inside of a code block
(which shouldn't have any parsing done inside)
it no longer does any parsing inside.
Fix: Remove the spare \
so you just have valid JS again.
If you weren't working around this your spec was probably broken,
and now it's fixed!
The HTML parser runs before the Markdown parser right now
(fully integrating the two together is the next project),
so a tag broken across a line inside a blockquote
will parse incorrectly
(it's closed prematurely by the blockquote's >
at the start of the next line)
Fix: just put the whole tag on one line for now.
Previously, ''<foo>''
would make a maybe autolink to <foo>
as a value.
Now it's equivalent to <css>&lt;foo></css>
,
which is broken,
but arguably it was always broken in the first place.
Fix: change to ''<foo>''
.
The Markdown behavior of "if you have spaces at both the start and end of a code span, remove one from each side" is now properly implemented. A few specs relied on it removing any amount of any whitespace, so now there's an extra space sometimes if you did a linebreak inside your code span for some reason. Fix: Put the code span all on one line, or at least don't linebreak between the end of the content and the closing ticks. (The serializer still collapses starting/ending whitespace down to a single character to make the content look better, so that might still be doing more stripping than you want too.)
A few small updates in the last few weeks.
=
in unquoted attribute values not an HTML parse error, so you can still have unquoted URLs with query strings in your attributes. (This'll be partially reverted in a future version, as the parse error apparently legitimately catches a lot of problems in the wild where people accidentally omit the space between two unquoted attributes, but I'll keep the exception for attributes known to contain URLs, like href
and src
.)requests
doesn't do this for you, while the rest of Python file loading does.Die On
metadata, paralleling the --die-on
command-line flag, that controls what level of error message results in the spec failing to build entirely. No change to existing documents (it still defaults to "fatal"), and the command-line flag still overrides anything coming from metadata.w3c/UD
status, since it's an unofficial status anyway, and useful to distinguish from their "real" draft statuses.--die-on=warning
to ensure a clean build). Shouldn't run into surprises like that anymore.<pre class=simpledef>
, I no longer automatically sentence-case the keys, so you can do things like {{someMethod()}}: describing the method
and the link will no longer get broken.Woo, major version bump! Content-wise this isn't a break-worthy update, but Bikeshed has officially deprecated support for Python 3.7 (and 3.8), and now requires a minimum version of 3.9. As far as I can tell, this is the highest widely-supported version among default installs now; the old OSes that bundled 3.7 by default are all now out of long-term support.
<meta name=revision>
, to accord with the registered meta name for this purpose.--die-when
command-line argument, letting you toggle between a fatal error stopping Bikeshed immediately, or just stopping it at the end from actually producing output. Defaults to "late" now (continues processing, only dies at the end), so you can see all your fatal errors at once. You can pass --die-when=early
if you have too many errors and want to fix them one-by-one.--die-on
and --die-when
can now be specified in your metadata (including in your group's defaults), as Die On
and Die When
, taking the same values as the command-line args.--no-update
on the command line.[TITLE]
macro, used to pipe the document's title into the <title>
element, now omits markup in your Title
metadata and just contains text. (<title>
is specially parsed in HTML, similar to <xmp>
.) This means you don't necessarily need to write both Title
and H1
metadata if you want to put some markup into your document's <h1>
. (But if you're using markup with semantic visuals, like <sup>
or <sub>
, you probably do still want to do something different there.) This ended up fixing accidental markup getting spewed into the document title for several specs in my testsuite.<pre highlight=foo><code>...</code></pre>
, previously it would get double highlighted. (Shouldn't have been visible, given the highlight styling most people are using, but it was silly verbose markup.) No more!Most of my time was spent on making Bikeshed's new HTML parser more powerful and more correct (mostly in https://github.com/speced/bikeshed/commit/5c6f7af73bbe345046023dc3c6ba4704044ff07a). This shouldn't have any big effect on you (some caveats, below), but every step forward I make here makes me so much happier.
<pre class=foo>
things that are specially handled).
\
is now output as part of your spec. Sorry. (However, more specs hadn't corrected for it and just had broken output; they're now automatically fixed.)header.include
file, etc.Line ~20
" (with the tilde) still happen for the remaining linking shorthands that don't know their original line number; they're instead reporting the line number of the nearest construct (HTML element or Markdown block) that does know its line number. If that's incorrect, tho, let me know.header.include
. This sucks, I know.I did a lot of careful test review to make sure things are as correct as possible. Aside from the bits I listed above, and the possibility of some new markup errors being flagged,
<l>
element wasn't turned into a valid HTML element.Neither of these should actually affect specs in a user-observable fashion; let me know if anything seems to be newly wrong.
Several miscellaneous fixes; I wanna get these out before I dive back into the parser.
<dfn><<length [0, 10px]>></dfn>
(defining any type shorthand with a range), Bikeshed will now auto-infer that it is actually a value definition, rather than a type definition. This might change some IDs, if your dfns weren't tagged before and you were relying on auto-detection.Boilerplate
metadata) a script or style with an associated style/script, I now properly omit the associated stuff too, without you having to manually turn them off.bikeshed source
is completely rewritten.
<!-- Big Text: foo -->
comment.A few small fixes.
WPT Path Prefix
if it was present, or else tried to infer a common prefix from the existing tests. (And in either case, would reject the path if it was the root, so I didn't pull all of WPT in.) Tests outside that path would work, but wouldn't get pass/fail piecharts and wouldn't contribute to the pass/fail boxes at the top of the spec. Bikeshed now handles multiple paths, and infers them from the provided tests automatically.--die-on
and --die-when
flags are now properly piped into the metadata infrastructure, so they'll win over less powerful Die On
/When
metadata as they were intended to.Tiny release.
data-type
attributes in IDL attributes, making attributedef tables break. No longer! (Thanks, @tidoust)Dark Mode: no
, Bikeshed now automatically adds a <meta name=color-scheme>
to your doc indicating it's darkmode-aware. If you're publishing a W3C spec (detected by "has a W3C stylesheet"), it also inserts the W3C darkmode stylesheet, which provides darkmode colors.<script src=...>
) are now indented like normal in your source. This is nothing, it was just bothering me.bikeshed watch
and bikeshed serve
weren't properly overriding the Die On
metadata, so they'd stop watching when they hit a fatal error. Fixed!(4.1.7 was an accidental no-op release.) Tiny update!
htmlwg
as a recognized W3C Groupwidlparser
Whoops, left a few version off the changelist. They're all minor except the last.
<var>
s inside of <div algorithm>
blocks when you click the vars) darkmode-aware.Moved the data about what groups and statuses exist, which statuses a group is allowed to use, etc. over to a datafile in the bikeshed-boilerplate repo. Previously, updating this requiring rolling a new Bikeshed version; now it can be updated alongside new boilerplates being added! No more silly updates like 4.1.9 and 4.1.12.
If you're missing some IDs that the MDN data expects to be present in your spec, the error message is a little better now.
Fixed a weird corner case: as long as there's only a single overload for the method, you can always autolink a method without passing any args: {{Foo/bar()}}
links to the bar()
method, regardless of how many args bar()
actually takes.
Because IDL methods and attributes occupy the same namespace, you were also allowed to autolink to methods without using parens at all, like {{Foo/bar}}
to link to the Foo.bar()
method. However, due to some slight mismatches in how two different systems interfaced, this only worked if the method could be called without arguments. If there were required arguments, it didn't work; but {{Foo/bar()}}
(parens, no args) still worked fine.
This is fixed now, tho there are a few specs in the end-to-end testing database which now have ambiguous autolinks as a result. It's likely a few specs in the wild might run into the problem as well.
Fixed a crash bug that could occur while I was figuring out your spec's indent level, if the spec contained at least 50 space-indented lines but they were all indented with only a single space.
Fixed a couple of W3C URLs https://github.com/speced/bikeshed/commit/61fea1be4463fd1ad9182d767287ecf7d6044fc6
Made bikeshed spec
pay attention to --print=json
(previously, only bikeshed refs
used it), and document that value. https://github.com/speced/bikeshed/commit/296e6fd70c6cb8c8a7c774cc980601c21b793e45
(This thread documents the updates in comments; this original comment always reflects the latest version.)
Version 4.2.1
Fixed a couple of W3C URLs https://github.com/speced/bikeshed/commit/61fea1be4463fd1ad9182d767287ecf7d6044fc6
Made
bikeshed spec
pay attention to--print=json
(previously, onlybikeshed refs
used it), and document that value. https://github.com/speced/bikeshed/commit/296e6fd70c6cb8c8a7c774cc980601c21b793e45