Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 40 additions & 35 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: jsmodule
Title: 'RStudio' Addins and 'Shiny' Modules for Medical Research
Version: 1.6.15
Date: 2025-10-10
Version: 2.0.0
Date: 2025-12-05
Authors@R: c(
person("Jinseob", "Kim", email = "jinseob2kim@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-9403-605X")),
person("Zarathu", role = c("cph", "fnd")),
Expand All @@ -23,49 +23,54 @@ Depends: R (>= 3.4.0)
License: Apache License 2.0
Encoding: UTF-8
RoxygenNote: 7.3.2
Imports:
data.table,
DT,
epiDisplay,
Imports:
data.table,
DT,
epiDisplay,
flextable,
forestploter,
geepack,
GGally,
ggplot2,
forestploter,
geepack,
GGally,
ggplot2,
bslib,
ggpubr,
haven,
Hmisc,
jskm(>= 0.4.4),
jstable(>= 1.3.8),
labelled,
ggpubr,
haven,
Hmisc,
jskm(>= 0.4.4),
jstable(>= 1.3.8),
labelled,
MatchIt(>= 3.0.0),
maxstat,
methods,
officer,
pROC,
purrr,
readr,
readxl,
rstudioapi,
rvg,
maxstat,
methods,
officer,
pROC,
purrr,
readr,
readxl,
rstudioapi,
rvg,
scales,
see,
shiny,
shinycustomloader,
see,
shiny,
shinyAce,
shinycustomloader,
shinyjs,
shinyWidgets,
stats,
survey,
survIDINRI,
survival,
timeROC,
shinyWidgets,
stats,
survey,
survIDINRI,
survival,
timeROC,
utils,
ggrepel,
htmltools,
riskRegression,
R6,
svglite
svglite,
httr,
jsonlite,
openxlsx,
gridExtra
URL: https://jinseob2kim.github.io/jsmodule/, https://github.com/jinseob2kim/jsmodule
BugReports: https://github.com/jinseob2kim/jsmodule/issues
Suggests:
Expand Down
19 changes: 19 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ export(GEEModuleLinear)
export(GEEModuleLogistic)
export(GEEModuleUI)
export(ROC_table)
export(aiAssistant)
export(aiAssistantUI)
export(barServer)
export(barUI)
export(boxServer)
Expand Down Expand Up @@ -75,6 +77,7 @@ import(data.table)
import(flextable)
import(ggplot2)
import(shiny)
import(shinyjs)
importFrom(DT,"%>%")
importFrom(DT,DTOutput)
importFrom(DT,datatable)
Expand All @@ -96,6 +99,9 @@ importFrom(data.table,setDT)
importFrom(data.table,setkey)
importFrom(data.table,setnames)
importFrom(epiDisplay,tableGlm)
importFrom(flextable,autofit)
importFrom(flextable,body_add_flextable)
importFrom(flextable,flextable)
importFrom(forestploter,forest)
importFrom(forestploter,forest_theme)
importFrom(geepack,geeglm)
Expand All @@ -112,12 +118,18 @@ importFrom(ggpubr,ggscatter)
importFrom(ggpubr,stat_compare_means)
importFrom(ggrepel,geom_label_repel)
importFrom(ggrepel,geom_text_repel)
importFrom(gridExtra,grid.arrange)
importFrom(haven,read_dta)
importFrom(haven,read_sas)
importFrom(haven,read_sav)
importFrom(htmltools,includeCSS)
importFrom(httr,POST)
importFrom(httr,add_headers)
importFrom(httr,content)
importFrom(jskm,jskm)
importFrom(jskm,svyjskm)
importFrom(jsonlite,fromJSON)
importFrom(jsonlite,toJSON)
importFrom(jstable,CreateTableOneJS)
importFrom(jstable,TableSubgroupMultiCox)
importFrom(jstable,TableSubgroupMultiGLM)
Expand All @@ -134,7 +146,9 @@ importFrom(methods,is)
importFrom(officer,add_slide)
importFrom(officer,ph_location)
importFrom(officer,ph_with)
importFrom(officer,read_docx)
importFrom(officer,read_pptx)
importFrom(openxlsx,write.xlsx)
importFrom(pROC,ci.auc)
importFrom(pROC,coords)
importFrom(pROC,ggroc)
Expand All @@ -146,12 +160,17 @@ importFrom(readr,guess_encoding)
importFrom(readxl,read_excel)
importFrom(riskRegression,Score)
importFrom(rstudioapi,getActiveDocumentContext)
importFrom(rstudioapi,isAvailable)
importFrom(rstudioapi,showPrompt)
importFrom(rvg,dml)
importFrom(scales,label_pvalue)
importFrom(see,theme_modern)
importFrom(shiny,need)
importFrom(shiny,validate)
importFrom(shinyWidgets,actionBttn)
importFrom(shinyWidgets,dropdownButton)
importFrom(shinyWidgets,noUiSliderInput)
importFrom(shinyWidgets,pickerInput)
importFrom(shinyWidgets,tooltipOptions)
importFrom(shinycustomloader,withLoader)
importFrom(shinyjs,click)
Expand Down
14 changes: 14 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# jsmodule 2.0.0
## New Features
- Introduced the `jsmodule AI Assistant`, which connects to Anthropic, OpenAI, and Google LLMs so you can generate analyses, scripts, and export-ready visuals without leaving the app.
- The assistant automatically leverages context captured in `Data Manager`, enabling follow-up questions that reference earlier tables or plots.
- Prompts never include row-level data, and the execution sandbox blocks dangerous calls, preventing direct data exposure and prompt-injection attacks.

## Update
- Unified AI configuration panel with provider picker, API-key validation, and automatic model discovery for each provider.
- Model-aware code generation with integrated editing, execution, and copy-to-clipboard shortcuts plus toast confirmations.
- Conversation history with live rendering of user/assistant messages, downloadable transcripts, and per-session token/cost tracking.
- Result viewers for tables, plots, and flextables, including export options to PPTX, Word, Excel, and TXT.
- Contextual helper actions (error-to-prompt conversion, code summary, save chat) to streamline iterative AI-assisted analysis.


# jsmodule 1.6.15
## Refactor
- Introduced `DataManager` R6 class to streamline data loading and preprocessing across Shiny modules, reducing code duplication.
Expand Down
Loading
Loading