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

stacklok / toolhive-studio / 24515551334
70%

Build:
DEFAULT BRANCH: main
Ran 16 Apr 2026 02:24PM UTC
Jobs 1
Files 451
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

16 Apr 2026 02:20PM UTC coverage: 63.361% (+0.07%) from 63.295%
24515551334

push

github

web-flow
feat(playground): thread ID in URL with sub-route architecture (#2003)

* feat(playground): add sub-routes with thread ID in URL

Convert /playground to a layout route with an Outlet. Add a /playground/
index route that resolves the last-viewed thread (stored active ID or most
recent) and redirects to /playground/chat/$threadId. Extract PlaygroundContent
into the new /playground/chat/$threadId route which reads the thread from
params and wires thread navigation via useNavigate.

* refactor(playground): make usePlaygroundThreads URL-driven

Accept activeThreadId as input instead of managing it as internal state.
Persist it to IPC via a side-effect. createThread and deleteThread now
return the new/next thread ID so callers can navigate programmatically.
Remove selectThread — navigation is the caller's responsibility.

* test(playground): update tests for sub-route and URL-driven thread selection

Reduce playground layout route tests to the permission gate only. Add a new
test suite for the /playground/chat/$threadId route covering loading state,
sidebar/ChatInterface prop wiring, and threadId-from-param behaviour. Update
usePlaygroundThreads tests for the new hook signature, createThread/deleteThread
return values, and IPC persistence side-effect.

* fix(playground): move index redirect to component effect for permission safety

The beforeLoad hook runs before the parent layout renders, bypassing the
permission gate. Move thread resolution and redirect logic into a component
useEffect so it only executes after the layout allows rendering. Also handle
createChatThread failure explicitly with error logging instead of rendering
a blank page.

* fix(playground): use ref in deleteThread to avoid stale closure

Read from threadsRef.current instead of the captured threads closure so
concurrent state updates from refreshThread are not overwritten. Add tests
for the index route covering all redirect branches: stored active thread,
stale ID fallback, no stored ID... (continued)

3542 of 5901 branches covered (60.02%)

61 of 70 new or added lines in 5 files covered. (87.14%)

4 existing lines in 2 files now uncovered.

5665 of 8630 relevant lines covered (65.64%)

121.33 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
0.0
0.0% renderer/src/route-tree.gen.ts
2
88.51
-3.25% renderer/src/features/chat/hooks/use-playground-threads.ts
1
96.15
renderer/src/routes/playground.index.tsx

Coverage Regressions

Lines Coverage ∆ File
3
0.0
0.0% renderer/src/route-tree.gen.ts
1
88.51
-3.25% renderer/src/features/chat/hooks/use-playground-threads.ts
Jobs
ID Job ID Ran Files Coverage
1 24515551334.1 16 Apr 2026 02:24PM UTC 451
63.36
GitHub Action Run
Source Files on build 24515551334
  • Tree
  • List 451
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #24515551334
  • 88c1c01a on github
  • Prev Build on main (#24515046621)
  • Next Build on main (#24521060959)
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