21 Commits
Author SHA1 Message Date
MervinPraisonandClaude faec8047b4 feat: implement /api/provider/health JSON route and guard /api/* catch-all (fixes #151)
Register a dedicated GET /api/provider/health handler before the SPA
catch-all so API clients receive JSON instead of dashboard HTML. Unmatched
/api/* paths now return a JSON 404 in both the static-mount fallback and the
path:path catch-all. Docs updated to match the implementation schema.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2026-06-24 09:57:43 +00:00
MervinPraison 2b9e78ea50 feat: standardize health status checking to accept both 'ok' and 'healthy' (fixes #139)
- Add health_utils.py with is_success_status() helper function
- Update CLI health-check command to treat both 'ok' and 'healthy' as success
- Update doctor command health extractor to use shared helper
- Update provider status command to use shared helper
- Add comprehensive unit tests for both status strings
- Document health status values in API documentation

The system now consistently accepts both 'ok' and 'healthy' as success
statuses, eliminating false alarms in CLI and doctor commands while
maintaining compatibility with existing dashboard behavior.
2026-06-23 09:51:59 +00:00
MervinPraison 5dd3cd81e4 docs: add A2UI canvas guide and surface API references
Document chat-canvas split preview, surface CLI, coerce_a2ui_tool_messages, and empty-canvas API behaviour; fix stale 29-a2ui-canvas paths.
2026-06-15 18:56:15 +01:00
MervinPraison 05a17f14ab feat: unified verb-first API surface (0.3.109)
New public helpers \u2014 supersede verbose class/setter patterns:

* aiui.prompt(question, *, options, timeout) -> PromptResult
    Pause the agent and wait for the user's answer. Supersedes
    AskUserMessage. Returns a typed dataclass; truthy on answer, falsy
    on timeout.  AskUserMessage kept as deprecated alias.

* aiui.error(content, *, details)
    Thin helper that emits Message(metadata={'kind': 'error'}) so
    users don't need a dedicated ErrorMessage class.

* aiui.configure(branding=, theme=, chat=, custom_css=, custom_js=,
  style=, datastore=)
    One entry point for server config \u2014 every set_* stays as-is for
    advanced control.

UI aliases (legacy names kept with DeprecationWarning, removal 0.5.0):
  tooltip_wrap      \u2192 tooltip
  key_value_list    \u2192 definition_list
  form_action       \u2192 form

Tests: 16/16 new unified-naming tests pass. Full suite: 712/715
(3 pre-existing test-isolation failures, unrelated).
mkdocs --strict still green.
2026-04-19 03:08:20 +01:00
MervinPraison 3a10f48632 feat: close extensibility gaps + hotfix 0.3.108
Closes 5 documented gaps from how-to-add-a-feature.md:

- aiui.set_custom_js(path) — inject client JS from Python (new /custom.js route, <script> after plugin-loader). Tests: 10/10
- name= kwarg on all 8 form inputs — stable submit-keys for form_action, avoids label collisions. Tests: 18/18
- Component schema registry — aiui.register_component_schema() + GET /api/components/schemas. Built-in schemas auto-derived from ui.py. Tests: 9/9
- /api/features parallelized via asyncio.gather (warm calls now instant)
- mkdocs build fixed for pygments 2.20 via docs_hooks.py

Other:
- form inputs now emit name + data-label attrs so form_action submit handler collects values correctly (bug fix)
- radio submit handler only stores the checked radio's value
- switch now has hidden checkbox mirror so form_action sees its state
- mkdocs --strict passes
- Example 28 uses the new APIs (no more DevTools console workaround)
- Bump aiui 0.3.107 -> 0.3.108; sync __version__.py

Tests: 542/545 pass (3 pre-existing test-isolation failures unrelated).
2026-04-19 02:36:38 +01:00
Mervin Praison 09ff1fda74 ```plaintext
docs(api/components): enhance API documentation and add new examples

Updated the components API reference to include 36 organized components.
Introduced essential component examples such as metric cards, progress bars,
alerts, and more for clarity and usage guidance.
```
2026-03-16 18:05:23 +00:00
Mervin Praison 4db634eae3 feat(docs): update README and quickstart documentation
Enhanced the README and quickstart guides to better reflect the
capabilities and usage of PraisonAI, including installation steps,
example configurations, and detailed instructions for deploying
the AI dashboard and chat mode. Improved clarity and added
new sections for ease of navigation.
2026-03-11 20:35:51 +00:00
Mervin Praison afab9ebb47 feat(docs, cli, guardrails): enhance CLI documentation and guardrails feature
Updated `cli.md` to include detailed options for scheduling and guardrails commands. Improved overall clarity in `feature-inventory.md` reflecting CLI command support. Added new helper methods in `guardrails.py` for CLI command registration. Bumped project version to `0.3.55` in `pyproject.toml`.
2026-03-11 07:38:45 +00:00
Mervin Praison 67b1286c67 docs: update documentation for unified runtime configuration and changes
- Added details on unified runtime config at ~/.praisonaiui/config.yaml.
- Updated API testing instructions to reflect persistence of config changes.
- Documented new "Run" button functionality on dashboard for agents.
- Included details on hot-reload feature and its relationship to config persistence.
2026-03-10 06:43:54 +00:00
Mervin Praison 5e57577c53 fix: use native History.prototype.pushState to bypass React Router
Root cause: calling the patched history.pushState triggered React Router's
internal listener, causing it to unmount the entire DOM (<div id='root'></div>
becomes empty). This caused the persistent black screen on sidebar clicks.

Fix:
- nav-intercept.js: save History.prototype.pushState before React patches it,
  use nativePushState.call(history, ...) for SPA navigation
- nav-intercept.js: add stopImmediatePropagation to prevent React from
  seeing sidebar click events
- nav-intercept.js: normalize all paths with trailing slash
- content-loader.js: add 100ms retry if main.flex-1 missing (React unmount
  recovery), fallback to #root if still absent
- content-loader.js: skip homepage paths (handled by homepage.js)
- content-loader.js: remove anti-flicker CSS after SPA navigation
2026-03-08 00:24:36 +00:00
Mervin Praison 53b370a9ce fix: eliminate UI flickering, blank homepage, black flash, and sidebar highlighting
- index.html: add anti-flicker CSS in head, remove 300ms delay, call notify() immediately
- homepage.js: move setHomepageMode(true) after article creation, use opacity not display:none
- content-loader.js: move setContentMode(true) after article creation, use opacity/absolute
- topnav.js: URL-based sidebar highlighting via highlightActiveSidebarItem()
- server.py: update anti-flicker CSS to match index.html pattern
2026-03-07 22:01:04 +00:00
Mervin Praison 9072498110 docs(api): Update features API documentation with new endpoints
Added comprehensive details for new feature endpoints including
memory context retrieval, TTS functionalities, marketplace actions,
code execution, PWA enhancements, and device pairing capabilities.
2026-03-07 07:04:56 +00:00
Mervin Praison 9f76895009 feat(docs): Add comprehensive API and dashboard documentation
This commit introduces extensive documentation for the component API,
dashboard features, and quick start guides. These additions cover
function usage, layout options, and methods to register pages, enhancing
the developer experience and improving onboarding for new users.
Additionally, minor adjustments were made to existing workflow instructions.
2026-03-06 13:50:46 +00:00
Mervin Praison f67f5f646b feat(docs): add comprehensive API testing guide
Included a detailed API testing guide in `docs/api/testing.md`, providing
curl commands and descriptions for testing all 16 PraisonAIUI feature APIs.
This serves as a resource for developers to quickly understand and test
the available API endpoints. Also updated example usage in `examples/python/15-dashboard-test/app.py` and made minor adjustments in other files.
2026-03-06 12:37:14 +00:00
Mervin Praison 728a0791b0 feat(docs): update API documentation and navigation structure
- Refactored navigation in `aiui.template.yaml` for improved
  organization, adding an "API Reference" tab.
- Updated `features-api.md` with new endpoints and examples,
  including enhanced approval management and session handling features.
- Improved clarity and consistency in API request/response examples.
2026-03-06 12:06:41 +00:00
Mervin Praison 980ad9ff26 docs(api): update API documentation for new features and endpoints
This commit adds comprehensive documentation for new API endpoints related to jobs, schedules, and skills, including examples of request and response payloads. Additionally, it updates the count of built-in features and improves the overall structure and clarity of the API docs.
2026-03-06 09:53:40 +00:00
Mervin Praison c818986050 feat(workflows): add gap implementation prompts and new features
Added a comprehensive gap implementation prompts document outlining tasks
for the development of the Channel Management and Scheduler dashboard tabs
in PraisonAIUI. Included analysis, implementation steps, and verification
requirements to enhance user experience and functionality within the
application. Additionally, updated several API and frontend components to
support the new features.
2026-03-06 08:42:36 +00:00
Mervin Praison ec27a8906f feat: add frontend plugin system with mermaid, fetch-retry, mkdocs-compat, homepage plugins
- plugin-loader.js: core MutationObserver-based plugin loader
- mermaid.js: renders mermaid code blocks as SVG diagrams via CDN
- fetch-retry.js: exponential backoff retry for .md/.json fetches
- mkdocs-compat.js: transforms MkDocs Material syntax to standard HTML
- homepage.js: replaces hardcoded debug landing page with docs/index.md
- compiler.py: _copy_plugins() generates plugins.json from YAML config
- models.py: add plugins field to SiteConfig (defaults: all built-in)
- index.html: add plugin-loader.js script tag
2026-03-05 16:52:28 +00:00
Mervin Praison 004002e655 u 5 2026-03-05 06:32:47 +00:00
Mervin Praison 8b612a2498 u 5 2026-03-04 10:27:34 +00:00
Mervin Praison be1d37c51a update 2026-01-28 18:08:35 +00:00