Release notes / WP Career Board
Free Plugin Plugin

WP Career Board

Most job board plugins still use shortcodes and jQuery and feel bolted-on. WP Career Board is built on Gutenberg blocks and the Interactivity API: live filtering, employer dashboards, candidate applications, native BuddyPress and Reign integration.

19 releases
v1.8.1 latest
October 14, 2026 shipped

v1.8.1 Latest

October 14, 2026
New 11 Improve 14 Fix 24 Security 7 Dev 3

New

  • Employers can run several companies; the dashboard, applications and Post a Job cover all of them.
  • Find Jobs and the search bar accept several job categories at once.
  • Employer Overview shows what needs attention: applications waiting for review and jobs closing within 7 days.
  • Site admins post, move, republish and feature jobs for free.
  • Post a Job has a formatting toolbar for the description.
  • Moderators get a Review jobs link on their dashboard.
  • Employers can pick their own application deadline, up to the board's listing length.
  • Admin job editor: Apply URL and Apply Email fields, and a No expiry option.
  • Order field for job categories, types, locations, experience levels and tags; experience levels default to seniority order.
  • Child categories and locations nest under their parent in every filter and form, with a search box for long category lists.
  • View resume link on the admin application screen and in the Applications list.

Improve

  • Every Overview figure opens the list it counts, including this week's applications.
  • Dashboard rows show one main action with the rest in a menu, and every empty list says what to do next.
  • Applications opens the newest applicant on desktop, in one clean panel where an unrated applicant shows empty stars.
  • Credits appear on the employer dashboard only when a board charges or the employer holds credits.
  • Find Jobs filters stay in view while you scroll, long filter groups fold, and active filters sit beside Clear all.
  • Links and labels in the site's brand colour stay readable on any accent colour, in light and dark mode.
  • Employers only see the Saved tabs they can use.
  • Members are shown by their name or "A candidate", never by their login, and candidates show their resume photo.
  • Job pages show typed dash lists as bullet points and one main Apply button.
  • Load More is a real next-page link, so job pages work without JavaScript and can be crawled. New sites show 12 jobs per page.
  • Find Jobs filters are kept in the address bar: shared links open with the same filters and Back restores them.
  • Saved Companies show the company logo and Saved Resumes show the candidate's photo.
  • A job located Remote is always treated as remote, on the job page, in filters, search, feeds and Google for Jobs.
  • Failed saves, removals and status changes now tell the member instead of failing silently.

Fix

  • A company stored with a type label (such as Private) showed "Select type" on its profile.
  • A row's menu on the last row of a list was cut off, so Withdraw, Delete and Remove could not be reached.
  • Taking a company off the site now closes its jobs, and unreviewed jobs go to draft.
  • Unfeatured jobs no longer sort below older jobs.
  • Editing a live job no longer asks for credits.
  • Job excerpts and Google job markup no longer show raw shortcode text.
  • Text contrast on BuddyX, BuddyX Pro and Twenty Twenty-Five.
  • Setup wizard was blank on Windows servers and symlinked installs.
  • Request data export button on the candidate dashboard did nothing.
  • Headers already sent warning when dismissing or unpublishing a reported job and when trashing companies in bulk.
  • Members who applied or built a resume were missing from the admin Candidates screen.
  • Deleting a user left their jobs and companies public; jobs now close and companies return to draft unless reassigned.
  • A guest using an email that already has an account is asked to sign in instead of creating an unlinked application.
  • Employer applications panel lost its filters when a status had no applications.
  • Admin-created jobs used USD instead of the site currency, rejected salaries that were not multiples of 1000, and never expired without a deadline.
  • Save Job no longer shows to employers, who cannot use it.
  • Copy Link did not work on sites without HTTPS.
  • Dashboard tabs: every tab updates the address, Notifications can be linked, and the Overview tab no longer flashes on reload.
  • Welcome card no longer pops in and shifts the candidate dashboard.
  • Notification times read one unit too small.
  • Jobs list counts stay correct after approving or rejecting inline; the Jobs search box has a placeholder.
  • Spacing on the Delete my account form and on settings cards.
  • Saved Companies on the candidate dashboard did not show the industry.
  • Updates screen warning from the bundled licensing library.

Security

  • Through the WordPress REST API, only an admin can set a job's company, board or featured flag.
  • Free posting for admins applies only when an admin acts, not when someone else acts on an admin's job.
  • Job descriptions run shortcodes only for authors trusted with unfiltered HTML.
  • The confirmation email link signs in only the browser that created the account.
  • Visitor IP from a proxy header uses the address your own proxy added.
  • Private job details, applicant counts, private profiles and repeat guest applications no longer reveal anything through REST answers.
  • Private documents always download instead of opening in the browser.

Dev

  • GET /wcb/v1/employers/me/applications accepts since_days, and the filter wcb_company_types sets the company type list.
  • New filter wcb_candidate_resume_url and helper JobDeadline::default_end_for_board().
  • Contract checks in local CI catch silent failures, unstyled classes, unbound actions, redirects inside admin screens and brand colour used as text.

v1.8.0

September 30, 2026
New 13 Improve 7 Fix 12 Security 13 Dev 3

