{"id":380280,"date":"2026-10-16T01:32:51","date_gmt":"2026-10-16T01:32:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/b-planner\/"},"modified":"2026-10-16T01:32:36","modified_gmt":"2026-10-16T01:32:36","slug":"undergroundact-project-planner","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/undergroundact-project-planner\/","author":14224736,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.69","stable_tag":"0.2.69","tested":"7.1.3","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"Undergroundact Project Planner","header_author":"Brian Tolman","header_description":"A light-weight Project\/task dashboard with category-based user access and AI hooks.","assets_banners_color":"9ca28c","last_updated":"2026-10-16 01:32:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.69":{"tag":"0.2.69","author":"btolman","date":"2026-10-16 01:32:36","revision":3749526}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3749540,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3749540,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3749540,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3749540,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.69"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5883,2345,7135,7136,13997],"plugin_category":[],"plugin_contributors":[279977],"plugin_business_model":[],"class_list":["post-380280","plugin","type-plugin","status-publish","hentry","plugin_tags-planner","plugin_tags-productivity","plugin_tags-project-management","plugin_tags-task-management","plugin_tags-todo-list","plugin_contributors-btolman","plugin_committers-btolman"],"banners":{"banner":"https:\/\/ps.w.org\/undergroundact-project-planner\/assets\/banner-772x250.png?rev=3749540","banner_2x":"https:\/\/ps.w.org\/undergroundact-project-planner\/assets\/banner-1544x500.png?rev=3749540","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/undergroundact-project-planner\/assets\/icon-128x128.png?rev=3749540","icon_2x":"https:\/\/ps.w.org\/undergroundact-project-planner\/assets\/icon-256x256.png?rev=3749540","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Undergroundact Project Planner is built for teams that want clarity without ceremony:<\/p>\n\n<ul>\n<li>Capture work quickly (bulk import \/ add task)<\/li>\n<li>Focus the list (filters + sorting)<\/li>\n<li>Execute (project view + ordering)<\/li>\n<li>Communicate (Project Status Report)<\/li>\n<li>Export CSV whenever you need portability<\/li>\n<\/ul>\n\n<p>This plugin includes a Project Status Report designed to be copied\/forwarded into email or docs.<\/p>\n\n<h4>Core Features<\/h4>\n\n<ul>\n<li>Dashboard view with filters and sortable columns<\/li>\n<li>Project view with drag\/drop ordering + Save Order<\/li>\n<li>To\u2011Do view (filtered task list)<\/li>\n<li>Project Status Report (forwardable executive summary)<\/li>\n<li>Bulk import (paste one task per line)<\/li>\n<li>CSV export for Dashboard, Project view, and Project Status Report<\/li>\n<li>Admin project Import \/ Export for moving a project and its tasks between Undergroundact Project Planner sites<\/li>\n<li>Admin management for recurring-task frequencies<\/li>\n<li>Simple access control (project + category View\/Edit)<\/li>\n<li>Optional AI suggestions (off by default)<\/li>\n<\/ul>\n\n<h4>What this plugin is NOT<\/h4>\n\n<p>Undergroundact Project Planner intentionally does NOT include:<\/p>\n\n<ul>\n<li>Notifications\/digests<\/li>\n<li>Slack\/Teams\/Calendar integrations<\/li>\n<li>Enterprise resource-loaded scheduling \/ critical-path planning<\/li>\n<li>Approvals\/workflow engine<\/li>\n<li>Heavy audit\/compliance logging<\/li>\n<\/ul>\n\n<p>Those belong in optional add-ons so the open source core stays fast and calm.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>Undergroundact Project Planner has optional AI features, disabled by default. On WordPress 7.0+, it uses the native WordPress AI Client and the text-generation provider configured by the site owner in Settings &gt; Connectors. The plugin does not connect directly to OpenAI or store new provider credentials.<\/p>\n\n<ul>\n<li>AI Suggestions: generates proposed improvements, missed steps and follow-up questions about an existing project.<\/li>\n<li><p>Statement of Work: generates a draft document from project goals and task details.<\/p><\/li>\n<li><p>What external service is used: Whichever compatible AI provider the site owner connects in WordPress Settings &gt; Connectors (such as OpenAI, Anthropic or Google); providers and terms vary.<\/p><\/li>\n<li>What is sent: Project name, description and goals (when available), and the relevant task\/step text including categories\/subcategories, dependencies and notes. Only tasks the user can view are included.<\/li>\n<li>When information is sent: Only when the plugin's optional AI feature is enabled and a logged-in user explicitly requests an AI result. WordPress handles the provider API request using the site owner's configured credentials.<\/li>\n<li>Credentials: Configure the provider via Settings &gt; Connectors. Old OpenAI keys in legacy Planner settings are not transferred to WordPress; they are removed from the legacy option on upgrade. No AI call is made merely by enabling AI or viewing an ordinary project page.<\/li>\n<li>Data retention: The plugin temporarily caches generated suggestions and Statements of Work for up to 12 hours; provider processing and retention depend on the provider's terms. The plugin does not promise a provider-independent equivalent of the old OpenAI <code>store: false<\/code> option.<\/li>\n<li>Provider terms\/privacy: Review the policies of the provider you choose before activating AI. Examples: https:\/\/openai.com\/policies\/privacy-policy\/ ; https:\/\/www.anthropic.com\/legal\/privacy ; https:\/\/policies.google.com\/privacy .<\/li>\n<li>Costs: Any AI API charges are billed under the credentials configured in WordPress; Undergroundact Project Planner does not pay those charges. Administrators can view recent successful requests and provider-reported tokens in Planner AI Settings. The adjustable prompt-size guard measures bytes, not tokens or dollars; the existing 12-hour response cache avoids repeat requests, while refreshing makes another provider call. Recent usage metadata (not prompts or generated content) is stored in a bounded WordPress option, with entries older than 30 days pruned on the next successful request.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> (or install via the Plugins screen).<\/li>\n<li>Activate the plugin.<\/li>\n<li><p>Create a WordPress Page and place this shortcode in the content:<\/p>\n\n<p>[betpp_dashboard]<\/p><\/li>\n<li><p>In WP Admin, go to Undergroundact Project Planner \u2192 Getting Started.<\/p><\/li>\n<li>Define your lookups (Projects, Categories, Subcategories, Statuses, Priorities, Frequencies, Owners).<\/li>\n<li>Set User Access (who can view\/edit by project + category).<\/li>\n<li>Use Bulk Import to paste tasks and start running work.<\/li>\n<li>Optional AI: go to Settings &gt; Connectors and configure an AI provider, then enable AI under Undergroundact Project Planner &gt; AI Settings. The site owner is responsible for AI service costs and policies.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20uninstall%20delete%20my%20tasks%3F\"><h3>Will uninstall delete my tasks?<\/h3><\/dt>\n<dd><p>No. By default, uninstall keeps data. A planner is a database of record; uninstall should not wipe your work.<\/p><\/dd>\n<dt id=\"does%20undergroundact%20project%20planner%20use%20custom%20database%20tables%3F\"><h3>Does Undergroundact Project Planner use custom database tables?<\/h3><\/dt>\n<dd><p>Yes. Undergroundact Project Planner stores planner data in custom database tables (vsl_plan_*). This keeps task\/project data fast and structured without overloading postmeta.<\/p>\n\n<p>Tables used include:<\/p>\n\n<ul>\n<li>vsl_plan_categories<\/li>\n<li>vsl_plan_frequencies<\/li>\n<li>vsl_plan_item_categories<\/li>\n<li>vsl_plan_item_subcategories<\/li>\n<li>vsl_plan_owners<\/li>\n<li>vsl_plan_priorities<\/li>\n<li>vsl_plan_projects<\/li>\n<li>vsl_plan_statuses<\/li>\n<li>vsl_plan_subcategories<\/li>\n<li>vsl_plan_tasks<\/li>\n<li>vsl_plan_time_entries<\/li>\n<li>vsl_plan_user_categories<\/li>\n<li>vsl_plan_vendors<\/li>\n<\/ul>\n\n<p>These tables are created\/updated via WordPress\u2019s dbDelta() during activation\/upgrade checks.<\/p><\/dd>\n<dt id=\"how%20do%20i%20completely%20remove%20plugin%20data%3F\"><h3>How do I completely remove plugin data?<\/h3><\/dt>\n<dd><p>By default, uninstall keeps data (see uninstall.php) to prevent accidental loss.<\/p>\n\n<p>To remove all Undergroundact Project Planner data manually:<\/p>\n\n<ol>\n<li>Deactivate and uninstall the plugin.<\/li>\n<li>Using a database tool (e.g. phpMyAdmin), drop the vsl_plan_* tables listed above.<\/li>\n<\/ol>\n\n<p>(An optional \u201cdelete data on uninstall\u201d setting may be added in a future release; it would remain OFF by default.)<\/p><\/dd>\n<dt id=\"how%20do%20i%20export%20to%20csv%3F\"><h3>How do I export to CSV?<\/h3><\/dt>\n<dd><p>Each list view includes an Export CSV button. Exports respect your current filters and sorting.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20without%20ai%3F\"><h3>Can I use this without AI?<\/h3><\/dt>\n<dd><p>Yes. AI suggestions are optional and disabled by default.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20caching%20plugins%3F\"><h3>Does this work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. CSV exports are routed through a non-cacheable endpoint.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.69<\/h4>\n\n<ul>\n<li>Updated the WordPress installer description to reflect category-based access and AI features.<\/li>\n<li>Prefixed local AI usage-history display variables to satisfy WordPress coding standards. No functional or schema changes.<\/li>\n<\/ul>\n\n<h4>0.2.68<\/h4>\n\n<ul>\n<li>Increased the AI Statement of Work maximum generated-output allowance from 2,400 to 6,000 tokens to accommodate larger projects and reasoning models.<\/li>\n<li>Retained the existing 2,000-token limit for AI Suggestions, request timeouts, prompt-size guard, cache, usage diagnostics, and SOW format. No automatic retries or schema changes.<\/li>\n<\/ul>\n\n<h4>0.2.67<\/h4>\n\n<ul>\n<li>Set per-request Core AI Client HTTP timeouts to 60 seconds for AI Suggestions and 90 seconds for AI Statement of Work, without changing other plugins' timeout settings.<\/li>\n<li>Show a clearer message when provider requests time out while keeping the original provider error in administrator diagnostics. Hosting and proxy timeouts may still be shorter.<\/li>\n<li>Preserved existing prompts, token limits, caching and provider usage reporting; no database schema changes.<\/li>\n<\/ul>\n\n<h4>0.2.66<\/h4>\n\n<ul>\n<li>Added administrator-only AI request diagnostics with provider\/model, reported input\/output\/total tokens, prompt byte size and elapsed seconds (most recent 30 successful requests; only the past 30 days appear, with older entries pruned on subsequent requests).<\/li>\n<li>Added configurable, pre-flight 24,000-byte default maximum AI prompt size. Oversized requests are refused before contacting the provider; there are no token or cost guarantees.<\/li>\n<li>Preserved the existing 12-hour generated-content cache and refresh behavior. No schema changes or new provider credentials.<\/li>\n<\/ul>\n\n<h4>0.2.65<\/h4>\n\n<ul>\n<li>Relabeled the frontend AI action buttons to \"AI Suggestions\" and \"AI Statement of Work\" without changing functionality.<\/li>\n<\/ul>\n\n<h4>0.2.64<\/h4>\n\n<ul>\n<li>Migrated AI Suggestions and Statement of Work to WordPress 7.0+ Core AI Client using Settings &gt; Connectors.<\/li>\n<li>Removed the plugin-managed OpenAI API key, model and temperature controls; legacy key is removed on upgrade rather than transferred.<\/li>\n<li>Updated provider-independent AI documentation and availability checks; retained existing project data, task permissions, and non-AI workflows.<\/li>\n<li>Minimum WordPress version increased from 6.2 to 7.0; no database schema changes.<\/li>\n<\/ul>\n\n<h4>0.2.63<\/h4>\n\n<ul>\n<li>Enforced per-task edit permission checks for status changes, edits, deletes, and ordering.<\/li>\n<li>Restricted new task\/category assignments and Project Builder submissions to editable categories.<\/li>\n<li>Corrected the WordPress.org readme short description length.<\/li>\n<li>No database schema changes.<\/li>\n<\/ul>\n\n<h4>0.2.62<\/h4>\n\n<ul>\n<li>Rebranded as Undergroundact Project Planner (formerly B-Planner); plugin slug and translation domain updated.<\/li>\n<li>Preserved existing vsl_plan_* tables, betpp_* settings, shortcodes, and legacy SQL backup\/restore support.<\/li>\n<li>No database schema changes.<\/li>\n<\/ul>\n\n<h4>0.2.61<\/h4>\n\n<ul>\n<li>Reworked the Undergroundact Project Planner Admin Tools dashboard into a two-column tool-and-description table for clearer navigation.<\/li>\n<li>No database or schema changes.<\/li>\n<\/ul>","raw_excerpt":"Undergroundact Project Planner organizes WordPress projects and tasks with filters, drag ordering, reports, and CSV export.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=380280"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/btolman"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380280"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380280"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380280"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380280"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380280"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}