NEWS


survey160r 0.78.1

History columns on disposition_screen()

Recency columns on disposition_steps()

Documentation and developer experience

Twenty rounds over the README, the articles and the function help, written for a Survey Manager who scripts against the exports. No behaviour changed.

Performance

Outputs are identical to the previous version (checked on synthetic campaigns and on the production projection, ~165M rows); only the work behind them changed.

Disposition history segments

Disposition sequences

Two new readers follow each number's campaigns in time order -- "did not answer, later engaged, then completed" -- which the per-phone counts of disposition_summary() / disposition_screen() cannot express.

Errors and messages

Twenty review rounds over every error, warning and message the package emits, so a failure says which function failed, what it received, and what to do next. Message wording changed throughout; code that matched error text should dispatch on the new condition classes instead.

Bug fixes

Documentation

Bug fixes

Tests: real-shape raw exports

Performance: the disposition readers on a 16 GB laptop

The Parquet-path readers now push their work into the DuckDB scan (when duckdb is installed), so only the result reaches R. Outputs are identical to the previous version (checked on the production projection, ~141M rows):

Performance

latency_report() / latency_run(), disposition_run(), the disposition readers and utils_fix_double_utf8() were profiled end to end on a 16 GB laptop budget and tuned in thirty output-identical rounds (every change is gated on byte-identical results). On a 200k-respondent, 12-question export latency_run() goes from ~46 s to ~3 s (peak heap 2.1 GB to 0.8 GB) and disposition_run() from ~6 s to ~0.35 s; a 1M-respondent compact run from ~140 s / 6.5 GB RSS to ~13 s / 3.6 GB:

New features

Internal

Bug fixes

Breaking changes

New features

Performance

Reader

Disposition

Documentation

Features

Changes

Bug fixes

New features

Bug fixes

Breaking changes

New features

Deprecations

Features

Improvements

Breaking changes

New features

Bug fixes

Documentation

Internal

survey160r 0.20.0

Breaking changes

survey160r 0.19.0

New features

Behavior changes

survey160r 0.18.0

New features

survey160r 0.17.0

New features

survey160r 0.16.1

Bug fixes

survey160r 0.16.0

New features

survey160r 0.15.1

New features

survey160r 0.15.0

New features

survey160r 0.14.1

Bug fixes

survey160r 0.14.0

New features

survey160r 0.13.0

Breaking changes

survey160r 0.12.0

New features

survey160r 0.11.0

Breaking changes

survey160r 0.10.1

Internal

survey160r 0.10.0

New features

survey160r 0.9.0

Breaking changes

survey160r 0.8.0

Breaking changes

New features

Bug fixes

Documentation

survey160r 0.7.1

Bug fixes

survey160r 0.7.0

New features

Documentation

survey160r 0.6.0

New features

survey160r 0.5.0

New features

CI / infrastructure

survey160r 0.4.0

New features

survey160r 0.3.0

New features

survey160r 0.2.0

New features

CI / infrastructure

survey160r 0.1.0

Initial release. Converts the previous loose script collection into a proper R package with a DESCRIPTION, NAMESPACE, exported help pages, and a testthat suite that runs offline via mocks. Public surface area:

Internal: validate_campaign_id() is a shared input guard reused by the GCS readers; not exported.

Published to R-universe at https://survey160.r-universe.dev (#1).