New

  • Setup wizard with safer defaults, regrouped settings and a clean uninstall.
  • Credits tab with buy links wherever a job needs credits, paid Featured jobs, and featured jobs listed first everywhere.
  • Private hiring notes and a 1-5 rating on each application, plus an employer CSV export of applications.
  • Rejection email, guest status emails, welcome and account-deletion emails, and per-member email preferences.
  • Email editor preview, and every email is built in the recipient's own language.
  • One Brand setting for emails, the app and the PWA.
  • Google for Jobs markup built from the job's own data, with admin controls.
  • Expired jobs show a closed page instead of a 404, and employers are warned before a job ends.
  • WP Job Manager import brings closed jobs, pay units, company pages and applications.
  • Alert me saves the whole search, including the guest email.
  • Pipeline link on each dashboard job row.
  • A Site Health check flags a theme's copy of a Career Board template once it falls behind the plugin's.
  • Visitor IP address setting, so per-IP limits see the real visitor behind a proxy or CDN.

Improve

  • One job search for every surface; filters no longer bury results, featured jobs lead a keyword search, and the salary filter compares pay per year.
  • Application lists, counts and the applications board work at any size and with keyboard and touch.
  • One shared page container, heading scale, card, button, form field and control height across every theme, including block themes.
  • Status, danger and small text pass WCAG AA contrast on every theme, and every tap target is at least 40px.
  • The notification bell shows a relative time instead of a raw timestamp.
  • Admin dashboard totals, candidate and employer counts and the companies list stay fast on large sites.
  • Translation ready: currency names, the import log, the email pager and every admin string are translatable.

Fix

  • Block scripts and styles now load with the plugin version, so browsers pick up changes after an update.
  • Post a Job saves the description editor before Next or Publish, and a double-click no longer creates two jobs or skips a step.
  • Screening questions render real controls, store the chosen answer and show it to the employer.
  • Salaries are never rounded, including values in the millions.
  • Guests see a sign-in link for saving jobs, and apply follows the Require login to apply setting everywhere.
  • Candidates see the post-apply job alert prompt again.
  • A copy missing its bundled update library no longer takes the site down; automatic updates pause and admins are told to reinstall.
  • The application edit screen and the block editor no longer write notices to the debug log.
  • Cancel or Escape on a confirm dialog no longer carries out the action, and destructive dialogs open with Cancel focused.
  • Legacy featured jobs without a start date now expire.
  • Resume import requires Pro on REST and WP-CLI, matching the admin screen.
  • Shortcode attributes map to the block's settings correctly.

Security

  • Candidate CVs and files live in private storage behind a gated download.
  • Changing a member's email or password requires the current password, including on the REST user route.
  • A wrong password no longer reveals whether an unconfirmed account exists, and a lost confirmation email can be re-sent.
  • Uploads accept images only where images are expected, with shared per-IP limits and a private app config.
  • Employers cannot apply to jobs, required questions are enforced on the server, and apply and notes are protected against double submission.
  • Banned employers' listings stay hidden, suspended candidates and hidden companies are off the REST API, and only established reporters count toward auto-hide.
  • Personal data export and erasure cover every Career Board record, and deleted accounts anonymise their applications.
  • Signed-out visitors can no longer list guest applications through the candidate applications endpoint.
  • Employers can no longer publish a job past moderation by closing and reopening it.
  • Guest applications move to a new account only after that account confirms its email address.
  • The private file link serves only candidate files, not other attachments.
  • The job and company blocks no longer show unpublished posts named in a shortcode.
  • Bulk Approve on the Jobs screen only acts on jobs.

Dev

  • Community notification contract so a notification center gets one signal per event, and every status change fires wcb_application_status_updated.
  • Hooks for custom field details and filter chips.
  • RTL stylesheets are generated at build time.

v1.7.2

September 17, 2026
Fix 2 Dev 1 Compat 1

Fix

  • The From Name and From Email set under Settings > Notifications now apply to every Career Board email. Applications, job alerts, deadline reminders and expiry notices were being sent from the WordPress default address instead.
  • The notification sender no longer changes the sender of other emails on the site, such as password resets or other plugins' mail.

Dev

  • wp wcb scale seed now uses the setup wizard's job type names, so a site that has run both no longer shows duplicate Job Type filters.

Compat

  • Tested with WordPress 7.1.

v1.7.1

September 16, 2026
New 8 Improve 10 Fix 27 Security 5 Dev 9

New

  • Site owners can add, rename and retire the industries offered on job and company forms, from Settings > Industries. They were previously fixed in code, and a retired industry kept reappearing as a directory filter.
  • Employers can set an opt-in cap on how many jobs they keep active at once, superseded automatically when credits are in use.
  • Application custom-field answers are readable in the employer dashboard, the admin application screen and the REST API. They were saved but never shown anywhere.
  • The statuses an employer can set on an application are published to companion apps, so an app shows your site's statuses in your site's language instead of its own built-in list.
  • Members can delete their own account from the candidate dashboard, with a 14 day grace period they can cancel during. Previously the button only queued a request for an administrator to action by hand.
  • New Settings > Mobile App tab: brand the companion app with an accent colour, logo, sign-in background and dark mode default, and publish your terms, privacy policy, community guidelines and abuse contact. These were served to the app with no way to set them.
  • New Settings > Privacy tab: read the GDPR request log, see which accounts are scheduled for deletion, and cancel a pending deletion.
  • Content width for Career Board pages is now a setting under Settings > Job Listings, where 0 follows your theme. It was previously changeable only in code.

