cd /news/developer-tools/miso-css-0-0-3-gets-type-safe-aria · home › topics › developer-tools › article
[ARTICLE · art-152041] src=discourse.haskell.org ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Miso-css-0.0.3 gets type safe ARIA

Developer yaitskov released miso-css v0.0.3, adding type-safe ARIA attributes to the Haskell library for generating HTML, including aria-describedby references, global tab indexes and access keys. The release follows two miso releases that introduced breaking API changes, and the author states the library was developed without help from AI agents, though he says using it without them would be hard because of its many type parameters.

read1 min views2 publishedOct 17, 2026

Hi,

I was getting a certificate about a responsive web design and discovered HTML ARIA rules. They help annotate web pages for screen readers. Besides simple in-place HTML attributes with descriptions the ARIA standard permits usage of attributes for referencing content in other tags (e.g. aria-describedby).

I think recent and upcoming advances in AI will soon make the whole ARIA stuff obsolete, but it’s a good use case for dependent type rattling

Plus miso has been been released twice since then with breaking changes in its API.

So I released a new version of miso-css.

for

"""<div><label for="a">l</label><input id="a"/></div>""" 
  `go`
      div_ </ (label_ `for` A <@ "l") </ input_ =# A

ARIA

"""<div>
     <span id="aa">hi</span>
     <span id="bb">bye</span>
     <input aria-describedby="aa bb"/>
   </div>"""
`go` div_ </ (span_ =# Aa <@ "hi") </ (span_ =# Bb <@ "bye")
          </ input_ `ariaDescribedBy` Aa `ariaDescribedBy` Bb

tab indexes are global and should be unique as tag ids. Except values -1 and 0.

"""<div tabindex="-1">x</div>""" `go` tabIndexMinus1 (div_ <@ "x")

"""<div tabindex="1">x</div>""" `go` div_ `tabIndex` 1 <@ "x"

Access keys are global too.

"""<div accesskey="a">x</div>""" `go` div_ `accessKey` 'a' <@ "x"

The library has been developed without help from agents, but using the library without them would be hard because of many type parameters.

── more in #developer-tools 4 stories · sorted by recency
── more on @miso-css 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/miso-css-0-0-3-gets-…] indexed:0 read:1min 2026-10-17 · —