Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
966ca73
Add testthat infrastructure with 61 tests
danmaclean Jan 16, 2026
5078af1
Add CLAUDE.md development guide
danmaclean Jan 16, 2026
121c6e7
Modernize CI/CD with matrix testing and additional workflows
danmaclean Jan 16, 2026
9e52043
Add theme system and visual improvements with backward compatibility
danmaclean Jan 16, 2026
c121bc9
Add .claude and .idea to .Rbuildignore
danmaclean Jan 16, 2026
93d4b7b
Update README and vignette with built-in themes documentation
danmaclean Jan 16, 2026
2d7b213
Refactor plotting architecture with modern defaults and new visualiza…
danmaclean Jan 16, 2026
d2d8830
Update CLAUDE.md with new features development plan
danmaclean Jan 16, 2026
c4f1386
Add failing tests for new features (TDD)
danmaclean Jan 16, 2026
d54f3a8
Implement new features: forest plot, significance, effect size, table…
danmaclean Jan 16, 2026
e6cd354
Update README with new features documentation
danmaclean Jan 16, 2026
2bee0ca
Remove forest plot, fix viridis colors, simplify styling docs
danmaclean Jan 16, 2026
f67a0d6
Improve effect size example with messier 3-group data
danmaclean Jan 16, 2026
2a56691
Use group colors for density plots with faded CI tails
danmaclean Jan 16, 2026
d4d00e3
Rebuild README with new density plot style
danmaclean Jan 16, 2026
0fe8cbd
Fix README figure paths for GitHub display
danmaclean Mar 11, 2026
2a49d50
Add IDE and Claude files to .gitignore
danmaclean Mar 11, 2026
1be6d8f
Enhance CI with CRAN checks and codecov badge
danmaclean Mar 11, 2026
7a1de51
Add codecov badge to README
danmaclean Mar 11, 2026
19a7d6e
Fix lint workflow to unblock CI
danmaclean Mar 11, 2026
bae4023
Fix codecov workflow for repositories without token
danmaclean Mar 11, 2026
5af0b28
Clean up codecov workflow with proper token usage
danmaclean Mar 11, 2026
8c784eb
Fix README figure paths and add codecov badge to source
danmaclean Mar 11, 2026
ea2e53c
Update README.md with correct figure paths and codecov badge
danmaclean Mar 11, 2026
a0466b1
Rename README files to proper GitHub convention
danmaclean Mar 11, 2026
8947c0c
Document README generation workflow in CLAUDE.md
danmaclean Mar 11, 2026
1f28f61
Add communication style guidelines to CLAUDE.md
danmaclean Mar 11, 2026
a65a9af
Add comprehensive CI/CD workflows and pkgdown documentation
danmaclean Mar 17, 2026
2c2ad87
fix error
danmaclean Mar 17, 2026
f5d50af
fix concurrncy issues
danmaclean Mar 17, 2026
32eeefb
fix artifact build error
danmaclean Mar 17, 2026
05cf1ee
fix lib version error
danmaclean Mar 17, 2026
306ff14
prep for CRAN
danmaclean Mar 17, 2026
217bac6
tested workflow locally
danmaclean Mar 17, 2026
acc5d5c
remove devtools::document() step
danmaclean Mar 17, 2026
de46a80
add figures to pkgdown
danmaclean Mar 17, 2026
22f04cd
update pkgdown figure paths
danmaclean Mar 18, 2026
3467efe
add figures
danmaclean Mar 18, 2026
431e477
add site
danmaclean Mar 18, 2026
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
3 changes: 3 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@
^\.travis\.yml$
Readme*
.github/
^CLAUDE\.md$
^\.claude$
^\.idea$
28 changes: 28 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Summary

<!-- Brief description of what this PR does -->

## Changes

<!-- List the main changes in this PR -->

-

## Checklist

- [ ] `devtools::test()` passes locally
- [ ] `devtools::check()` passes with no ERRORs or WARNINGs
- [ ] Documentation updated (if applicable)
- [ ] Tests added/updated (if applicable)
- [ ] Backward compatible (no breaking changes to existing behavior)

## Type of Change

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update

## Additional Notes

<!-- Any additional context, screenshots, or information -->
44 changes: 35 additions & 9 deletions .github/workflows/R-CMD-check.yaml
Original file line number Diff line number Diff line change
@@ -1,40 +1,66 @@
# Workflow derived from https://github.com/r-lib/actions/tree/master/examples
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
push:
branches: [main, master]
branches: [main, master, develop]
pull_request:
branches: [main, master]
branches: [main, master, develop]

name: R-CMD-check

permissions: read-all

jobs:
R-CMD-check:
runs-on: ubuntu-latest
runs-on: ${{ matrix.config.os }}

name: ${{ matrix.config.os }} (${{ matrix.config.r }})

strategy:
fail-fast: false
matrix:
config:
- {os: ubuntu-latest, r: 'devel'}
- {os: ubuntu-latest, r: 'release'}
- {os: ubuntu-latest, r: 'oldrel-1'}
- {os: macos-latest, r: 'release'}
- {os: windows-latest, r: 'release'}

env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
R_KEEP_PKG_SOURCE: yes

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-pandoc@v2

- uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
http-user-agent: ${{ matrix.config.http-user-agent }}
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: rcmdcheck
extra-packages: any::rcmdcheck
needs: check

- uses: r-lib/actions/check-r-package@v2
with:
upload-snapshots: true
build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")'
args: 'c("--no-manual", "--as-cran")'

- name: Show testthat output
if: always()
run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true
run: |
find check -name 'testthat.Rout*' -exec cat '{}' \; || true
shell: bash

- name: Upload check results
if: failure()
uses: actions/upload-artifact@main
uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }}-r${{ matrix.config.r }}-results
name: ${{ matrix.config.os }}-r${{ matrix.config.r }}-results
path: check
59 changes: 59 additions & 0 deletions .github/workflows/code-quality.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Comprehensive code quality checks
# Includes linting, spell checking, and documentation validation
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]

name: code-quality

permissions: read-all

jobs:
quality-checks:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: actions/checkout@v5

- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- name: Install R packages
run: |
renv::install(c("lintr", "spelling", "devtools"))
shell: Rscript {0}

- name: Lint R Code
run: |
lints <- lintr::lint_package()
if (length(lints) > 0) {
print(lints)
cat("::warning::Found", length(lints), "lint issues\n")
} else {
cat("✅ No lint issues found\n")
}
shell: Rscript {0}

- name: Check Spelling
run: |
spelling_errors <- spelling::spell_check_package()
if (nrow(spelling_errors) > 0) {
print(spelling_errors)
cat("::warning::Found", nrow(spelling_errors), "potential spelling errors\n")
} else {
cat("✅ No spelling errors found\n")
}
shell: Rscript {0}

- name: Quality Summary
run: |
cat("## Code Quality Summary\n", file = "quality_summary.md")
cat("- ✅ Lint checks completed\n", file = "quality_summary.md", append = TRUE)
cat("- ✅ Spell checks completed\n", file = "quality_summary.md", append = TRUE)
cat(readLines("quality_summary.md"), sep = "\n")
shell: Rscript {0}
35 changes: 35 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]

name: lint

permissions: read-all

jobs:
lint:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::lintr, local::.
needs: lint

- name: Lint
run: lintr::lint_package()
shell: Rscript {0}
env:
LINTR_ERROR_ON_LINT: false
58 changes: 58 additions & 0 deletions .github/workflows/pkgdown.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]
release:
types: [published]
workflow_dispatch:

name: pkgdown

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pkgdown-${{ github.event_name != 'pull_request' && github.ref || github.run_id }}
cancel-in-progress: ${{ github.event_name != 'pull_request' }}

jobs:
pkgdown:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: read
pages: write
id-token: write
steps:
- uses: actions/checkout@v5

- uses: r-lib/actions/setup-pandoc@v2

- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::pkgdown, local::.
needs: website

- name: Build site
run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)
shell: Rscript {0}

- name: Upload to GitHub pages
if: github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v3
with:
path: "docs"

- name: Deploy to GitHub pages 🚀
if: github.event_name != 'pull_request'
uses: actions/deploy-pages@v4
63 changes: 63 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Workflow for CRAN release automation
# Triggered on GitHub releases to streamline CRAN submission process
on:
release:
types: [published]

name: CRAN-release

permissions: read-all

jobs:
release:
runs-on: ubuntu-latest

env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-pandoc@v2

- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::rcmdcheck, any::devtools
needs: check

- name: Full CRAN check
run: |
rcmdcheck::rcmdcheck(
args = c("--no-manual", "--as-cran", "--run-donttest"),
build_args = c("--no-manual", "--compact-vignettes=gs+qpdf"),
error_on = "warning",
check_dir = "check"
)
shell: Rscript {0}

- name: Build source package
run: R CMD build .

- name: Upload CRAN package
if: success()
uses: actions/upload-artifact@v4
with:
name: cran-package
path: "*.tar.gz"
retention-days: 30

- name: Generate release notes
run: |
echo "## CRAN Release Package Built Successfully" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "✅ Full R CMD check passed with --as-cran" >> $GITHUB_STEP_SUMMARY
echo "✅ Source package built: \`$(ls *.tar.gz)\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "📦 **Next Steps:**" >> $GITHUB_STEP_SUMMARY
echo "1. Download the source package from artifacts" >> $GITHUB_STEP_SUMMARY
echo "2. Submit to CRAN via web form or \`devtools::release()\`" >> $GITHUB_STEP_SUMMARY
echo "3. Monitor CRAN checks at https://cran.r-project.org/web/checks/" >> $GITHUB_STEP_SUMMARY
60 changes: 60 additions & 0 deletions .github/workflows/test-coverage.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]

name: test-coverage

permissions: read-all

jobs:
test-coverage:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::covr, any::xml2
needs: coverage

- name: Test coverage
run: |
cov <- covr::package_coverage(
quiet = FALSE,
clean = FALSE,
install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package")
)
covr::to_cobertura(cov)
shell: Rscript {0}

- uses: codecov/codecov-action@v4
with:
fail_ci_if_error: false
file: ./cobertura.xml
plugin: noop
disable_search: true
token: ${{ secrets.CODECOV_TOKEN }}

- name: Show testthat output
if: always()
run: |
find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true
shell: bash

- name: Upload test results
if: failure()
uses: actions/upload-artifact@v4
with:
name: coverage-test-failures
path: ${{ runner.temp }}/package
Loading
Loading