Improve

  • Signing in to the app with your website password is now an opt-in setting, off by default, with a switch under Settings > Job Listings. The app's "Connect with WordPress" option still works without it.
  • Signing out of the app now revokes that device's access key on the site, instead of leaving it valid until someone deletes it by hand.
  • Sign-in rate limits read the real visitor address behind a proxy once you name your proxy's header, and both limits are adjustable. On a site behind Cloudflare or a load balancer the old behaviour could lock out every member at once.
  • The company directory and the single company API now return the same localised industry, size and verification labels. The single company response previously returned raw values such as "technology".
  • Employer application lists accept page and per_page properly instead of silently returning only the most recent 20.
  • Faster on large sites: deadline reminders resolve their recipients in one indexed query, AI applicant scoring is queued once per job instead of once per applicant, the Boards admin list batches its job and stage counts, and several list queries no longer defeat their database index.
  • Searching the admin Applications list is far faster on large sites, and no longer scans every job and user row on each search.
  • Settings buttons across the plugin now carry the plugin's own button styling, and the License tab controls match the settings design instead of rendering as unstyled WordPress defaults.
  • Other plugins' admin notices no longer crowd Career Board screens. The plugin's own success and error messages still show.
  • Member reports can be dismissed from the Candidates screen. Nothing ever cleared them, so the warning badge was permanent.

Fix

  • The company directory showed the wrong number of open positions on every card wherever one person created the company profiles. Counts now follow the job to company link.
  • Load more on a company profile no longer lists other companies' jobs.
  • Applications now appear on the Kanban board, and new boards ship with a default set of pipeline stages instead of none.
  • Jobs and resumes are geocoded whenever they are saved, including from wp-admin, not only when created through the API.
  • Posting a job no longer loses the link to your company when the company profile was created by an import, an administrator or the setup wizard.
  • Jobs imported from WP Job Manager now trigger the same follow-up actions as jobs created normally, so alerts and geocoding run for them.
  • Scheduled account deletions survive deactivating and reactivating the plugin.
  • Bullet and numbered lists in job descriptions render as lists again instead of flat, unindented lines.
  • Excerpts no longer run words together where two paragraphs meet, on job cards, the single job page, social share previews and the API.
  • Company names containing an ampersand displayed as "&" on job cards, and the upgrade routine rewrote correct names into that form.
  • Employers saw job titles as raw codes such as "–" in their applications list, and the same routine wrote entity-encoded company names into the database where they reached every visitor. Names already stored that way are repaired on update.
  • Job alerts matched the saved search against an encoded title, so an alert for a term containing an ampersand never matched and no mail was sent.
  • Three dropdowns on Reign rendered as plain boxes with no arrow, including the resume picker on the apply form, because the plugin overwrote the arrow the theme supplies.
  • The employer login redirect no longer overrides the site's own login-redirect setting or another plugin's. Employers with no other destination set still land on the employer dashboard.
  • The bookmark button no longer overlaps long job titles on listing cards.
  • The largest company-size filter on the company directory returned nothing, because it offered a value the admin screen never saves.
  • Company sizes of 5,001 or more employees showed as a raw "5001+" everywhere except the company profile block.
  • Career Board blocks placed in a widget area, template part or page-builder region now pick up the Reign and BuddyX Pro styling, which previously loaded only inside post content.
  • The Resumes admin screen offered "Search Posts" and other generic wording where it should say Resumes.
  • The Companies page the plugin creates was unreachable, because it took the same address as the company directory and WordPress served the directory instead. Existing sites are repaired on update, and no working link changes.
  • New sites were set up with two competing sets of job filters on the same page, backed by two mechanisms that never agreed.
  • Saving the Pages tab on a site without Pro cleared the resume archive page setting.
  • Defaults disagreed between the website and the companion app. The app was told application withdrawal was off while the website allowed it, and job lists returned 15 per page over the API against 10 on the page.
  • The captcha setting never reached the companion app, so the app was told no captcha was required and its submissions were then rejected for a missing token.
  • A theme's own job, company and resume templates are used again instead of being replaced by the plugin's copies, which the plugin's own documentation had always promised.
  • On a site without Pro, a Get Job Alerts card and a Saved Resumes tab pointed at features that are not installed.
  • Saving a Career Board settings tab now keeps you on that tab. It previously returned you to whichever tab the page opened with, so the panel you had just saved was not the one you were looking at.

Security

  • Job alerts could be edited or deleted by any signed-in candidate, not only their owner.
  • The Kanban board could be read by employers who did not own the job, exposing other employers' applicant details.
  • Applications were readable by anonymous callers through the WordPress REST API, exposing applicant names, email addresses and cover letters.
  • Resumes no candidate had opted to list were served by the WordPress REST API and advertised in the sitemap. A resume also stayed readable by its direct link or ID even once the listing was narrowed, so the opt-in is now enforced on every way a resume can be read.
  • Suspended members could still bookmark jobs and upload a resume, and the candidate role requirement was ignored on both.

