1. 13 Jan, 2026 7 commits
    • Error Handling:
      - Check ec.message.hasError() before and after transaction flush
      - Return "status": "error" with error messages instead of false success
      - Prevents silent failures when constraint violations occur (e.g., invalid Party IDs)
      
      Dropdown Metadata:
      - Capture static dropdown options from sri.getFieldOptions()
      - Capture dynamic-options config (transition, serverSearch, minLength, parameterMap)
      - Enables model to understand searchable dropdowns vs static lists
      
      This improves the model's ability to:
      1. See clear error messages when operations fail
      2. Understand dropdown behavior (server search vs static)
      3. Take corrective action based on error feedback
      Ean Schuessler committed
    • Fix path references in data files to use forward slash notation:
      - /PopCommerce/PopCommerceAdmin.Catalog.Product → /PopCommerce/PopCommerceAdmin/Catalog/Product
      - /PopCommerce/PopCommerceAdmin.Order.FindOrder → /PopCommerce/PopCommerceAdmin/Order/FindOrder
      - /PopCommerce/PopCommerceRoot.Customer → /PopCommerce/PopCommerceRoot/Customer
      
      Also updates:
      - AGENTS.md: Remove completed path delimiter test items
      - Fix wiki page path references (SimpleScreens.Root → SimpleScreens/Root)
      
      Aligns with slash-based path system adopted in earlier refactor.
      Ean Schuessler committed
    • Ean Schuessler committed
    • - EnhancedMcpServlet: Reuse existing ExecutionContext from MoquiAuthFilter instead of creating duplicate
      - EnhancedMcpServlet: Removed manual EC destruction - auth filter handles cleanup
      - McpServices: Skip EntityFind objects in serialization (they're query definitions, not data)
      - McpServices: Make patchScreenRenderForNullFieldNode static for call from static context
      - McpServices: Remove renderedContent for renderMode 'mcp' to avoid JSON duplication/truncation
      - AGENTS.md: Document rebuild.sh script usage
      - mcp.sh: Use hidden session file (.mcp_session_USER)
      - rebuild.sh: Fix shell syntax error and add startup wait logic
      Ean Schuessler committed
    • Move verbose per-request logging (request body, session management,
      SSE connections, method processing) from INFO to DEBUG level.
      Keep INFO for significant events like new Visit creation.
      Ean Schuessler committed
    • - Terse mode: 50 items/5000 chars (from 30/2000)
      - Non-terse mode: 1000 items/50000 chars (from 250/5000)
      - Prioritizes operational data completeness over token savings
      - Prevents "ghost errors" from arbitrary data dropping
      Ean Schuessler committed
  2. 12 Jan, 2026 4 commits
    • - Add field types: radio, display, link, file-upload, hidden
      - Add link types: action, delete, external, button
      - Add action types: service-action, form-action, screen-transition, delete-action
      - Enhance parameter metadata with type, required, defaultValue
      - Classify actions automatically by service/name patterns
      - Update narrative builder to describe action/link types
      - Defensive parameter extraction with reflection fallbacks
      Ean Schuessler committed
    • - Safe navigation of formNode and fieldNode attributes using ?parent
      - Fallback to empty string for null field values in display/text macros
      - Use getActiveScreenDef() for screen name resolution in formListWidget
      - Prevents NullPointerException in EditPrices and other list screens.
      Ean Schuessler committed
    • - Resolve NonHashException in macros by avoiding .add() on sequences.
      - Fix 'Maps with null keys' JSON error by ensuring string keys.
      - Stabilize form macros with null-safe checks.
      - Update McpServices and CustomScreenTestImpl for better semantic data handling.
      Ean Schuessler committed
    • Extract core MCP logic into modular services (ResolveScreenPath, RenderScreenNarrative, ExecuteScreenAction) and update screen path conventions to use slash notation (e.g., /PopCommerce/Product) instead of dot notation. This aligns MCP navigation with browser URLs and improves path resolution reliability.
      
      - Split McpServices.xml into specialized services for better maintainability
      - Update DefaultScreenMacros.mcp.ftl to generate slash-based links
      - Update prompts and documentation to reflect new path convention
      - Enhance CustomScreenTestImpl to support slash path parsing
      - Add AGENTS.md documenting self-guided narrative screens architecture
      Ean Schuessler committed
  3. 09 Jan, 2026 2 commits
    • - Create UiNarrativeBuilder class for structured, story-like UI descriptions
        - screen: 50-80 words describing current state
        - actions: 80-120 words with exact tool invocation examples
        - navigation: 30-40 words for navigating to related screens
        - notes: 30-50 words for truncation, permissions, constraints
      
      - Enhance mcp.ftl macros to capture semantic metadata
        - form-single: Track field names, types, validation rules
        - form-list: Capture totalItems, displayedItems, truncated flags
        - Store metadata in mcpSemanticData for narrative generation
      
      - Deprecate DefaultScreenMacros.json.ftl
        - Update MoquiConf.xml to map both mcp and json to mcp.ftl
        - Remove redundant 218-line template with no semantic capture
      
      - Integrate uiNarrative into BrowseScreens service
        - Generate narrative using UiNarrativeBuilder
        - Include uiNarrative in result map
        - Provide screenDef for context
      
      - Remove redundant semantic state extraction
        - Delete fallback logic that extracted forms/lists from screen definition
        - Rely exclusively on mcpSemanticData captured by macros
      
      - Improve smart truncation in serializeMoquiObject
        - terse mode: 10 items, 200 char strings
        - non-terse mode: 50 items, no string truncation (fixed bug)
        - Add _hasMore flag to truncated data metadata
      
      - Fix CustomScreenTestImpl postRenderContext capture
        - Capture context before pop to preserve mcpSemanticData
      Ean Schuessler committed
  4. 05 Jan, 2026 1 commit
  5. 02 Jan, 2026 4 commits
  6. 31 Dec, 2025 2 commits
  7. 30 Dec, 2025 1 commit
  8. 29 Dec, 2025 1 commit
  9. 23 Dec, 2025 8 commits
  10. 19 Dec, 2025 3 commits
  11. 18 Dec, 2025 2 commits
  12. 12 Dec, 2025 2 commits
  13. 11 Dec, 2025 3 commits