=== Fixyno Core ===
Contributors: netcreator
Tags: custom-post-type, appliance-repair, hvac, services, companion-plugin
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Companion plugin for Fixyno Appliance Repair: adds Services CPT, taxonomies,
and service-card meta fields — no tracking or front-end assets.

== Description ==

Fixyno Core is the official **optional companion plugin** for the Fixyno
Appliance Repair WordPress theme (slug: `fixyno-appliance-repair`). It
adds a structured **Services Custom Post Type (CPT)** with taxonomies,
service-card meta fields, and helper functions that Fixyno theme templates
consume to render themed home-service and HVAC service cards.

Fixyno Core stores everything in standard WordPress `wp_posts` +
`wp_postmeta` tables, which means your service content is **portable — it
survives theme switches**. If you ever move off Fixyno, all of your service
descriptions, featured images, prices and categories are preserved and can
be migrated anywhere.

= What this plugin actually does =

* Registers the **Services** custom post type (`fixyno_service`):
  title, editor, featured image, excerpt, custom-fields, revisions,
  page-attributes, and full block-editor (REST API) support.
* Registers **Service Categories** (hierarchical taxonomy, like Post
  Categories) → `fixyno_service_cat`
* Registers **Service Tags** (flat taxonomy, like Post Tags) →
  `fixyno_service_tag`
* Adds two Service editor meta boxes with 6 sanitized meta fields:
  * Material Symbols icon name (used when no Featured Image exists)
  * Corner badge text — "Most Requested", "Gas Certified" etc.
  * Starting price / price range — "From $79" or "$79 – $199"
  * Custom CTA button label — "Book Service", "View Details"
  * Custom CTA URL — replaces default single-service permalink
  * Featured features list — one bullet per line, renders as checklist
* Adds 5 extra admin columns on the Services list screen: Icon preview,
  Badge, Price, Service Categories, and Featured Image thumbnail.
* Enqueues Material Symbols font on the Service editor admin screen ONLY
  (so icon name previews render as the correct glyph in admin columns;
  ZERO front-end / public asset enqueues from this plugin).
* Provides 3 public helper functions for Fixyno theme templates:
  `fixyno_core_get_service_meta()`,
  `fixyno_core_get_service_features_array()`, and
  `fixyno_core_get_service_card_cta()`.
* Registers a lightweight Dashboard → Fixyno Core "About" admin page
  with setup documentation, feature overview, and next-step links.

= Theme compatibility =

This plugin only exposes data and helpers. It does NOT output anything
visible on public site front-ends by itself. **Visual rendering is done
100% by the Fixyno Appliance Repair theme's templates.** Installed on a
site that does not use Fixyno, the plugin activates cleanly and does
nothing beyond registering the post type + taxonomies.

= Important =

**This plugin is COMPLETELY OPTIONAL.** The Fixyno Appliance Repair theme
works 100% standalone without it — the home Services section simply uses
six Customizer-editable cards instead. No nags, no required activation,
no notices for non-admin users.

= Plugin principles =

* No external API calls, no remote assets loaded on public front-ends.
* Zero tracking, zero telemetry, zero data collection of any kind.
* Every public-facing meta output is escaped (`esc_html`, `esc_url`,
  `esc_attr`, `esc_textarea`) by the helper functions / save callbacks.
* Every save callback is gated by nonce + user-capability check +
  post-type guard + revision/autosave filter.
* Single text domain `fixyno-core` with
  `Domain Path: /languages` — works with the WordPress.org language-pack
  system when translations are contributed.
* Activation hook flushes rewrite rules (CPT permalink base `/service/`
  plus taxonomies `/service-category/` and `/service-tag/`).

== Installation ==

= Automatic installation via WordPress.org plugins directory =

1. Go to **Plugins → Add New**.
2. In the search box type "Fixyno Core" and hit Enter.
3. Click **Install Now** next to the Fixyno Core plugin by Netcreator.
4. Click **Activate Plugin**. A new "Services" menu appears in the admin
   sidebar.

= Manual installation via Upload Plugin button =

1. Download `fixyno-core.zip` to your computer.
2. Go to **Plugins → Add New** in your WordPress admin.
3. Click the **Upload Plugin** button at the top of the screen.
4. Use the file picker to select the zip you downloaded, then click
   **Install Now**.
5. When the installation finishes, click **Activate Plugin**.

= Manual FTP installation =

1. Unzip `fixyno-core.zip` on your local computer.
2. Upload the entire `fixyno-core/` folder to your
   site's `/wp-content/plugins/` directory.
3. In WordPress admin go to **Plugins** and click **Activate** under
   the "Fixyno Core" entry.

= After activation =

1. Go to **Services → Add New** and create your first service.
2. (Optional but recommended) In **Services → Categories** and
   **Services → Tags** organise your services into taxonomy terms.
3. Open **Appearance → Customize → Home → Services** and change the
   **Data Source** dropdown to **Services CPT** to display CPT items on
   the Fixyno homepage. (If left unset, Fixyno uses its built-in
   Customizer cards as a fallback.)
4. Publish your site — Fixyno will render the CPT service cards on
   the home page and single-service templates for each entry.

== Frequently Asked Questions ==

= Do I NEED this plugin to use Fixyno Appliance Repair theme? =