Dev

  • New `wcb_employer_login_redirect_enabled` filter turns the employer login redirect off entirely, for sites that route employers somewhere else.
  • REST arguments now enforce the minimum, maximum and allowed values they declare. Requests that exceed a declared page size return a clear error instead of being silently trimmed.
  • Companion apps can discover the resume section structure from the API, so a client can build a resume form without hardcoding field names, and a site that adds its own section gets it automatically.
  • New filters for sign-in limits, the trusted proxy header, employer-settable statuses, and the resume schema.
  • The wcb_industries filter still runs after the saved setting, so a site that filters the list in PHP keeps precedence over the admin screen.
  • The wcb_guest_applications_claimed action is now documented in the hook reference.
  • The company-archive and company-profile blocks declared incomplete editor dependencies and loaded correctly only by accident of load order.
  • New wcb_resume_rest_query_args and wcb_resume_sitemap_query_args filters for the resume listing narrowings.
  • New wcb_scale_ops and wcb_scale_budgets filters let an addon register its own hot paths with wp wcb scale benchmark.

v1.7.0

July 21, 2026
New 5 Improve 4 Fix 11 Security 2 Dev 1 Compat 1

New

  • Full mobile REST API for companion apps, including an app-config endpoint and viewer-relative fields on job cards.
  • Members can report other members, and site owners can block members and suspend candidates.
  • Members can delete their own account from within the app.
  • Guest applications are linked to a member account automatically when someone registers with the same email address.
  • Server-side content filtering for job listings.

Improve

  • Employers can see and manage their jobs and applications before creating a company profile.
  • Accessibility pass across the frontend with stronger text contrast and 40px minimum tap targets.
  • Faster on large sites through indexed application lookups, a version-keyed company-list cache, collapsed application-count queries, and primed user caches that remove per-row lookups.
  • Old job-view records are pruned automatically on a daily schedule.

Fix

  • Fatal error "EmailJobAlert contains 2 abstract methods" when this version runs alongside an older Pro build (1.5.x). The email base class now ships safe defaults for get_default_body() and get_merge_tags() instead of abstract declarations, so older Pro email classes keep loading.
  • The employer dashboard no longer shows a "set up your company profile first" prompt next to a list of the employer's existing jobs.
  • The public company directory reflects brand edits (tagline, industry, size, location) immediately instead of after a cache delay.
  • Freshly created jobs no longer report an invalid 1970 date over the REST API.
  • The single job page shows a fallback in the About This Role section when the description is empty.
  • The Employers admin screen lists job authors, not only accounts that hold the employer role.
  • The jobs archive no longer returns a 404 after the plugin is reactivated.
  • Bookmarked jobs return their salary and remote fields.
  • The setup wizard creates the Employer Registration page and its previews match the live pages.
  • The admin email log loads correctly on plain permalinks.
  • CSV exports are compatible with PHP 8.4 and later.

Security

  • Job listing and application detail reads are scoped to their owner.
  • Blocked members can no longer see listings or single jobs on the server-rendered frontend.

Dev

  • New release gate freezes the email base-class abstract contract so a cross-version fatal of this kind cannot ship again.

Compat

  • Aligned with WP Career Board Pro 1.7.0. Install both updates together.

v1.6.0

July 9, 2026
New 2 Fix 2 Dev 2 Compat 1

New

  • The plugin is now fully translation-ready and bundles German, French, Spanish, Dutch and Korean translations; every interface string loads through WordPress's standard translation system.
  • Notification email bodies are now editable per template from the Emails settings, each with a ready-to-use default.

Fix

  • Notification emails no longer send with an empty body; the message body falls back to a sensible default when left blank.
  • The "Manage License" link is back on the WP Career Board plugins-screen row and opens a modal prefilled with the community update key, with no missing assets. Automatic updates are unaffected.

Dev

  • New wcb_default_filter_order filter to reorder the job-listings filter groups.
  • New wcb:results JavaScript event fires after each job-listings fetch with the matched job IDs.

Compat

  • Aligned with WP Career Board Pro 1.6.0. Install both updates together.

v1.5.0

June 27, 2026
Improve 3 Fix 4 Dev 2 Compat 1

Improve

  • Unified the admin colour tokens onto the same canonical namespace as the frontend, so admin and frontend theme consistently from one source.
  • Admin buttons now meet the 40px minimum tap target, and the bookmark, layout, view-switch and settings-toggle controls show a keyboard focus ring.
  • Admin status badges and the application detail screen now use the semantic colour tokens.

Fix

  • Tinted banners (onboarding notice, form success message, status badges) are now readable in BuddyX and BuddyX Pro dark mode instead of showing light text on a light background.
  • The recommended jobs grid no longer collapses its columns to zero width.
  • The settings toggle knob and setup-wizard controls now position correctly under right-to-left languages.
  • The application detail labels and borders no longer fall back to the wrong colour on the post edit screen.

Dev

  • Consolidated the responsive breakpoints to a single 640px boundary and removed duplicated and dead CSS rules.
  • Refreshed the documentation dashboard screenshots (candidate and employer) to the new 1.5.0 UI.

Compat

  • Aligned with WP Career Board Pro 1.5.0. Install both updates together.

v1.4.6

June 15, 2026
Compat 1

