Skip to content

shidashi

0.3.0Package record

A Shiny Dashboard Template Modular System with Chat Bot Support

0packages dependsuggested by 1
4.7Kdownloads / year
–test coverage
13/13flavors OK

Overview

About

A template dashboard system with AI agent integrated. Comes with default themes that can be customized. Developers can upload modified templates on 'Github', and users can easily download templates with 'RStudio' project wizard. The key features of the default template include light and dark theme switcher, resizing graphs, synchronizing inputs across sessions, new notification system, fancy progress bars, and card-like flip panels with back sides, as well as various of 'HTML' tool widgets.

Changes in 0.3.0
  • The MCP endpoint keeps a call log for each running app in the cache folder, MCP-logs/date-<start time>_app-<app id>/mcp-calls.log: one line (at most 300 characters) per request, reply, or failure, with the tool, the JSON-RPC id, the time taken, and the arguments, result, or reason. The stdio proxy adds the calls that never reach an app, marked (proxy). Turn the log off with options(shidashi.mcp_log = FALSE) or the environment variable SHIDASHI_MCP_LOG=false; the newest getOption("shidashi.mcp_log_keep", 50) folders are kept
  • A running app writes logs/server-info.log in its folder (app id, process id, port, addresses, and call log folder). It and the app record are removed when the app stops, so an app stopped inside an R session that keeps running no longer leaves a record behind
  • Until an app has answered it, the stdio proxy skips app records whose port refuses connections and tries the next newest, instead of failing every call on a stopped app
  • register_input() gains hint (one of input_hint_classes): whether agents ask the user for an input before loading data or running the analysis, keep its default, or leave it alone. shiny_input_info returns each input's hint, takes a hints filter, and reports session state registered with the new register_input_state() under @state
  • With no browser page open, switch_module and module tool calls give the agent the app's address as a one-click link
  • The Claude plugin adds a rave skill: how agents find a running RAVE app, open it in the browser, and what to ask before loading data
  • Added mcp_click(): clicks an element for an agent and reports whether it matched, was clicked, or was refused; the browser refuses elements inside [mcp-agent-disabled="true"] (controls for people only). shiny_input_update clicks buttons through it, so a refused or missing button now fails the tool call
  • colormapSelectInput() can no longer be emptied: Backspace/Delete keep the selected color map, an update with an empty selected restores the previous value (or the first color map), and a selected outside the choices selects the first one
  • Added a color picker widget using vanilla shiny select input;
  • Added base theme for plots and viewers that are registered output, such as plotOutput2;
  • Redesigned the MCP endpoint so agents such as Claude Code can drive the dashboard without session binding:
