Skip to content

V2 Release: FigTree 2.0, Evaluator Fragments, new elements, snapshot & reviewer overhaul#1660

Merged
CarlosNZ merged 278 commits into
developfrom
v2.0.0-dev
May 7, 2026
Merged

V2 Release: FigTree 2.0, Evaluator Fragments, new elements, snapshot & reviewer overhaul#1660
CarlosNZ merged 278 commits into
developfrom
v2.0.0-dev

Conversation

@CarlosNZ

@CarlosNZ CarlosNZ commented May 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

V2 release of the Conforma web app, accumulating ~270 commits since v1.7.1.

Platform

  • Requires Node 20 (previously Node 18)
  • Upgraded to fig-tree-evaluator 2.0 with new fig-tree-editor-react GUI; the legacy in-tree evaluatorGui module has been fully replaced

Major features

Smaller improvements

  • Consolidated JSON Editor: JSON5 support, shared UndoRedoSave, custom ColorPicker
  • TemplateBuilder: duplicate-element button, default editability, dirty-state handling, lazy-loaded ActionConfig for non-admins
  • New Toast notification system, including a dedicated evaluator toast
  • Admin Preferences: protectedFilesKeepDays, freeSpaceRequiredForZips, schema tightened
  • PurgeCSS Vite plugin for build-time CSS pruning
  • Numerous fixes: date picker error indicator, file-offline placeholder, table width overflow, currency wrap in cells, Dropdown defaults with object options, color picker, parameter-expression error logging

CarlosNZ added 13 commits May 4, 2026 17:54
…gement

- New Download modal lets you download snapshots with optional archive-range selection, hooked up to the server's new `/snapshots/download` endpoint. Filenames derive from the snapshot name and selection.
- Snapshots list page now surfaces orphan archives with a "Zap 'em" button that calls the server's `/snapshots/purge-orphan-archives` endpoint.
- Toast/UI niceties: improved toast updates for long-running operations (download/upload), refactor of refresh-after-action flow.
- Removes a dead-code path: the old "Save to archive snapshots" button pointed at a server endpoint that no longer exists in the new architecture — every live file lives in either `files/` or `_archive_store/`, so there's no source to copy from.
commit e97ed5b
Author: Carl Smith <5456533+CarlosNZ@users.noreply.github.com>
Date:   Thu May 7 15:02:35 2026 +1200

    Revert ref docs changes

commit 2bee90f
Author: Carl Smith <5456533+CarlosNZ@users.noreply.github.com>
Date:   Thu May 7 14:47:08 2026 +1200

    VITE Proxy updates, fix additional download links

commit 6ee9bf4
Author: Carl Smith <5456533+CarlosNZ@users.noreply.github.com>
Date:   Thu May 7 10:17:07 2026 +1200

    Use Vite proxy to avoid cross-origin problems

commit ae32e20
Author: Carl Smith <5456533+CarlosNZ@users.noreply.github.com>
Date:   Thu May 7 10:07:52 2026 +1200

    Change how private file downloads work

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

V2 release of the Conforma web app that upgrades the evaluator stack (FigTree 2.0 + fragment support), adds new form/review capabilities (reviewer sections, new elements), and overhauls several admin and UX flows (snapshots/template operations/toasts/json editor), alongside the Node 20 platform upgrade.

Changes:

  • Replaced the legacy in-repo expression evaluator with FigTree evaluator/editor (including fragment loading and admin management).
  • Added new form element types (getValues, previewAction) and introduced reviewer-only sections/structures.
  • Overhauled admin/template operations (export flow, linked entities, toasts, JSON editor) and various UI improvements.

Reviewed changes

