=== MusicNetics Artist Toolkit ===
Contributors: ranknetics
Tags: musician, artist, music player, gigs, epk
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 8.0
Stable tag: 1.6.6
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Manage Songs, Releases, Gigs, Merch, Photos, Videos, Press, and your Artist Profile — all from one WordPress dashboard.

== Description ==

MusicNetics Artist Toolkit gives musicians, bands, and artist managers a complete, self-hosted toolkit for presenting their work without relying on third-party platforms.

Manage the following content types directly from your WordPress admin:

* **Songs** — track details, cover art, audio file, and streaming links (Spotify, Apple Music, YouTube Music, SoundCloud, Bandcamp, Tidal, Amazon Music, Deezer, Pandora).
* **Releases** — albums, EPs, and singles.
* **Gigs & Events** — upcoming and past shows, venue details, ticket and RSVP links.
* **Merch** — a simple product grid with images, pricing, and buy links.
* **Photos** — a masonry photo gallery with lightbox viewing.
* **Videos** — an embeddable video gallery.
* **Press / News** — press mentions and news items.
* **Artist Profile** — bio, genre, location, contact details, and social links used throughout the site and the Electronic Press Kit (EPK).
* **Fans** — a lightweight newsletter/fan signup list with CSV export.

= Shortcodes =

* `[musicnetics_player]` — song player grid with streaming links.
* `[musicnetics_gigs]` — upcoming (or past) gigs list.
* `[musicnetics_merch]` — merch grid.
* `[musicnetics_photos]` — masonry photo gallery with lightbox.
* `[musicnetics_videos]` — video gallery.
* `[musicnetics_press]` — press/news cards.
* `[musicnetics_epk]` — a full Electronic Press Kit combining profile, music, gigs, merch, and press in one page.
* `[musicnetics_newsletter]` — fan/newsletter signup form.

= Data ownership =

All content you create is stored in your own WordPress database using standard custom post types, a small custom table for fan signups, and two options rows for your artist profile and plugin settings. Nothing is sent to any third-party service by this plugin. A built-in **Data Health** page lets you verify that your data is intact after any update or migration, and a **Backup & Restore** tool lets you export/import your MusicNetics data as a JSON file at any time.

== Installation ==

1. Upload the plugin files to the `/wp-content/plugins/musicnetics-artist-toolkit` directory, or install the plugin directly through the WordPress Plugins screen (**Plugins → Add New → Upload Plugin**).
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Go to the new **MusicNetics** menu in your WordPress admin to fill in your Artist Profile and start adding Songs, Gigs, Merch, Photos, Videos, and Press items.
4. Use the shortcodes listed above (also available under **MusicNetics → Shortcodes**) to display your content on any page or post.

== Frequently Asked Questions ==

= Does this plugin require any external service or API key? =

No. MusicNetics Artist Toolkit works entirely with data you enter yourself and stores everything in your own WordPress database. Streaming links (Spotify, Apple Music, etc.) are just URLs you provide — no API keys are required.

= Will updating the plugin delete my data? =

No. Updating the plugin (via the standard "Upload Plugin → Replace current with uploaded" method, or via the WordPress.org update mechanism) only replaces plugin code files. It never touches your Songs, Releases, Gigs, Merch, Photos, Videos, Press, Artist Profile, Settings, or Fans data.

= What happens if I delete the plugin? =

Deleting the plugin removes the plugin's cached transients only. Your custom post type content (Songs, Releases, Gigs, Merch, Photos, Videos, Press), your Artist Profile, your Settings, and your Fans list are preserved so you don't lose your work if you reinstall the plugin later.

= Can I back up my MusicNetics content separately from my full site backup? =

Yes. Use **MusicNetics → Backup & Restore** to export all MusicNetics data (profile, settings, and all content types) to a single JSON file, and import it back into the same or another site.

= Does this plugin include e-commerce/checkout functionality? =

No. The Merch feature is a simple showcase grid with a "Buy" link you provide (for example, a link to your existing store, Bandcamp, or Shopify page). It does not process payments.

== Screenshots ==