Show all changes in 0.3.0Hide the rest of the changes in 0.3.0
  • the tool list is built from the template on disk (each module's tools load once without a browser), so it is available before any browser opens and never changes while an agent is connected; tools from modules that fail to load fall back to agents/tool-schema.yaml
  • each tool call runs in a module chosen on the spot: the module named by the optional _module argument, else the module tab the user pinned with the new pin button, else the one the user used most recently; results end with a note naming the module
  • removed the list_shinysessions, register_shinysession, get_session_info, and ask_user MCP tools; added shidashi_sessions (open modules and the default one) and shidashi_call (tools that exist only in live sessions)
  • the server no longer issues Mcp-Session-Id; /mcp/{module} limits a connection to one module (a module id or a handle)
  • agent modes and the confirmation policy apply only to the in-dashboard chat; over MCP, tools carry readOnlyHint and destructiveHint annotations and a note, and the agent asks the user in its own chat, never in the browser; tools turned off in agents.yaml stay off
  • the stdio proxy picks up apps from per-app records, follows an app across restarts, accepts --app and --module, and always replies to a request
  • the stdio proxy works without a running app: it connects, lists the tools it can, and tells the agent to ask the user whether to start an app or launch a saved one
  • the stdio proxy can attach to a shidashi app at any address for the current session (shidashi_connect, shidashi_disconnect); its tool list follows the attached app, and shidashi_tools lists the app's tools for clients that do not refresh their tool list
  • module handles always carry the session token prefix (<module>@<token>), so a handle stays the same when the user opens the module again in another tab
  • added the switch_module meta tool: it shows a module in the user's dashboard as clicking it in the sidebar does (its open tab comes to the front, or it opens in a new tab; auto_new = FALSE only switches to an open tab), and returns once the module's page has loaded (options shidashi.switch_module_timeout and shidashi.switch_module_wait); it is refused while the user has a module pinned
  • the dashboard now finds a module's open tab by its module id, and a module page asks its dashboard directly when switching modules, so switch_module() also works when the dashboard sits in a frame
  • switch_module() gains auto_new: with auto_new = FALSE it only switches to a module whose tab is open
  • exported mcp_call_active(): it is TRUE while a tool runs for an MCP call, and while it is, the environment variable SHIDASHI_USING_MCP is "TRUE" (removed when the call returns), so tools and skill scripts can behave differently for agents, for example print less
  • Each skill is now two tools: skill_load__<name> reads the instructions and reference files and never changes anything, and skill_run__<name> runs the scripts; skill_wrapper() returns both (load, run); in the dashboard chat, a script marked destructive in agents.yaml now asks for confirmation
  • Skill scripts document their arguments in a # Usage: header comment; skill_run__<name> lists each script's usage and refuses a call that leaves out a required argument; files in scripts/ whose names start with _ are helpers, not scripts
  • Environment variables passed to a skill script (envs) are now added to the app's environment instead of replacing it, so the script keeps PATH, HOME, and SHIDASHI_USING_MCP
  • Added save_launcher() and run_launcher(): saved apps are kept in one launchers.json file in the shidashi cache folder, optionally with a copy of the app (copy_app = TRUE) and free-form metadata; the MCP proxy lists saved apps (shidashi_launchers) and, when the user picks one, starts it and opens the chosen module in the browser (shidashi_launch)
  • shiny_query_ui now returns the element's HTML or image in one call; shiny_query_ui_result is removed; transform_image = FALSE asks for HTML only, and long HTML is trimmed (image data and scripts shortened, max_chars sets the limit)
  • Added the shiny_output_result MCP tool: it returns a registered output's rendered content even when the output is in a hidden tab or a collapsed card, rendering it first (waiting up to 10 seconds; option shidashi.output_result_timeout); a plot that was never shown is drawn at a fallback size; shiny_query_ui notes when an element is not shown or shows an error; outputs registered with download_type = "htmlwidget" also return the widget data (x), since a widget such as a DT table shows only one page of it, and outputs registered with download_type = "data" also return what download_function writes; both are trimmed by max_chars
  • Added render_hidden_output(), which renders one output at the next flush even when it is hidden, then restores suspendWhenHidden
  • shiny_query_ui and shiny_output_result ask the browser after a short pause (option shidashi.query_ui_delay, default 0.1 seconds): agents often send a change and a query in one turn as concurrent requests, which R may take in either order, and the pause lets the change reach the page first
  • In the bslib-bare template, shiny_query_ui and shiny_output_result ask a threeBrain viewer for pictures of its WebGL or WebGPU canvases: they dispatch one viewerApp.captureOnce event on the viewer's wrapper (.threejs-brain-canvas) with an empty object as detail, and the viewer draws a frame and adds { canvas, dataURI } to detail.views for each view it drew. When the viewer has not answered after three animation frames, and for any other canvas, the canvas is read directly as before. Such canvases used to come back blank in Chromium, or out of date in browsers that keep the last frame. A page that draws no frames (for example in a background tab) is read after half a second, with a note
  • Errors inside shidashi's own observers are reported as warnings instead of ending the user's session
  • register_input() gains tooltip, shown when the mouse hovers over the input (its title); it defaults to the first sentence of description (new as_tooltip()), and tooltip = NULL turns it off; only inputs get it, so other registered elements, such as cards, are unchanged

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 3.0 min · r-release-macos-x86_64
Status changes
  • OK13 OK2026-08-04
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK14 OK2026-03-10
Advisories

none known

Documentation

In release 0.3.0
READMEYes · 211 wordsVignettesNoNEWSYes · 67% structured · mentions 0.3.0Citation fileNoWebsiteYes · pkgdown
Help pages
62 (4 internal)
Examples that run
87%33 run in a plain check (2 of them under a condition) · 4 never run · 1 hold no code
Exported functions with examples
64%
Documented parameters
86%
Return-value docs
97%
Help pages citing references
0%

Downloads

4.7K
CRAN downloads in the past year
Rank #6,559 · ~13/day · ~388/mo
Daily download trend is not available in this view yet.
50930 days
1.3K90 days
4.7K1 year
Compare downloads with other packages →
Also on98 r2u2 autocran643 conda_forge

Repository

11Stars
5Forks
0Open issues
0Open PRs
1Releases
178Commits
1Commit identities
178 commits · Last activity 2026-10-15
Responsiveness
How these are sampled
PRs merged (all time)
86%
Median days to close, 50 most recently updated closed issues
1
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2025-07-29 · 112026-07-07 · 11
PracticesBeta

8 development-tooling and community-health practices detected across 4 families in the upstream repository

Checks run against github.com/dipterix/shidashi on 2026-10-21.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel

Docs source (3)
pkgdown

GitHub Pages site last deployed 2026-10-15 · The repository has a site deploy workflow

pkgdown site last built 2026-10-15

CRAN release process (1)
cran-comments.md
Lint, format, editor (2)
lintrRStudio project
How this is detected·Detection ruleset v4 (2026-10-20)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • GitHub Copilotfirst seen 2026-02-26
    Seen in the repository: .github/copilot-instructions.md
  • Claude Codefirst seen 2026-09-29
    Seen in the repository: .claude-plugin
    Named in .Rbuildignore: .claude-plugin
How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
25 external dependencies (excludes base and recommended)

Installing shidashi adds 53 packages (29 with compiled code, 39 MB of source tarballs). Heaviest: bslib 5.6 MB, promises 3.1 MB, ellmer 3.0 MB.

Depends (0)
none
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect
Suggested by 1
Suggests, most downloaded first

People & History

People (7)
Copyright holder, Author, Maintainer since 0.1.0 (2021)
Contributor
Bootstrap library
Contributor, Copyright holder
OverlayScrollbars library
Contributor, Copyright holder
Clipboard.js library
Contributor, Copyright holder
highlight.js library
Copyright holder
AdminLTE - Bootstrap 4 Admin Dashboard
Copyright holder
Bootstrap library
Releases (9)

Pick two releases to compare their code metrics.

  • 0.3.0Latest
    record
    2026-10-11 · current release · diff ↗ ·
    added 12 exports
    as_tooltip, colormapSelectInput, input_hint_classes, mcp_call_active, mcp_click, objectListInput, register_input_state, renderPlot2, render_hidden_output, run_launcher, save_launcher, updateObjectListInput
    ·
    listed once in CRAN's queue
    Seen in one reading of CRAN's incoming queue, at 2026-10-11 22:36 UTC, so it stayed less than the time between readings.
  • R
    R 4.6.0 released · 2026-04-24
  • 0.2.0
    record
    2026-04-10 · diff ↗ ·
    removed 4 exports
    get_jsevent, register_global_reactiveValues, register_session_events, register_session_id
    added 29 exports
    card_badge, card_recalculate_badge, combine_html_class, disable_input_broadcast, disable_input_sync, disable_recalculate_badge, enable_input_broadcast, enable_input_sync, enable_recalculate_badge, fire_event, get_event, get_handler, html_asis, read_stream_vis, register_session, remove_html_class, renderStreamViz, server_standalone_viewer, set_card_badge, set_handler, streamVizOutput, stream_file_id, stream_init, stream_path, stream_to_js, stream_viz, switch_module, unregister_session, updateStreamViz
  • 0.1.8
    record
    2026-03-23 · diff ↗ ·
    added 13 exports
    active_module, bslib_dependency, current_module, drawer_close, drawer_open, drawer_toggle, init_app, mcp_wrapper, module_drawer, open_url, register_input, register_output, skill_wrapper
  • R
    R 4.5.0 released · 2025-04-11
  • R
    R 4.4.0 released · 2024-04-24
  • 0.1.6
    record
    2024-02-17 · diff ↗
  • R
    R 4.3.0 released · 2023-04-21
  • 0.1.5
    record
    2023-04-04 · diff ↗ ·
    added 1 export
    accordion_operate
  • 0.1.4
    record
    2022-10-16 · diff ↗
  • 0.1.3
    record
    2022-08-06 · diff ↗
  • 0.1.2
    record
    2022-06-21 · diff ↗ ·
    added 5 exports
    add_class, flex_break, register_global_reactiveValues, remove_class, reset_output
  • R
    R 4.2.0 released · 2022-04-22
  • 0.1.0
    record
    2021-11-17
  • R
    R 4.1.0 released · 2021-05-18
Across CRAN, the median accepted release of the past year spent 26 hours in the queue, 90% under 11 days.How queue time is measured

Package metadata

First published
2021-11-17
Total releases
9 / 5 yrs
License
MIT + file LICENSE OSI
Download size
959 KB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("shidashi")
Wang, Z., Bootstrap contributors, , ColorlibHQ, , Haas, R., Rocha, Z., Sagalaev, I., & Twitter, Inc, . (2026). shidashi: A Shiny Dashboard Template Modular System with Chat Bot Support (Version 0.3.0) [Computer software]. https://doi.org/10.32614/CRAN.package.shidashi

This package has no citation file, so citation() returns this entry built from DESCRIPTION.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for shidashi version 0.3.0 [Data set]. HJJB, LLC. Data release v2026-10-24. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-24, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy