Contributor Résumé and Insights — Full changelog

For each release, see the entries below. The latest version is always at the top.
The current release notes also live in readme.txt under "== Changelog ==".

= 1.5.3 =
* Improved: Open support threads now follow the forum instead of lagging up to a day behind it. WordPress.org serves these counts from a cache that can be a day old, so a thread you had just resolved still showed as open, in Stats and in the emails. When a plugin shows open threads, the daily collection now checks them against the list of unresolved topics in its forum, and lowers the count when that list is complete. An empty list is read again, minutes later, before it is believed, and a forum served from another address keeps the count of WordPress.org without counting as a failed step. The alert for more open threads compares each day with its own source, so a day checked against the forum followed by one that could not be checked neither raises a false alert nor inflates the rise. Two new columns in the daily stats table keep the figure of WordPress.org and whether the forum settled it, and they are added automatically.
* Improved: Updating the stats tables now checks that every column is in place before marking the update as done. If the database refuses a change, the collection pauses, the Stats screen says so, and the update is tried again every hour, instead of going on with tables that would lose every reading. `wp cresume stats collect` tries it right away and says why it cannot collect.
* Fix: The locks of the stats collection and of the emails are now atomic. A collection run from WP-CLI, or a background step that went on to a quick look at another author, could take the lock while another worker held it, so two workers could advance the same collection at the same time. Two workers arriving at the same moment could also both get it. Now `wp cresume stats collect` waits for the worker that holds the lock and goes on from where it left the collection, tries every two seconds instead of looping without a pause when the lock cannot be taken, and stops with a warning after three minutes without it.
* Fix: Sort links and the other links of the Stats screen and of the dashboard widget now keep working for at least a week while you stay logged in. On a screen left open for more than a day, the first click opened the default view instead.

= 1.5.2 =
* Improved: The Tag pages table in Keywords has a Change column, like the Searches one. Tag pages are read once a week, so when the period you chose holds a single reading, the change is counted from the reading before it.
* Fix: Sorting a Stats table by a column did nothing when the screen was opened from its tab or with Reset view. It only worked for a day or so after choosing a period or switching between plugins and themes. The same happened in the tables of search and tag positions.
* Fix: Opening the Stats screen from an old link, such as a restored browser tab, could mark one column as sorted while the rows followed another order. An old link now opens the screen at its plain address, with the period and sorting remembered in your browser.
* Fix: The notice shown after saving keywords no longer comes back when you sort the table.

= 1.5.1 =
* Improved: On the stats page of a plugin or theme, the selector opens the one you choose right away, without the Go button. With the keyboard, choose with the arrow keys and press Enter. The button is still there when JavaScript is off.
* Fix: Position alerts in the emails and the positions CSV now cover only the keywords attached to each plugin or theme, like the Keywords screen. They also included any other plugin of yours listed in the first 100 results of a search you track for a different one. The `cresume_stats_events` action follows the same rule.
* Fix: Collecting again on the same day no longer stores a second position alert for the same keyword and plugin when its position changed in between.
* Fix: If the test email cannot be built, the Emails tab now shows the error instead of the request ending in a fatal error.

= 1.5.0 =
* New: Email reports of your stats. Each user chooses a daily, weekly or monthly email, and for each one a summary of the period or only the alerts. Off by default, one email a day at most, sent by your own site to the address of your user account.
* New: Alerts for what changed since the last collection: big changes in downloads, active installs moving to another range, new reviews, the average rating, more open support threads and plugins not tested with a new WordPress version. You choose the topics and the plugins or themes.
* New: Position alerts for searches and tag pages: entering or leaving the top 10 or the first page, reaching or losing number one, and jumps of 3, 5 or 10 places.
* New: The daily collection records the plugins right above and below yours in every search and tag page, so an alert can tell which plugin overtook yours, or which one you overtook.
* New: A test email button, with the last email sent and the last error, in the Emails tab next to Stats.
* New: The `cresume_stats_events` action, for developers who want the events of each collection somewhere else.
* Fix: An empty answer from WordPress.org is no longer taken as real. A search or tag page that comes back empty leaves that day without a position instead of recording it as not in the first 100, and an empty review feed keeps the reviews already stored.