Compat

  • Aligned with WP Career Board Pro 1.4.6 (Field Builder: define custom fields once and hide them per board). No functional changes in the free plugin. Install both updates together.

v1.4.5

June 15, 2026
Fix 2 Compat 1

Fix

  • BuddyX 5.1 theme compatibility. The plugin now maps its colors to BuddyX 5.1's token system (and dark mode), so dashboard navigation labels, "View all" links and sidebar buttons render legibly instead of white-on-white or as solid coral pills.
  • Custom fields added with the Pro Field Builder now render and save correctly on forms for every field type - dropdown, multi-select, date range, salary range, video URL, file link, location and repeater. Several previously rendered as a plain text box and some did not save.

Compat

  • Aligned with WP Career Board Pro 1.4.5. Install both updates together.

v1.4.4

June 15, 2026
Fix 1 Compat 1

Fix

  • The empty-state "Clear filters" button label stays legible under themes that force a button text color (such as BuddyX). The label now tracks the painted color instead of rendering blank.

Compat

  • Aligned with WP Career Board Pro 1.4.4. Install both updates together.

v1.4.3

June 12, 2026
New 1 Improve 1 Fix 1 Dev 1 Compat 1

New

  • Customizable Job Listings filter sidebar. Reorder the filter groups (Job type, Experience, Category, Tags, Location, Job board, Salary) and hide any you do not need, per block, from the block settings.

Improve

  • WP Career Board now adapts to BuddyX and BuddyX Pro 5.1 light and dark color modes. Card avatars, dashboards, buttons, and widgets re-color correctly in dark mode; previously only Reign's dark mode was handled.

Fix

  • The job listings block no longer emits PHP warnings when it renders with no matching jobs. The empty-state markup referenced job-loop variables that were out of scope.

Dev

  • New wcb_notification_created action fires whenever a notification is created so a central notification center (BuddyNext) can mirror Career Board notifications.

Compat

  • Aligned with WP Career Board Pro 1.4.3. Install both updates together.

v1.4.2

June 12, 2026
Fix 1

Fix

  • Banning an employer now takes effect. The Employers admin screen gains Ban and Unban actions (row and bulk) plus a Status column; banning sets the flag the permission layer already enforced, so a banned employer immediately loses every Career Board ability. Previously the gate read a ban flag that no admin action ever set.

v1.4.1

June 12, 2026
Dev 1

Dev

  • Release packaging unified onto a single .distignore contract used for both development and release builds, with a completeness gate that verifies every required template, library, and config file is present in the package.

v1.4.0

June 11, 2026
New 9 Improve 10 Fix 8 Dev 2 Compat 1

New

  • Any logged-in member can apply to jobs, save jobs, build a resume, and use the candidate dashboard without a dedicated Candidate role - ideal when the job board is part of a community site.
  • "Require Candidate Role" setting (and the wcb_candidate_requires_role filter) to reserve the candidate experience for the Candidate role when you want stricter separation.
  • Install or remove the demo/sample data straight from Career Board > Settings, without re-running the setup wizard.
  • Employer Dashboard: rank a job's applicants by AI fit (requires Pro and an AI provider). Each applicant shows a fit-score badge, the list sorts best-first, and the applicant detail shows the reasoning.
  • Candidate Dashboard: a "Recommended for you" set of AI-matched jobs on the overview (requires Pro and an embedding provider).
  • Employer Dashboard shows each applicant's AI fit score and a one-line TL;DR summary on load once scored, sorted best-first (requires Pro and an AI provider).
  • Apply panel: a "Write with AI" button drafts a cover letter from the candidate's resume and the job, ready to edit before applying (requires Pro and an AI provider).
  • Employer Dashboard Applications now has a List / Board toggle. The Board groups applicants into status columns (Submitted, Reviewing, Shortlisted, Hired, Rejected); drag a card to change an applicant's status, and the board, list, status emails, and AI ranking all stay in sync.
  • Delete a single notification or clear all of them from the dashboard Notifications panel.

Improve

  • Apply with a saved resume in one tap: your most recent resume is pre-selected, and resumes built in the Resume Builder no longer have to be exported to PDF first - the PDF is generated and attached automatically on apply (Pro).
  • Employers can review an applicant's full resume on the site: the application view adds a "View Resume" link to the candidate's public profile alongside the download.
  • Applying without a saved resume now shows a clear "Build a resume" link (to your dashboard) instead of a dead-end "No resume found" message - the file-upload option stays available.
  • Candidate dashboard empty states ("No applications yet", "No saved jobs yet") now link to "Browse jobs" so there is always an obvious next step.
  • Changing an applicant's status now confirms it saved ("Status updated. The candidate has been notified.") instead of silently updating the dropdown.
  • The Anti-Spam settings tab now uses the same card layout as the rest of Settings (it was rendering as bare headings and fields), and the reCAPTCHA fields link to where to get the keys.
  • Non-employers who open the Employer Dashboard or Post a Job now get a helpful message with a "Register as an employer" link (and a route back to the candidate dashboard) instead of a dead-end "no permission" message.
  • Resume options no longer look split between free and pro: the "Public Resume Archive" toggle moved to Settings > Resumes (Pro) with the other resume options, and the upload-size field was relabeled "Application Resume File Size" to make clear it controls the file attached to a job application (a free feature).
  • The Employer Dashboard overview now guides a new employer from the landing screen: "Set Up Company Profile" before a company exists, then "Post Your First Job" once it is ready (these calls to action were previously only on the My Jobs tab).
  • Notifications panel redesign with clearer read and unread states, Mark all read and Clear all controls, and an always-visible per-row delete button (40px tap target on mobile).