1. MusicNetics dashboard overview.
2. Song management with streaming links.
3. Gigs & Events list.
4. Electronic Press Kit (EPK) shortcode output on the frontend.

== Changelog ==

= 1.6.6 =
* Fixed: updated the Help page support email from `info@ranknetics.com` to `info@musicnetics.com` for ownership consistency with the plugin's Plugin URI and WordPress.org account. No functional, data, or frontend behavior change.

= 1.6.5 =
* Fixed: corrected the `phpcs:ignore` placement for the one remaining Plugin Check warning in the admin asset-loading check — the current page slug is now sanitized into a local variable before use so the exception applies to the exact flagged line. No functional, data, or frontend behavior change.

= 1.6.4 =
* Fixed: resolved all errors and warnings from the official WordPress.org Plugin Check review — added missing nonce verification, input sanitization/unslashing, translator comments on strings with placeholders, and output escaping throughout the admin and shortcode files; documented justified exceptions (e.g. custom-table SQL identifiers, read-only filters) with inline explanations. Updated "Tested up to" to 7.0 and tidied readme formatting. No data, database, options, meta key, or frontend behavior changes.
* Fixed: plugin header "Tested up to" now matches readme.txt (both 7.0), resolving a mismatch error. Removed a dev-only PHPCS ruleset config file that WordPress.org's file-type check does not permit in submitted plugins.
* Fixed: inlined nonce verification in the meta box save functions and the Artist Profile save handler so it's directly detectable (previously routed through a private helper), and tightened three spots that re-read raw request data to sanitize once into a local variable instead. No change to what is validated or saved.
* Fixed: the "Powered by MusicNetics" credit link on the public EPK page no longer renders by default. Added a new "Show 'Powered by MusicNetics' credit on public pages" checkbox under Settings → Branding, off by default; site owners can opt in if they want to display it. Admin-area MusicNetics links/cards are unchanged. No tracking or referral parameters are used, and no external scripts, images, or styles are loaded.
* Fixed: added `ranknetics` to the Contributors list.
* Fixed: replaced the plugin's remaining direct `<script>`/`<style>` output with `wp_add_inline_script()`/`wp_add_inline_style()` on properly registered/enqueued handles (newsletter signup script, Photos list thumbnail-column CSS, accent-color CSS variables). No visual or behavioral change.
* Fixed: renamed 3 remaining un-prefixed global functions to use the `musiarto_` prefix. No stored data (options, post types, meta, transients, ajax actions, shortcodes) was renamed, to avoid breaking existing installs.
* Fixed: moved the plugin's top-level admin menu position from 25 to 58 to reduce the chance of colliding with other plugins' admin menu items.

= 1.6.3 =
* Fixed: removed the plugin header's Author URI, which was identical to the Plugin URI, per WordPress.org submission requirements. No functional changes.

= 1.6.2 =
* Fixed: renamed the plugin's public display name from "MusicNetics for WordPress" to "MusicNetics Artist Toolkit" to comply with WordPress.org's trademark/naming guidelines (the term "WordPress" is restricted in plugin display names). This is a display-name-only change — no functionality, database storage, text domain, folder name, or frontend behavior was modified.

= 1.6.1 =
* Fixed: file permissions on two bundled image assets that were packaged as owner-only readable; now world-readable like all other plugin files. No functional changes. This release also completed a full internal WordPress.org compliance review (escaping, sanitization, nonces, prepared queries, translations) with no other issues found.

= 1.6.0 =
* Added: new System Information admin page (MusicNetics → System Information) — a read-only support/diagnostics report (plugin/WP/PHP/MySQL versions, active theme, active plugins, site URLs, timezone, date/time format, memory limits, upload/post size limits, debug mode, multisite status) with a one-click "Copy System Information" button for support requests. Admin-only (`manage_options`), no secrets or private data exposed, no external requests.

= 1.5.9.2 =
* Fixed: version bump only, to guarantee browsers/caches load fresh assets after the 1.5.9 fixes below.

