Skip to content

EYAS v0.8.20-beta — A front door, and its locks

Choose a tag to compare

@eyssen eyssen released this 01 Sep 17:33
· 1 commit to main since this release

EYAS had no public face: the overview page lived in the repository, the
documentation was only reachable from a running instance, and the README still
described a smaller project than the one in the tree.

It has one now — https://eyssen.github.io/eyas/ — and turning the repository's
scanners on for the first time found real defects behind it, which this release
fixes.

A public site

  • The landing page and the docs are published together. / serves the
    product overview, /docs/<lang>/ the 392-page documentation in all six
    languages. One build script assembles both, and CI runs the same script
    rather than a copy of its logic.
  • The landing page speaks six languages, not two. Every string exists per
    language in the page itself, so it stays a single self-contained file. The
    language is chosen before first paint from ?lang=, the last choice, or the
    browser, and English renders without JavaScript.
  • A beta callout and an installation panel replaced a mock terminal line.
    The callout asks for reports and links the issue tracker; the panel carries
    the three real install routes and a link to the getting-started guide that
    follows the language switch.

Security fixes

  • Email header injection in both address formatters. A display name was
    written into a header without removing CR/LF, so a name carrying
    \r\nBcc: … added a recipient. The quote was escaped but the backslash was
    not, so a name ending in one escaped its own closing quote.
  • The CLI MCP bridge secret came from Math.random() plus a timestamp.
    That secret authenticates bridge sessions; it now takes 24 bytes from the
    CSPRNG and encodes no clock.
  • Notification event patterns are globs, but only the dot was escaped
    before the star was expanded, leaving every other regex metacharacter live:
    board.(task).* matched board.task.assigned through a regex group.
  • Generated skill frontmatter escaped quotes but not backslashes, the
    key-injection its own guard was written to prevent.
  • The research HTML stripper missed </script > and </script foo>, kept
    the contents of comments, and kept a tag left unterminated by truncation.
  • Four advisories patched: drizzle-orm (SQL injection via improperly
    escaped identifiers), nodemailer, @anthropic-ai/sdk, and sharp in the docs
    package. Measured against a baseline: the suite fails identically before and
    after, so the upgrades change nothing else.

Around the repository

  • A security policy, a contributing guide and issue templates. Private
    vulnerability reporting is on, and SECURITY.md now names that channel
    instead of leaving reporters with a public issue. CONTRIBUTING.md leads
    with what a contributor cannot guess: this repository is a mirror.
  • The README's figures are measured, not estimated. 57 modules, 228 skills,
    7,200+ tests across 747 files, twelve provider submodules including the CLI
    engines that need no API key, and the six setup-wizard steps the code
    actually registers.