Copilot reviewed 165 out of 172 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
vite.config.ts Add PurgeCSS + dev proxy routing support
utils/convert_docs_to_wiki.py Regex raw-strings cleanup
src/utils/types.ts Update shared types for FigTree + reviewer sections
src/utils/hooks/useTriggers.tsx Fix effect deps for trigger polling
src/utils/hooks/useSubmitApplication.tsx Simplify hook props typing
src/utils/hooks/useLoadTemplate.tsx Use FigTree + add review section metadata
src/utils/hooks/useLoadApplication.ts Use FigTree + build reviewSections structure
src/utils/hooks/useGetApplicationStructure.tsx Add config-mode response-status fetching + typo fix
src/utils/helpers/utilityFunctions.ts Update download flow + file size handling
src/utils/helpers/structure/addEvaluatedResponsesToStructure.ts Include review section elements in evaluation
src/utils/helpers/list/findUserRole.ts Add internal-applicant role logic
src/utils/helpers/fetchUserInfo.ts Update FigTree headers/fragments after login
src/utils/helpers/evaluateElements.ts Switch element evaluation to FigTree
src/utils/helpers/endpoints/types.ts Extend endpoint option types (snapshots, fragments, export)
src/utils/helpers/endpoints/endpointUrlBuilder.ts Dev/prod URL strategy + new endpoints
src/utils/helpers/application/getSectionsDetails.ts Plumb isReviewSection into section details
src/utils/graphql/queries/getEvaluatorFragments.query.ts Add evaluator fragments query
src/utils/graphql/mutations/evaluatorFragments/updateFragment.mutation.ts Add fragment update mutation
src/utils/graphql/mutations/evaluatorFragments/deleteFragment.mutation.ts Add fragment delete mutation
src/utils/graphql/mutations/evaluatorFragments/createFragment.mutation.ts Add fragment create mutation
src/utils/graphql/fragments/section.fragment.ts Fetch isReviewSection field
src/utils/graphql/fragments/fullTemplate.fragment.ts Fetch template fragment joins
src/utils/graphql/fragments/evaluatorFragment.fragment.ts Add evaluatorFragment fragment
src/utils/defaultLanguageStrings.ts Add/adjust localisation strings
src/utils/data/userRoles.tsx Add INTERNAL_APPLICANT enum value
src/utils/data/columnsPerUserRole.ts Add columns for internal-applicant
src/modules/expression-evaluator/src/types.ts Remove legacy evaluator types
src/modules/expression-evaluator/src/resolvers/buildObject.ts Remove legacy evaluator resolver
src/modules/expression-evaluator/index.ts Remove legacy evaluator entrypoint
src/formElementPlugins/types.ts Require applicationData in summary props
src/formElementPlugins/SummaryViewWrapper.tsx Use FigTree + require applicationData
src/formElementPlugins/search/src/ApplicationView.tsx Switch search evaluation to FigTree
src/formElementPlugins/previewAction/src/SummaryView.tsx Add previewAction summary view
src/formElementPlugins/previewAction/src/ApplicationView.tsx Add previewAction application view
src/formElementPlugins/previewAction/pluginConfig.json Register previewAction plugin
src/formElementPlugins/previewAction/localisation.json Localisation for previewAction
src/formElementPlugins/pluginProvider.tsx Register getValues + previewAction plugins
src/formElementPlugins/password/src/ApplicationView.tsx Remove legacy evaluator functions injection
src/formElementPlugins/listBuilder/src/types.ts Use FigTree EvaluatorNode type
src/formElementPlugins/listBuilder/src/helpers.ts Switch listBuilder evaluation to FigTree
src/formElementPlugins/listBuilder/src/displayComponents/ListTableLayout.tsx Table width + currency nowrap improvements
src/formElementPlugins/listBuilder/src/displayComponents/ListInlineLayout.tsx Pass applicationData into summary wrappers
src/formElementPlugins/listBuilder/src/ApplicationView.tsx Refactor evaluator data passing + safer element access
src/formElementPlugins/getValues/src/SummaryView.tsx Add getValues summary view (hidden)
src/formElementPlugins/getValues/src/ApplicationView.tsx Add getValues admin-only view + persisted response
src/formElementPlugins/getValues/pluginConfig.json Register getValues plugin
src/formElementPlugins/fileUpload/src/components/FileDisplayWIthDescription.tsx Make delete/description optional for read-only
src/formElementPlugins/fileUpload/src/components/FileDisplay.tsx Thumbnail error handling + layout tweak
src/formElementPlugins/fileUpload/src/ApplicationView.tsx Disable edit actions when not editable
src/formElementPlugins/fileUpload/localisation.json Add FILE_UNAVAILABLE string
src/formElementPlugins/dropdownChoice/src/ApplicationView.tsx Fix default option matching + dev clearability
src/formElementPlugins/defaultValidate.tsx Switch validation evaluation to FigTree
src/formElementPlugins/datePicker/src/ApplicationView.tsx Show validation error indicator + nullable dates
src/formElementPlugins/ApplicationViewWrapper.tsx Switch parameter eval to FigTree + listBuilder edit helper
src/FigTreeEvaluator/index.ts Export FigTree wrapper modules
src/FigTreeEvaluator/FigTree.ts Global FigTree instance + fragment loading helpers
src/contexts/UserState/UserState.tsx Update FigTree auth headers + refresh fragments
src/contexts/Toast/types.ts Add html content + sizing options for toasts
src/contexts/Toast/ToastProvider.tsx Add toast updating + HTML rendering support
src/contexts/SystemPrefs.tsx Add prefs for FigTree defaults + test app data
src/containers/User/UserArea.tsx Add admin menu link for fragments
src/containers/TemplateBuilder/templateOperations/useTemplateOperations.ts Track unlinked fragments + new export flow
src/containers/TemplateBuilder/templateOperations/TemplateOperationsModal.tsx Expand warnings to “unlinked entities”
src/containers/TemplateBuilder/templateOperations/EntitySelectModal.tsx Add fragments to entity selection UI
src/containers/TemplateBuilder/templateOperations/apiOperations.ts Prepare-export flow + fragment diff typing
src/containers/TemplateBuilder/template/TemplateWrapper.tsx Store fragment joins in template context
src/containers/TemplateBuilder/template/Permissions/PermissionNameInfo/PermissionPolicyInfo.tsx Make JSON view read-only and labeled
src/containers/TemplateBuilder/template/Permissions/PermissionNameInfo/InfoComponents.tsx Use FigTree evaluation UI for action condition display
src/containers/TemplateBuilder/template/General/VersionHistory.tsx Extract version history UI into component
src/containers/TemplateBuilder/template/General/shared/Legend.tsx Shared legend component for joined entities
src/containers/TemplateBuilder/template/General/shared/JoinedEntityLabel.tsx Shared join label component
src/containers/TemplateBuilder/template/General/shared/index.ts Barrel export shared general components
src/containers/TemplateBuilder/template/General/MessagesConfig.tsx Use FigTree editor + structured objectData
src/containers/TemplateBuilder/template/General/Messages.tsx Extract message display UI into component
src/containers/TemplateBuilder/template/General/General.tsx Recompose General page sections + add fragments selector
src/containers/TemplateBuilder/template/General/Fragments/useManageFragments.ts Fetch/manage fragment join menu data
src/containers/TemplateBuilder/template/General/Fragments/Fragments.tsx UI for connecting evaluator fragments
src/containers/TemplateBuilder/template/General/Files/Files.tsx Wrap files selector in section container
src/containers/TemplateBuilder/template/General/DataViews/DataViews.tsx Refactor to shared join label + legend
src/containers/TemplateBuilder/template/Form/Sections.tsx Include review sections + toggle review-section flag
src/containers/TemplateBuilder/template/Form/Pages.tsx Disable page UI for review sections + fix page-break set
src/containers/TemplateBuilder/template/Form/moveStructure.ts Track review-section flag in move structure
src/containers/TemplateBuilder/template/Form/FromExistingElement.tsx Update evaluator node type import
src/containers/TemplateBuilder/template/ApplicationWrapper.tsx Config application creation + review-response statuses
src/containers/TemplateBuilder/template/Actions/TriggerDisplay.tsx Lazy-load ActionConfig after back-end fragments load
src/containers/TemplateBuilder/template/Actions/FromExistingAction.tsx Update evaluator node type import
src/containers/TemplateBuilder/template/Actions/FigTreeActions.ts Separate FigTree instance for action config (back-end fragments)
src/containers/TemplateBuilder/template/Actions/Actions.tsx Minor cleanup
src/containers/TemplateBuilder/shared/useInitialiseMultipleExpressions.ts Avoid undo-race by batch initialising expressions
src/containers/TemplateBuilder/shared/OperationContext.tsx Add element selection state for listBuilder extract/absorb
src/containers/TemplateBuilder/shared/DropdownIO.tsx Minor formatting cleanup
src/containers/TemplateBuilder/evaluatorGui/types.ts Remove legacy evaluator GUI types
src/containers/TemplateBuilder/evaluatorGui/typeHelpers.ts Remove legacy evaluator GUI helpers
src/containers/TemplateBuilder/evaluatorGui/semanticComponentLibrary.tsx Remove legacy evaluator GUI component library
src/containers/TemplateBuilder/evaluatorGui/renderEvaluation.tsx Remove legacy evaluator GUI renderer
src/containers/TemplateBuilder/evaluatorGui/helpers.ts Remove legacy evaluator GUI helpers
src/containers/TemplateBuilder/evaluatorGui/guiCommon.tsx Remove legacy evaluator GUI common code
src/containers/TemplateBuilder/evaluatorGui/evaluatorFunctions.ts Remove legacy evaluator GUI functions bundle
src/containers/TemplateBuilder/evaluatorGui/EvaluationOutputType.tsx Remove legacy evaluator GUI output type UI
src/containers/TemplateBuilder/evaluatorGui/EvaluationFallback.tsx Remove legacy evaluator GUI fallback UI
src/containers/Review/ReviewPage.tsx Add reviewer application form + submit signature change
src/containers/Review/ReviewApplicationForm.tsx Render reviewer-only application questions section
src/containers/Review/assignment/AssignmentTab.tsx Improve no-permission messaging + hide actions when locked
src/containers/List/ListWrapper.tsx Add internal-applicant routing + role validation
src/containers/DataDisplay/helpers.tsx Add numberFormat formatting support
src/containers/DataDisplay/Filters/DataViewTextSearchFilter.tsx Use shared truncateString utility
src/containers/Application/ApplicationWrapper.tsx Remove unnecessary currentUser threading
src/containers/Application/ApplicationSummary.tsx Simplify submit hook usage
src/containers/Application/ApplicationSubmission.tsx Switch submission message evaluation to FigTree
src/containers/Application/ApplicationCreate.tsx Mark review-section elements as REVIEW + hide review sections in list
src/config.ts Relative dev URLs + add fragments endpoint
src/components/Review/ReviewComment.tsx Fix DOM id typo
src/components/Review/DecisionPreview/ReviewDecisionPreview.tsx Rename modal import to shared PreviewModal
src/components/Review/DecisionPreview/PreviewModal.tsx Support application previews + configurable header/text
src/components/Review/DecisionPreview/PreviewItems.tsx Plumb preventDownload into document preview
src/components/PageElements/PageElements.tsx Skip getValues rendering in summary/review views
src/components/PageElements/Elements/HistoryResponseElement.tsx Ensure applicationData is passed to summary wrapper
src/components/List/Cells/StatusCell.tsx Remove ChangesRequired action rendering
src/components/List/Cells/ReviewerActionCell.tsx Fix action selection expression
src/components/List/Cells/ApplicantActionCell.tsx Route internal users to review view
src/components/List/ApplicationsList.tsx Pass isInternalUser to cells
src/components/Dashboard.tsx Internal-applicant role + “new application” button tweaks
src/components/common/UndoRedo.tsx Add reusable Undo/Redo component
src/components/common/Tooltip.tsx Allow tooltip className override
src/components/common/evaluatorHelpers.tsx Toast helpers for evaluation results/errors
src/components/common/EvaluationEditor.tsx FigTree editor wrapper w/ JSON5 + toast/clipboard integration
src/components/Admin/Manage.tsx Lazy-load TemplateWrapper in admin manage route
src/components/Admin/JsonEditor/utils.ts Shared JSON editor clipboard + defaults helpers
src/components/Admin/JsonEditor/UndoRedoSave.tsx Shared Undo/Redo/Save control
src/components/Admin/JsonEditor/ReactJson.tsx Re-export json-edit-react with fixed props
src/components/Admin/JsonEditor/JsonEditor.tsx Consolidated JSON editor w/ undo + shared components
src/components/Admin/JsonEditor/index.ts Barrel export JSON editor utilities
src/components/Admin/JsonEditor/custom-components/ColorPicker/index.ts Export ColorPicker custom node
src/components/Admin/JsonEditor/custom-components/ColorPicker/definition.ts Add ColorPicker custom node definition
src/components/Admin/EvaluatorFragments/schema.ts JSON schema for fragment metadata
src/components/Admin/EvaluatorFragments/FragmentTester.tsx UI to test fragments with parameters
src/components/Admin/EvaluatorFragments/default.ts Default fragment template data
src/components/Admin/EvaluatorFragments/DataContainer.tsx Provide app data context for fragment testing
src/components/Admin/AdminPreferences/defaults.ts Update prefs defaults + expose defaultPrefs
src/components/Admin/AdminPreferences/AdminPreferences.tsx Use consolidated JsonEditor helpers + stable keys
src/components/Admin/AdminDataViews/AdminDataViews.tsx Stabilize JsonEditor state via entityKey keys
src/components/Admin/Admin.tsx Add Evaluator Fragments admin route
src/App.tsx Use configured JWT storage key
package.json Node 20 engine + new deps (FigTree, JSON5, PurgeCSS, etc.)
docs/internal/Element-Type-Specs.md Document new elements + listBuilder editing UX
.vscode/settings.json Add workspace editor settings
.nvmrc Pin Node v20
.gitignore Track .vscode/settings.json only

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/utils/helpers/structure/addEvaluatedResponsesToStructure.ts
Comment thread src/containers/Review/ReviewApplicationForm.tsx
Comment thread src/containers/TemplateBuilder/template/General/Fragments/useManageFragments.ts Outdated
Comment thread src/contexts/Toast/ToastProvider.tsx Outdated
Comment thread src/components/PageElements/PageElements.tsx

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 166 out of 173 changed files in this pull request and generated 7 comments.