= 1.5.9 =
* Changed: frontend date/time display now follows the site's native WordPress Settings → General configuration (Date Format, Time Format, Timezone, and locale) via `wp_date()`, `get_option('date_format')`, `get_option('time_format')`, and `wp_timezone()`, instead of forcing US-only formatting. Applies to Gigs/Events and Press/News output; dates now parse against the site's configured timezone rather than the server's, avoiding rare off-by-one-day display issues. Empty or invalid values are handled gracefully. Storage, admin fields, database/meta keys, and sorting are unchanged.
* Changed: removed the MusicNetics logo image from the Dashboard welcome card and Settings sidebar card; widened the Settings sidebar so the promo image displays cleanly without cropping.

= 1.5.8 =
* Fixed: dashboard hero image was centered instead of left-aligned with the logo, headline, text, and button. All branding card elements now share the same left content edge.
* Fixed: frontend dates and times now display in a US-friendly format (e.g. "July 11, 2026", "7:00 PM") instead of raw database format or 24-hour time. Applies to Gigs and Press output. Storage, admin fields, and sorting are unchanged.

= 1.5.7 =
* Polished: dashboard hero image reduced to a balanced size, logo alignment fixed on both the dashboard card and settings sidebar card, and the CTA button now sizes naturally to its text instead of stretching.

= 1.5.6 =
* Improved: Dashboard welcome card and Settings sidebar card now use the official MusicNetics logo and promotional graphic, with a cleaner single-button layout.
* Removed: Documentation button/link from the branding cards.

= 1.5.5 =
* Added: Thumbnail column on the Photos admin list screen for quick visual scanning (uses WordPress thumbnail sizes, no full-resolution loads).
* Added: Tasteful MusicNetics branding cards on the Dashboard and Settings pages (admin UI only).

= 1.5.4 =
* Added: read-only Data Health admin page to verify data integrity after updates or migrations.
* Prepared plugin for WordPress.org directory submission (readme.txt, LICENSE, CHANGELOG.md, translation template).

= 1.5.3 =
* Added: Backup & Restore tool to export/import all MusicNetics data as JSON.

= 1.5.2 =
* Fixed: a regression that could cause user data to be affected during specific update paths. Data preservation is now covered by a documented manual test plan.

= 1.5.1 =
* Maintenance and stability improvements.

= 1.5.0 =
* Added: Press/News content type and `[musicnetics_press]` shortcode.
* Added: Videos content type and `[musicnetics_videos]` shortcode.
* Added: Fans/newsletter signup with CSV export.

= 1.0.0 =
* Initial release with Songs, Gigs, and Merch content types and their shortcodes, plus the Electronic Press Kit shortcode.

== Upgrade Notice ==

= 1.6.3 =
Header fix: removed the duplicate Author URI. No functional changes.

= 1.6.2 =
Renamed the plugin's display name to "MusicNetics Artist Toolkit" for WordPress.org compliance. No functional changes, no data changes.

= 1.6.1 =
Packaging fix: corrected file permissions on two bundled images (no visible change). Internal compliance review completed with no functional changes.

= 1.6.0 =
New: a System Information page (MusicNetics → System Information) for easy support requests — view and copy your environment details (versions, theme, plugins, URLs, timezone, memory limits, etc.) in one click. No data, shortcode, Backup & Restore, or Data Health changes.

= 1.5.9.2 =
Frontend dates/times now follow your WordPress date/time settings and locale for non-US sites. Branding cards no longer show the MusicNetics logo; Settings sidebar card is wider. Version bumped to refresh cached assets. No data or database changes.

= 1.5.8 =
UI fix: dashboard hero image now aligns left with the rest of the card content. Frontend dates/times now display in a friendly US format (e.g. "July 11, 2026", "7:00 PM") instead of raw or 24-hour format. No data, admin field, or sorting changes.

= 1.5.7 =
UI polish only: balanced hero image sizing, fixed logo alignment, and natural button sizing on the branding cards. No data, shortcode, or frontend changes.

= 1.5.6 =
Refreshes the admin branding cards with the official MusicNetics logo and promo graphic. No data, shortcode, or frontend changes.

= 1.5.5 =
Adds a Photos thumbnail column and admin branding cards. No data, shortcode, or frontend changes.

= 1.5.4 =
Adds a read-only Data Health page and completes WordPress.org submission preparation. No data changes.
