Release Notes: AI infrastructure resilience and static agent graphs · September 22, 2026

AI infrastructure upgrades. Documents await pending snippets before generating PDFs, and agent graphs are statically compiled. Includes over 105 system fixes.

New Features

  • Document Generation Fan-In (Awaiting Snippets): Documents that require AI snippets now use an automated fan-in barrier. If required snippets are still pending or generating, the document automatically enters an Awaiting Snippets status. Once all snippets complete successfully, the document automatically resumes compiling the PDF. If any snippet fails, the document transitions to an Error status with detailed failure messages.
  • Vertex AI Agent Engine Integration: Snippet generation now natively executes via the Vertex AI Agent Engine stream interface for improved reliability.
  • Resilient AI Snippet Generation: The AI snippet generation engine now includes a resilient fallback mechanism. If the Vertex AI Agent Engine encounters an error, cold-starts, or is unavailable, the system automatically falls back to direct Gemini generation to ensure document compilation never fails.
  • Static AI Agent Compilation: Replaced dynamic agent synchronization with static graph pre-compilation (agent_graphs.json). This ensures zero dependencies on local directories at runtime and dramatically improves Cloud Function cold-start performance and deployment stability.
  • AI Table of Contents Parsing: The AI template generator now automatically extracts Table of Contents structures from example documents, strictly enforcing Cover Page placement and building semantic HTML for navigation without snippet artifacts.
  • Automated Section Snippets: When generating templates with a Table of Contents, the AI now automatically orchestrates and configures a separate, reusable markdown snippet for every narrative section listed in the outline.
  • Standardized Snippet IDs: Snippet generation now strictly allocates standard 20-character auto-generated Firestore document IDs, preventing the creation of custom or hallucinated slug IDs while gracefully reusing existing snippets.
  • Universal Formula Evaluation: Data Dictionary formula fields are now automatically evaluated and updated in the background for any document across the system whenever the record changes.
  • Inter-Formula Dependencies: The formula evaluation engine now automatically sorts formula fields so that dependent expressions evaluate in the correct sequence.
  • Dynamic Collection Discovery: The Data Dictionary creation dialog now dynamically fetches and includes existing custom collections from your organization’s schema. Initial selections automatically skip collections that already have a configured dictionary to prevent accidental schema collisions.
  • Data Specification Ancestor Routing: Data Specifications now support a new parent data source type. This allows templates and formulas to automatically traverse upward to parent or grandparent records (like from a Quote Section up to the parent Quote or Engagement) to fetch data. The configuration form provides inputs for hierarchy levels, targeted collections, origin sources, handlers, and JSON-formatted default values, and renders with clear visual hierarchy badges.
  • Collection Caching Performance: The system now memoizes schema discovery queries during a user session. This prevents redundant network calls when creating Data Dictionaries, significantly improving dialog loading speeds.
  • Zero-LLM Style Patching: If QA feedback targets global document styles, the AI document template generator now applies targeted CSS micro-edits and completely bypasses regenerating the HTML sections to guarantee structural integrity.
  • Numbering-Insensitive Schema Matching: The AI schema orchestrator now uses numbering and case-insensitive matching when resolving document outlines (e.g., matching “1.0 Title Page” with “Title Page”), preventing duplicate sections and generation failures.
  • Data Dictionary Formulas: Custom properties now support a new Formula type. Define dynamic values combining fields or referencing external data (e.g., account['customData']['account_number'] + quote['name'] + str(i)).
  • Formula UI Constraints: Formula field creation is strictly scoped to the centralized Data Dictionary screen and has been explicitly removed from inline quick-add property modals to prevent malformed schema rules.
  • Read-Only Formula Display: Formula fields render in dynamic property forms as read-only inputs with a primary-colored calculate icon, displaying the calculated value and formula helper text.
  • Intelligent Formula Parsing: Custom property formulas now use negative lookaheads to safely ignore string literals, Python keywords, common math functions, and method invocations when extracting variable dependencies.
  • Linked Data Specifications: The Data Dictionary creation dialog now includes an optional dropdown to immediately link a Data Specification. The dropdown intelligently filters available options to match your target collection (including base entities, synonyms, and linked template IDs).
  • Data Spec Context Resolution: Data dictionaries now accept an optional Data Specification (data_spec) to automatically resolve cross-collection context and dependencies for formula evaluation.
  • Dynamic Snippet Editors: When creating or editing a snippet, changing the snippet’s “Type” dropdown now instantly swaps the content field between a plain text input and a rich Markdown editor. Your active uncommitted text is perfectly preserved across transitions without any data loss.
  • Unified Quote Creation: Consolidated “New Quote” and “Quote from Template” actions into a single unified dialog. The new dialog features an icon-based template picker, a “Start from Scratch” option, and built-in auto-numbering awareness.
  • Automated Section Indexing: Quote sections now automatically allocate and track secure transactional indices (_section_index or i) for use in dynamic naming formulas and data dictionary lookups.
  • Streamlined Creation Menus: Cleaned up the Global Create Menu and Engagement plus buttons by removing redundant template-specific quote actions in favor of the new unified creation flow.
  • Persistent Engagement Tabs: Subcollection tabs on engagements (such as Quotes, Documents, and Resource Plans) are now persistently visible, even when no records exist. This guarantees deep links to empty states never break and exposes creation actions immediately.
  • Responsive Quote Toolbar: The quote editor’s top header now intelligently adapts to narrow viewports. To prevent cramped buttons and overlapping elements, the toolbar smoothly falls back to a horizontally scrollable spillover layout that fully supports touch, trackpad, and mouse drag navigation.
  • Hierarchical Drag-and-Drop: Project plan tasks now feature an advanced drag-and-drop engine with proximity-based expansion, ensuring dense list layouts remain clean until a drop interaction occurs.
  • Split Drop Targets: When dragging a task to an ambiguous hierarchical boundary (such as the end of a phase), the drop zone now intelligently splits into two side-by-side targets: “Drop as Root Task” and “Drop as Subtask”. This provides dynamic Work Breakdown Structure (WBS) previews before you drop.
  • Drag Validation & Cycle Prevention: The drag-and-drop engine now actively validates moves, preventing invalid operations and circular dependencies (such as dropping a parent task into its own child).
  • Migration API Expansion: Added a new getAllCollectionsCallable endpoint to the migration API, enabling administrators to retrieve a comprehensive list of all root collections and subcollections defined in the organization’s data schema.
  • Custom Property Dictionaries: Administrators can now create new custom property dictionaries for standard entities (like Accounts or Engagements) or define completely custom entities using the new creation dialog.
  • Global Create Menu Integration: Added “New Custom Property” to the Global Create Menu for instant access to dictionary configuration from anywhere in the app.
  • Dictionary Collision Prevention: The custom property creation dialog now actively prevents duplicate dictionaries for the same entity and provides a direct shortcut to open the existing configuration.
  • Dictionary Empty States: The Data Dictionaries screens now feature beautifully designed empty states with clear guidance on how to define dynamic schema fields for your entities.
  • Property Deletion Safeguards: Deleting a custom property or list column from a data dictionary now prompts a safety confirmation dialog to prevent accidental schema changes.
  • Schema Migration API: Added a new backend callable to retrieve the complete system schema, including all root and subcollections, to support advanced data migration and syncing workflows.
  • Adaptive Action Menus: Data tables and object headers now use a unified action architecture. When only a single action is available, the menu adaptively renders as a direct single-click button instead of a dropdown menu to reduce unnecessary clicks.
  • Helpful Table Empty States: The Resources, Project Plans, Files, and Accounts tables now display beautifully designed empty states with direct call-to-action buttons, providing clear guidance on how to populate the view.
  • Dynamic Cloud Environment Resolution: Backend functions and CLI tools now dynamically resolve the active Google Cloud project using Application Default Credentials (ADC) and environment variables, eliminating the need for hardcoded .env files during deployment and local execution.
  • Targeted Session Fetching: The fetch_direct_session.py management script now supports a --project parameter for pulling raw Reasoning Engine transcripts from specific Google Cloud environments.
  • Entity Closure Migration: A new migrate_entity_closure.py management script and associated backend callables enable administrators to export and import complete, schema-driven entity closures (such as a root project and all its subcollections and references) across environments via JSONL files. The tools automatically handle topological sorting, dependency graphs, and safe cross-tenant isolation.
  • Adaptive Resource Caching: Resource planning grids and resource selector dropdowns now use an adaptive dual-mode caching system. For organizations with up to 1,500 resources, the entire pool is pre-cached for instant, zero-latency synchronous lookups. For larger organizations, resources are efficiently batch-fetched on demand in chunks of 30.
  • Instant Object Resolution: Object search dropdowns now support synchronous preloading of cached items and initial display names. This eliminates empty state flickering, layout shifts, and loading spinners when opening forms with pre-selected records.
  • Concurrent Auditing: Automated CI and AI agent workflows now execute mandatory pre-push audits concurrently to maximize velocity and eliminate sequential delays.
  • Visual Tag Categories: The Tags settings screen has been redesigned to display your tags in visual Category Cards, replacing the previous master table layout.
  • Inline Tag Creation: You can now rapidly add new tags directly to a category by clicking the + Add value chip inside the category card and pressing Enter.
  • Preset Category Colors: When creating or editing a tag category, you can now select from a curated palette of preset colors with accessible high-contrast checkmarks.
  • Tag Rule Editing: You can now edit existing tag category restrictions and Tag-Based Access Control (ABAC) rules directly from the organization profile, rather than having to delete and recreate them. The target collection is locked during edits to prevent accidental re-routing.
  • Bulk Tag Selection: Added a “Select all / Deselect all” button to the tag rule configuration dialog to quickly manage large lists of categories.
  • Deployment Pipeline: Streamlined the backend CI/CD release pipeline to unconditionally deploy all ADK agents together, eliminating path-filtering mismatches and ensuring consistent environments.
  • Keyboard Dropdown Navigation: All autocomplete and typeahead dropdowns across the platform (including quotes, tags, and assignees) now fully support keyboard traversal. You can use the up and down arrow keys to navigate options, which are clearly indicated with a green highlight, and press Enter to make a selection.
  • Dropdown Overlay Polish: Dropdown menus and typeahead suggestions now feature an opaque background and crisp elevation styling to ensure readability over complex backgrounds like repeating lists and Gantt charts.
  • Strict Tenant Boundaries: Upgraded all autocomplete search components to strictly enforce multi-tenant isolation rules, ensuring users can only query resources within their own organization.
  • Dynamic Task Deletion: Deleting a project plan task now automatically recalculates the completion percentage (% Done) for all parent tasks up the hierarchy, as well as the overall project plan.
  • Deletion Dependency Cascades: When a task is deleted, the system now automatically recalculates and cascades start and end date adjustments to any downstream tasks that depended on it.
  • Blocked Status: Added a new “Blocked” status to the default project plan and task lifecycles to clearly indicate when work cannot proceed.
  • Predecessor Navigation: Start date fields on tasks with predecessors are now explicitly skipped during keyboard navigation (Tab / Enter) because they are dynamically locked to their prerequisites.
  • Date Locking: Start dates for parent tasks and tasks with predecessors, along with all task end dates, now display visual lock icons in the project plan grid to indicate they are automatically calculated.
  • Strict Waterfall Cascading: The backend dependency engine now rigorously enforces waterfall timelines. Tasks with predecessors have their start dates strictly locked to the latest end date of their prerequisites, automatically cascading shifts forward or backward.
  • Intelligent Snippet Context: The AI snippet generation agent now performs targeted context retrieval. When generating snippets that reference pricing, schedules, or client discussions, the AI actively discovers and fetches the exact quotes, project plans, or semantic notes needed to ground the content.
  • Snippet Cache Invalidation: Reordering or modifying snippets now intelligently invalidates local caches via the table refresh bus, instantly refreshing linked UI components across the workspace.
  • Markdown PDF Generation: The document generation engine now natively converts Markdown (md and aimd) snippets into beautifully styled HTML before rendering the final PDF, preserving tables, lists, and headers perfectly without injecting extraneous line breaks.
  • HTML Preview Modal Defense: In Flutter Web, HTML previews now intelligently pause and display a placeholder when dialogs, modals, or dropdowns open. This prevents underlying web iframes from occluding modal barriers and stealing pointer events.
  • Snippet Real-Time Reordering: Reordering snippets via drag-and-drop now instantly notifies the data table bus, ensuring UI consistency across multiple views.
  • Jinja HTML Preservation: The document templating engine’s nl2br filter now intelligently preserves existing HTML block structures (from converted Markdown or raw HTML snippets) without injecting extraneous <br> tags.
  • Server-Silent Handshake: UI inputs bound to live Firestore streams now implement anti-race condition handshakes to compare local edit timestamps against server round-trips, ensuring active user keystrokes are never overwritten by delayed updates.
  • Unified Snippet Rendering: All snippet displays and editors (across engagements, quotes, and document variable panels) now use a unified rich editor. This centralizes Markdown visual editing, HTML rendering with source switching, and plain text editing for consistent cross-platform UX.
  • Markdown Visual Editor: Markdown (md and aimd) snippets now feature a rich visual editor with formatting toolbars (bold, italics, headers, lists, code blocks, blockquotes) and a raw markdown source toggle.
  • HTML Snippet Preview: HTML snippets now feature a live webview preview with a toggle to edit the raw HTML source code.
  • Strict Snippet Typing: AI snippet config agents now strictly classify snippet types based on formatting complexity. Basic formatting (bold, lists) is enforced as Markdown, complex UI (tables, images) as HTML, and unformatted content as plain text.
  • Debounce Flushing: Autosaving widgets now aggressively flush any uncommitted debounced saves during disposal to eliminate data loss when navigating away from a screen quickly.
  • Markdown Snippets: Support for static Markdown (md) and AI-generated Markdown (aimd) snippet types across the platform.
  • Snippet Micro-editing: The AI snippet generation engine now uses targeted search-and-replace patching (micro-edits) to modify existing snippet content, preserving surrounding formatting byte-for-byte.
  • Local Agent Runner CLI Updates: The run_agent_local.py management script now supports a --snippet-id parameter and URL-encoded path resolution for testing snippet creation locally.
  • Engagement Template Table: The engagement templates list now displays a paginated data table featuring columns for field count, a compact Slideshow badge, last modified timestamp, and the owner’s avatar.
  • Universal Search Redesign: The global search command palette now intelligently adapts its height for virtual keyboards on smaller screens and features improved contrast for selected search results.
  • Smart Deep Linking: Universal search navigation now automatically strips internal compound ID artifacts and correctly resolves canonical deep links (such as routing directly to specific organization configuration tabs).
  • Icon Resolution: The system now correctly resolves and displays dedicated icons for collections with irregular plurals (like Data Dictionaries).
  • Pending Approvals Dashboard Widget: A new central widget on the dashboard displays all active approval requests across your organization to ensure workflows never stall.
  • Pending Approvals Filtering: Easily filter the dashboard approvals widget by “All Pending” or “Awaiting My Review”. Items explicitly requiring your sign-off display a highlighted “Action Required” badge.
  • 1-Click Review Navigation: You can click “View Record” directly from the new dashboard widget to instantly open the target quote or engagement requiring approval.
  • Labeled Notes Buttons: Notes access buttons across the platform (such as on Quotes, Engagements, and specific Quote Sections) now feature explicit context labels and dynamically scaled count badges for improved visibility on desktop screens.
  • Contextual Notes Popouts: The right-hand notes popout window now dynamically updates its header title to match the specific context of the origin record (like “Quote Notes” or “Section Notes”).
  • Strict Tenant Security: Backend operations (including AI schema orchestration and template saving) now strictly enforce verified organization and owner contexts, rejecting operations with missing tenant IDs to guarantee strict multi-tenant data boundaries.
  • Multi-Snippet AI Generation: When using AI to generate snippets, you can now request multiple snippets in a single prompt. The AI intelligently creates them as discrete, separate items rather than bundling them together.
  • Header & Footer Logo Extraction: The AI document template generator now extracts corporate logos and banner graphics directly from Word document running headers and footers, integrating them automatically into your HTML wrappers.
  • Strict Outline Matching: The AI template generator now strictly cross-references numbered instructions against the document’s actual Table of Contents to resolve exact titles, preventing the hallucination of generic placeholder headings.
  • Document Variables Panel: The document preview screen now features an interactive split-view panel allowing you to edit template variables and snippets directly alongside the generated PDF. It is organized into dedicated Snippets and Variables tabs, complete with item count badges.
  • Variable Sequencing: Variable groups (like Account, Quote, Document, or Resource) in the document variables panel are now strictly ordered by their first appearance in the document template.
  • 2-Column Variables Layout: When the Variables Panel is expanded on larger screens, the Variables tab automatically switches to a side-by-side, 2-column layout to maximize screen real estate.
  • Asynchronous Regeneration: When collapsing the expanded variables panel after making edits, document regeneration now triggers asynchronously in the background so the UI is not blocked.
  • Cross-Tab Saving: The panel tracks dirty states across both Snippets and Variables, allowing you to make edits in both tabs and save them simultaneously.
  • Intelligent Snippet Parsing: The document variables panel now automatically extracts human-readable titles from complex snippet bracket syntax and prioritizes snippets at the top of the list.
  • Variable Filtering: The document variables panel now automatically filters out invalid expression roots (like Jinja formatting artifacts) to ensure a clean editing experience.
  • Variable Panel Empty States: The document variables panel now displays a helpful empty state when a template contains no valid variables or snippets.
  • Document Status Management: You can now update a document’s lifecycle status (e.g., Draft, Under Review, Approved) directly from the document header using an interactive dropdown.
  • Auto-Regeneration: Editing variables in the expanded document panel and collapsing it now automatically saves your changes and regenerates the PDF in one seamless action.
  • Responsive Document Viewer: The document preview layout now intelligently adapts to narrow screens, allowing you to toggle between the PDF and the variables panel seamlessly.
  • Approval Workflows: Lifecycle transitions can now require multi-reviewer approvals based on roles and policies (all or any), with designated routing for rejections or changes.
  • Conditional Approvals: Approval rules can now evaluate dynamic condition formulas (e.g., quote.discount > 0.15) to trigger approvals only when specific criteria are met.
  • Submitter-Selected Approvers: Approval rules can now be configured to prompt the user to manually select the required reviewers from a filtered list of eligible colleagues before initiating the transition.
  • Organization-Wide Approvals: Approval rules can now be configured with empty roles, allowing any active user in the organization to approve or be selected as a reviewer.
  • Default In-Flight Status: When a transition triggers an approval rule, the record automatically moves to an in-flight status matching the rule’s label, or defaults to “In Approval” if no label is defined.
  • Interactive Approval Banner: Records pending approval now display a sticky banner at the top of the workspace. Assigned reviewers can quickly approve, request changes, or reject the transition (with mandatory comments) directly from the banner. The banner persists to show recent rejection or change request comments until manually dismissed.
  • Approval History Pop-out: You can now view the complete audit trail of past approval requests, reviewer decisions, and comments via a right-hand sliding drawer accessed from the status indicator.
  • Status Locks: Lifecycle statuses can now be configured to automatically lock (read-only) or unlock records upon entry.
  • Project Plan Automations: Project plans and tasks now automatically transition to ‘Completed’ status when their completion reaches 100%, and revert to ‘In Progress’ if reduced.
  • Fallback Automations: Lifecycle automations now reliably trigger even if a document is missing its monitored fields cache.
  • Project Plan Migration CLI: Added a migrate_project_plan_items_completed.py script to administratively bulk-update historical 100% completed tasks to the ‘Completed’ status.
  • Approval History Backfill CLI: Added a backfill_approval_history_count.py script to administratively recalculate and synchronize approval counts on target entities from historical request data.
  • Document Modifier Attribution: Added a dedicated modifiedBy field to all records to rigorously track the exact user or system actor who last modified the document for audit purposes.
  • Organization Profile Redesign: The Settings > Info screen has been completely redesigned into a clean, multi-card layout. It now categorizes settings into General, Planning & Dashboard, Auto Numbering, Tag Rules, and Custom Properties.
  • Auto Numbering UI: The Auto Numbering section now features a clear, formatted counter table and responsive search toolbar, making it easier to manage sequential naming rules across your collections.
  • Tag Rules Management: The new Tag Rules card provides dedicated, searchable tables for managing both tag category restrictions and tag-based access (ABAC) rules with visual pill badges.
  • Custom Properties Card: Organization custom properties are now managed at the bottom of the profile in a dedicated dynamic properties card.
  • Contextual Global Create Actions: The Global Create Menu now dynamically includes options to build new Project Plans, Resource Plans, and Snippets directly from an active engagement.
  • Action Menus: Standalone delete buttons across the platform have been consolidated into unified Action dropdown menus to protect against accidental clicks.
  • Advanced Project Scheduling: Project plan durations now support months (1m) and years (1y). When scheduling tasks in days (d), the auto-scheduling engine automatically skips weekends.
  • Genuine Section Body Extraction: When AI generates snippets corresponding to specific document sections (like “Objectives” or “General Assumptions”), it now heavily favors extracting the actual body narrative directly from the source document rather than generating generic placeholder text, converting it into clean, styled Markdown.
  • DOCX Artifact Cleansing: The AI snippet extraction engine now automatically detects and cleans underlying DOCX formatting artifacts (such as style wrappers and spacing highlights) to produce pristine, reusable Markdown.
  • Persistent UI Preferences: Client-side UI layout preferences (such as the quote sidebar’s collapsed or expanded state) are now securely remembered across sessions using local device storage.
  • Zero-Flicker Hydration: Interface preferences are pre-warmed synchronously during application boot, guaranteeing zero layout shifts or visual flickering when loading saved UI states.
  • Privacy Compliance: The new client-side preference architecture strictly adheres to ePrivacy Directive Art. 5(3) by only persisting exempt layout customizations locally, ensuring sensitive business data remains securely in the cloud.

Fixes & Improvements

  • Document Preview Stability: Fixed an issue on web where dropdown menus (like the Data Specification selector) positioned over the live HTML preview could become unclickable. The preview now intelligently pauses while dropdowns are open and resumes when dismissed.
  • Release Pipeline: Enhanced backend CI/CD release pipeline scripts to improve log parsing reliability during concurrent deployments.
  • AI Infrastructure Resilience: The Vertex AI client now automatically retries failed generation requests (like rate limits, timeouts, or 50x server errors) with exponential backoff up to 5 attempts, ensuring AI features remain reliable during transient Google Cloud disruptions.
  • Document Generate Trigger Context: Optimized the backend document generation trigger to reliably extract and resolve parent collection context and use strict field filters for snippet queries, preventing execution warnings and errors.
  • Literal Snippet Repair: The document generation pipeline now automatically detects and repairs literal placeholder text (like “Markdown Snippet”) in template output, replacing it with the correct section heading snippet tags.
  • In-Memory Dictionary Caching: Data Dictionary lookups are now cached in-memory across backend triggers, significantly reducing database reads and improving formula evaluation speed.
  • Idempotent Formula Updates: Formula evaluation now strictly checks if calculated values differ from persisted values before writing to the database, preventing infinite trigger loops.
  • Metadata Sync Optimization: The universal entity trigger now immediately skips internal and metadata collections (like embeddings and audit logs) without querying the database, reducing unnecessary function execution.
  • Dialog State Preservation: When canceling or dismissing a popup chip selector (like those used for single or multi-select fields), the system now perfectly preserves your existing selections instead of clearing them.
  • Explicit Clear Actions: Added a dedicated “Clear” button to popup chip selectors that currently have a value, allowing users to explicitly remove selections without confusion.
  • Date Standardization: Enforced strict yyyy-MM-dd date formatting and parsing across project plans to prevent cross-platform synchronization errors.
  • Modal & Dropdown Occlusion Guard: Fixed a Flutter Web issue where active HTML preview iframes would capture pointer events and render overlying dialogs, popups, or dropdown menus unclickable.
  • Markdown Line Breaks: Fixed an issue where plain text newlines in Markdown snippets were sometimes double-spaced during document generation.
  • Agent Knowledge Graph: Integrated the graphify workflow into the backend agent rules to enable fast AST-based shortest-path querying across the codebase.
  • Dashboard Focus Management: The pending approvals widget now explicitly excludes “View Record” buttons from keyboard traversal to streamline focus navigation on the dashboard.
  • Legacy Route Redirection: The application router now automatically intercepts and resolves legacy, un-nested, or direct collection routes to their modern canonical deep-link URLs.
  • Template Tag Extraction: The backend document generation engine now strictly preserves first-appearance order and deduplicates repeated tags when extracting Jinja variables from templates.
  • Profile Rendering Performance: Caches user profile avatar and display name streams across widget rebuilds to eliminate redundant database reads and prevent client memory leaks.
  • API Payload Compatibility: Document generation endpoints now proactively supply dual-cased keys (camelCase and snake_case) to guarantee seamless compatibility with all legacy and modern Cloud Functions.
  • Document Snippet Saving: The document variables panel now intelligently queries and resolves existing engagement snippets when saving inline edits, ensuring updates are perfectly synchronized without duplicate records.
  • Custom Data Merging: The variables panel now safely merges updates to nested custom data properties without overwriting sibling fields.
  • Domain Icons: The variables panel now accurately resolves and displays domain icons for singular root entities (like quote and account).
  • Variable Labels: Added native display labels for document and resource root objects in the variables panel.
  • List Scrollbars: Fixed an issue where duplicate scrollbars could appear on nested horizontal lists and data dictionary tables.
  • AI Content Extraction: The document AI now intelligently detects and bypasses Table of Contents ranges when extracting section text, ensuring accurate body content retrieval.
  • Payload Compatibility: Document function calls now seamlessly supply dual-cased keys (camelCase and snake_case) to ensure backwards compatibility with backend tag extraction.
  • Save Status Indicators: Dialogs and headers across the platform now feature real-time save status indicators (Saving changes… / Saved) to provide clearer feedback during background saves.
  • Deep Link Routing: Introduced an internal deep linking utility to seamlessly route specific record paths directly to their workspaces.
  • Document Generation Error UI: Redesigned the error state for failed document generation. It now features a clear, themed layout displaying the exact error message and a Try Again button to safely retry compilation.
  • Document Regeneration Feedback: If regenerating a document fails, the system now displays a clear, floating snackbar rather than failing silently.
  • Document Header Indicators: The document screen header now displays a real-time last modified indicator next to the document name.
  • Version Coalescing: To reduce audit log noise, rapid document edits made within 15 minutes by the same user (or automated system updates) are now coalesced into a single version record.
  • Deletion Tombstones: Deleting a document now automatically generates a final tombstone version in the audit history, ensuring no historical data is permanently lost.
  • Field-Level Edit Tracking: Document versions now explicitly track and display precise field-level differences (old and new values) and attribute them to the exact user or system actor.
  • Gantt Chart Scrolling: Project plan Gantt charts now feature a themed horizontal scrollbar. The timeline canvas automatically guarantees a minimum scrollable buffer (90 days for Day scale, 52 weeks for Week scale, and 24 months for Month scale) to ensure you always have room to drag and drop tasks.
  • Secure Document Regeneration: Regenerating an existing document now routes through a dedicated, secure backend endpoint. This allows overriding templates on the fly and prevents client-side security errors by using the Admin SDK to manage document statuses.
  • Nested Project Plan Routing: Viewing a project plan from within an engagement now routes to a dedicated nested workspace (/engagements/:id/project_plans/:childId) rather than redirecting to the global projects screen, preserving your context.
  • Project Plan Empty States: The engagement project plans list now displays a beautifully designed empty state with clear guidance and quick actions to help you start your first plan.
  • Global Project Plan Navigation: Opening a project plan from the global Project Management screen now intelligently routes you to the nested engagement workspace if the plan belongs to an engagement.
  • Engagement Creation Menu: Added a “Create Project Plan” action to the engagement’s top-right global create menu for faster access.
  • Project Plan Statuses: Project plan lists and project item tables now display a dedicated status column.
  • Task Status Chips: Task statuses in the project plan grid now display as interactive chips instead of circular indicators, complete with a dropdown menu for quick updates.
  • Project Plan Filters & Views: Added a search box and views dropdown (All Tasks, Critical Path, Incomplete, Completed) to the project plan header toolbar.
  • WBS Numbering: Project plan tasks now automatically generate and display hierarchical Work Breakdown Structure (WBS) numbers (e.g., 1, 1.1, 1.2).
  • Duration Shorthand: You can now type shorthand values like 5d, 40h, or 2w into task duration fields, complete with intelligent autocomplete options.
  • Explicit Batch Editing: Multi-cell batch editing now requires an explicit Enter keypress to commit changes, preventing live keystrokes from overwriting selected sibling cells mid-word.
  • Filtered Row Creation: Automatic task row creation (via Tab or Enter) is safely disabled when search queries or view filters are active to prevent data misalignment.
  • Deep Note Routing: The backend note routing engine now deeply inspects all custom properties to extract and cross-link nested Firestore document paths globally.
  • Project Plan Batch Editing: You can now multi-select cells in the project plan list view using Shift+Click or Ctrl/Cmd+Click. Editing one cell automatically updates all selected tasks simultaneously.
  • Task Drag-and-Drop: You can now reorder and nest project plan tasks directly using a drag-and-drop handle on each row.
  • Task Context Menu: Right-clicking a task row now opens a dedicated context menu with actions to add siblings, add children, move, indent/outdent, toggle critical path, or delete tasks.
  • Hierarchy Keyboard Shortcuts: Manage project plan structures instantly using keyboard shortcuts: Ctrl/Cmd + ] to indent, Ctrl/Cmd + [ to outdent, and Ctrl/Cmd + Up/Down to move tasks.
  • Batch Deletion: You can now delete multiple project plan tasks at once using the context menu after multi-select.
  • Smart Note Routing: Notes attached to deeply nested records (like project tasks) now automatically bubble up to their parent engagements. The system also actively scans note data to detect references to other records (like files or accounts), automatically cross-linking the note across all relevant workspaces.
  • Instant Grid Saving: Navigating between editable grid cells using Enter or Tab now instantly saves your data, bypassing background debounce timers for a faster, more responsive editing experience.
  • Auto-Numbering Previews: Creation forms for auto-numbered objects now display a clear “Auto-generated” hint with a preview of the next sequential number.
  • Agent Verification CLI: The run_agent_local.py CLI script now verifies post-run Firestore document writes across all template types (engagement, quote, document), data specs, and snippets.
  • Silent Table Refreshing: Data tables now intelligently refresh in the background when you return to a screen after modifying records elsewhere, ensuring data is always up-to-date without screen flashing or layout jumps.
  • Document Defaults Validation: Document generation defaults defined in Data Specifications are now proactively validated against your organization’s documents Data Dictionary.
  • Resource Plan Routing: Creating a new resource plan now seamlessly routes you directly to the plan’s dedicated workspace.
  • Clickable App Logo: The Servantium logo at the top of the navigation rail is now clickable and instantly routes you to the dashboard.
  • Quote Name Inline Editing: You can now rapidly rename a quote by double-clicking its title in the editor header, or by selecting Rename Quote from the quote switcher dropdown.
  • Grid Keyboard Navigation & Auto-Creation: Editable grids, tables, and item lists (like quote lines and project tasks) now feature spreadsheet-like keyboard ergonomics. Press Tab to move right, Enter to move down, and automatically create a new row by pressing Enter on the last row or Tab on the final field.
  • Hierarchical Subtask Rapid Creation: In project plans and hierarchical grids, pressing Enter on the final subtask of a parent group now automatically creates a new sibling subtask, rather than jumping to the next outdented row. Additionally, Shift+Enter allows you to navigate up to the previous row.
  • Document Generation Defaults: Data Specifications can now include a defaults dictionary for the generated document data source, automatically pre-seeding custom properties (like document_type or requires_signature) upon creation.
  • Dynamic Document Defaults: Document generation defaults defined in Data Specifications now fully support dynamic Jinja templating, allowing you to populate properties using your merge payload (e.g., {{ engagement.name }}).
  • Mobile Scrolling: Data tables and lists on mobile devices now feature continuous scrolling physics, ensuring infinite pagination works smoothly even when content doesn’t fill the screen.
  • Document Entity Aliases: The document generation merge engine now automatically supports the documents plural alias for the active document instance, matching other core entities.
  • Data Dictionary Batch Fetching: The document generation engine now performs single round-trip batch fetching for data dictionaries, significantly improving rendering performance for complex templates.
  • Document Custom Properties: The AI Schema Orchestrator can now dynamically identify and map document-level custom properties (like classifications or signature requirements) directly from your reference files.
  • Global Default Views: The Project Management and Resources screens now intelligently default to their high-level directory views (Project Plans and Project Planning) for quicker navigation.
  • Task Detail Dialogs: You can now double-click any task row or Gantt timeline bar to instantly open a full, focused edit dialog for that task.
  • Static Gantt Toolbar: The Gantt chart toolbar has been redesigned as a static, always-visible control bar, replacing the previous hover-to-expand menu for faster tool selection.
  • Gantt Chart Controls: Project plans feature new date scope controls (Previous, Today, Date Range) and scale view segments (Day, Week, Month) on the Gantt chart.
  • Project Plan Header: Redesigned project plan headers now display task counts, progress bars, and segmented tab navigation (Info, List, Gantt). Project Plans now automatically open to the List tab by default.
  • Resource Plan Sorting: The resource planning grid now supports sorting by Name, Period Hours, and Start Date via a new toolbar dropdown.
  • Task Search: Project plan Gantt and list views now support inline text search to quickly filter tasks by name.
  • Universal Notes Popout: Notes on specific items (like project plan tasks and resource plan assignments) now open in a sleek, right-hand sliding popout window rather than a modal dialog, allowing you to reference the underlying screen context while writing.
  • Universal Note Counts: The total number of notes attached to any object is now natively tracked by the database and displayed as a numeric badge on the comment icon across all grids and lists.
  • Inline Tag Badges: A compact, interactive tag badge has been added to high-density data tables, starting with the Resource Planning grid. Clicking the badge opens a quick-editor modal to view and modify tags without navigating away.
  • Alphabetical Tag Sorting: Grouped tag rows in the Resource Planning grid are now sorted alphabetically by their display names instead of their internal IDs.
  • Template Multi-Add: You can now rapidly add multiple items to List fields in engagements using the new “Multi-Add” dialog, which supports “Save and Add Another” workflows.
  • Template Multi-Add Shortcuts: You can now use Cmd+Enter (Mac) or Ctrl+Enter (Windows) inside the Multi-Add dialog to instantly save and add another item.
  • Smart Item Deletion: Deleting an individual list item now intelligently prompts for confirmation only if the item contains data, allowing you to instantly clear empty rows.
  • Staggered Grid Layout: Complex list and group fields now use a responsive staggered grid layout to optimize screen space and improve readability on larger displays.
  • Formula Visibility Evaluation: Fields with visibility formulas now start hidden by default on initial load until their formula evaluates to true, eliminating layout flashes.
  • Drag Auto-Scrolling: The engagement template editor now supports intelligent drag-and-drop auto-scrolling. When reordering fields in a long template, holding a card near the top or bottom edge of the screen automatically scrolls the viewport.
  • Bulk Add Chip Options: When configuring Chip fields in Engagement Templates, you can now use the Bulk Add dialog to paste a comma-separated or newline-separated list of options. The system automatically generates valid Python-friendly keys and capitalized labels.
  • Quote Formula Inputs: Quote item cost and markup fields across mobile and desktop interfaces now natively accept text input to fully support dynamic formula expressions.
  • Dynamic Financial Formulas: Quote templates now support dynamic Python-based formulas for cost, markup, and discount fields, allowing for advanced tiered or conditional pricing.
  • Dynamic Naming: Quote sections and items can now use dynamic string formulas for their names using Python string methods and concatenation.
  • Advanced Formula Functions: Quote item formulas now support additional built-in functions including any(), all(), list(), dict(), set(), sorted(), and range(), as well as standard boolean aliases (true, false, null).
  • Quote Formula Context: Formulas in repeating quote sections now natively support _item and _index variables. Child items directly inherit row-level sub-field variables from their parent repeating section.
  • Table & Card Views: The global Files screen and Contacts list have been upgraded to support dynamic switching between dense table rows and visual media cards, powered by a new unified card interface.
  • Context-Aware Document Templates: The document generation button now strictly filters available templates by your current context.
  • Categorized Settings Navigation: The Settings sidebar has been redesigned to group administrative tools into distinct, easy-to-read sections.
  • Mandatory AI Data Spec Reuse: AI generation now automatically searches your organization for existing Data Specifications matching the target base entity and reuses them to prevent duplicate schemas.
  • Hierarchical Engagement Templates: The template editor now features a split-screen layout with a live interactive preview. You can group fields, drag-and-drop them into hierarchical structures, and quickly manage them using the new floating top toolbar. Field structures also support instant expand/collapse all functionality.
  • Enhanced Empty States: The Accounts, Contacts, and Engagements screens now feature beautifully designed empty states with quick actions to help you get started.
  • Visual Tag Chips: Tag chips now consistently display category colors and accessible text across all tables and cards using a unified component.
  • Contact Workspaces: The contact details screen now reuses the standard tabbed workspace layout for a more consistent navigation experience.
  • Engagement Creation Wizard: Redesigned the engagement creation flow. Users now input the name first and select from a visual grid of options including “Start from Scratch”, “Start with Notes”, and specific templates.
  • Recursive Field Validation: Engagement template AI generation now fully supports hierarchical group and list fields, recursively validating child field rules and types.
  • Quote QA Agent: AI quote generation is now powered by a specialized QA pipeline (Generator, Evaluator, Refiner). It rigorously validates generated items against engagement notes and catalog pricing, and performs surgical micro-edits that preserve existing line item IDs.
  • Semantic Note Search UI: The Notes tab now features a dedicated search bar for querying notes conceptually. Results include a similarity match percentage and highlight the closest AI matches.
  • Include Descendants Toggle: Expanded the “Include Descendants” filter to work seamlessly with semantic search, allowing you to query across all nested child notes.
  • Note File Attachments: You can now attach project documents, spreadsheets, or images (up to 25MB) directly to your notes.
  • AI Document Summaries: Notes with attached files now feature a “Show Document Summary” action. Click the sparkle icon to view an AI-generated Markdown summary of the document in a dedicated dialog.
  • Universal Notes & Descendant Rollups: Notes are a top-level entity attachable to any record. A new toggle rolls up all notes from a record and its children into a single timeline.
  • Contextual Global Create Menu: The top-level menu now dynamically suggests context-aware actions like “Invite User” or “Upload File”.
  • AI File Extraction: Uploaded files now automatically extract plain text, generate AI summaries, and produce vector embeddings.
  • Standalone Data Specifications: Data Specs are now independent, reusable entities managed in their own workspaces under Settings.
  • Quote Multi Group Wizard: A new bulk editor allows configuring catalog items across multiple quote sections using tag groups.
  • Hierarchical Quote Numbering: Quote sections and items automatically display hierarchical numbering.
  • Spreadsheet List Properties: Data Dictionaries now support List property types, rendering as interactive, Excel-like grids on object forms.
  • Account Creation Dialog: Creating a new account from the Clients screen now opens a streamlined dialog instead of navigating to a new page.
  • Quote Label Resolution: Quote formulas now support the label() function and <field>_label context variables to instantly translate raw tag and chip keys into human-readable display labels.
  • Template State Preservation: The engagement template editor now perfectly preserves your field expansion states (expanded or collapsed) across background saves, re-renders, and new field additions.
  • Template List Deletions: Deleting a List field in the engagement template editor now prompts a safety confirmation dialog to prevent accidental loss of nested subfields.
  • Formula Schema Resolution: The formula evaluation engine now automatically resolves the parent template’s schema context, enabling seamless label() translations and <field>_label generation directly from database lookups.
  • Schema-Aware Formulas: Formula fields and visibility rules within Engagement Templates now automatically inherit the template’s full schema context. This allows the label() function to instantly resolve human-readable option labels for chip and tag fields directly from the template definition.
  • Template List Empty States: List fields in engagements now display helpful empty state guidance with direct actions to add items or open the Multi-Add dialog.
  • Smart Multi-Add Dialogs: The Multi-Add dialog intelligently tracks your additions, displaying a “Close” button instead of “Cancel” once items are added, and safely ignores untouched forms when clicking “Save and Done” to prevent blank ghost items.
  • Audit Security: Added strict Firestore security rules requiring modifiedBy attribution on all updates, preventing users from spoofing audit trails.
  • Data Schema Serialization: Updated internal serialization for Document Template data specifications to enforce strict snake_case keys for improved backend reliability.
  • Version Triggers: Optimized the universal versioning trigger to safely ignore initial document creations, reducing unnecessary database writes.
  • Document Generation Triggers (legacy): Optimized the Firestore document generation trigger to only fire on initial creation, preventing redundant executions and separating regeneration logic into its own scalable endpoint.
  • Strict Status Enforcement: Client-side saves now automatically strip status and integrationModified fields from the payload to prevent Firestore permission-denied errors and ensure backend lifecycle control.
  • Critical Path Reliability: Refactored the critical path backend calculation engine to act as a one-time trigger, guaranteeing that calculation flags always reset and preventing task timelines from getting stuck.
  • Project Plan Loading States: Creating a project plan now displays an explicit loading state in the header controls to prevent duplicate submissions.
  • AI Schema Inference: Enhanced the AI template generator’s data specification engine to handle fallback collections and relative reference paths for accounts and contacts.
  • Document Creation Dialog: Fixed an issue where the document creation dialog could fail to open when triggered from a context menu that immediately closes.
  • Stale Form Prevention: Workspaces and object forms now instantly and reliably reset when navigating between different records, preventing stale data from flashing on screen.
  • Form State Preservation: Fixed an issue where form fields could retain stale data when navigating directly between two records of the same type.
  • Auto-Numbering UI: Auto-numbered fields and creation dialogs now display a clear “Auto-generated” hint with a preview of the next sequential number.
  • Auto-Numbering Headers: Fixed an issue where the workspace header could briefly display “Untitled” while awaiting a server-generated auto-number.
  • Multi-Navigator Stability: Resolved an internal routing issue where nested navigators could crash when delegating observer events.
  • Table Loading States: Replaced full-screen loading spinners on data tables with subtle, non-intrusive progress indicators during background re-syncs.
  • Template Security Boundaries: Enforced strict cross-tenant permission boundaries when fetching document templates and evaluating Jinja tags, ensuring users can only access their organization’s templates.
  • Table Pagination Reliability: Fixed an issue where infinite scrolling on tables could fail to trigger if the scroll controller was unmounted or data was filtered too quickly.
  • Data Spec Validation: The Data Spec AI agent now proactively checks your document defaults against the documents data dictionary during schema generation, warning if undefined fields are used.
  • Template Tag Validation: The document template tag validator now cross-references your organization’s custom Data Dictionaries, preventing valid custom fields from being incorrectly flagged as missing during schema validation.
  • Template Security: Added strict cross-tenant permission boundaries when fetching document templates or evaluating Jinja tags.
  • Alias Resolution Order: Fixed an issue where alias data sources could fail to resolve if they targeted a generic object populated later in the document merge process.
  • Document Source Validation: Data Specifications now automatically default to the documents collection for generic document instances if a specific collection is omitted.
  • Backend Counting Reliability: Counter triggers now use database transactions to prevent race conditions during rapid concurrent updates, and safely clamp values to zero to prevent negative counts.
  • Notes Badge Scaling: The notes icon badge now automatically scales proportionally with the icon size for a cleaner layout in dense grids.
  • Tag Resolution Performance: Implemented a new TagMap cache for O(1) tag resolution, ensuring UI elements like Tag Badges render instantly even in massive datasets.
  • Formula Resilience: Formulas beginning with a leading = now evaluate safely without syntax errors, and native support for pow() and divmod() has been stabilized.
  • Formula Evaluation Engine: Rebuilt the frontend formula evaluation engine with O(1) LRU memoization (caching) and in-flight request coalescing to significantly reduce network calls and speed up complex template rendering.
  • Template ID Deduplication: Added robust deduplication for engagement template field IDs to prevent rendering crashes when copying or generating complex nested fields.
  • Field Drag and Drop: Rebuilt the hierarchical drag-and-drop system for engagement template fields to use robust stateful widgets, ensuring reliable reordering and nesting within groups.
  • Template State Preservation: Engagement template editors now utilize persistent focus nodes and text controllers to prevent cursor jumping and input loss during background saves or re-renders.
  • Data Serialization: Resolved a backend compatibility issue by normalizing legacy numeric cost and markup values to strings during quote template deserialization.
  • Quote Dropdowns: The line item type dropdown (Resource/Material) on mobile devices now correctly preserves its value and updates reliably.
  • File Downloads: Launching a file download now forces the URL to open via your device’s external application handler for better browser compatibility.
  • Quote Schema Normalization: The backend now intelligently normalizes legacy formula and schema aliases for cleaner AI template generation.
  • Formula Evaluation Resilience: Quote dynamic formulas now safely fall back to default values (0.0 for financials, or raw text for names) if execution fails, preventing quote hydration errors.
  • Formula Validation: The AI quote template engine now uses strict AST parsing to validate Python syntax, properly ignoring local comprehension variables.
  • Contact Card Consistency: The Contacts list has been updated to use the new standardized platform card component.
  • Document Generation UI: The document generation button now displays a processing state and disables itself during analysis to prevent duplicate API requests. Error dialogs for template evaluation have been refined with improved layouts and selectable text.
  • Template Discount Preservation: The backend now intelligently preserves existing template or item-level discounts when hydrating quote items if no matching catalog discount is found.
  • Template Analysis Resiliency: Improved Data Specification resolution during template analysis to reliably handle string references and nested data schemas.
  • Generation Error Handling: Enhanced loading states and error catching during the document generation analysis phase to prevent silent failures and UI freezing.
  • Document Generation Reliability: The document generation button now reliably updates its template list when switching contexts and prevents duplicate generation requests.
  • Template Selection UI: Polished the document template selection dialog with a cleaner, modern layout.
  • AI Template Resiliency: The document generation pipeline now intelligently recovers missing document outlines by scanning HTML comments, Firestore schemas, or raw text, preventing unexpected crashes and defaulting safely to a single unified section if necessary.
  • Template Outline Syncing: The document generation pipeline now automatically commits successfully orchestrated structural outlines directly to your Firestore templates for future use.
  • Document Template Performance: Added new database composite indexes to optimize the loading and sorting of document templates across the organization.
  • Data Spec Synchronization: The backend now automatically synchronizes target collection updates from Data Specifications to all linked Document Templates.
  • Form Resiliency: Object dropdowns and core form fields now gracefully handle invalid initial values and display improved loading, error, and empty fallback states.
  • UI Responsiveness: Replaced static form rows with fully responsive components to improve layout behavior on smaller screens.
  • Organization Context Resolution: Enhanced backend extraction of organization and owner IDs, falling back to linked templates to ensure accurate data routing.
  • Navigation URLs: The home navigation rail item now routes to /dashboard instead of /home.
  • Agent Build Pipeline: Improved backend CI/CD workflows to automatically strip Windows CRLF characters from requirement files and aggressively prune compiled Python artifacts before deployment.
  • Agent Dependencies: Added nest-asyncio and pypdf dependencies to the document templating and quote template agents to ensure asynchronous event loop stability and robust PDF processing.
  • Responsive Tables: Data tables across the platform now feature responsive toolbars that adapt dynamically to smaller screens and mobile devices, improving usability on compact displays.
  • Query Optimization: The platform now uses intelligent query inspection to prevent duplicate database filters, improving data loading speeds and reliability.
  • Backend Infrastructure: Upgraded AI agent deployment to use direct module execution instead of Python wheels, optimizing cold start times and pipeline reliability.
  • Popover Positioning: Enhanced layout logic ensures dropdowns and context menus always remain within screen boundaries, even near edges.
  • Backend Stability: Increased memory allocation to 512MB for core Cloud Functions (including formula evaluation, document templating, and search indexing) to ensure reliable execution during complex operations.
  • AI Cold Start Resilience: Added automatic retry loops and exponential backoff to gracefully handle Google Vertex AI reasoning engine cold starts during autoscaling, preventing stream crashes.
  • AI Schema Resilience: Pydantic schemas now strictly enforce required fields for LLMs while gracefully handling empty lists and automatically converting snake_case AI outputs to camelCase during deserialization.
  • Document Syncing: Changed the Read Notes QA function to use set instead of update for more reliable document initialization.
  • Table Headers: Disabling headers in Algolia and Firestore tables now functions correctly when embedded within other workspaces.
  • Value Cell Aggregation: The Engagement value cell now gracefully handles snapshot errors and correctly recalculates when switching organizations or engagements.
  • Schema Resilience: Core data models now strictly enforce required fields in their OpenAPI schemas to guide AI generation, while maintaining resilient Python deserialization.
  • Template Serialization: Updated field JSON keys to canonical snake_case format for improved cross-platform reliability, including robust backend sanitization.
  • AI Context Extraction: Improved internal AI agent state resolution to reliably preserve engagement context across workflows, ensuring accurate note extraction and template updates. The engagement template AI extraction interface was also simplified by removing the clarifying questions card, focusing strictly on data extraction.
  • Path Sanitization: The backend now robustly strips collection prefixes from incoming document IDs to prevent AI data commit failures.
  • Template Resolution: The engagement template selector is now more resilient and will correctly resolve and display active templates even if the underlying reference paths are formatted differently.
  • Record Note Counts: Added robust backend triggers to accurately maintain and roll up note counts on parent records when notes are added, updated, deleted, or moved.
  • Note Cards: Note cards now support tap-tofocus for easier editing and feature improved visual density with informative tooltips for pinning and unpinning.
  • Search Diagnostics: Removed verbose metadata probes from the backend vector search engine to improve query performance and reduce unnecessary database reads.
  • Note Empty States: The notes list now features an improved empty state with clear guidance on how to record notes, dictate audio, or attach documents.
  • Markdown Styling: AI document summaries now render with fully selectable, scrollable Markdown styling for easier reading.
  • Note Pinning: Toggling pinned notes now features instant UI rollback and error banners if the save operation fails, alongside new tooltips.
  • Fast PDF Rendering: Upgraded the internal Word-to-PDF converter to high-speed in-memory PyMuPDF.
  • Surgical HTML Micro-Editing: Document AI now uses targeted search-and-replace patching instead of rewriting entire sections.
  • Quote Item Reordering: Dragging quote line items across sections preserves isOptional status and tags.
  • Jinja Loop Validation: Document pipeline automatically strips erroneous ['customData'] accesses in loops to prevent crashes.
  • Local Agent Runner CLI Updates: Script run_agent_local.py now enforces four strict parameters and provides real-time AI tool call streaming.
  • Diagnostic Logging: Integrated comprehensive structured developer logging across core frontend form builders.
  • Target Resolution: Improved backend reference resolution, safely handling missing targets, camelCase versus snake_case discrepancies, and invalid path segments when evaluating count updates.
  • Formula Literal Parsing: The formula engine now strictly ignores string literals (like "Gold" or 'active') and built-in functions (like any, product, or get_bitmask) when extracting variable dependencies, preventing false dependency errors.
  • Formula Variable Extraction: Formula fields no longer mistakenly filter out valid business variables like tier that match previous stop-words.
  • Multi-Add Data Preservation: Fixed an issue where adding items via the Multi-Add dialog could overwrite existing items in the list instead of correctly appending them.
  • List Item Removal: Re-architected item removal in template list fields to cleanly update underlying form state without breaking.
  • API Formula Resolution: Extended schema-aware formula evaluation to external API calls, allowing the callable endpoint to seamlessly load templates by ID or path to resolve label() lookups.
  • PDF Viewer Refresh: The document preview now reliably reloads and displays the latest PDF immediately after a successful regeneration.
  • Audit Attribution Compatibility: The document versioning engine and security rules now support both snake_case (modified_by) and legacy camelCase fields for broader API compatibility.
  • Frontend Audit Tracking: Core frontend models now explicitly capture and transmit the modifying user’s ID to ensure strict audit attribution.
  • Approval Decision Timestamps: Submitting an approval decision now uses a precise UTC timestamp immediately, ensuring accurate chronological sorting in the history view.
  • Approval UI Performance: Rebuilt the approval banner to intelligently evaluate status histories without making unnecessary backend queries if no approvals exist.
  • Lifecycle Transition Matching: Enhanced frontend status dropdown and backend transition logic to robustly match custom status paths and document IDs, rather than just display names.
  • Project Plan Dependencies: Improved backend resolution of complex dependency structures, including dictionary and array references, to ensure waterfall timelines calculate reliably.
  • Form Stability: Fixed an issue where text fields could throw synchronous state mutation errors during widget rendering by securely deferring updates.
  • CI/CD Pipeline: Upgraded the deployment pipeline to unconditionally process backend updates, ensuring robust, synchronized releases across all environments.
  • Localization: Consolidated text labels for standard time periods (days, hours, weeks) and assignments to support future localization efforts.
  • Form Accessibility: Form labels across typeahead fields now use selectable text, making it easier to copy and paste field names when troubleshooting.
  • UI Polish: Refined the styling of the clear icons inside autocomplete fields for a more compact, centered appearance on dense forms.
  • Resource Planning Empty States: The resource planning screen now displays a helpful empty state with clear guidance and quick actions to create a plan or adjust filters.
  • Resource Planning Mobile UI: The resource planning grid now intelligently scales its sidebar width on mobile devices to ensure the grid remains accessible.
  • Filter Section UI: The collapsible filter section header now features an improved layout with a dedicated close button when expanded.
  • Resource Selector Polish: Fixed an issue where the clear icon on the resource assignment dropdown was disproportionately sized.
  • Screen Reader Announcements: Sorting the resource planning grid now correctly announces the new order to assistive technologies.
  • Schema Hierarchy Restructure: Reorganized the quote and quote template data models to strictly enforce a sections-to-items subcollection hierarchy, improving query performance and nested data reliability.
  • Schema Validation Engine: The internal schema synchronization tool now automatically validates bidirectional hierarchy symmetry across all 47 core data models to prevent architectural drift.

Need more help?

Our support team is available to assist you.

Contact Support