• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nogoo9 / no-crd / 26650545188
70%

Build:
DEFAULT BRANCH: main
Ran 29 May 2026 04:56PM UTC
Jobs 1
Files 38
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

29 May 2026 04:56PM UTC coverage: 70.112% (+0.04%) from 70.072%
26650545188

push

github

web-flow
release: v0.5.4 — per-session MCP, UI branding, version badge (#17)

* fix(server): create fresh McpServer per session to avoid "already connected"

McpServer.connect() throws if the server is already connected to a
transport. The stateful session path was reusing globalMcpServer
(eagerly created at startup), so the second session would fail with
"already connected transport, call close()".

Fix: always create a new McpServer per session. The eagerly-created
globalMcpServer is only used for startup tool/RBAC validation.

* refactor(server): remove globalMcpServer, adopt per-session factory pattern

Follow the official MCP SDK "getServer()" factory pattern: each
session (or request in stateless mode) creates its own McpServer.

- Remove globalMcpServer global variable entirely
- Startup validation (ADR-009) creates a throwaway server to verify
  RBAC permissions, then discards it
- Test mode (globalTransport) creates a per-call server paired with
  the injected transport
- Update JSDoc to document the SDK contract

* fix(server): per-session McpServer factory + ADR-012

Bug: McpServer.connect() throws "already connected transport, call
close()" when a second client session connects, because globalMcpServer
was shared across sessions.

Fix: adopt the official MCP SDK "getServer()" factory pattern — each
session gets its own McpServer. globalMcpServer removed entirely.
Startup validation (ADR-009) creates a throwaway server to verify
RBAC, then discards it.

- ADR-012 documents the per-session factory pattern
- CHANGELOG and whats-new updated
- VitePress sidebar includes ADR-012

* chore: bump version to v0.5.4

* feat(ui): configurable branding, version badge, and powered-by footer

- Add UI_TITLE / UI_SUBTITLE env vars for white-label dashboard
  branding (config/ui.ts, server.json)
- /healthz now returns { status, version, branding: { title, subtitle } }
- UI fetches /healthz at runtime to populate version badge, title,
  and subtitle — no build-time ... (continued)

41 of 52 new or added lines in 5 files covered. (78.85%)

5250 of 7488 relevant lines covered (70.11%)

19.33 hits per line

Uncovered Changes

Lines Coverage ∆ File
11
80.0
-2.37% src/server/index.ts
Jobs
ID Job ID Ran Files Coverage
1 26650545188.1 29 May 2026 04:56PM UTC 38
70.11
GitHub Action Run
Source Files on build 26650545188
  • Tree
  • List 38
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26650545188
  • fbb75f4f on github
  • Prev Build on main (#26634458474)
  • Next Build on main (#26674222255)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc