Skip to content

Releases: ddotta/quartify

v1.1.1

15 Jan 08:56

Choose a tag to compare

quartify 1.1.1

New Features

  • Roxygen2 Documentation Rendering:
    • Roxygen2 documentation blocks (#') are now automatically formatted into structured callouts resembling pkgdown reference pages
    • Rendered documentation includes: title, source line reference, description, usage with function signature, arguments, return value, details, and examples
    • LaTeX-style formatting is automatically converted to Markdown:
      • \href{url}{text} becomes [text](url)
      • \code{text} becomes `text`
      • \strong{text} becomes **text**
      • \emph{text} becomes *text*
    • Multi-line parameter descriptions and details are properly formatted
    • Custom sections (via @section) are supported and displayed

Bug Fixes

  • CRAN Compliance:
    • Added Words: qmd to DESCRIPTION to prevent spell-check warning
    • Added pattern ^CRAN_CHECKLIST_.*\.md$ to .Rbuildignore to exclude CRAN checklist files
  • Metadata Processing: Fixed issue where empty lines and comments between metadata fields were not properly ignored, creating unwanted empty code chunks
  • Section Header Detection: Improved regex pattern for hidden comments to correctly exclude RStudio section headers (##, ###, ####) from being filtered out

Documentation

  • Removed duplicate sections (Mermaid diagrams, Callouts) from advanced-features vignettes - these topics are now only in getting-started vignettes with correct syntax
  • Added comprehensive documentation for roxygen2 rendering feature

Full Changelog: v1.1.0...v1.1.1

v1.1.0

07 Jan 16:06

Choose a tag to compare

quartify 1.1.0

New Features

  • Hidden Comments:
    • Comments starting with # immediately followed by a non-space character (e.g., #NOTE:, #TODO:, #DEBUG) are now completely ignored during conversion
    • Allows including private development notes, debugging markers, and internal annotations in R scripts that won't appear in rendered documentation
    • Useful for #TODO:, #FIXME:, #NOTE:, #DEBUG, #INTERNAL:, #PRIVATE:, #HACK:, #OPTIMIZE: markers
    • Only comments with a space after # (e.g., # This is a comment) are converted to text in the output

Improvements

  • RStudio Snippets Installation:

    • install_quartify_snippets() now uses correct paths for all platforms:
      • Windows: %APPDATA%/RStudio/snippets
      • Mac/Linux: ~/.config/rstudio/snippets
    • Automatically removes and replaces old quartify snippets when re-running the function
    • Opens snippets file automatically in RStudio after installation
    • Snippets can be reloaded immediately by saving the file (Ctrl+S / Cmd+S) without restarting RStudio
    • Improved cross-platform compatibility for RStudio Desktop, Pro, and Server
  • Mermaid Diagram Syntax:

    • Mermaid diagram content in R scripts now uses commented lines (with # prefix) to maintain valid R syntax
    • Example: # flowchart TD, # A[Start] --> B[End]
    • The # prefix is automatically removed during conversion to Quarto
    • Ensures R scripts remain valid and executable while containing Mermaid diagrams
    • Updated mermaid snippet to generate commented diagram lines

Bug Fixes

  • Code Quality: All non-ASCII characters removed from code to pass CRAN checks
    • Comments and messages in R/snippets.R converted to English

Documentation

  • Added comprehensive documentation for hidden comments feature in:
    • Function documentation (?rtoqmd)
    • Getting Started vignettes (EN and FR)
    • README files (EN and FR)
  • Updated all Mermaid diagram examples to show commented syntax
  • Clarified snippet installation process and immediate reload capability

Full Changelog: v1.0.0...v1.1.0

v1.0.0

15 Dec 21:01

Choose a tag to compare

quartify 1.0.0

CRAN Release

This is the first CRAN release of quartify! The package is now fully compliant with CRAN policies.

CRAN Compliance Fixes

  • Interactive Examples:

    • Replaced \dontrun{} with if(interactive()){} in Shiny function examples
    • quartify_app() and quartify_app_web() examples now properly indicate interactive-only usage
    • Users can see examples are meant for interactive sessions, not scripts
  • Working Directory Management:

    • Added immediate on.exit(setwd(old_wd), add = TRUE) after all setwd() calls
    • Ensures working directory is always restored, even if function errors
    • Fixed in rtoqmd.R, rtoqmd_dir.R, and quartify_app_web.R
    • Removed manual setwd() restoration in error handlers (now handled by on.exit())
  • Console Output:

    • Replaced cat() with message() in rtoqmd_dir.R per CRAN guidelines
    • Messages can now be suppressed with suppressMessages() if needed
    • More R-like behavior for console output
  • File Writing:

    • install_quartify_snippets() no longer writes to home directory by default in examples
    • Added path parameter to allow custom snippet file location
    • Examples now write to tempdir() for testing
    • Interactive examples properly wrapped in if(interactive())
  • Path Handling:

    • Fixed tilde (~) path expansion issue in rtoqmd()
    • Added path.expand() for input_file, output_file, and output_html_file
    • Quarto now receives absolute paths instead of tilde shortcuts
    • Resolves "No valid input files" error when using paths like "~/file.qmd"

Documentation Improvements

  • apply_styler Parameter:

    • Added comprehensive documentation in vignettes (EN and FR)
    • Clarified that use_styler must be TRUE for apply_styler to work
    • Added comparison table showing parameter combinations and results
    • Included workflow example showing safe preview before applying changes
    • Listed practical use cases for permanent code formatting
  • Mode Selection:

    • Fixed missing mode selector in quartify_app()
    • Now matches rtoqmd_addin() with dynamic mode selection (single/directory)
    • Mode selector properly updates with language changes
  • Directory Selection UI:

    • Fixed directory button display issue (no more "span..." in label)
    • Directory browser now opens correctly when selecting folders
    • Dynamic button rendering with proper language support

Package Readiness

  • Version 1.0.0: Stable release ready for CRAN submission
  • Zero R CMD check issues: 0 errors, 0 warnings, 0 notes
  • Full CRAN policy compliance: All guidelines followed
  • Comprehensive documentation: Examples, vignettes, and help files complete
  • Tested across platforms: Works on Windows, macOS, and Linux

Full Changelog: v0.0.9...v1.0.0

v0.0.9

09 Dec 15:08

Choose a tag to compare

quartify 0.0.9

New Features

  • Roxygen2 Documentation Support:
    • Documentation blocks using roxygen2 syntax (#') are now converted to callout-note blocks
    • Function name automatically extracted and added to callout title (e.g., "Documentation - add_numbers")
    • All roxygen2 tags (@param, @return, @examples, etc.) preserved in callout content
    • Example file available: inst/examples/example_roxygen.R
    • Works with rtoqmd(), rtoqmd_dir() and all Shiny applications (rtoqmd_addin(), quartify_app(), quartify_app_web())
    • Updated test suite to verify roxygen2 conversion behavior

Full Changelog: v0.0.8...v0.0.9

v0.0.8

09 Dec 12:29

Choose a tag to compare

quartify 0.0.8

CRAN Submission Fixes

  • Documentation Compliance:

    • Added 'Quarto' in single quotes in DESCRIPTION per CRAN policy
    • Added @return documentation for all exported functions (rtoqmd_addin, quartify_app, quartify_app_web)
    • Changed \dontrun{} to \donttest{} for executable examples in rtoqmd() and rtoqmd_dir()
    • Updated all examples to write to tempdir() instead of current directory
  • Code Quality:

    • Replaced cat() calls with message() for user-facing messages per CRAN guidelines
    • Fixed partial argument matching: changed all render arguments to render_html in Shiny apps
    • Fixed ERROR in R CMD check: changed non-executable example in rtoqmd_dir() back to \dontrun{}
  • User Interface Improvements:

    • Integrated shinyalert package for better user notifications
    • Replaced showNotification() with elegant modal dialogs using shinyalert()
    • Success and error messages now displayed in centered modal windows
    • Bilingual support: titles and messages adapt to selected language (EN/FR)
    • Added shinyalert to package dependencies

New Features

  • Code Quality Integration: New use_styler and use_lintr parameters for code quality checks:

    • use_styler: Automatically format code using styler and show differences in tabsets
    • use_lintr: Run lintr quality checks and display issues in tabsets
    • Available in both rtoqmd() and rtoqmd_dir() functions
    • Tabsets show Original Code, Styled Code (if changes), and Lint Issues (if found)
    • Only creates tabsets when there are actual issues or changes to report
    • Example file: inst/examples/example_code_quality.R
  • RStudio Snippets Installation: New install_quartify_snippets() function to automatically install useful snippets:

    • header: R script header template with Title, Author, Date, Description
    • callout: Quarto callout structure
    • mermaid: Mermaid diagram chunk with options
    • tabset: Tabset structure with tabs

Bug Fixes

  • Fixed rtoqmd_addin() error when no document is active or unsaved (handled NULL/empty path cases)

Documentation

  • Updated vignettes to reference install_quartify_snippets() function
  • Simplified tabset examples (removed "Data Structure" and "First Rows" tabs)
  • Added snippet tips for callouts, mermaid diagrams, and tabsets in both English and French vignettes

Full Changelog: v0.0.7...v0.0.8

v0.0.7

06 Dec 00:00

Choose a tag to compare

quartify 0.0.7

New Features

  • Quarto Book Creation:

    • create_book parameter now defaults to TRUE in rtoqmd_dir()
    • Automatically creates Quarto book structure with navigation and index
    • Books created in French now display "Sommaire" instead of "Table of contents"
    • Default output directory changed from _documentation to _book
  • Enhanced Shiny Applications (rtoqmd_addin(), quartify_app(), quartify_app_web()):

    • Code Organization: Split monolithic addins.R (2185 lines) into 3 separate files for better maintainability
    • Harmonized UI:
      • GENERATE button moved to top of page (below title bar) with centered hex logo
      • Consistent button placement across all 3 applications
      • Blue title bar styling (#0073e6) with white text
      • Removed Unicode symbols (checkmarks, arrows) for ASCII compliance
    • Output Directory Selection: Added selector for custom output directory in directory mode
    • Create Book Checkbox: New checkbox to enable/disable book creation in directory mode
    • Multiple File Selection: Changed from single to multiple file selection in file mode
    • Conditional UI Elements:
      • "Open .qmd file" checkbox only visible in file mode
      • "Open HTML file" checkbox only visible in file mode
      • Document title field hidden in directory mode (no title needed for books)
    • Mode Labels: Updated from "Un fichier" to "Un ou plusieurs fichiers" (FR) and "Single file" to "One or more files" (EN)
    • Synchronized Loader: Loader now waits for Quarto rendering to complete before disappearing (checks for index.html creation)
  • Web Application Improvements (quartify_app_web()):

    • Document title field hidden in batch mode
    • Empty title automatically used in batch mode to avoid "My Analysis" in book chapters
    • Removed directory selection option (file upload only for web deployment)
    • Fixed ZIP download to include all generated files with proper structure:
      • qmd/ folder contains all .qmd files and _quarto.yml
      • html/ folder contains all HTML files with complete directory structure
      • Includes all resources (CSS, JS, fonts, images) for standalone book viewing
    • Force synchronous rendering (as_job = FALSE) to ensure all files are generated before download
  • Improved File Management:

    • Automatic cleanup of existing book files before regeneration
    • Temporary backup of _quarto.yml when rendering individual files
    • Prevents Quarto from detecting book structure during individual file renders
  • Enhanced User Experience:

    • Changed loader background from opaque white to semi-transparent dark overlay
    • Better visual feedback during conversion process with synchronized loader
    • Success notifications with [OK] indicators
    • Empty document title in directory/batch mode prevents placeholder text in generated books
    • All text without accented characters for better compatibility

Bug Fixes

  • Fixed "Book chapter 'index.qmd' not found" error during directory conversion
  • Fixed index.html generation issues in Quarto books
  • Resolved conflicts between individual file rendering and book structure
  • Corrected file path detection for HTML output in book projects
  • Fixed premature loader dismissal when Quarto renders in background
  • Fixed index.html missing from ZIP downloads in quartify_app_web():
    • Quarto book rendering now waits for completion before file collection
    • All HTML files including index.html are now properly included in downloads
    • ZIP structure preserves complete directory hierarchy for functional offline viewing
  • Resolved non-ASCII character warnings in R CMD check

Code Quality

  • Removed all non-ASCII characters from source code for CRAN compliance
  • Improved code organization with modular file structure
  • Better maintainability with separated Shiny application files

CI/CD

  • Docker image build now triggered manually via workflow_dispatch instead of automatic on push
  • Automatic push to DockerHub on main branch pushes
  • Reduced unnecessary Docker builds during development

Full Changelog: v0.0.6...v0.0.7

v0.0.6

05 Dec 10:52

Choose a tag to compare

quartify 0.0.6

New Features

  • Web Deployment Version (quartify_app_web()):

    • New web-friendly version designed for deployment on web servers
    • Uses file upload/download instead of local file system access
    • Deployed on SSP Cloud at https://quartify.lab.sspcloud.fr/
    • No R installation required - use directly in your browser
    • Upload your R script, configure options, and download generated .qmd and .html files
    • Perfect for sharing quartify with non-R users
  • Docker Support:

    • Added Dockerfile for containerized deployment
    • Based on rocker/r-ver:4.4.1 with Quarto 1.4.549
    • Automated CI/CD with GitHub Actions
    • Docker images published to Docker Hub: ddottaagr/quartify
    • Includes Helm chart for Kubernetes deployment
  • UI Improvements:

    • Changed "GO" button to "GENERATE" across all interfaces for clarity
    • Added bilingual support (EN/FR) for web version
    • Improved button styling and layout consistency

Bug Fixes

  • Fixed Quarto path issues in Docker environment
  • Fixed image resource loading (hex logo and language flags) in web version
  • Fixed relative path handling for quarto_render() to avoid output path errors

Full Changelog: v0.0.5...v0.0.6

v0.0.5

05 Dec 10:52

Choose a tag to compare

quartify 0.0.5

New Features

  • Source Line Numbers:

    • Added show_source_lines parameter to rtoqmd() to display original line numbers from source R script
    • When enabled, adds a comment at the beginning of each code chunk indicating the line range
    • Format: # Lines X-Y (English) or # Lignes X-Y (French)
    • Helps maintain traceability between documentation and source code
    • Added checkbox in RStudio add-in interface with EN/FR translations
    • Example output:
      # Lines 19-20
      iris |> 
        count(Species)
    • Completely automatic - no modification of R scripts required
    • Default is TRUE - enabled by default for better traceability
  • Standalone Shiny App (quartify_app()):

    • New exported function quartify_app() for launching the conversion interface in any R environment
    • Works in Positron, VS Code, RStudio, terminal, or any IDE that supports R
    • Opens in default web browser with full-featured interface
    • Same functionality as RStudio add-in but IDE-agnostic
    • Perfect for users who don't use RStudio but want the graphical interface
    • Usage: library(quartify); quartify_app()
    • Optional parameters:
      • launch.browser = TRUE (default) to open in browser
      • port = NULL (default) for automatic port selection

v0.0.4

03 Dec 16:24

Choose a tag to compare

quartify 0.0.4

New Features

  • Custom HTML Output Path:

    • Added output_html_file parameter to rtoqmd() to specify custom HTML output location
    • Added output_html_dir parameter to rtoqmd_dir() to specify directory for batch HTML outputs
    • Added HTML file selector in RStudio add-in interface (optional field)
    • HTML files can now be saved in different location than .qmd files
    • Useful for organizing outputs in separate directories (e.g., docs/, html_output/)
  • Mermaid Diagram Support:

    • Added support for Mermaid diagrams to create flowcharts, sequence diagrams, and other visualizations
    • Use #| mermaid comment to start a Mermaid chunk in R scripts
    • Chunk options (lines starting with #|) are automatically converted to Quarto format (%%|)
    • Diagram content follows without # prefix and ends at empty line or comment
    • Example syntax:
      #| mermaid
      #| eval: true
      flowchart TD
          A[Start] --> B[Process]
          B --> C[End]
    • Converted to proper Quarto Mermaid chunks in .qmd output

Bug Fixes

  • Fixed issue where Quarto render command needed to run from .qmd file directory
  • Improved path handling for custom HTML output locations with relative paths
  • Added proper working directory management during Quarto rendering

Full Changelog: v0.0.3...v0.0.4

v0.0.3

02 Dec 10:32

Choose a tag to compare

quartify 0.0.3

CRAN Preparation

  • Added VignetteBuilder: knitr to DESCRIPTION
  • Added knitr and rmarkdown to Suggests for vignette building
  • Quoted 'RStudio' in DESCRIPTION to address CRAN check notes
  • Converted non-ASCII characters in R/addins.R to Unicode escapes (\uxxxx) for portability
  • Enhanced vignettes with red-highlighted critical rules sections for better visibility
  • Fixed R version consistency in CI/CD examples (updated to 4.5.1)