| Detail | Value |
|---|---|
| Requires at least | |
| Tested up to | |
| Requires PHP | |
| Requires Node.js (to build) | |
| License | |
| Stable tag | (see package.json) |
| Changelog | Releases |
| Optional integrations | Newspack Ads (in-feed advertising), OneSignal (follow/push notifications), WordPress AI plugin + a provider (AI key takeaways) |
Liveblog and rolling coverage of ongoing news events for Newspack.
Newsrooms need to move fast when news breaks. Rolling Coverage helps organizations publish near real-time updates for developing stories, sourcing entries from tools like Slack or from WordPress. Readers see critical updates as they happen, with no need to refresh, reload or pull down the page. Control stays with the editorial team: editors curate updates, pin vital information and turn major developments into standalone posts without pausing the live feed.
Rolling Coverage publishes a continuous feed of short, timestamped entries for each developing story. Entries are authored from a few well-known tools and delivered to readers in real time without a page reload. Rolling Coverage Blocks can be placed in multiple spots across a site — a post, a sidebar, a homepage marquee — with each placement configurable to show readers a tailored view of the same liveblog. Ending a liveblog locks its entries once an event concludes, and optional AI-generated summaries help readers stay oriented as the story grows.
For the technical reference (features, architecture, data model, REST API, and hooks) see .github/CONTRIBUTING.md.
- Build or download the plugin, place it in
wp-content/plugins/newspack-rolling-coverage, and activate it. - A Rolling Coverage menu appears in WP Admin.
- Create a liveblog, add or embed its block on a post, and optionally connect a Slack channel.
For local development:
composer install
npm ci
npm run buildnpm run build # Production webpack build (cleans dist first)
npm start # npm ci + watch
npm run watch # Watch mode
npm run lint # SCSS + JS + PHP + TypeScript
npm run lint:js # ESLint
npm run lint:php # PHPCS
npm run typecheck # tsc --noEmit
npm run fix:js # ESLint autofix
npm run fix:php # PHPCBF autofixNotes:
- PHP uses a Composer classmap over
./includes. After adding a new PHP file, runcomposer dump-autoload. - New feature classes must also be registered in
Initializer::includes(). - New webpack entry points must be declared in
webpack.config.js; block entries are auto-discovered fromblock.json. - Coding standards: WordPress + VIP (
phpcs.xml), extendingnewspack-scriptsESLint/Stylelint configs.
npm run test:php # ./vendor/bin/phpunitThe PHPUnit suite lives in tests/ and runs against the WordPress test library. Install it with:
bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1 latestThe suite covers ingestion, archiving, the entries REST/entries-view endpoints, restore/cleanup, the reader feed, Slack configuration/content/signature/webhook handling, push notifications, the taxonomy lifecycle, and theme FSE block integration. npm test runs tests/js/shared-poll-check.ts, which checks the view script's copy of the poll cursor rules against tests/fixtures/poll-cursor-cases.json; CI runs it too.
- Commits follow Conventional Commits (
feat,fix,chore,docs,test,refactor,perf,ci,build,style,revert). Usenpm run cmfor an interactive prompt. - Releases run via
semantic-releasethroughnewspack-scriptson thereleasebranch;alpha,hotfix/*, andepic/*produce prereleases.trunkis development only. - The version is bumped in
newspack-rolling-coverage.php(andpackage.json), translated strings are regenerated by the i18n workflow, and a distributable zip is built withnpm run release:archive. - The distributable is filtered by
.distignore(sources, tests, tooling, and developer docs are excluded; compileddist/,includes/,languages/, and productionvendor/ship).