= 1.4.2 =
* Fix: The résumé settings and Stats screens showed an empty heading and no page name in the browser tab, and opening them on PHP 8.1 or later logged a strip_tags() deprecation notice.
* Fix: Checking a new WordPress.org or GitHub username on the settings screen logged an Array to string conversion warning and put the résumé sections back in their default order, losing the order you had chosen.
* Fix: The quick look at another author and the change in search positions now end their period on the last day with data, like the rest of the Stats screen. A quick look viewed the day after it was taken counted its last day as zero downloads and showed a false drop, and the change in positions could cover fewer days than the period chosen while the daily collection had not run.

= 1.4.1 =
* Improved: The page of each plugin or theme shows its boxes in two columns without gaps. Move, fold or hide them as on the dashboard, and your order is kept. A selector opens another plugin or theme without going back to the overview.
* Improved: Charts show the figure of each day when you hover them.
* Improved: Choose which kinds of notes Needs attention shows and how many reviews and search positions each page lists, and hide columns of the plugins table from Screen Options.
* Improved: The downloads chart and the notes next to it are the same height.
* Improved: In the dashboard widget, the list of plugins and themes only shows when you choose to pick them, and it keeps what you picked.
* Fix: Until the daily collection ran, the last day of the period counted as zero downloads, which lowered the totals and drew a false drop. The period now ends on the last day with data.
* Fix: All-time downloads could show fewer than the downloads of the last 12 months for a young plugin.
* Fix: The active installs chart of a plugin or theme now covers the period chosen, like the downloads chart, instead of only the days tracked so far.
* Fix: The Search figure can now be translated as a noun.

= 1.4.0 =
* New: Stats of the plugins and themes you publish on WordPress.org, in a new Stats tab next to the résumé settings and in the toolbar account menu. Off by default. Once on, it collects every day in the background downloads (with two years of history from the first day), active installs, version adoption, ratings, support threads, reviews, language packs and translations in progress.
* New: Search keywords. Add the searches people use to find each plugin or theme, up to 10 each, and follow its position every day along with the top 10 of every search. The tags of your plugins are followed too, with the position and page in each tag page of WordPress.org.
* New: A page for every plugin or theme, sortable tables, charts and alerts for open support threads, new releases, big changes in downloads, new reviews and plugins not tested with the current WordPress. The period, the type and the sorting you last used are remembered in your browser.
* New: CSV export of the daily stats, the searches, the tags, the top of each search and the version adoption.
* New: A dashboard widget each user sets up from Configure: which plugins or themes, which figures, the period, the order, the number of rows and the alerts, in four layouts.
* New: A quick look at another author: today's figures and 90 days of downloads, up to three authors a day, as a snapshot that expires after 24 hours.
* New: The stats follow the WordPress.org username of your résumé. The history of a previous username is kept and comes back if you switch back.
* New: WP-CLI commands under `wp cresume stats`.
* Fix: On multisite, deleting the plugin now removes its data from every site of the network, and deactivating it for the whole network clears the scheduled refresh of every site. Until now only the main site was cleaned.

= 1.3.0 =
* Improved: Every badge on your WordPress.org profile now carries its official colour, the full table of 63 badges straight from the profiles directory, instead of the six the plugin used to know. Dark mode lightens the two that were unreadable against a dark background.
* Improved: Tested with WordPress 7.1.
* Fix: The résumé rendered without any styling inside the block editor. WordPress 7.1 always iframes the editor, and the stylesheet was enqueued on a hook that never reaches the editor canvas, so the preview showed raw unstyled HTML.