Fix

  • Resumes imported from WP Job Manager Resumes no longer appear blank - their experience and education now render on the public profile, in the PDF, and in the employer's application view.
  • "Generate with AI" on the job form now completes and fills the description editor - the request no longer aborts mid-generation, and the generated text is pushed into the rich editor.
  • Job descriptions (AI-generated and demo) now render as structured content - headings, paragraphs, and bullet lists - instead of one wall of text. The editor parses the structure and the sample data ships as clean HTML.
  • Employer Dashboard overview stat cards now count the employer's own jobs and applications, matching the lists below; they previously counted by company and could under-report when a job was not yet linked to the company.
  • The admin email "Test Send" no longer logs a PHP warning when previewing the application-received template (a candidate_name preview variable was missing). Real notification sends were unaffected.
  • Apply drawer: the cover letter no longer touches the Submit button (restored the spacing the rich editor had dropped).
  • Notifications that pointed at the homepage now render non-clickable instead of bouncing to the home page.
  • Dashboard block scripts and styles now cache-bust on each release, so updates reach browsers that cached an earlier version.

Dev

  • Sample-data install/remove now fire `wcb_sample_data_installed` / `wcb_sample_data_removed` so add-ons (Pro) can seed and clean up their own demo content alongside the sample set.
  • POST /wcb/v1/jobs now returns HTTP 201 on successful job creation, matching the resume endpoint and standard REST conventions.

Compat

  • Aligned with WP Career Board Pro 1.4.0. Install both updates together.

v1.3.0

June 9, 2026
New 2 Improve 2 Fix 4 Compat 1

New

  • Account Settings now lets candidates and employers update their display name and email and change their password directly in the dashboard, instead of being sent off to wp-login.
  • Rejected job listings show as "Rejected" (not "Draft") in the employer dashboard, with a Resubmit action; resubmitting sends the job back for admin approval instead of publishing it directly.

Improve

  • Resume Builder no longer renders a doubled card frame when embedded in the dashboard, and the remove-entry icon now renders reliably.
  • Consistent spacing above the single-job sidebar widget titles.

Fix

  • Employer "My Applications" no longer surfaced another employer's application when you had none; the job-to-application lookup is now type-safe.
  • A job posted before you saved a company profile is now adopted into My Jobs when the company is created, instead of staying invisible.
  • A newly posted job now appears in My Jobs immediately, without a manual page reload.
  • Saving a company from its profile page now persists across reloads.

Compat

  • Aligned with WP Career Board Pro 1.3.0. Install both updates together.

v1.2.0

May 17, 2026
New 15 Improve 10 Fix 11 Dev 2 Compat 1

New

  • Single-page job posting form. Drop a one-screen form into any sidebar, modal, partner page, or page builder via the new "Job Form (Single-Page)" block or [wcb_job_form_simple] shortcode. Sits alongside the existing multi-step wizard.
  • Bulk applicant CSV export. Select applications in the admin list table and download a UTF-8 spreadsheet with applicant name, email, job, status, applied date, cover letter, and resume URL.
  • Salary range slider on the Find Jobs page so candidates can filter by minimum and maximum salary live, with chip pills showing the active range.
  • Application deadline reminder emails. Candidates who saved a job but have not applied get a 3-day and 1-day-out reminder automatically via daily cron.
  • Resume upload on the apply form for guests. The previous build only accepted resumes from logged-in candidates. PDF, DOC, and DOCX, with configurable required-vs-optional and size cap up to 20 MB.
  • Featured listings now expire automatically after a configurable duration (default 30 days), setting up Featured as a real time-bound paid SKU.
  • Rebuilt Edit Application admin screen. Applicant card with avatar and contact info, cover letter, resume preview with Open / Download, status changer, quick-action buttons (Shortlist / Mark Hired / Reject / Message), and full status history. Replaces the previously empty native post-edit screen.
  • Modular widget system. Every component on the rebuilt application screen also works as a [wcb_widget id="..."] shortcode on any page.
  • Rich RSS at /jobs/feed/ with company, salary (currency, period, min, max), location, type, category, tags, experience, deadline, and apply URL. Works in any RSS reader, IFTTT, or Zapier flow.
  • WPML / Polylang config so multilingual sites can translate job board CPTs, taxonomies, and key strings out of the box.
  • Page-builder compatibility. Every shortcode ([wcb_job_listings], [wcb_job_form], [wcb_job_form_simple], etc.) now accepts attributes and forwards them to the block, so Elementor, Divi, Bricks, Beaver Builder, and classic editor users can scope blocks (e.g. [wcb_job_listings boardId="42" perPage="6"]).
  • boardId and metaFilter attributes on the Job Listings block. Render a board-scoped or custom-relationship-scoped listing anywhere without writing custom code.
  • REST ?meta_<key>=<value> query support for the jobs endpoint. Any _wcb_* namespaced meta key is allowed by default; custom meta opts in via the wcb_jobs_allowed_meta_filters filter.
  • Custom-field flexibility on every form. Declarative filters (wcb_job_form_fields, wcb_company_form_fields, wcb_candidate_form_fields, wcb_application_form_fields_groups) take a single field-group schema. Add custom fields with one add_filter call.
  • Local CI runner via npm run ci. Runs PHP lint, WPCS, PHPStan, and size-limit on the dev workstation before every push.

