=== PB Gig Diary ===
Contributors: purebaltic
Tags: gig diary, band, music, setlist, google calendar
Requires at least: 6.3
Tested up to: 7.0
Requires PHP: 8.1
Stable tag: 2.9.6
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Gig management for working musicians. Publish gig listings, build setlists, sync to Google Calendar — all from your WordPress admin.

== Description ==

**PB Gig Diary** is a WordPress plugin built by working musicians, for working musicians. It keeps your gig diary, setlists, song library, and Google Calendar in sync — from a single, straightforward admin interface.

Whether you're a solo artist managing your own bookings or a booking agency handling multiple acts, PB Gig Diary brings everything together in one place. No spreadsheets, no double-entry, no missed dates.

= Free features =

* **Gig listings shortcode** — add `[pb_gig_diary]` to any page to display upcoming and past gigs automatically
* **Venue management** — store venue details, addresses, and contact information
* **Artist management** — manage one artist per free install
* **Status tracking** — confirmed, provisional, cancelled, and private gig statuses
* **Hide from website** — keep gigs in your diary without publishing them publicly

= Premium features (paid licence required) =

**Starter** — Google Calendar sync, artist shortcodes, import/export

**Pro** — Unavailability tracking, hidden fees and private notes, style editor

**Studio** — Songs library, setlist builder with drag-and-drop, public setlist pages, timing calculator, share setlist with band

**Agency** — All Studio features for up to 5, 15, or 50 artists from a single install, REST API for publishing to band websites

= Key features (paid) =

* **Google Calendar sync** — add or update a gig and the calendar updates automatically. Cancellations handled too.
* **Setlist builder** — build setlists with drag-and-drop ordering, copy sets between gigs, mark songs as played or dropped
* **Timing calculator** — enter your start time, gap between songs, and break between sets — projected finish time updates live
* **Public setlist pages** — every gig with a public setlist gets its own shareable page at `/setlist/{id}/`
* **Songs library** — full song catalogue with keys, durations, and original artists. Publish your repertoire via shortcode.
* **Share setlist** — one click generates a formatted text setlist ready to paste into WhatsApp or email
* **Import / Export** — CSV import and export for gigs, venues, artists, and songs
* **Style editor** — customise colours, fonts, and layout of your public gig listings without touching code
* **Multi-artist** (Agency) — manage multiple acts from one install with full data separation

= Shortcodes =

* `[pb_gig_diary]` — full upcoming and past gig listing
* `[pb_gig_diary upcoming_only="yes"]` — upcoming gigs only
* `[pb_gig_diary past_only="yes"]` — past gigs only
* `[pb_gig_diary count="5"]` — next 5 upcoming gigs
* `[pb_gig_diary year="2025"]` — all gigs from a specific year
* `[pb_gig_diary artist="haarlem"]` — filter by artist slug (Agency)
* `[pb_artist_repertoire]` — full song repertoire (Studio+)
* `[pb_artist_setlist gig_id=123]` — embed a setlist on any page (Studio+)

= For booking agencies =

PB Gig Diary Agency lets you manage all your acts from a single WordPress install. Each artist's data is fully separate. Gig listings and repertoires can be published to individual band websites via the REST API and free companion plugin.

Add a gig once — it appears on your agency site, the artist's own website, and their Google Calendar automatically.

= Privacy =

PB Gig Diary does not collect any personal data from your website visitors. Licence validation communicates with api.keygen.sh to verify your licence key. No visitor data is sent to any third party.

== Installation ==

