All notable changes to SocietyPress are recorded here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Entries describe user-visible changes only. For the underlying commits, see the Git log.
Pre-1.0 development iterations are archived in CHANGELOG-pre1.md.
[1.0.0] — 2026-06-01
First public release.
SocietyPress is a free, GPL-licensed WordPress platform that gives a volunteer-run genealogical or historical society everything it needs to operate online — members, dues, events, library, newsletters, records, volunteers, donations, blast email, committees, documents, photos, voting, lineage programs, and research help — without third-party services.
What's in 1.0
Members (always on)
- Full membership database with custom fields, household/joint members,
- Renewal reminders, lapsed-member workflows, lifetime members
- Pending-changes queue so member-initiated edits land in moderation
- CSV import with field mapping; full data export
- XChaCha20-Poly1305 encryption (via libsodium) on phone numbers and
research surnames, research areas, and skills/interests
street addresses at rest
Optional modules (toggle in Settings → Modules)
- Events — calendar, registration with capacity + waitlist, speakers,
- Library — full OPAC-style catalog with faceted search, browse-by
- Newsletters — archive with searchable cover gallery and inline PDF
- Resource Links — categorized external links with maintenance tools
- Governance — committees, meeting records, leadership roster
- Store — online publication sales with per-item shipping, Stripe
- Records — collection-based historical record sets with custom fields,
- Donations — one-time and recurring donations, campaigns,
- Blast Email — newsletter blasts, segmented sends, plain-text or
- Photo Gallery — albums with member uploads, Picture Wall public view
- Help Requests — public-facing research-question intake with member
- Documents — gated members-only document library with categories
- Voting & Elections — multi-question ballots, eligibility rules,
- Lineage Programs — "First Families"-style heritage recognition with
- Research Services — paid research request workflow with assignment,
slot-based events, iCal subscribe, Stripe/PayPal payments, attendance check-in, recurring series, external iCal feed sync
sections, ISBN enrichment, donor tracking, condition + availability
viewer
and PayPal checkout, order management
member submissions, search, .genrecord open-format import/export, and GEDCOM import (5.5/5.5.1/7.0) and export (5.5.1 or 7.0)
acknowledgments, year-end reports
templated HTML, delivery log
responses and admin moderation
anonymous secrecy, results with charts and CSV export
application review and optional public roster
hours tracking, invoicing
Themes
- Parent theme + five GPL child themes (Coastline, Heritage, Ledger,
Parlor, Prairie), each with palette-on-activation and per-section Customizer controls
Site building
- 21+ page-builder widgets covering hero sliders, contact cards, event
- Page templates for members-only content, search, and login modal
- PWA manifest with offline fallback page
lists, calendars, donation forms, member directories, library catalogs, research guides, and more
Security
- All AJAX endpoints nonce + capability gated
- Stripe + PayPal webhook signature verification
- Server-side outbound HTTP for iCal sync and color extraction is
- File uploads validated against an explicit MIME allowlist;
.htaccess - Email header CR/LF stripping in
sp_get_email_headers()so a stray - Legacy
noenc:decryption fallback removed; on activation any surviving - Stripe Checkout redirect URLs validated via
sp_safe_stripe_checkout_url() - GDPR: five exporters and five erasers (donations pseudonymize for IRS
DNS-rebinding pinned (CURLOPT_RESOLVE)
drops PHP execution in upload paths
newline in admin-edited From/Reply-To settings cannot inject Bcc/Cc
rows are re-encrypted via sp_maybe_migrate_noenc_members()
at every checkout site (lineage applications, donations, research cases, invoice payments)
recordkeeping rather than delete)
Accessibility
- Custom
spConfirm/spAlertmodals with focus management, focus traps, - WCAG AA color contrast across status badges, links, and admin tables
- Form labels, aria-live regions, and
prefers-reduced-motionguards - Login acknowledgment modal that requires explicit dismissal
- Filter-bar
<select>controls in the Members, Events, and Email Log - Page builder widget cards are keyboard-operable (Enter / Space toggles
- 48 page-builder widget fields now have programmatically associated
- Hero slider per-line size/weight/color selects and per-slide Button
- Theme builder hex-color text inputs are labeled per color
- Lineage application form fields are fully label-associated
- Donations bulk-action "select all" checkbox has an associated label
inert siblings, and screen-reader-friendly labels
list tables now expose visible-label-equivalent aria-label text
open/closed; aria-expanded tracks the body's visible state)
labels (for=/id=) across flat and repeater field patterns
Text / Button URL inputs each have their own labels
Internationalization
- 4,600+ translatable strings, generated
.potfiles for plugin and - Page template names ("Library Catalog", "Genealogical Records Search",
- Frontend event-count plural moved to
_n()("1 event" / "%s events") - Frontend event location labels for virtual events translated
- Design Settings, Event Categories, Event price fields, Page Builder
parent theme
"Store", "Shopping Cart", "Documents", "Interest Groups") now translatable in the WordPress page Template dropdown
"Standard Pages" description, and Events Import file-format helper strings wrapped with the societypress text domain
Operations
- One-file installer (
sp-installer.php) — drop into web root, browse to - Built-in dashboard update checker against GitHub releases
- Daily maintenance cron, email-log cleanup, renewal reminder cron,
it, follow the wizard, the installer self-deletes after success
event reminder cron, iCal feed sync cron
License
- GPL-2.0-or-later