Improve

  • Site-wide design token system extended with status color triplets, transition tokens, avatar size scale, and theme-aware primary tints. All blocks now token-driven so Reign and BuddyX integrators override one place to restyle the whole plugin.
  • REST API list endpoints now return a structured envelope with total, pages, and has_more. Legacy X-WCB-Total and X-WCB-TotalPages response headers stay populated for one release cycle for back-compat.
  • Mobile single-job page reading order corrected. "About This Role" now appears first on phones, previously sat below Job Details / Share / Company. Apply panel z-index lifted above theme toggles so light/dark switchers no longer overlap form fields.
  • Setup wizard now centers between the admin sidebar and the right edge on wide viewports. Was previously narrow and left-aligned.
  • Active filter pills on Find Jobs now sit with a comfortable bottom margin above the job cards. Pre-1.2.0 the pill row was flush against the cards.
  • Company cards on the Companies archive now align their meta chips at the same y-position across the grid regardless of how long each tagline is.
  • Plugin Check (PCP) and WPCS gates added to GitHub Actions CI alongside the existing PHP lint and PHPStan jobs.
  • Custom database tables now declare ENGINE=InnoDB explicitly so the plugin works on hosts whose MySQL default storage engine is still MyISAM.
  • Daily cron now schedules deadline reminders and featured-listing expiry sweeps automatically; deactivation cleanly clears scheduled events.
  • Filter-panel chevron icons on Find Jobs and Companies now route through the Lucide icon system instead of hand-rolled inline SVGs, so they pick up the same stroke and color tokens as the rest of the UI.

Fix

  • Test Email button on the Emails settings tab now succeeds even when the template is toggled off. Disabled templates were short-circuiting in send() so the row-delta check returned {sent:false} and the JS button painted "Failed". A new AbstractEmail::test_send() public bridge bypasses is_enabled() and marks the log row sent_test so admin previews do not pollute production delivery metrics.
  • Single job page now lists the Apply Email and routes Apply Now to the external Apply URL when those fields are set on the job.
  • Boards picker in the job form now hides BuddyPress group boards the employer is not a member of. Pro delivers the filtered list via the new wcb_board_options_for_employer hook.
  • Buy Credits link in the job form is suppressed when the credit purchase URL is not configured, so the button no longer points at the current page.
  • Pre-publish credit message ("Posting deducts N credits. Balance after: X (currently Y).") now reads its templates from translated PHP strings, with cost and balance interpolated live from the Wbcom Credits SDK.
  • Uninstall.php now uses $wpdb->prepare('DROP TABLE IF EXISTS %i', $table) with the WP 6.2+ identifier placeholder.
  • Removed all manage_options capability fallbacks from REST permission checks. Abilities API is now the single permission source.
  • Per-page parameter on the jobs list endpoint is now clamped to 100 in the handler. The schema-only maximum was previously a warning, not an enforced cap.
  • posts_per_page = -1 removed from frontend job query paths (replaced with bounded queries).
  • BuddyPress group Jobs tab now correctly filters jobs to that group's board. The previous defaultBoardId block attribute was undeclared and silently dropped.
  • Visual alignment issues on the single-page job form (salary row breaking awkwardly, remote-deadline pair misaligning, button placement).

Dev

  • New filter wcb_board_options_for_employer( array $options, int $user_id ) lets Pro and integrators restrict the job-form Boards picker.
  • New filter wcb_page_needs_frontend_assets( bool $needs ) lets contexts that render WCB blocks outside post_content (BuddyPress profile and group tabs, page builders that lazy-render) opt into the shared frontend stylesheets so primitives like .wcb-hidden resolve.

Compat

  • Aligned with WP Career Board Pro 1.2.0. Install both updates together.

v1.0.2

April 14, 2026
New 2 Improve 3 Fix 15

New

  • Reign Theme dark-mode support - every WCB component (Find Jobs, Find Candidates, employer/candidate dashboards, companies archive, job and resume singles) re-colors cleanly when Reign's `html.dark-mode` class is active, driven by a new `html.dark-mode` token layer in `frontend.css` that maps `--wcb-*` to dark values.
  • BuddyX Pro theme integration - WCB now inherits BuddyX Pro's theme palette (buttons, cards, borders, text, backgrounds) in both light and dark mode via a token bridge in `integrations/buddyxpro/assets/buddyx-compat.css` that re-maps `--wcb-*` to BuddyX Pro's own variables. WCB primary buttons pick up BuddyX Pro's customizer button color automatically.