No. Fixyno works 100% standalone. The plugin only exists so appliance
repair companies with large service lists can use the power of a real
CPT with taxonomy organization, searchability, and postmeta persistence
across themes. Theme users who want 6 simple service cards will never
need to install Fixyno Core at all.

= Can I use this plugin with a different theme? =

You CAN activate it safely with any theme (it won't break anything) but
since all visual rendering is handled by Fixyno templates, there will
be no "styled" output on front-ends with any other theme — just the
bare WordPress single-service archives (like a plain custom post type).

= Where are the plugin settings? =

There is no settings page. Everything is configured directly in the
Service editor (meta boxes) or on the WordPress Customizer screen of
the Fixyno theme. The Dashboard → Fixyno Core page only shows setup
documentation.

= Does this plugin load CSS or JavaScript on my public site? =

Absolutely no public assets are enqueued by Fixyno Core. The only
`wp_enqueue_style` call this plugin makes is on the Service editor
admin screen (inside `admin_enqueue_scripts` action, filtered by
`$screen->post_type === 'fixyno_service'`) to render Material Symbols
glyph previews in admin columns. This never runs for logged-out users
or on the front-end.

= Does Fixyno Core phone home? =

No. `grep` the entire plugin — you will find exactly zero `wp_remote_*`
or `curl` or `file_get_contents(https://...)` calls. No pings, no
license checks, no telemetry, no external resource fetches of any
kind (except the Material Symbols admin-only stylesheet, which is from
Google Fonts and loads only for logged-in editors on the Services
screen).

= What happens if I deactivate the plugin? =

All of your service posts, meta, and taxonomy terms are preserved in
the database exactly as-is. The URLs under `/service/` stop working
until you activate Fixyno Core again (or register the same post type
slug via another method). The Fixyno theme silently falls back to
Customizer service cards. No 404s cascade into any other section of
your site.

= Is this plugin translatable? =

Yes. All user-facing strings use the single text domain
`fixyno-core` (Text Domain declared in the plugin header,
Domain Path `/languages`). Translations are loaded with a three-tier fallback:
(1) WordPress.org GlotPress language-pack MO in
`WP_LANG_DIR/plugins/` (for w.org installs), (2) local MO inside this
plugin's `/languages/` directory (for manual zip or TGMPA installs before
w.org approval), and (3) a standard language-pack path as last-ditch. The
WordPress.org language-pack system automatically distributes approved
community translations when contributors submit them.

= Can I contribute patches or report bugs? =

Yes. Pull requests and bug reports are welcomed through the plugin's
listing page on WordPress.org.

== Screenshots ==

1. **Services admin list** — added admin columns (Icon, Badge, Price,
   Categories, Featured Image thumbnail) at a glance.
2. **Service editor sidebar meta box** — Material Symbols icon name,
   corner badge, starting price, custom CTA label and URL.
3. **Service editor pricing & features meta box** — featured bullets
   list (one per line).
4. **Dashboard → Fixyno Core About page** — setup documentation and
   next-step jump links.
5. **Service Categories + Service Tags taxonomy editor screens**.

== Changelog ==

= 1.0.2 =
* Removed duplicate `Tested up to: 7.1` line from fixyno-core.php plugin
  header. Per WordPress.org Plugin Handbook, `Tested up to` is declared
  ONLY in readme.txt (L5 in this file) — never in the PHP file header.
  Eliminates precedence conflicts between PHP header value and readme
  value when the plugin page, search results, or compatibility checker
  displays the tested-up version.
* Version bump 1.0.0 → 1.0.2 for WP.org plugin re-upload (clears the
  "You've already uploaded that ZIP file" duplicate-zip hash check).

= 1.0.0 =
* Initial public release of Fixyno Core.
* Services Custom Post Type (`fixyno_service`) — full Gutenberg REST
  support, 8 editor + display features, revision support, public
  archive + permalinks.
* Service Categories taxonomy (`fixyno_service_cat`) — hierarchical
  with archive permalinks.
* Service Tags taxonomy (`fixyno_service_tag`) — flat with archive
  permalinks.
* 6 sanitized service meta fields: icon, badge, price range, CTA
  label, CTA URL, feature bullet list.
* 5 custom admin columns for Services list screen + Material Symbols
  admin-only enqueue for icon glyph preview.
* 3 public helper functions for Fixyno theme template consumption.
* Dashboard → Fixyno Core About documentation page + Plugins row
  "Manage Services" action link.
* Activation / deactivation rewrite-rule flush hooks.
* Text domain `fixyno-core` with Domain Path
  `/languages` — translatable via WordPress.org language packs.
* Zero front-end asset enqueues, zero external API calls, zero
  tracking — fully WordPress.org plugin-review compliant.

== Upgrade Notice ==

= 1.0.2 =
Removed duplicate Tested-up-to declaration from fixyno-core.php plugin header
(now declared only in readme.txt, per Plugin Handbook). Version bump clears
WP.org duplicate-zip "already uploaded" hash conflict for re-upload.

= 1.0.0 =
Initial public release. Install once from WordPress.org plugins
directory or upload the zip manually via Plugins → Add New → Upload
Plugin. Requires WordPress 6.0+ and PHP 7.4+. Works exclusively (but
optionally) with the Fixyno Appliance Repair theme.
