Skip to contents

Prints the package NEWS to the R console. Useful for quickly checking what changed between versions without leaving your R session.

Usage

glasstabs_news()

Value

Called for its side effect; returns NULL invisibly.

Examples

glasstabs_news()
#>                         Changes in version 0.3.1                        
#> 
#> New features
#> 
#>   - Added glassTabCondition(id, value) — generates the correct
#>     JavaScript condition string for [shiny::conditionalPanel()] without
#>     needing to remember the input[["id-active_tab"]] key pattern.
#>   - Added glasstabs_news() — prints the package changelog to the R
#>     console.
#>   - Added ROADMAP.md tracking planned features and known limitations
#>     (not shipped in the package).
#> 
#> Improvements
#> 
#>   - Error messages across all functions are now actionable: they name
#>     the bad argument class, show what was received, and suggest the
#>     correct fix.
#>   - glass_tab_theme() and glass_select_theme() now have full @examples
#>     with interactive app snippets.
#>   - .gt-container no longer forces max-width:960px or margin:48px auto —
#>     the widget now behaves like a normal block element inside Shiny
#>     layouts.
#>   - Light-mode halo box-shadow replaced with a soft blue-tinted shadow
#>     via the --gt-halo-shadow CSS variable, replacing the harsh dark drop
#>     shadow.
#> 
#>                         Changes in version 0.3.0                        
#> 
#> New features
#> 
#> Tab widget
#> 
#>   - Added runGlassExample() to launch any of the built-in example apps
#>     directly from the R console (runGlassExample("smoke-test"), etc.).
#>   - Added icon argument to glassTabPanel() — accepts any
#>     htmltools-compatible tag (e.g. shiny::icon("table")). Renders with
#>     gt-tab-icon / gt-tab-label spans so icon and text can be styled
#>     independently.
#>   - Added disableGlassTab() and enableGlassTab() — gray out a tab
#>     without hiding it. Completes the visibility/disabled/removal trio
#>     alongside showGlassTab() / hideGlassTab().
#>   - Added updateGlassTabBadge() — set a numeric count badge on any tab
#>     button. Pass count = 0 or count = NA to hide the badge. Values
#>     above 99 display as "99+".
#>   - glassTabsServer() now integrates with Shiny's URL bookmarking: the
#>     active tab is automatically saved and restored when
#>     enableBookmarking = "url" is set on the app. Opt out per widget with
#>     bookmark = FALSE.
#>   - Added glassTabsOutput() / renderGlassTabs() for server-driven tab
#>     rendering. The JavaScript engine re-initialises automatically after
#>     each render via a scoped shiny:value listener, so no manual
#>     glasstabs_reinit calls are needed.
#> 
#> Improvements
#> 
#>   - glassTabsUI() now errors early on duplicate glassTabPanel() values,
#>     reporting the offending value(s) by name.
#>   - glassTabsUI() gains a compact = FALSE argument. Setting compact =
#>     TRUE applies the .gt-compact CSS modifier which reduces margins,
#>     tab-link padding, font size, and content area padding — ideal for
#>     embedding inside bs4Dash cards or any tight dashboard layout.
#>   - glassTabsServer() emits a warning() when the id argument contains
#>     "-", which is the most common sign that ns("tabs") was passed
#>     instead of the bare "tabs" id. The warning includes corrective
#>     guidance.
#>   - CSS: added .gt-tab-disabled, .gt-tab-icon, .gt-tab-label, and
#>     .gt-tab-badge rules. Badges adapt their background to the active
#>     halo colour via the existing CSS custom property.
#>   - CSS: all color values are now consumed via var(--gt-xxx, fallback)
#>     instead of being hardcoded — this was the root cause of light theme
#>     appearing invisible. Light theme defaults were also strengthened for
#>     better contrast.
#>   - CSS: dropdown active-state z-index raised to 9000/9001 so glasstabs
#>     dropdowns render above bs4Dash card stacking contexts.
#>   - shiny:value listener limits bootAll re-initialisation to outputs
#>     that actually contain glasstabs elements, so ordinary Shiny outputs
#>     are unaffected.
#>   - Added inst/cheatsheet/glasstabs-cheatsheet.tex — a printable
#>     four-column LaTeX reference card covering the full API, module
#>     pattern, bs4Dash integration, theming, and common gotchas.
#> 
#> Documentation
#> 
#>   - Cheatsheet vignette (vignettes/cheatsheet.Rmd) extended with new
#>     sections: "Tabs inside a Shiny module", "Dynamic tab values and
#>     selected", "Tabs inside bs4Dash", and updated common gotchas.
#>   - All new functions have full roxygen docs, @examples, and
#>     cross-links.
#> 
#>                         Changes in version 0.2.1                        
#> 
#> New features
#> 
#> Tab widget
#> 
#>   - Added updateGlassTabsUI() for programmatic tab switching from the
#>     server.
#>   - Added showGlassTab() and hideGlassTab() for dynamically showing and
#>     hiding tabs at runtime.
#>   - Added appendGlassTab() and removeGlassTab() for adding and removing
#>     tabs at runtime.
#> 
#> Improvements
#> 
#>   - glassTabsUI() now validates selected against the available
#>     glassTabPanel() values and errors early on invalid tab ids.
#>   - The tab widget now reports its initial active tab to Shiny
#>     immediately after session startup, so glassTabsServer() is populated
#>     on first render.
#>   - Added ARIA roles and selected-state attributes to tab navigation
#>     markup.
#>   - Improved tab re-initialization and transition handling for dynamic
#>     tab changes, including show/hide, append/remove, and rapid
#>     successive updates.
#>   - Improved halo and transfer-trace positioning after runtime tab
#>     layout changes.
#> 
#> Bug fixes
#> 
#>   - Opening a dropdown now closes any other open glasstabs dropdown,
#>     fixing a visual stacking issue where multiple dropdowns appeared
#>     simultaneously.
#> 
#>   - Improved widget lifecycle in dynamic UI (renderUI(),
#>     conditionalPanel()). Widgets initialize more reliably and clean up
#>     properly when removed.
#> 
#>   - Widgets now emit their initial value to Shiny immediately after
#>     rendering, fixing timing issues with conditionalPanel() and dynamic
#>     UI.
#> 
#> Internal improvements
#> 
#>   - JavaScript engine refactored to use internal state instead of DOM
#>     scanning. No changes to the R API — all existing code works without
#>     modification.
#> 
#>   - Added scroll containers for long option lists, debounced search, and
#>     .gt-loading / .gt-disabled CSS utility classes.
#> 
#> Documentation
#> 
#>   - Added a dedicated cheatsheet vignette for common widget patterns and
#>     server-side helpers.
#>   - Added a smoke-test example app covering programmatic tab switching,
#>     dynamic tab visibility, runtime tab insertion/removal, and rapid
#>     interaction paths.
#>   - Expanded README and pkgdown navigation to surface the new
#>     server-side tab controls and cheatsheet more clearly.
#> 
#>                         Changes in version 0.1.1                        
#> 
#> New features
#> 
#> Single-select widget
#> 
#>   - Added glassSelect(), an animated single-select dropdown for Shiny.
#>   - Added updateGlassSelect() for server-side updates to choices and
#>     selection.
#>   - Added glassSelectValue() as a convenience reactive helper for
#>     reading the selected value.
#> 
#> Multi-select widget
#> 
#>   - Added updateGlassMultiSelect() for server-side updates to choices,
#>     selection, and checkbox style.
#>   - Added glassMultiSelectValue() as a convenience reactive helper for
#>     reading selected values and active style.
#>   - Added optional label support to glassMultiSelect().
#>   - Added configurable all_label support to control the trigger text
#>     shown when all choices are selected.
#> 
#> Improvements
#> 
#>   - Aligned glassSelect() and glassMultiSelect() more closely with
#>     standard Shiny input behavior.
#>   - Added client-side input bindings so select widgets now support
#>     session$sendInputMessage() update patterns.
#>   - Preserved current glassMultiSelect() default behavior where selected
#>     = NULL initializes all choices as selected.
#>   - Improved choice normalization so named choices retain display labels
#>     correctly.
#>   - Improved hue normalization for the "filled" multi-select style.
#>   - Updated vignettes and examples to show direct Shiny input usage and
#>     server-side update patterns.
#> 
#> Documentation
#> 
#>   - Added a new vignette for glassSelect().
#>   - Updated the getting started vignette to include glassSelect().
#>   - Updated the multi-select vignette to document
#>     updateGlassMultiSelect() and glassMultiSelectValue().
#> 
#> Internal changes
#> 
#>   - Added tests for glassSelect(), updateGlassSelect(), and
#>     glassSelectValue().
#>   - Expanded tests for glassMultiSelect() server-side updates and helper
#>     utilities.
#> 
#>                         Changes in version 0.1.0                        
#> 
#> Initial release.
#> 
#> New features
#> 
#> Tab widget
#> 
#>   - glassTabsUI() — animated glassmorphism-style tab navigation with a
#>     sliding glass halo and transfer trace between tabs.
#>   - glassTabPanel() — defines a single tab button and its content pane.
#>   - glassTabsServer() — reactive helper that tracks the active tab
#>     value.
#>   - glass_tab_theme() — custom color theme for glassTabsUI() with eight
#>     independent handles: tab_text, tab_active_text, halo_bg,
#>     halo_border, content_bg, content_border, card_bg, card_text.
#>   - Built-in "dark" (default) and "light" presets for glassTabsUI().
#>   - Keyboard navigation using the Left and Right arrow keys.
#>   - Full bs4Dash compatibility via wrap = FALSE.
#> 
#> Multi-select filter widget
#> 
#>   - glassMultiSelect() — dropdown filter with live search, select-all
#>     with indeterminate state, and three checkbox indicator styles:
#>     "checkbox", "check-only", and "filled".
#>   - glassFilterTags() — tag-pill display area that stays in sync with a
#>     glassMultiSelect() automatically via JavaScript; clicking × on a
#>     pill deselects that option.
#>   - glass_select_theme() — custom color theme with four handles:
#>     bg_color, border_color, text_color, accent_color.
#>   - Built-in "dark" and "light" presets for glassMultiSelect().
#>   - show_style_switcher, show_select_all, show_clear_all flags to hide
#>     UI chrome (all default TRUE).
#>   - Per-option HSL hue angles for the "filled" style via the hues
#>     argument (auto-assigned if omitted).
#> 
#> General
#> 
#>   - useGlassTabs() — injects CSS and JavaScript via
#>     htmltools::htmlDependency, which is deduplicated automatically by
#>     Shiny.
#>   - All theming uses pre-computed CSS variables (no color-mix()),
#>     ensuring compatibility with Shiny's embedded browser.
#>   - Multiple instances of either widget on the same page work
#>     independently; each instance is scoped to its own id.