blockr.core 0.1.3
- Block-server construction is now ordered by visibility – on-screen
blocks and their upstream closure build first, the rest in the
background (option
background_construction_delay, default
50 ms; 0 opts out).
- Blocks now carry an eval status (
dormant,
waiting, unset, failed,
ready) that gates evaluation, rendering and downstream
data, so a block never evaluates against missing inputs or shows a stale
result.
- Code export (
generate_code()) now waits until every
block is settled, showing a “board not ready” note instead of a partial
script.
- Block conditions (errors, warnings, messages) are exposed as tidy
data frames via
server$conditions and
board$conditions(); the block server no longer returns its
raw cond object.
- The
notify() helper gains glue and
log arguments for literal (brace-safe) text and skipping
redundant logging.
- The
allow_empty_state argument of
new_block() now accepts a structured
list(input = ..., data = ...) form to relax required inputs
and the variadic minimum per input kind.
- Boards for incoming requests are now resolved by an app-level
loader argument to serve() (default
local_loader()); this drops the process-global staging
slot, so get_serve_obj() and restore_board()’s
meta argument are gone.
- Block- and registry-contributed board options (e.g. the table
preview
page_size, n_rows,
filter_rows) are now saved and restored, not reset to
defaults on reload.
- Boards can be deployed read-only via the server-enforced
blockr.locked option, which refuses every mutation while
set.
- Block registration metadata can now be declared with roxygen2 tags
(
@block, @blockArg, …), collected by the new
block_registration_roclet(); extension packages register
via the exported register_package_blocks().
- Block registry entries gain a structured argument spec
(
new_block_args(), new_block_arg()) with
JSON-Schema-subset type descriptors
(arg_string(), arg_enum(), …), read via
block_metadata(); registry_metadata() is
deprecated.
- The manage-links and manage-stacks plugins no longer flicker cell
inputs, clobber staged edits, or needlessly re-render on a board
re-emit.
- Board accessors (
board_blocks(),
board_links(), board_stacks()) are now pure
reads, removing quadratic re-validation that dominated large-board
startup.
- New exported generic
external_ctrl_vars() and predicate
has_external_ctrl() expose a component’s externally
controllable variables.
- New exported
trim_rv() fully removes entries from a
reactiveValues object (assigning NULL leaves
the key behind); unlinking a variadic argument now drops it
outright.
- The
str_value() compact printer, with matching
utils::str() methods, now covers all remaining domain
classes and containers.
- The
blockr_deser.list() method now forwards
... to per-class deserializers, letting callers thread
context to nested deserializers.
blockr.core 0.1.2
- The
mod slots in update(...) payloads for
blocks, links and stacks now uniformly expect a
delta shape: a named list keyed by entry ID, where each
entry is a named list of argument values to apply on top of the live
entry.
- For
blocks, keys must be in
block_external_ctrl_vars(blk) — non-ctrl-able changes go
through rm + add. Ctrl-arg writes hit the
corresponding reactiveVal in place; block_name
(always treated as ctrl-able) updates the block’s registry
attribute.
- For
links and stacks, deltas are merged
onto the current entry via the new update_link() /
update_stack() S3 generics. The default methods reconstruct
the entry through its stored constructor, preserving sub-class
attributes. Sub-class owners (e.g. dock_stack adding
color) only need to register a method when their
constructor deviates from the convention (#175).
block_external_ctrl_vars() always includes
"block_name" — every block can be renamed through
update(...) regardless of its external_ctrl
opt-in. The default ctrl plugin panel renders a block_name
field on every block card alongside any opted-in ctrl vars.
block_supports_external_ctrl() (which would now be
TRUE for every block) has been removed; the gates that used
to call it have been simplified accordingly.
- The default
block_server.block now constructs a
block_name reactiveVal per block and appends
it to the vars list passed to the ctrl plugin. Two guarded
observers keep that reactiveVal in sync with the block’s
block_name attribute on the board (one emits an
update(mod = ...) when the ctrl plugin writes the rv; the
other pulls registry-attr changes back into the rv). The
ctrl_block_server plugin signature is unchanged — block
authors and custom ctrl plugins see uniform vars
reactiveVals.
- A blockr option
attach_default_packages can be set to
opt into evaluating block expressions with objects from default packages
directly available.
- Add
ctrl_block() plugin for external block control,
allowing blocks to be driven programmatically from outside the standard
block UI.
- Add
clear_board() for removing all blocks/stacks from a
board.
- Add
bbquote() and helpers (.,
..) for cleaner code generation via
bquote()-based quasiquotation.
- Export
custom_plugins() and
custom_options() for easier board customization.
- Add
block_metadata() for retrieving per-block metadata
and attach block metadata with defaults to block objects.
- Export test utilities (
blockr_test_exports(),
new_mock_session(), export_safely()) for use
in downstream package tests.
blockr.core 0.1.1
- Add Block-level notifications via (optional)
expr
server return value component cond.
- Export
get_board_option_value() to make available
current option settings via session$UserData.
- Introduce (optional) dependency on thematic to auto-style
plots.
- Export
toolbar_ui() which takes case of the “core”
toolbar UI component.
- Utility functions
chr_ply() and related, as well as
miscellaneous utilities such as set_names(),
coal(), etc. are now exported for use in dependent
packages.
- Export
export_code() to make it easier for third-party
generate_code() plugin implementations.
- Use
evaluate::evaluate() to capture plots.
- Add
new_fixed_block() for applying a fixed
(i.e. non-paramtetrized) transformation to data input.
- Board server callbacks are invoked with an additional argument
session.
- Export assertion utilities such as
is_string(),
is_count(), etc.
- Improved ser/des, which now includes package/constructor information
for all board, blocks, stacks and options. The corresponding infra
- Board options now contain UI/server components to provide more
options for customization. Also blocks can require certain options to be
available.
- Introduces
block_render_trigger() to control per block
class when to re-render the block output.
- Rework of block notifications to provide a
reactiveValues() object containing notification types a
separate components.
- Auto-ID generation can now be customized with a default provided by
the ids package (if available).
- Use the glue package for logging/block notifications; add a
glue-based text block.
- New board restore mechanism based on
session$reload().
- Improvements to the registry: block icons and a fixed set of
categories.
blockr.core 0.1.0