YTMP4.GURU STATIC V5 — cPanel / WHM
===================================

PACKAGE CONTENTS
- Static frontend pages generated from the supplied WordPress export.
- Admin panel at /jkdon/ with JSON-backed post and category management.
- Existing 799 post records retained in /data/posts.json.
- /build.php regenerates homepage, post pages, category pages, search index and sitemap.

INSTALL
1. Back up the current public_html before replacing files.
2. Extract the ZIP and upload its contents directly into public_html.
3. Use PHP 8.1 or newer.
4. Open /jkdon/ and sign in using the initial credentials below.
5. Change the initial password immediately after first login.

INITIAL ADMIN LOGIN
Username: JKDONFF5
Password: JKDONFF5

V5 CHANGES
- Sticky / featured posts have a separate “Trending Movies & Web Series This Week” heading on the homepage. Up to four posts can be sticky.
- Homepage shows 30 latest non-sticky posts per page.
- Category archives are paginated at 30 posts per page.
- Homepage logo/header image links back to the homepage.
- Header search displays live matching suggestions while typing.
- Homepage category links have a distinct card style.
- Post info typography and spacing improved.
- Screenshot URLs are extracted from Gutenberg image blocks in post content; the featured poster is excluded from the screenshot gallery.
- Admin has category add/delete management and multi-select categories in the post editor.
- Admin post editor includes a live preview for title, poster, categories, genre, description, download buttons and screenshots.
- Saving posts or settings regenerates the static site.

DATABASE / IMPORT NOTES
- Existing post data is preserved and enriched from the supplied newfilms_db.sql export.
- Featured image URLs are retained for all 799 imported posts.
- The supplied SQL export contains 480p URL values for 784 posts; 15 records have an empty 480p field in that export. No fake URL is generated for those empty fields.
- Genre is populated for 795 posts, description for 767 posts, and screenshot image URLs were extracted for 728 posts. Empty source fields remain empty rather than being fabricated.
- Remote Blogger image URLs still depend on Blogger serving the image. If a remote host removes or blocks an image, replace its URL in Admin.

IMPORTANT
- Keep /data/.htaccess in place; it prevents direct access to JSON data.
- Back up /data/posts.json, /data/categories.json and /data/settings.json before editing.
- Review custom HEAD/BODY/FOOTER code before saving; only paste trusted code.
- Test representative homepage, category, post, search and download pages before switching production traffic.

V7: Custom static 404.html, Cloudflare/Nginx static delivery notes, configurable footer colors/title, sticky Telegram button. See CLOUDFLARE-STATIC-DDOS-SETUP.txt.

V15 ANALYTICS UPDATE
- Added a dedicated GA4 Measurement ID field under FilmyFly dashboard → Website & SEO Settings.
- GA4 tag is generated once in the HEAD on every static page after saving settings.
- Existing standard GA4 snippet was migrated from BODY code to the dedicated setting to avoid duplicate page views.
- Paste only the Measurement ID (G-XXXXXXXXXX), not the full script.

V16 SEARCH / 404 / CLOUDFLARE WAF UPDATE
- Header search submits a GET query to /search.html?q=...; search results read the URL query and render matches safely without injecting result HTML.
- Root .htaccess now provides the custom /404.html for Apache/LiteSpeed while preserving the 404 status.
- For CloudPanel Nginx, use nginx-404.conf.example and edit the existing location / block; do not add a duplicate location block.
- FilmyFly dashboard → Cloudflare WAF provides copyable Cloudflare 404-rate-limit and common-scanner expressions. These are templates and must be deployed manually in the Cloudflare dashboard; the admin panel does not change Cloudflare settings.
- See CLOUDFLARE-STATIC-DDOS-SETUP.txt for response-based 404 counting, cache guidance and validation steps.

V17 PATH / DOMAIN UPDATE
- Admin dashboard folder is now /jkdon/ and its login/dashboard branding is FilmyFly.
- The old /admin/ URL redirects to /jkdon/ on Apache/LiteSpeed; CloudPanel Nginx redirect is documented in nginx-404.conf.example.
- Post URL prefix remains /movie/ exactly. Only whole slug tokens change: movie -> moviie, esub -> esuub, hevc -> hevvc.
- Post titles, SEO titles, descriptions and visible text are not rewritten.
- Existing post slugs are normalized and the static post folders, search index and sitemap are regenerated.
- robots.txt is regenerated with the active domain in its Sitemap URL whenever the static site is rebuilt.
- Website & SEO Settings has an optional Canonical domain override. Leave it blank to detect the domain used to open the dashboard; enter a hostname only when you intentionally want to pin a canonical domain.
- Save Settings & Regenerate Site rebuilds robots.txt and sitemap.xml.
