Author: Admin 01

  • Build Log 003 — Campaign Generator Working

    The No Signal Media backend campaign generator is now working as a real proof of concept.

    This build adds a private editorial system where one Campaign can generate multiple related Campaign Posts from a single AI request. The goal is to create structured media inventory, not auto-published filler. The system is designed for review first, publishing later.

    What was built:

    Created the Campaign custom post type.

    Created the Campaign Post custom post type.

    Added ACF fields for campaign setup:

    Subject

    Modifier Set

    Post Count

    Start Date

    Posting Rhythm

    Generation Status

    Batch ID

    Raw AI JSON

    Added ACF fields for generated campaign posts:

    Parent Campaign

    Post Order

    Scheduled Date

    Image Prompt

    Image URL

    Small Essay

    Social Caption

    Next Post Teaser

    Approval Status

    Source URL

    Added campaign-tools.php inside the child theme inc folder.

    Loaded campaign-tools.php safely from functions.php.

    Added a Campaign Posts review box to the Campaign edit screen.

    Added a local test generator that creates three test Campaign Posts without using OpenAI.

    Confirmed the backend relationship works:

    Campaign Posts attach to the correct parent Campaign.

    Posts sort by campaign order.

    Scheduled dates display cleanly.

    Approval status displays correctly.

    Added a real AI Campaign Generator button.

    Confirmed one OpenAI call can generate multiple structured Campaign Posts.

    Confirmed the raw AI response is saved to the Campaign for debugging and recovery.

    Added a Campaign Post Preview meta box so generated content can be reviewed without opening every post individually.

    First real AI generation test:

    Campaign:

    Modern Folk Revival: Beginner Learning Series

    Generated posts:

    What People Mean When They Say “Folk Revival”

    From Roots Music to Indie Folk

    Why Folk Songs Keep Returning to Place and Memory

    How Radio Kept the Revival Moving

    What the Modern Folk Revival Looks Like Now

    Result:

    The core backend workflow is proven.

    One Campaign can now create a scheduled batch of AI-generated Campaign Posts from one API call. The system keeps everything private and reviewable. Nothing is auto-published. This creates a safer editorial layer where AI can help generate structured drafts, but the site owner keeps control.

    Current status:

    Working MVP.

    Next logical steps:

    Add Approve / Reject controls to each Campaign Post.

    Add a “Create Public Posts” action for approved Campaign Posts.

    Add stronger prompt controls for tone, platform, length, visual style, and campaign type.

    Add optional cleanup controls for deleting test batches.

    Later, connect approved Campaign Posts to public posts, Learn content, social exports, ticker items, or radio scripts.

    Notes:

    This is an important architecture milestone. The Campaign is now the unit of generation, not the individual post. That keeps cost lower, improves sequence quality, and makes the system feel more editorial than random.

  • Build Log 004 — Learning Tool Connected

    The Learn page now has a working GPT-powered learning tool with selectable learning styles, modifiers, random high-key hero backgrounds, and private logged-in access.

    The Learn section is now working as a private learning tool inside the No Signal Media member house.

    This update adds a GPT-powered learning interface to the existing center content shell. The tool lets a logged-in user enter a topic, choose a learning style, add modifiers, and receive a generated learning thread directly on the page.

    What changed

    • Created the Learn Tool shortcode:

      Private Learning House

      Learning Thread

      Choose a concept. Pick a style. Follow the signal.

      Modifiers

      Output Preview

      Your lesson will appear here.

    • Added a dedicated Learn feature file: inc/learn-tool.php
    • Added OpenAI API support through a secure constant in wp-config.php
    • Connected the form to WordPress AJAX
    • Added six learning styles: Step-by-Step, Basics, Big Picture, Hands-On, Cheat Sheet, and Socratic
    • Added modifiers: Simple, Visual, Deep, Fast, and Coach
    • Added random high-key hero backgrounds from the learning background folder
    • Styled the Learn page to stay within the No Signal visual system

    Confirmed working

    • The shortcode renders inside the existing page architecture.
    • The Learn page keeps the common shell: left Rooms navigation, center content, and right Tools navigation.
    • The form submits without leaving the page.
    • The API key is being read correctly from wp-config.php.
    • The OpenAI API request completes successfully once credits/billing are active.
    • The generated lesson appears under “Your Learning Thread.”

    Important note

    ChatGPT Plus and OpenAI API billing are separate. The first successful API connection returned a quota error until API credits were added. After credits were enabled, the learning tool returned a live generated response.

    Current state

    The tool is now functional as a first working MVP. It is not yet polished as a full learning product, but the foundation is in place: input, style selection, modifier selection, prompt routing, API response, and visual integration.

    Next steps

    • Improve output formatting so generated lessons feel more like No Signal Learning Threads.
    • Add better styling for headings, lists, and lesson sections.
    • Make each learning style feel more distinct.
    • Add a cleaner error message for API billing/quota issues.
    • Later: add saved learning history, favorite lessons, and user default learning style.

    This marks the first working AI-powered tool inside No Signal Media.

  • Build Log 003 — Radio Becomes a System

    Build Log 003 — Radio Becomes a System

    Category: Build Log
    Tags: radio, cpt, acf, shell, broadcast-archive, no-signal-radio


    Summary

    Radio is now structured as a real No Signal Media feature system, not just a page.

    We moved from a placeholder page into a working broadcast archive with real content, real structure, and a clear direction for expansion.


    What Changed

    Templates + Structure

    • inc/radio-view.php → Radio landing
    • single-radio_show.php → Single show layout
    • inc/radio-single-view.php → Single show content layer

    ACF Field System (Radio Show)

    Each show now supports:

    • Description
    • Vibe Statement
    • AI Voice Intro Script
    • Notes
    • Track List (repeater)
    • Categories
    • Tags
    • Playlist URL
    • 9:16 Cover Image
    • Feature Cover (optional wide image)
    • Featured toggle
    • List Type

    Design Direction

    Radio now follows the No Signal shell system:

    • Left: Rooms navigation
    • Center: Content
    • Right: Tools

    Radio Landing Layout

    • Featured Signal (hero)
    • Music Sets section
    • Horizontal archive scroll
    • Filter placeholder (future)

    Single Show Layout

    • Poster image (9:16)
    • Play button (external)
    • Description
    • Vibe section
    • Track list
    • AI voice intro
    • Notes
    • Suggested shows (future expansion)

    Key Decisions

    • Radio Shows are public content
    • Amazon Music is used as the playback destination
    • No embedded player yet
    • 9:16 artwork is the primary visual format
    • Wide images are optional for featured use only
    • CSS is now being separated into:
    /assets/css/radio.css
    

    This allows cleaner iteration without touching global styles


    Current Issues / Notes

    • Button width still needs refinement to follow poster sizing rules
    • Default page title (“Radio”) needs to be hidden
    • Some spacing and grid behaviors still being tuned inside shell

    Next Steps

    • Finalize radio.css cleanup
    • Lock button + poster alignment system
    • Add category filtering where placeholder exists
    • Populate more real shows using ACF structure
    • Revisit live radio layer later (broadcast / streaming)

    Status

    Radio is now:

    • Structured
    • Scalable
    • Aligned with system architecture

    This is no longer a page.
    It is now a feature.

  • Build Log 002 — Messaging Becomes a Product

    Today’s build focused on turning the No Signal Media message system from a working feature into something that feels like a real product.

    The message system now supports true read and unread state. Messages save as unread by default, then switch to read when a user opens the related conversation. The inbox can now show an unread count, making the system feel more alive and useful.

    We also cleaned up the code structure. Instead of continuing to grow functions.php into one large file, the message system was moved into its own included file:

    /inc/nsm-messages.php

    That keeps the theme core stable while allowing the message system to evolve separately.

    The biggest UX improvement was the conversation view. Messages now behave more like a familiar chat interface:

    • Incoming messages align left
    • Outgoing messages align right
    • Replies stay inside the same conversation card
    • The reply box is attached directly beneath the thread
    • The interface no longer feels like starting a brand-new message every time

    This makes the private member system feel more like a real private media house, not just a collection of WordPress pages.

    CURRENT STATE:

    • Message CPT working
    • Signal Feed working
    • My Room message preview working
    • Messages page working
    • Conversation view working
    • Send/reply form working
    • Read/unread state working
    • Unread count working
    • Chat-style conversation UI working
    • Message system isolated in /inc/nsm-messages.php

    NEXT:
    The next likely messaging improvement is inbox thread grouping, so multiple messages from the same person collapse into a single conversation preview instead of showing every message as a separate card.

  • test post

    tester testing

  • Build Log 002 — Messages Feed Connected

    Today we connected the My Room Messages section to real message data.

    The Messages section is no longer only static placeholder content. It now pulls from a private Messages custom post type and displays published messages assigned to the current logged-in user.

    What was completed:

    • Created and tested the Messages CPT
    • Confirmed the post type slug is message
    • Added ACF message fields for sender, recipient, status, and type
    • Diagnosed why messages were not appearing
    • Found that ACF fields were inside a parent Group field named message_fields
    • Updated the query to use the correct stored meta keys
    • Confirmed recipient-based message targeting works
    • Displayed real messages inside the My Room Signal Feed

    Important technical note:

    Because the ACF fields are inside a Group field named message_fields, the saved meta keys are prefixed.

    The recipient field is queried as:

    message_fields_nsm_recipient_id

    The message type is read as:

    message_fields_nsm_message_type

    The message status is read as:

    message_fields_nsm_message_status

    Current result:

    The My Room page now shows real Messages posts in the Signal Feed when the current logged-in user matches the message recipient ID.

    Next possible step:

    Create a front-end Send Message form so users can send messages without using wp-admin.

  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!