1. Upload the `pb-gig-diary` folder to `/wp-content/plugins/`
2. Activate the plugin through the **Plugins** menu in WordPress
3. Navigate to **Gig Diary → Gigs** to add your first gig
4. Add `[pb_gig_diary]` to any page to display your gig listings
5. To unlock premium features, purchase a licence at [purebaltic.co.uk/gigdiary](https://purebaltic.co.uk/gigdiary) and enter your key under **Gig Diary → Settings → Licence**

== Frequently Asked Questions ==

= Does the plugin work without a licence? =

Yes — the free version includes the core gig listings shortcode with no licence required. Purchase a licence to unlock Google Calendar sync, setlists, songs library, and more.

= Will my plugin stop working when the licence expires? =

No. Your plugin continues to work indefinitely. After 12 months, updates and new features require a renewal at 50% of the original price — but everything you have keeps working.

= Can I use the plugin on multiple sites? =

Each licence covers one WordPress installation. For multiple sites, purchase a licence per site, or consider an Agency licence which supports multiple artists from a single install.

= What happens if I need to move to a new server? =

Deactivate your licence in the plugin settings, then reactivate it on your new server. Licences are machine-based and can be transferred.

= Does it work with my theme? =

Yes — PB Gig Diary works with any WordPress theme. The gig listings use minimal styling that inherits from your theme, with optional style customisation available on Pro and above.

= What version of WordPress and PHP do I need? =

PB Gig Diary requires WordPress 6.3 or above and PHP 8.1 or above.

= Is there a trial? =

A 14-day full-feature trial is coming soon. In the meantime, the free version gives you a taste of the plugin with no licence required.

= How does Google Calendar sync work? =

You connect a Google Calendar during setup using a Google service account. When you add or update a gig in WordPress, PB Gig Diary automatically creates or updates the corresponding event in your calendar. Cancellations are handled too.

= Where can I get support? =

Visit [purebaltic.co.uk/gigdiary](https://purebaltic.co.uk/gigdiary) for documentation and support, or use the support forum on WordPress.org.

== Screenshots ==

1. Public gig listing — upcoming and past shows displayed automatically with venue details, status badges and setlist links
2. Gig diary admin — manage all your gigs with sortable columns, fee tracking, and quick actions
3. Setlist builder — drag-and-drop setlist with song library, timing calculator and projected end time
4. Songs library — full catalogue with musical keys, durations and original artists
5. Licence settings — tier badges, credit usage, pricing grid with Buy Now links
6. Public setlist page — clean shareable setlist page with sets, songs and durations

== Changelog ==

= 2.9.0 =
* Gig list period filter — All, Upcoming, Past with correct sort order
* Default age restriction dropdown in General settings
* Artist name in General settings now syncs to Artists table
* DB schema fixed for fresh installs

= 2.8.4 =
* Self-hosted update mechanism — automatic updates via purebaltic.co.uk
* Flatpickr date/time picker bundled locally (WP.org compliance)
* All translatable strings corrected
* readme.txt and LICENSE.txt added

= 2.8.0 =
* WordPress.org compliance fixes
* Pure Baltic branding — admin menu icon and page heading icons
* WordPress.org banner and icon assets

= 2.7.5 =
* Stripe/Keygen commercial infrastructure
* Pricing grid with Buy Now buttons on licence tab
* Upgrade and downgrade warnings

= 2.6.x =
* Setlist timing calculator — start time, gap between songs, break between sets, projected end time
* Recording URL field with YouTube and SoundCloud auto-embed on public setlist page
* Share setlist button in admin setlist builder
* Feature gating per tier (Starter/Pro/Studio/Agency)
* Automatic permalink flush on version change

= 2.5.x =
* Public setlist pages at /setlist/{gig_id}/
* View setlist link on public gig listings
* Repertoire shortcode [pb_artist_repertoire]
* Setlist shortcode [pb_artist_setlist gig_id=123]
* Artist slug field in General settings

= 2.4.x =
* Setlist builder with drag-and-drop ordering
* Copy set between gigs
* Position-aware song insertion
* Set label editing

= 2.3.x =
* Songs library — full CRUD with active/inactive filter
* Songs import and export via CSV
* Song duration in H:MM:SS format

= 2.2.x =
* Google Calendar colour palette corrected to match Google API
* Unavailability tracking with band member assignment
* Inline venue editing with fee and timing columns

= 2.0.x =
* Multi-artist support with agency licence
* Per-artist Google Calendar configuration
* Artist filter on gig listings

= 1.0.0 =
* Initial release

== Upgrade Notice ==

= 2.7.8 =
Recommended update — adds branding assets and prepares for WordPress.org submission.