Comment thread src/utils/helpers/endpoints/endpointUrlBuilder.ts
Comment thread src/utils/helpers/endpoints/endpointUrlBuilder.ts Outdated
Comment thread src/utils/helpers/structure/addEvaluatedResponsesToStructure.ts
Comment thread src/utils/hooks/useLoadApplication.ts
Comment thread src/components/common/UndoRedo.tsx
@CarlosNZ

CarlosNZ commented May 7, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot Have made changes, please re-review, but don't comment again on things you've I've marked as "resolved" (unless I've made it worse).

Copilot AI commented May 7, 2026

Copy link
Copy Markdown

@copilot Have made changes, please re-review, but don't comment again on things you've I've marked as "resolved" (unless I've made it worse).

Re-reviewed the latest changes at d446010 and validated current state. I did not re-raise previously resolved threads in this pass.

@CarlosNZ

CarlosNZ commented May 7, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot Have made changes, please re-review, but don't comment again on things you've I've marked as "resolved" (unless I've made it worse).

Re-reviewed the latest changes at d446010 and validated current state. I did not re-raise previously resolved threads in this pass.

@copilot can you actually approve the PR?

Copilot AI commented May 7, 2026

Copy link
Copy Markdown

@copilot Have made changes, please re-review, but don't comment again on things you've I've marked as "resolved" (unless I've made it worse).

Re-reviewed the latest changes at d446010 and...

I can’t submit a formal GitHub PR approval from this agent context. Please use a maintainer/reviewer account to click Approve in the PR review UI.

@CarlosNZ CarlosNZ merged commit 97ee237 into develop May 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants