=== Intown QR Studio ===
Contributors: intowndesign
Tags: qr code, qr generator, qr code maker, wifi qr code, barcode
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 8.2
Stable tag: 1.1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Free QR code generator for WordPress. Create QR codes for URLs, WiFi, email, phone, SMS, and social media. Download as PNG or JPEG.

== Description ==

Add a free QR code generator to your WordPress site in minutes. Your visitors can create and download QR codes for URLs, WiFi networks, contact info, social media, and more — no signup required.

Intown QR Studio creates a dedicated generator page on your site (or embed it anywhere with a shortcode). It works with any theme, runs entirely on your server, and stores zero user data.

**14 Content Types — All Free**

* **Links & Text:** Website URL, Plain Text
* **Contact:** Email, Phone, SMS
* **Network:** WiFi
* **Social & Messaging:** Facebook, Instagram, X/Twitter, LinkedIn, YouTube, Spotify, WhatsApp, Telegram

**Customize and Download**

* 10 color presets — dark-on-light and light-on-dark combinations
* 6 size options from 200px to 1000px
* 4 error correction levels (Low to High)
* Download as PNG or JPEG — instant, no watermarks

**Built for WordPress**

* Works with any properly coded theme — Kadence, Astra, GeneratePress, and more
* Dedicated generator page with configurable URL slug
* `[intown_qr_studio]` shortcode for embedding on any page or post
* Multisite compatible — network or per-site activation
* Mobile-responsive design that looks great on all devices

**Lightweight and Privacy-Friendly**

* Zero database tables — nothing to clean up if you deactivate
* No cookies, no tracking, no external requests — fully GDPR compliant
* Built-in rate limiting to prevent abuse (configurable per-IP throttle)
* No account required for your visitors

**For Developers**

* 18 filters and 14 action hooks for deep customization
* Theme template overrides for complete control of the output
* Scoped Composer dependencies — no autoloader conflicts
* WordPress coding standards compliant

**Pro Add-On Available**

Want custom brand colors, logo overlay, SVG and PDF downloads, or vCard QR codes? [Intown QR Studio Pro](https://intowndesign.com/plugins/intown-qr-studio/pro/) adds premium features on top of the free plugin.

== Installation ==

1. Upload the `intown-qr-studio` folder to `/wp-content/plugins/`
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Visit Settings → Intown QR Studio to configure the page URL and options
4. Your QR generator is live at yourdomain.com/qr-generator (or your custom slug)

== Frequently Asked Questions ==

= Where does the QR generator page appear? =
By default at /qr-generator. You can change this in Settings → Intown QR Studio.

= Does this plugin create any database tables? =
No. The plugin is fully stateless — no tables, no stored files, no cleanup needed.

= Does it work with caching plugins? =
Yes. The generator page automatically signals caching plugins to exclude it. See the settings page for manual exclusion instructions if needed.

= Does it work on multisite? =
Yes. Supports both network activation and per-site activation with independent settings per site.

= Can I embed the QR generator on an existing page? =
Yes. Use the `[intown_qr_studio]` shortcode to embed the generator on any page or post.

= Is it GDPR compliant? =
Yes. The plugin stores no user data, sets no cookies, and does not track visitors. IP addresses are only used as temporary hashes for rate limiting and auto-expire.

== Screenshots ==

1. QR code generator — pick a content type, enter your details, choose a color, and download your QR code as PNG or JPEG
2. 14 content types — URL, Plain Text, Email, Phone, SMS, WiFi, and 8 social platforms including Facebook, Instagram, and WhatsApp
3. Color presets — 10 preset color combinations in dark-on-light and light-on-dark variants
4. Content type selector and generated QR code — all 14 types with icons, URL input, and live preview
5. Admin dashboard — Quick Status overview, license management, shortcode copy, and quick links

== Changelog ==

= 1.1.2 =
* Removed three `DONOTCACHE*` constant definitions from the generator-page template loader. The plugin now relies on the standard `nocache_headers()` HTTP-header approach, which has no request-global side effects on other plugins or pages.

= 1.1.1 =
* Fixed: After clicking "Reset to Defaults" on the Tools tab, the QR generator page would 404 until you manually clicked "Flush Permalinks." The reset now schedules the rewrite-rule refresh automatically.
* Internal polish pass — refactored several admin and REST-handler methods for readability without changing behavior. Verified against the WordPress Plugin Check tool.

= 1.1.0 =
* **Requires PHP 8.2 or higher** (was 8.0). If your host is still on PHP 8.0 or 8.1, upgrade your PHP version before installing this release. (PHP 8.0 has been end-of-life since November 2023; PHP 8.1 since December 2025.)
* All Pro feature scaffolding has been removed from the free plugin. Free continues to support every feature it shipped before — all 14 content types, PNG and JPEG downloads, the 5 built-in color presets, and rate-limited public generation. Pro-only features (SVG and PDF downloads, custom color picker, admin-defined color presets, logo overlay) live exclusively in the separate Intown QR Studio Pro add-on.
* Updated the chillerlan/php-qrcode library from 5.0.5 to 6.0.1.
* Many new extension hooks for plugin developers, including `intown_qrs_pre_generate`, `intown_qrs_qr_options`, `intown_qrs_qr_output`, `intown_qrs_form_after_colors`, plus admin-section render and filter hooks. See the plugin documentation for the full list.
* Removed 12 Pro-specific placeholder hooks that are no longer needed now that Pro features live in the Pro plugin.

= 1.0.3 =
* Dashboard Quick Status — Content Types row now reads "N types displayed" (was "N types available") and shows "N of M types displayed" when some types are filtered out, so admins can see at a glance that content types are disabled
* New `intown_qrs_content_types_max_count` filter for add-ons to raise the Dashboard's content-type ceiling

= 1.0.2 =
* Dashboard License section heading now reads "Upgrade to Pro" when Pro isn't installed — clearer mental model when the section is a pure CTA
* General → License top-of-page description now adapts to three states (no Pro, Pro installed, Pro licensed) via the new `intown_qrs_license_section_description` filter that Pro add-ons can hook

= 1.0.1 =
* Admin UI polish — Dashboard Quick Links with icons, cleaner License section copy, removed stale "Manage License" button from the free upgrade CTA
* License settings tab: removed the locked placeholder license key input and Save Changes button; description now adapts to whether Pro is installed
* Credits section: version now displays as "Intown QR Studio X.X.X" (and a second line for Pro if installed) instead of "Free X.X.X"; added `intown_qrs_credits_libraries` filter for extensibility
* Added `data-has-saveable` attribute pattern for subsections with no editable fields — Save Changes button auto-hides on locked QR Code subsections (Content Types, Color Picker, Logo) when Pro isn't active
* New `\IntownQRStudio\AdminUpgradeCTA` helper class centralizes the upgrade CTA rendering, with section-specific and general filters so add-ons can swap the button label/URL without duplicating the locked-preview markup
* Better copy on the "Get a Pro License" upgrade card

= 1.0.0 =
* Initial release

== Upgrade Notice ==

= 1.1.2 =
Drops three `DONOTCACHE*` constant definitions in favor of the standard `nocache_headers()` HTTP-header approach. No user-facing behavior change.

= 1.1.1 =
Reset Defaults no longer requires manually flushing permalinks afterward; minor internal polish.

= 1.1.0 =
Major release — PHP 8.2 minimum (was 8.0). If you also use Intown QR Studio Pro, update Pro to 0.5.0 or later at the same time.

= 1.0.3 =
Clearer Content Types counter on the Dashboard — now shows "N of M types displayed" when some types are filtered out.

= 1.0.2 =
Admin UI polish — clearer dashboard heading and three-state License description with a new filter for Pro add-ons.

= 1.0.1 =
Admin UI polish and developer hooks for extensibility.

= 1.0.0 =
Initial release.
