Skip to content

Releases: ArsNovaSingers/ars-nova-core

v1.11.0 - Project Modules field group moves to acf-json

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 22 Aug 05:01

The Project Modules field group is now acf-json/group_anspm_project_modules.json, loaded by core's existing load_json filter alongside the other twelve groups, and editable in Field Groups. The PHP acf_add_local_field_group() registration is removed; this file now owns renderers only. Group key, field key and field name are unchanged, so module content already saved on any page still resolves. Group description corrected - it named a plugin retired in 1.9.0 and stated a design intent that has since reversed.

v1.10.0 - News Grid module

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 21 Aug 17:33

Adds a News Grid module and extends Project Modules to the front page.

News Grid

A blog/news band with its own markup and its own grid CSS. Fields: heading, how many posts, columns (2/3/4), excerpt length, show images, show dates, button label and link, background — plus the standard "Hide this module" toggle.

It deliberately does not lean on core's wp-block-latest-posts styling. That block's grid collapsed to full width on the live home page on 2026-08-21 with the page markup unchanged and no way to correct it from the page. Owning the markup and the stylesheet means a layout change is ours to make.

The "Read More News" button uses core's own wp-block-button__link classes rather than a new one of ours, so it keeps matching every other button on the site — including the home page's navy-pill-to-gold-on-hover rule.

An empty blog renders nothing for the public and an explanation for logged-in editors, rather than a heading floating over emptiness.

Modules now run on the front page

New anspm_page_has_modules() — project template or the front page — replaces the direct anspm_is_project_page() calls in the three places that must agree: the ACF field group's location rules, the the_content filter, and the stylesheet enqueue. ACF decides where the panel appears; that helper decides where modules render. A page you can fill in but that never draws is exactly how the Content Blocks layouts died.

Note for whoever ships the rest of the Home migration

Modules append after page content, so while the home page still holds its blocks any module lands at the bottom. Home is migrated by building all its modules, populating them on staging, then stripping the blocks — not incrementally on live.

v1.9.0 - Project Modules absorbed into core

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 18 Aug 18:58

Reusable content sections for the Project Template (Program Story, Guest Artist, Tickets) move out of the standalone ars-nova-project-modules plugin and into core, where renderers belong. RETIRE the standalone plugin before or during install - both declare the same anspm_ functions and will fatal on redeclare if both are active. Carries three fixes: ticket band no longer clipped (Add to cart was being cut off), palette 9 foreground is light rather than navy-on-navy, and the hardcoded lazy-loading is removed so core keeps its own LCP decision. Fields remain PHP-registered as a known interim state pending an ACF Tools export to acf-json.

v1.8.6 - Give pages an excerpt field

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 18 Aug 18:53

Retroactive release. This commit (e11b366) was pushed and installed on Live but never tagged or released, leaving v1.8.5 as the newest release despite Live running 1.8.6. Tagged and released now so there is a rollback point matching what is actually deployed, before v1.9.0 work begins. No code change.

v1.8.5 — Font Vote: fix current-site body font detection

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 10 Aug 21:08

v1.8.4 read the live site's heading font correctly but returned Helvetica for body instead of Hergon Grotesk, because a plugin stylesheet's generic body reset was scanned after the theme's own inline declaration and won on last-rule-wins. Inline styles are now scanned last, and the winner is the last candidate backed by a matching @font-face — a self-hosted webfont being strong evidence of the real font. @font-face blocks inside inline styles are parsed too.

v1.8.4 — Font Vote: Current Site card now reads the real live site

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 10 Aug 21:06

The Current Site baseline was a hardcoded Georgia/Arial approximation that could not track the live site. New includes/current-site.php fetches arsnovasingers.org server-side, parses the real heading and body font-family from its CSS, walks its stylesheets for @font-face blocks, resolves the woff2 URLs absolute and keeps only the faces for the families actually in use — cached 12 hours, source URL editable at Settings -> Font Vote Fonts, exposed as public GET /font-vote/current-site with ?refresh=1. The page re-declares those faces and patches the baseline on every state load, so the card and the large preview render in genuine Mirador-Bold and Hergon Grotesk (possible because the live site serves its fonts with access-control-allow-origin: *). Heading weight is taken from the faces that exist rather than a hardcoded 700, avoiding a synthesised bold over an already-bold face. The option id stays baseline, so existing team votes are untouched; a failed read says it is showing a stand-in rather than pretending.

v1.8.3 — Font Vote: full Google Fonts catalog + visual font picker

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 10 Aug 19:24

Custom Option is no longer limited to 19 hardcoded typefaces. New includes/font-catalog.php serves the Google Fonts family list from a cached transient — the live ~1,800-family catalog when a Google Fonts API key is stored at Settings -> Font Vote Fonts, otherwise a bundled ~200-family curated list — exposed to the page via a new public GET /font-vote/fonts route. The key never reaches the browser. The static 19-family link tag is gone: only Inter (the page UI font) loads up front, and every pairing face loads on demand, with picker rows fetched via IntersectionObserver as they scroll into view. Both native selects are replaced by a searchable picker with category filters that renders every font in its own typeface, plus a live heading+body preview — necessary because Chrome, Edge and Safari all ignore font-family on an . Existing pairings and all team votes are untouched.

v1.8.2 - Font Vote: other ranks, Top 3 split, custom pairings

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 10 Aug 18:23

Adds three requested Font Vote improvements: (1) each card shows how every other team member ranked that pairing, below the current person's own rank control; (2) the grid now splits into the top-3 ranked pairings and an Other Options section for everything ranked 4th or lower; (3) a + Custom Option button next to + Random Pairing opens a form to hand-pick heading/body fonts and name a pairing, using the same curated font pool. No new REST routes -- reuses the existing options endpoint.

v1.8.1 - Font Vote on-card ranking

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 10 Aug 18:02

Moves Font Vote's vote casting onto each pairing card: 1st/2nd/3rd rank buttons directly on the card instead of a separate bottom dropdown panel. Scoring switched to a fixed top-3 ballot (3/2/1 points). Bottom panel is now a read-only Team Standings tally. Continues the rename + leader-badge work shipped in v1.8.0.

v1.8.0

Choose a tag to compare

@ArsNovaSingers ArsNovaSingers released this 10 Aug 17:43

Font Vote: rename a pairing's name (PUT/PATCH options/{id}, baseline stays locked); card grid now auto-sorts by the weighted vote tally with a rank badge and a Current leader banner on the top pairing.