=== Yumyoda CopWatchdog ===
Contributors: stizzi
Tags: police, accountability, transparency, nypd, public records
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 3.0.2
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Officer accountability cards, a data table and a stats widget for police disciplinary-trial data served by your own CERBERUS_API server.

== Description ==

Yumyoda CopWatchdog displays police officer records — upcoming disciplinary court dates, charges, complaint and settlement history, assignment history, photos and press coverage — as cards, a sortable table and a headline-statistics widget.

The plugin is the front end of the open COPWATCHDOG system (THOTH scraper → HERMES database → CERBERUS_API). It does not scrape or store officer data itself: it reads from a CERBERUS_API server that **you** run and configure under Settings → Copwatchdog → Connection (API URL and API key). No data is sent anywhere else, and nothing is sent to the plugin author.

**Shortcodes**

* `[yumcwd_cards limit="20"]` — one card per officer, sorted by upcoming court date (also `orderby`, `order`, `hide_filters`, filter attributes)
* `[yumcwd_table per_page="25"]` — one row per court date, sortable and searchable
* `[yumcwd_officer id="1234"]` — a single officer card (`view="standard|compact|extended"`)
* `[yumcwd_funfacts]` — four headline numbers: settlements paid, officers on the calendar, trials this month, top charge

**Themes**

Four built-in looks (Settings → Copwatchdog → Theme): Yumyoda (dark, mono, orange), Cyberpunk Dark, Minimal Light, Investigative — or inherit your site's styles.

**External service**

This plugin communicates only with the CERBERUS_API server address you enter in its settings. Source and self-hosting instructions: https://github.com/copwatchdog

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/` or install the zip from Plugins → Add New.
2. Activate it.
3. Go to Settings → Copwatchdog → Connection, enter the URL and API key of your CERBERUS_API server, and click Test Connection.
4. Put `[yumcwd_cards]` (and any other shortcode) on a page.

== Frequently Asked Questions ==

= Where does the data come from? =

From the CERBERUS_API server you configure. The reference implementation and the scraper/ETL that feed it are published at https://github.com/copwatchdog.

= Test Connection says Unauthorized / 401 =

The server at the URL you entered did not accept your API key. Enter the URL of your own CERBERUS_API instance and the API_KEY from its `.env` file.

= Does the plugin phone home? =

No. The only network requests go to the API URL you configured.

== Screenshots ==

1. Officer cards, Yumyoda theme
2. Officer detail with court-date history and articles
3. Statistics widget

== Changelog ==

= 3.0.2 =
* Review round 2: AJAX and cron hook names carry the plugin prefix; public-field setting restricted to known keys; CSV setting sanitized cell by cell as plain text; shortcode error text escaped.

= 3.0.1 =
* Plugin Check warnings cleared: template variables prefixed, CSV file name index validated.

= 3.0.0 =
* Plugin-review round 1: all identifiers use the `yumcwd_` / `YUMCWD_` prefix (shortcodes are now `[yumcwd_cards]`, `[yumcwd_table]`, `[yumcwd_officer]`, `[yumcwd_funfacts]`; 2.x settings migrate automatically); admin CSS/JS enqueued instead of inline; CSV upload goes through wp_handle_upload and every cell is sanitized; public REST routes enforce the Display allowlist — tax_id and email are hidden unless enabled.

= 2.13.2 =
* Plugin URI now points to the project page (must differ from the author URI).

= 2.13.1 =
* Passes the WordPress Plugin Check: all admin output escaped, debug logging only when WP_DEBUG_LOG is on, translator comments, input validation on the CSV upload and tab parameter, gmdate, direct-access guard in every template.

= 2.13.0 =
* First WordPress.org-ready build: distribution package without repository files, text domain matches the plugin slug, no default API URL, fonts bundled locally instead of loaded from Google Fonts.

= 2.12.x =
* One card per officer sorted by court date, articles, Yumyoda theme, sort dropdown fix, secrets removed from code. See the project changelog on GitHub.
