Skip to content

Add native V2 file source configuration for all workspaces - #1734

Merged
Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-file-source-configuration
Oct 9, 2026
Merged

Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-file-source-configuration

Conversation

@paullizer

Copy link
Copy Markdown
Contributor

Summary

  • Remove the personal workspace's classic-page configuration hand-off so file-source setup remains usable when New UI only mode blocks legacy pages. Personal, group and public workspaces now use the shared native editor for the full existing configuration surface.
  • Add authorized personal options/single-source reads and optional configuration-revision checks for saves/deletes. Preserve drafts during conflicts, stage credential replacements safely, and retain compatibility with classic callers that omit the revision token.
  • Harden editor loading, stale test/browse responses, accessible labels and focus return. Preserve connector availability, workspace permissions, stored-secret behavior, and existing sync/history/document-retention workflows. Add executable API, transport and production-SPA regressions plus versioned documentation.

Linked issue

Refs #1722

Completes row 4 only. The other parity gaps and the companion legacy routing/interface-policy change remain outside this PR.

Release Notes & Latest Features

  • New Feature
  • Bug Fix
  • UI Enhancement
  • Breaking Change
  • Internal only

Is this visible to end users?

  • Yes
  • No

Is this admin-facing (Admin Settings, governance, deployment, config)?

  • Yes
  • No

Should this become a Latest Feature card?

  • Yes
  • No
  • Already added

Screenshot needed for the card?

  • Yes
  • No
  • Attached

Release notes were left unchanged because approval was unavailable; the feature documentation describes version 0.261.310.

Version bump

  • application/single_app/config.py VERSION third segment bumped, or not needed because this is docs-only
  • deployers/version.txt bumped, or not needed because deployers/ was not changed

Application version: 0.261.309 -> 0.261.310. No deployer changes.

Testing / validation

Python commands below used the isolated validation interpreter (Flask 3.1.3/Werkzeug 3.1.6), rather than the incompatible global Flask installation. Fixture suites used PYTHONPATH=ui_tests\fixtures.

  • npm --prefix application\v2_ui run typecheck - passed.
  • npm --prefix application\v2_ui run build - passed.
  • python -m pytest ui_tests\test_v2_personal_file_sources.py ui_tests\test_v2_group_file_sources.py ui_tests\test_v2_public_file_sources.py -q --tb=short --browser chromium --tracing retain-on-failure - 100 passed.
  • python -m pytest functional_tests\test_personal_file_source_apis.py functional_tests\test_v2_personal_file_sources.py functional_tests\test_public_file_source_fixture_parity.py functional_tests\test_group_file_source_fixture_parity.py -q --tb=short - 86 passed.
  • python -m pytest functional_tests\test_group_file_source_apis.py functional_tests\test_public_file_source_apis.py functional_tests\test_group_file_source_sync_fields.py functional_tests\test_file_source_credential_round_trip_fix.py functional_tests\test_file_sync_concurrent_write_safety.py -q --tb=short - 154 passed.
  • python -m pytest functional_tests\test_v2_personal_file_sources.py functional_tests\test_group_file_source_transport.py functional_tests\test_public_file_source_transport.py -q --tb=short - 29 passed.
  • python functional_tests\route_tests\test_route_blueprint_policy_inventory.py - 15/15 passed.
  • python functional_tests\route_tests\test_route_unauthenticated_policy_contract.py - 10/10 passed.
  • python functional_tests\route_tests\test_route_policy_test_coverage.py - 3/3 passed.
  • python scripts\build_docs_inventory.py - passed; no semantic inventory change.
  • python functional_tests\test_docs_app_surface_coverage.py - 7/7 passed.
  • python functional_tests\test_docs_site_quality.py - 6/6 passed.
  • python scripts\check_xss_sinks.py application\v2_ui\src\components\ui\Modal.tsx application\v2_ui\src\components\fileSources\FileSourceEditorDialog.tsx application\v2_ui\src\lib\fileSourceFields.ts application\v2_ui\src\lib\fileSourceWorkbench.ts application\v2_ui\src\pages\workspace\FileSourcesSection.tsx application\v2_ui\src\pages\workspace\GroupFileSourcesSection.tsx application\single_app\route_backend_file_sync.py - passed for 7 files.
  • python scripts\check_broken_access_control.py application\single_app\route_backend_file_sync.py application\single_app\functions_file_sync.py - passed for 2 files.
  • git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --cached --check - passed.

Desktop-light/mobile-dark captures were inspected, and dialog overflow/focus checks passed. The Impeccable source detector also passed. Live root-hosted/Teams behavior and New UI only enforcement were not tested: they require the companion routing change and a configured deployment.

Documentation

  • Release notes updated, or not needed
  • Feature documentation updated, or not needed
  • Fix documentation updated, or not needed

Added V2_FILE_SOURCE_CONFIGURATION.md; updated personal/group/public feature notes and the file-sync guide with distinct native V2 and classic workflows. Separate fix documentation is not needed for this feature; release notes remain pending approval.

Security checklist

  • New Flask routes include @swagger_route(security=get_auth_security())
  • Settings sent to non-admin frontends use sanitize_settings_for_user()
  • Browser JavaScript is served from local SimpleChat static assets only; no CDN-hosted JS
  • No secrets, keys, connection strings, or local-only artifacts are included

New responses contain only editor-safe options and sanitized source projections, not raw settings, credentials or Key Vault references. Test credentials are synthetic. Identity creation and new/coming-soon connector enablement are not included.

Reuse the shared editor for personal, group and public file-source setup without classic page hand-offs. Add authorized personal editor reads and conflict-safe writes while preserving stored secrets, existing connector availability and classic API compatibility. Include API, browser and transport regressions plus versioned documentation.

Refs #1722

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread functional_tests/test_personal_file_source_apis.py Fixed
Comment thread functional_tests/test_personal_file_source_apis.py Fixed
Comment thread functional_tests/test_support/personal_file_source_harness.py Fixed
Use module-qualified fixture aliases so pytest discovers both the personal fixture and its shared dependency without unused imports. Remove the redundant fixture import from the harness and bump the application patch version to 0.261.311.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@paullizer
Paul Lizer (paullizer) merged commit dcc15e5 into paullizer-react-v2-ui Oct 9, 2026
10 of 11 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.

2 participants