Improve

  • Semantic dark-mode token layer - `--wcb-bg-subtle`, `--wcb-bg-hover`, `--wcb-text-secondary`, `--wcb-text-tertiary`, `--wcb-avatar-bg` all get dark variants under `html.dark-mode`, plus translucent `rgba(...)` variants of `--wcb-success-bg`, `--wcb-warning-bg`, `--wcb-danger-bg`, and `--wcb-info-bg` so status badges stay readable on dark cards.
  • Listings card typography rebalanced - title bumped to ~19px, description shrunk and muted, card body gap widened, badge contrast retuned to WCAG AA on every background, and the title link tap target raised above the WCAG 2.5.5 AAA threshold.
  • Accessibility pass - replaced 33 `outline: none` focus-strip sites with `outline: 2px solid transparent` so focus indicators show in Windows High Contrast / forced-colors mode, added missing form labels and ARIA labels across admin and block templates, and gave Interactivity API anchor stubs static aria-labels that hydrate at runtime.

Fix

  • BuddyX Pro integration never actually loaded - the directory `integrations/buddyx-pro/` was hyphenated but the PSR-4 autoloader expected the case-folded namespace segment `buddyxpro`, so `BuddyxProIntegration::boot()` silently never ran and no BuddyX compatibility CSS was enqueued on BuddyX Pro sites. Directory renamed and paths updated.
  • BuddyX Pro enqueue gate only matched `wcb_job` singular / archive - now mirrors the Reign gate and enqueues compatibility CSS on every WCB CPT (`wcb_job`, `wcb_application`, `wcb_company`, `wcb_resume`) and any page embedding a `wp-career-board/*` or `wcb/*` block.
  • Find-jobs page heading (`.wcb-page-heading`) was flush against the filter chip bar - added `margin-block-start: var(--wcb-space-2xl)` (`lg` on ≤640px) so the heading has breathing room above the search + chips row.
  • Avatar initials on job cards, company cards, job single header, and company profile headers were rendering dark-on-dark in dark mode because the letter color bound to `var(--wcb-base)` which flips to the card color. Letters now hardcoded to white - avatar backgrounds are always a dark slate regardless of mode.
  • `.wcb-page-heading` hardcoded `color: #0f172a` - now uses `var(--wcb-contrast)` so it flips with dark mode instead of staying dark on a dark body.
  • Reign compatibility stylesheet hardcoded `color: #475569 !important` on `.wcb-load-more-btn` and `color: #0f172a` on `.wcb-clear-all:hover` - now token-driven via `var(--wcb-text-secondary)` and `var(--wcb-contrast)` so dark-mode styling flows through.
  • `.wcb-cbadge--type`, `.wcb-cbadge--exp`, and `.wcb-cbadge--location` on job cards hardcoded `#475569` text - now token-driven so the dark-mode surface/text pair stays readable.
  • Current-page WCB block detector (`current_page_has_wcb_block()`) only matched `wp-career-board/*` block comments - now also matches pro `wcb/*` block comments so pages that embed only pro blocks correctly enqueue `wcb-frontend`, `wcb-frontend-tokens`, and `wcb-frontend-components`.
  • Reign integration enqueue gate used a hardcoded list of four free-plugin block names - now triggers on any WCB CPT or any `wp-career-board/*` / `wcb/*` block comment so `reign-compat.css` loads on pro-only pages too.
  • Candidate dashboard had two cyclic CSS custom property declarations (`--wcb-bg-subtle: var(--wcb-bg-subtle, #f8fafc)` and the equivalent for `--wcb-text-secondary`) that resolved to the guaranteed-invalid value in Chrome and left `.wcb-main` with a transparent background, so the dashboard wrapper looked unframed next to the employer dashboard. Local re-declarations removed - both dashboards now cascade identical tokens from `:root`.
  • Candidate dashboard now gates access via the `wcb_access_candidate_dashboard` ability - employers can no longer reach the candidate dashboard.
  • Job listings search input filtering on the Find Jobs page now matches the `wcb:search` event contract dispatched by the search block (`params.query`), and the listings hydrate from the `wcb_search` URL parameter.
  • Company industry field is now a single source of truth - both the employer dashboard and the admin meta box render the same dropdown of 16 predefined industries from `WCB\Core\Industries::all()`.
  • `wcb-btn--primary` and other variant text colors no longer get clobbered by the wrapper-scoped theme isolation reset - the reset no longer overrides per-variant `color`.
  • EDD SL SDK `plugins_api_filter` no longer fatals on PHP 8+ when the licensing API call fails and the cache is empty (`Attempt to assign property "plugin" on false`).

v1.0.1

Improve 2 Fix 2

Improve

  • PHPStan config optimized with explicit source paths.
  • CI pipeline streamlined to PHP Lint + PHPStan.

Fix

  • WPCS formatting cleanup across entire codebase (tabs, braces, spacing).
  • Hardcoded localhost URLs replaced with home_url() in seed data.

v1.0.0

New 11

New

  • Initial release.
  • Gutenberg block-first job board with WordPress Interactivity API.
  • Employer and candidate frontend dashboards.
  • Full application tracking with five statuses.
  • Guest applications support.
  • Company profiles.
  • BuddyPress and Reign Theme integration.
  • reCAPTCHA v3 and GDPR export/erasure support.
  • JobPosting schema.org structured data.
  • REST API with WordPress Abilities API permissions.
  • Automatic updates via wbcomdesigns.com.