= 1.2.0 =
* New: Five for the Future — the Time commitment section shows a "Five for the Future" badge, and the companies that sponsor your contribution hours now link to their pledge pages, next to your weekly hours.
* Improved: The grid columns setting now applies to every grid — plugins, themes, favorites, GitHub repositories and photos — and goes up to six columns.
* Improved: The Events list and your translation locales now lay out in two columns on wider screens.
* Improved: Your Polyglots coordination roles (GTE, PTE and locale managers) stand out as highlighted chips in the Translations section, whose title now links to your profile like the other sections.
* Improved: Badges and chips (hero, teams, events, translation roles, version chips) now follow the corner-radius setting, so squaring the radius squares them too.
* Improved: Choose exactly how many GitHub repositories to show, up to 24, as a free number like the other sections.
* Improved: The photo lightbox now has previous/next controls, arrow-key navigation and a counter, and its buttons no longer pick up stray theme styling.
* Improved: Settings — a "Restore defaults" button sits next to Save (your usernames, token and chosen page are kept), and the résumé page's "Edit" link opens in a new tab.

= 1.1.1 =
* Improved: When the Translations section lists only some of your locales, a discreet "Showing X of Y locales." line says so (you can raise the "Locales" count in the settings).
* Fix: The Translations project count only added up the first locale; it now sums the contributed projects of every locale you translate into. Thanks to @masino1967 for the report!

= 1.1.0 =
* New: Events section — the WordCamps and meetups you spoke at, organized, volunteered at or attended, each with your role, read from your profile's public activity timeline.
* New: Community section — the contributor teams you belong to and the languages you speak.
* New: Favorites section — the plugins and themes you starred on WordPress.org.
* New: Your profile's website, GitHub and Slack links show under the hero, and your @username now links to your WordPress.org profile.
* New: Long bios collapse behind an accessible "Read more" toggle, the "WordPress origin story" from your profile joins the Bio section, and a discreet "Profile data updated X ago" line shows freshness.
* Improved: Onboarding detects the GitHub username listed on your WordPress.org profile and fills it in automatically.
* Improved: Choose how many items each section shows — events, activity, locales and every grid — from the settings, and section totals now link to the full list on your wordpress.org profile (with the little external arrow the profile itself uses).
* Improved: In the customizer, the block shows its settings form right in the panel (classic-widget style) — the résumé itself appears in the site preview — and the block sidebar points to where per-section options live.
* Improved: Every résumé link now carries rel="nofollow".
* Fix: The Translations section could read the wrong profile panel, showing 1 locale instead of all of them and duplicating each row. Thanks to the user who reported it!
* Fix: Core credits groups no longer show a raw "%s" placeholder (or an empty name) in the chip tooltip.

= 1.0.1 =
* Improved: The "Mono" style is now a stripped-down ASCII / terminal look — square hairline boxes, ASCII meters and markers — not just a monospace font.
* Improved: More logical default section order — Bio, Time commitment and Work now sit right after the profile hero.
* Improved: WordPress releases and Core credits now share a row (two columns) by default, since both are compact — less vertical space.
* Improved: The settings screen now lives in the toolbar account menu, with a Settings link on the Plugins screen and a "Go to settings" button in onboarding.
* Improved: New "Résumé page" section in the settings to pick or create the page that shows your résumé.
* Improved: The settings live preview now renders at a realistic desktop width and scales to fit, so it matches what a full-width page will show.
* Fix: Dark mode was unreadable on themes without a dark mode — the résumé no longer turns near-white on a light background. The default is now "Always light", and dark mode paints its own dark panel.
* Fix: The compact layout now tightens the whole résumé instead of hiding the plugin and theme card text.
* Fix: Even spacing between the settings boxes (some were nearly touching), a GitHub username placeholder, and a stray heading number removed.

= 1.0.0 =
* Initial release.
* One configurable "Contributor Résumé" block and a matching shortcode, with up to 15 sections.
* Data from official WordPress.org sources and the public GitHub API, cached locally with zero front-end HTTP requests (stale-while-revalidate).
* Three skins (Modern, Classic, Mono), light/dark/auto, accent color, radius, shadow, columns, compact layout.
* Animated count-up statistics that respect the visitor's reduced-motion preference.
* Per-section options, drag-to-reorder, and a live preview with desktop/mobile views in the settings.
* A "Data sources" panel in the settings, with per-source status, age and one-click re-check.
* Photo lightbox, theme-overridable templates, WP-CLI commands and full internationalization.
