Merged
Conversation
Task 1: Centralize state with Redux Toolkit (4 slices, typed hooks, selectors) Task 2: Centralized HTTP client with interceptors (httpClient singleton) Task 3: Extract 18 reusable components from monolithic files Task 4: Wrap all components with React.memo + displayName, useCallback throughout Task 5: Extract business logic into 7 custom hooks (useChatOrchestrator, etc.) - App.tsx reduced from ~787 to ~85 lines - Zero raw fetch calls (except /.auth/me) - All console.log downgraded to console.debug - Build: 0 TypeScript errors
New utility modules in utils/: - messageUtils.ts: createMessage() factory, formatContentForClipboard() - contentParsing.ts: parseTextContent(), resolveImageUrl(), buildGeneratedContent() - sseParser.ts: parseSSEStream() — eliminates duplicated SSE decode loop - generationStages.ts: getGenerationStage() — pure progress-stage mapper - briefFields.ts: BRIEF_FIELD_LABELS, BRIEF_DISPLAY_ORDER, BRIEF_FIELD_KEYS - stringUtils.ts: escapeRegex(), createNameSwapper(), matchesAnyKeyword() - apiUtils.ts: retryRequest (exponential backoff), RequestCache, throttle - index.ts: barrel export for all utils Deduplicated code: - msg() helper was identical in 2 hooks → createMessage() in messageUtils - SSE stream parser was identical in 2 API functions → parseSSEStream() - GeneratedContent parsing was near-identical in 3 hooks → buildGeneratedContent() - Brief field constants duplicated in 2 components → shared briefFields - Keyword matching pattern repeated 3x → matchesAnyKeyword() Internal helpers marked non-exported: - rewriteBlobUrl() in contentParsing.ts - defaultShouldRetry(), sleep() in apiUtils.ts - plainDownload() in downloadImage.ts (already was) Build: 0 TypeScript errors
…hten utility exports
…ts and memoization
…lidation, hooks barrel
…ontent, resolveImageUrl)
- Route fetch('/.auth/me') through platformClient (HttpClient with empty baseUrl)
- Un-export parseTextContent/resolveImageUrl (module-internal only)
- DRY userId || 'anonymous' x6 into normalizeUserId() helper
- Remove redundant duplicate prompt field from WelcomeCard suggestions
- httpClient: replace require() with ESM dynamic import() for store access - useConversationActions: pass explicit undefined to resetChat() - parseBrief: route to /chat endpoint (no /brief/parse backend route) - streamChat: use httpClient.post + yield instead of SSE (backend returns JSON) - selectProducts: route to /chat endpoint (no /products/select backend route) - streamRegenerateImage: use /chat + polling instead of non-existent /regenerate SSE - remove unused readSSEResponse helper and parseSSEStream import
…virtualNetwork.bicep
- Updated environment variable names to follow a consistent naming convention, replacing `AZURE_OPENAI_*` with `AZURE_ENV_*` for clarity and consistency across the codebase. - Modified GitHub Actions workflow to reflect new environment variable names for Docker image tagging. - Adjusted deployment scripts and local development scripts to utilize the new environment variable names. - Updated documentation to reflect changes in environment variable names for Azure OpenAI configuration. - Ensured backward compatibility by adding aliases for the old variable names where necessary.
…oss workflows and scripts
…ntation and scripts
…n private networking
…omment, and docs clarity
…dition Agent-Logs-Url: https://github.com/microsoft/content-generation-solution-accelerator/sessions/2a9b47df-250c-4016-85ff-32e6f142f3c9 Co-authored-by: Rafi-Microsoft <207166450+Rafi-Microsoft@users.noreply.github.com>
docs: Added content in Readme and deploymentguide for SFI issue
Accept dev's workflow_dispatch-only trigger for azure-dev.yml. Update docker-build.yml paths to use correct src/App/ casing from dev, while keeping WebApp.Dockerfile and .dockerignore path entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep dev's workflow structure while adding back push trigger with path filters for infra/**, azure*.yaml, and workflow file changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
fix: Filter file the paths for pipeline run
revert: PR #768: UI refactoring
Roopan-Microsoft
approved these changes
Apr 13, 2026
Contributor
|
🎉 This PR is included in version 2.4.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
This pull request standardizes and improves the naming and handling of environment variables related to Azure resources and image model selection across multiple workflow files, and introduces a new scheduled workflow for template validation. It also enhances workflow concurrency controls and updates deployment logic for better automation and consistency.
Environment Variable Standardization and Naming Consistency:
AZURE_EXISTING_AI_PROJECT_RESOURCE_IDtoAZURE_EXISTING_AIPROJECT_RESOURCE_IDandAZURE_ENV_LOG_ANALYTICS_WORKSPACE_IDtoAZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RIDfor consistency across.env.sampleand all workflow files. This includes input/output parameters, environment variables, and validation logic. (.env.sample,.github/workflows/deploy-v2.yml,.github/workflows/deploy-orchestrator.yml,.github/workflows/azure-dev.yml) [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]AZURE_OPENAI_GPT_MODELtoAZURE_ENV_GPT_MODEL_NAME,AZURE_OPENAI_IMAGE_MODELtoAZURE_ENV_IMAGE_MODEL_NAME, andAZURE_OPENAI_API_VERSIONtoAZURE_ENV_OPENAI_API_VERSION. (.env.sample,.github/workflows/deploy-orchestrator.yml,.github/workflows/deploy-v2.yml) [1] [2] [3] [4]Workflow Improvements and Automation:
.github/workflows/azd-template-validation.ymlto automatically validate Azure templates every Thursday and on manual dispatch, improving template reliability..github/workflows/azure-dev.ymlto focus on deployment (azd up) rather than just template validation, including improved Azure authentication and environment setup steps.Concurrency and Workflow Enhancements:
concurrencygroups tocodeql.ymlanddocker-build.ymlworkflows to prevent overlapping runs for the same branch or ref, reducing resource contention and ensuring up-to-date results. [1] [2]Other Minor Improvements:
deploy-v2.yml.These changes collectively improve maintainability, reduce confusion from inconsistent variable names, and streamline the CI/CD process for Azure deployments.
Does this introduce a breaking change?
Golden Path Validation
Deployment Validation