Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
508 commits
Select commit Hold shift + click to select a range
2929f65
refactor: Enhance document handling in chat API responses
saoc90 Aug 11, 2025
4878caa
Merge pull request #50 from buhlergroup/feature/ocs/fix-tools-calls
saoc90 Aug 11, 2025
598a36c
fix: remove argument for tool call history
saoc90 Aug 11, 2025
a12be23
feat: Implement allowed persona document ID retrieval for enhanced do…
saoc90 Aug 12, 2025
e0cf48e
Initial plan
Copilot Aug 18, 2025
cddb7b6
Enhance system prompt with explicit markdown formatting instructions …
Copilot Aug 18, 2025
ea5f07d
Merge pull request #56 from buhlergroup/copilot/fix-55
Schickli Aug 22, 2025
4367685
Update theme-config.ts
Schickli Aug 22, 2025
529bd0c
feat: Enhance chat API to support reasoning state and encrypted content
saoc90 Sep 2, 2025
b5fd241
feat: Add 'reasoning' role to ChatMessageArea component
saoc90 Sep 2, 2025
c88fa1d
refactor: Replace ConversationMessage with ResponseInputItem in conve…
saoc90 Sep 2, 2025
0abc69c
fix: Update reasoningState type to 'any' in ChatMessageModel and cast…
saoc90 Sep 2, 2025
dca6435
fix: Improve error handling in OpenAIResponsesStream and ChatState to…
saoc90 Sep 3, 2025
c283867
Fix not supported encrypted content by non reasoning models
saoc90 Sep 19, 2025
582efb3
Fix persona documents
saoc90 Sep 29, 2025
77c8126
fix: Streamline conversation initialization and enhance persona docum…
saoc90 Sep 29, 2025
3b827c8
Remove simplified chat API implementation
saoc90 Sep 29, 2025
8f6fe5b
fix: Enhance persona retrieval by including user access groups in query
saoc90 Oct 3, 2025
205bb2c
fix: Update persona retrieval query to correctly filter by access gro…
saoc90 Oct 3, 2025
50d5a56
fix: Refactor image handling and retrieval logic in chat services
saoc90 Oct 3, 2025
9b9bbe5
fix: Correct access group check in persona retrieval query
saoc90 Oct 3, 2025
14d1b5a
chore: Add support for AzureDefaultCredentials
saoc90 Oct 9, 2025
d97ed74
feat: Add PersonaVisibilityInfo component for enhanced persona visibi…
saoc90 Nov 14, 2025
592559a
feat: Implement session expiration handling and local development sup…
saoc90 Nov 14, 2025
c49aff4
Remove outdated documentation files related to chat API sequence diag…
saoc90 Nov 14, 2025
7e4033d
feat: Enhance image generation capabilities and update model configur…
saoc90 Nov 21, 2025
2eebbc0
feat: Add web search tool integration and logging to OpenAI responses…
saoc90 Nov 21, 2025
90299ae
feat: Add tool toggles for web search and image generation, and updat…
saoc90 Nov 21, 2025
68431e6
Merge pull request #59 from buhlergroup/feature/ocs/azure-default-cre…
saoc90 Nov 21, 2025
b04be9b
refactor: Remove redundant type assignments for function call events …
saoc90 Nov 21, 2025
01673f1
refactor: Simplify logging for web search call in OpenAIResponsesStream
saoc90 Nov 21, 2025
430c96f
refactor: Remove redundant logging of action type in web search compl…
saoc90 Nov 21, 2025
7970c0a
refactor: Improve error handling and logging in ChatAPIEntry function
saoc90 Nov 21, 2025
a5d7d37
refactor: Enhance logging and error handling in document processing f…
saoc90 Nov 21, 2025
0d865ab
refactor: Update reasoning effort logic and streamline tool function …
saoc90 Nov 21, 2025
b5a3eb6
refactor: Update OpenAIEmbeddingInstance to use fixed API version and…
saoc90 Nov 25, 2025
8055366
refactor: Update reasoning effort logic in toggleWebSearch method
saoc90 Nov 25, 2025
9c78fb9
Fix some ui glitches
saoc90 Nov 25, 2025
0b221d4
refactor: Reset tool states for new chat in ChatState class
saoc90 Nov 25, 2025
daf00e0
refactor: Change default reasoning effort from minimal to low in MODE…
saoc90 Nov 25, 2025
31c14cb
feat: Add GPT-5 Pro model with enhanced performance and updated reaso…
saoc90 Dec 1, 2025
fa94265
feat: add AI elements components including Loader, Message, PromptInp…
saoc90 Dec 1, 2025
662bb7b
feat: add Radix UI collapsible component and update dependencies
saoc90 Dec 1, 2025
24e12da
feat: implement temporary chat functionality and reset chat feature
saoc90 Dec 1, 2025
52a4ba7
feat: enhance chat session initialization with logging and tool call …
saoc90 Dec 1, 2025
cf7ea91
feat: refactor imports and add HoverCard component with carousel func…
saoc90 Dec 1, 2025
1b4d62b
fix: correct property access for function call completion in response…
saoc90 Dec 1, 2025
2c499ea
chore: update dependencies to latest versions for improved performanc…
saoc90 Dec 1, 2025
6984049
feat: update default reasoning effort to "low" and adjust selected mo…
saoc90 Dec 1, 2025
cf0f5d4
feat: add reasoning effort update functionality and integrate with ch…
saoc90 Dec 1, 2025
a880555
feat: update selected model to "gpt-5.1" for improved functionality
saoc90 Dec 1, 2025
75d5401
feat: update default model to "gpt-5.1" and enhance model configurati…
saoc90 Dec 1, 2025
a24a14d
feat: enable image generation support for models and update reasoning…
saoc90 Dec 1, 2025
406c0be
feat: enhance parsing logic to skip unsupported code languages in ric…
saoc90 Dec 1, 2025
2e53122
feat: replace RedirectToChatThread with router.push for navigation in…
saoc90 Dec 1, 2025
e75c69c
feat: update OpenTelemetry logging configuration and refactor Azure M…
saoc90 Dec 1, 2025
90ab8f7
Initial plan
Copilot Dec 2, 2025
43d5613
Initial plan
Copilot Dec 2, 2025
4d40874
Make tool calls collapsed by default
Copilot Dec 2, 2025
ea0c8a0
Fix user message contrast: use green border instead of green background
Copilot Dec 2, 2025
9eb739d
Merge pull request #62 from buhlergroup/copilot/change-tool-calls-def…
saoc90 Dec 2, 2025
012867f
Merge pull request #61 from buhlergroup/copilot/update-chat-message-s…
saoc90 Dec 2, 2025
a843981
feat: update default reasoning effort to "high" for model configurations
saoc90 Dec 3, 2025
6ffd109
feat: refactor chat thread retrieval and enhance error handling; opti…
saoc90 Dec 3, 2025
f43c9e7
Merge branch 'main' of https://github.com/buhlergroup/azurechat
saoc90 Dec 3, 2025
e62944f
feat: enhance chat functionality with improved state management and e…
saoc90 Dec 3, 2025
2c29f94
Initial plan
Copilot Dec 4, 2025
05117c7
Update Next.js to 15.5.7 to mitigate CVE-2025-66478
Copilot Dec 4, 2025
82da633
Merge pull request #63 from buhlergroup/copilot/update-react-nextjs-cves
saoc90 Dec 4, 2025
8f091be
chore(deps): bump jws from 3.2.2 to 3.2.3 in /src
dependabot[bot] Dec 4, 2025
3802194
Initial plan
Copilot Dec 11, 2025
2fba75d
Add support for gpt-5.2 model
Copilot Dec 11, 2025
cb1a596
Merge pull request #65 from buhlergroup/copilot/add-support-for-gpt-5-2
saoc90 Dec 11, 2025
cadf169
Merge pull request #64 from buhlergroup/dependabot/npm_and_yarn/src/j…
saoc90 Dec 11, 2025
5de68dc
chore(deps): bump next from 15.5.7 to 15.5.9 in /src
dependabot[bot] Dec 12, 2025
9a0479e
Merge pull request #66 from buhlergroup/dependabot/npm_and_yarn/src/n…
saoc90 Dec 16, 2025
23f336f
feat: add file handling for image uploads via clipboard and drag-and-…
saoc90 Dec 17, 2025
6d80c52
Merge branch 'main' of https://github.com/buhlergroup/azurechat
saoc90 Dec 17, 2025
ba57454
Initial plan
Copilot Dec 18, 2025
9b9c5c4
Add line-clamp-3 to persona description to prevent overflow
Copilot Dec 18, 2025
1aab13b
Update .gitignore to exclude .env and package-lock.json files
Copilot Dec 18, 2025
adfae7f
Restore package-lock.json and update .gitignore to only exclude src/.env
Copilot Dec 18, 2025
3636455
Change title from truncate to line-clamp-1 for reliable truncation
Copilot Dec 18, 2025
d355f5e
Initial plan
Copilot Dec 18, 2025
4b9c3eb
Merge pull request #67 from buhlergroup/copilot/truncate-long-persona…
saoc90 Dec 18, 2025
cc3be56
Update to Next.js 16.1.0 and React 19.2.3
Copilot Dec 18, 2025
6a2b3a1
Fix instrumentation to support local development without valid Azure …
Copilot Dec 18, 2025
feceb54
Improve instrumentation fallback URL to be more explicit
Copilot Dec 18, 2025
b3c08a0
Merge pull request #68 from buhlergroup/copilot/update-nextjs-and-react
saoc90 Dec 18, 2025
41b3645
Initial plan
Copilot Jan 7, 2026
5f7f8eb
Change default model from gpt-5.1 to gpt-5.2
Copilot Jan 7, 2026
e9c3a8d
Merge pull request #69 from buhlergroup/copilot/create-gpt-5-2-model
saoc90 Jan 7, 2026
ff786a4
feat: update default model selection logic and enhance multimodal ima…
saoc90 Jan 20, 2026
8e03e3a
Merge branch 'main' of https://github.com/buhlergroup/azurechat
saoc90 Jan 20, 2026
0ef84c6
Change theme version
saoc90 Jan 20, 2026
3e46377
refactor: update imports and types in theme-provider, hero, and markd…
saoc90 Jan 20, 2026
48c403c
fix: update Next.js version to 16.1.4 and increase body size limit fo…
saoc90 Jan 20, 2026
1923040
feat: add image configuration for Next.js 16 with sizes and qualities
saoc90 Jan 20, 2026
771bb12
fix: update deployment script to correctly copy static files and pack…
saoc90 Jan 20, 2026
3067761
fix: ensure public folder is created before copying static files in d…
saoc90 Jan 20, 2026
078e135
fix: enhance diagnostics in deployment workflow to verify server.js a…
saoc90 Jan 20, 2026
2496863
Fixed path
saoc90 Jan 20, 2026
540e9a2
fix: update packaging step to zip all contents in site-deploy directory
saoc90 Jan 20, 2026
7366872
fix: update paths for static and public folder copying in deployment …
saoc90 Jan 20, 2026
a4f8f99
fix: enhance deployment script to copy src contents and verify node_m…
saoc90 Jan 20, 2026
2e78825
fix: create site-deploy directory before copying standalone files
saoc90 Jan 21, 2026
34db15d
feat: implement Code Interpreter file upload and download functionality
saoc90 Jan 28, 2026
455cb8e
fix: update deployment workflow to copy build and public folders, and…
saoc90 Jan 28, 2026
c372b03
fix: enhance Code Interpreter container management and file output ha…
saoc90 Jan 28, 2026
9dbc01b
feat: implement file download functionality for Code Interpreter cont…
saoc90 Jan 30, 2026
0413705
feat: implement Code Interpreter document management and file handling
saoc90 Jan 31, 2026
ffb0a83
Initial plan
Copilot Jan 31, 2026
f47fbf0
Fix TypeScript type errors: readonly array, SharePoint file types, an…
Copilot Jan 31, 2026
c711a1a
Improve fix by accepting readonly array in component props instead of…
Copilot Jan 31, 2026
f6be52f
Merge pull request #75 from buhlergroup/copilot/fix-build-type-error
saoc90 Jan 31, 2026
f338157
feat: implement file deletion functionality for Code Interpreter and …
saoc90 Feb 10, 2026
d87e964
Merge branch 'main' of https://github.com/buhlergroup/azurechat
saoc90 Feb 10, 2026
e2b9b2a
Initial plan
Copilot Feb 12, 2026
cbcb926
Remove Sites.Read.All scope from graph api token request
Copilot Feb 12, 2026
8a4f626
Improve error message clarity for content search permissions
Copilot Feb 12, 2026
47eae86
Task complete: Sites.Read.All scope removed
Copilot Feb 12, 2026
51bb3b6
Merge pull request #80 from buhlergroup/copilot/remove-sites-read-all…
saoc90 Feb 12, 2026
31687ca
Update date format in system prompt for chat thread messages
saoc90 Feb 17, 2026
8abddd5
Refactor turbo-debug script to simplify command
saoc90 Feb 17, 2026
24057f0
Initial plan
Copilot Feb 21, 2026
2ef742e
Rename Persona UI to Agent with backward-compatible routes
Copilot Feb 21, 2026
cdf0488
chore(deps): bump minimatch in /src
dependabot[bot] Mar 1, 2026
60459a5
Added agents favorites feature
saoc90 Mar 1, 2026
b80725d
Merge pull request #81 from buhlergroup/copilot/rename-personas-to-ag…
saoc90 Mar 1, 2026
b662623
Initial plan
Copilot Mar 1, 2026
6654fd3
Add sub-agent calling and per-agent model configuration
Copilot Mar 1, 2026
29802cb
Fix readonly array TypeScript error in add-new-persona
Copilot Mar 1, 2026
1f93107
Address code review: fix type safety and improve defaults
Copilot Mar 1, 2026
26845ac
Fix sub agent
saoc90 Mar 1, 2026
8f759ce
Initial plan
Copilot Mar 2, 2026
8b7d7c5
fix: make chat input textarea auto-grow with responsive max-height an…
Copilot Mar 2, 2026
8c36d05
refactor: remove deprecated chat input components and implement respo…
saoc90 Mar 2, 2026
b047784
Merge pull request #86 from buhlergroup/copilot/fix-input-area-growth
saoc90 Mar 2, 2026
43b9140
chore(deps): bump fast-xml-parser from 5.3.6 to 5.4.2 in /src
dependabot[bot] Mar 3, 2026
7d224c2
Merge pull request #87 from buhlergroup/dependabot/npm_and_yarn/src/f…
saoc90 Mar 3, 2026
222a213
Merge pull request #83 from buhlergroup/dependabot/npm_and_yarn/src/m…
saoc90 Mar 3, 2026
2c77110
Refactor documentation and update logo for Bühler Chat
saoc90 Mar 3, 2026
e448893
Merge pull request #88 from buhlergroup/no-azure-chat
saoc90 Mar 3, 2026
2c51981
Initial plan
Copilot Mar 5, 2026
7855f25
Add gpt-5.3-chat model
Copilot Mar 5, 2026
a32d262
Enable reasoning support for GPT-5.3 Chat model
saoc90 Mar 5, 2026
7b6e12f
Merge pull request #89 from buhlergroup/copilot/add-gpt-5-3-chat-model
saoc90 Mar 5, 2026
e553167
Initial plan
Copilot Mar 5, 2026
e037173
feat: add gpt-5.4 model with reasoning support
Copilot Mar 5, 2026
2e667e7
chore(deps): bump next from 16.1.6 to 16.1.7 in /src
dependabot[bot] Mar 17, 2026
6906ac7
chore(deps): bump fast-xml-parser from 5.4.2 to 5.5.6 in /src
dependabot[bot] Mar 18, 2026
bb1e692
Add GPT-5.4 as default model, GPT-5.4 Mini for summarization, and rem…
saoc90 Mar 18, 2026
5f203d3
Merge pull request #93 from buhlergroup/copilot/add-gpt-5.4-and-clean…
saoc90 Mar 18, 2026
3d4c73c
Merge pull request #92 from buhlergroup/dependabot/npm_and_yarn/src/f…
saoc90 Mar 18, 2026
f8e28a6
Merge pull request #91 from buhlergroup/dependabot/npm_and_yarn/src/n…
saoc90 Mar 18, 2026
acbf3b5
feat: default tools for agents, home page flyout fix, and UI improvem…
saoc90 Mar 18, 2026
d612f78
Merge pull request #94 from buhlergroup/feature/default-tools-and-fly…
saoc90 Mar 18, 2026
1dc03d9
fix: update defaultTools state type to NonNullable for better type sa…
saoc90 Mar 18, 2026
20a0023
chore(deps): bump fast-xml-parser from 5.5.6 to 5.5.7 in /src
dependabot[bot] Mar 20, 2026
9afa6d2
Merge pull request #95 from buhlergroup/dependabot/npm_and_yarn/src/f…
saoc90 Mar 20, 2026
4f162a7
chore(deps-dev): bump flatted from 3.3.3 to 3.4.2 in /src
dependabot[bot] Mar 20, 2026
c896416
feat: update article with validated content and add retry for API thr…
saoc90 Mar 20, 2026
2837cc8
chore(deps): bump picomatch in /src
dependabot[bot] Mar 26, 2026
18e0148
Merge pull request #97 from buhlergroup/dependabot/npm_and_yarn/src/m…
saoc90 Mar 28, 2026
4dd69a0
Merge pull request #96 from buhlergroup/dependabot/npm_and_yarn/src/f…
saoc90 Mar 28, 2026
08c3439
Merge gpt-5.4 branches and resolve conflicts
saoc90 Mar 29, 2026
b240e76
feat: add token usage tracking, cost estimation and context window vi…
saoc90 Mar 29, 2026
5aff800
fix: resolve merge conflicts with main branch
saoc90 Mar 29, 2026
175ede9
chore: remove legacy models, keep only gpt-5.4, gpt-5.4-mini, gpt-5.3…
saoc90 Mar 29, 2026
16c459b
fix: correct model pricing and context windows from official OpenAI docs
saoc90 Mar 29, 2026
7dafdad
Merge pull request #98 from buhlergroup/feature/token-usage-tracking
saoc90 Mar 29, 2026
c527bd6
fix: polish usage UI, fix SSE timing, merge indicators into single pill
saoc90 Mar 29, 2026
e401b89
fix: make desktop header scrollable at narrow widths (768px + sidebar)
saoc90 Mar 29, 2026
bba7c1a
fix: UX improvements from comprehensive audit
saoc90 Mar 29, 2026
05c1a31
fix: clarify costs are estimated, not charged
saoc90 Mar 29, 2026
0c2d8ab
fix: add disclaimer that costs are estimates, not charges to cost center
saoc90 Mar 29, 2026
57c6715
Merge pull request #99 from buhlergroup/feature/token-usage-tracking
saoc90 Mar 29, 2026
7429b23
fix: add left padding on agent page mobile, add fade gradient above c…
saoc90 Mar 29, 2026
ae98b26
fix: add horizontal padding to all container elements for mobile
saoc90 Mar 29, 2026
665a903
Initial plan
Copilot Apr 2, 2026
b877226
Increase max document limit per agent from 10 to 25
Copilot Apr 2, 2026
3d987ae
Initial plan
Copilot Apr 21, 2026
6996d6b
feat: support multiple image uploads per prompt
Copilot Apr 21, 2026
c2d9210
refactor: address code review feedback - extract image array logic an…
Copilot Apr 21, 2026
d61338d
chore(deps): bump fast-xml-parser from 5.5.7 to 5.7.1 in /src
dependabot[bot] Apr 23, 2026
1a84c9c
Add GPT-5.5 model config
Copilot Apr 23, 2026
72eb527
Merge pull request #112 from buhlergroup/copilot/add-gpt-5-5-default-…
saoc90 Apr 27, 2026
5d1069b
Update pricing model for chat services
saoc90 Apr 27, 2026
2aa39bd
Improve Azure OpenAI prompt cache hit rate
saoc90 Apr 30, 2026
01f1492
Remove prompt-cache-analysis doc
saoc90 Apr 30, 2026
c18b86f
Merge pull request #115 from buhlergroup/cache-analysis
saoc90 Apr 30, 2026
15922fd
chore(deps): bump @protobufjs/utf8 from 1.1.0 to 1.1.1 in /src
dependabot[bot] May 12, 2026
2c329ec
Update package-lock.json for next 16.2.6
Copilot May 15, 2026
0423e5c
Merge pull request #123 from buhlergroup/copilot/fix-vulnerabilities-…
saoc90 May 15, 2026
1709c6d
Introduce service container; split cosmos & openai into production fa…
saoc90 May 17, 2026
4454ba0
Modernize App Insights init and wire AZURECHAT_TEST_BACKEND service b…
saoc90 May 17, 2026
1b8327a
Fix extension-page async map and expose ReportingContent for testability
saoc90 May 17, 2026
d87dc91
Add vitest + Playwright dev dependencies, ignore e2e artifacts
saoc90 May 17, 2026
0fca29a
Add unit-test coverage across features, routes, and shared services
saoc90 May 17, 2026
6c82b07
Add Playwright e2e harness with in-memory backend
saoc90 May 17, 2026
7bd0e69
Add behavioural e2e specs covering core chat flows
saoc90 May 17, 2026
57754bf
Refresh sidebar after thread create/delete; hide tool-role bubbles
saoc90 May 17, 2026
edcec34
Gate deploy workflow on Tests passing via workflow_run
saoc90 May 17, 2026
36e3ea2
chore(deps): bump protobufjs from 7.5.4 to 7.5.9 in /src
dependabot[bot] May 17, 2026
3c16b90
chore(deps): bump esbuild, vite, @vitest/coverage-v8 and vitest in /src
dependabot[bot] May 17, 2026
ce5359f
Reset service container between cosmos / openai unit tests
saoc90 May 17, 2026
0bc7e13
Drop the 100% coverage gate from the test workflow
saoc90 May 17, 2026
c60978f
Drop coverage thresholds from vitest config (informational only)
saoc90 May 17, 2026
6f7ca80
Harden thread-switch spec for CI: poll URL after second New Chat click
saoc90 May 17, 2026
ca20294
Poll URL after every New Chat click for CI robustness
saoc90 May 17, 2026
650e5ed
Allow CI retries on Playwright and run the full suite on failure
saoc90 May 17, 2026
e3b7d57
Handle Next standalone output path shift after lockfile move
saoc90 May 17, 2026
9288a89
Merge pull request #105 from buhlergroup/copilot/increase-documents-l…
saoc90 May 19, 2026
cc70bec
fix: dedupe paste sources and force visible thumbnail size
saoc90 May 19, 2026
6de0372
Fix silent drop of large Code Interpreter docs (#113)
saoc90 May 19, 2026
d2cf0b4
fix: file-picker image upload appends instead of replacing
saoc90 May 19, 2026
34d3770
test: add e2e spec for multi-image input behavior
saoc90 May 19, 2026
0f36e9f
test: assert pasted image survives submit and renders in user bubble
saoc90 May 19, 2026
7addce8
Merge pull request #110 from buhlergroup/copilot/bugfix-multiple-imag…
saoc90 May 20, 2026
d2ae59f
Merge pull request #111 from buhlergroup/dependabot/npm_and_yarn/src/…
saoc90 May 20, 2026
37b4acd
Merge pull request #121 from buhlergroup/dependabot/npm_and_yarn/src/…
saoc90 May 20, 2026
fb13cea
Merge pull request #122 from buhlergroup/dependabot/npm_and_yarn/src/…
saoc90 May 20, 2026
2c1b692
Merge pull request #127 from buhlergroup/dependabot/npm_and_yarn/src/…
saoc90 May 20, 2026
54746c3
Merge pull request #130 from buhlergroup/fix/issue-113-ci-document-si…
saoc90 May 20, 2026
519b4b1
chore(deps): bump packages for Vercel AI SDK v6 migration
saoc90 May 21, 2026
51118c8
feat(chat): migrate /api/chat to Vercel AI SDK v6 streamText
saoc90 May 21, 2026
faa8639
feat(chat-page): per-tab Zustand chat store + provider
saoc90 May 21, 2026
b4ae2e3
feat(image-gen): blob-ref pipeline for built-in image_generation tool
saoc90 May 21, 2026
63f1ab1
fix(theme): drop isMounted gate so next-themes hydration script runs
saoc90 May 21, 2026
8f818d6
chore: remove legacy chat orchestrator stack
saoc90 May 21, 2026
2a05ca2
test(e2e): cover AI SDK v6 chat paths
saoc90 May 21, 2026
fb204d8
feat(chat): resumable streams for thread switch + explicit stop
saoc90 May 21, 2026
1dbf9ee
fix(chat): unbreak reattach + abort persistence
saoc90 May 21, 2026
7323c1c
feat(code-interpreter): replace data: image URLs with blob refs and i…
saoc90 May 22, 2026
c6438dd
fix(sandbox-url): buffer text-deltas so cross-chunk sandbox URLs match
saoc90 May 22, 2026
34c97d7
fix(sandbox-url): hydrate filename map from text-end citation annotat…
saoc90 May 22, 2026
eddee28
fix(code-interpreter): wire attached file IDs into Azure container
saoc90 May 22, 2026
8019f9b
feat(embed): embeddable agent iframes
saoc90 May 27, 2026
692e53c
fix(embed): resolve frame-ancestors at runtime in proxy.ts
saoc90 May 27, 2026
52ecad4
Set prompt_cache_retention=24h on Azure OpenAI calls
Copilot May 28, 2026
7841fb6
Merge pull request #134 from buhlergroup/copilot/specify-prompt-cache…
saoc90 May 28, 2026
6354ccd
feat(ui): make error states visible — styled DisplayError + iconed to…
saoc90 May 28, 2026
412dd17
Remove date from system prompt; add minimal `time` default tool
Copilot May 29, 2026
0e57785
Log when default `time` tool is missing
Copilot May 29, 2026
a167e13
feat(chat): generative UI (json-render) + AI-elements polish
saoc90 May 29, 2026
dbd5a52
Send browser local datetime to time tool; simplify getCurrentTime
Copilot May 29, 2026
c81f27c
Merge pull request #135 from buhlergroup/copilot/remove-current-date
saoc90 May 29, 2026
aad5509
Merge origin/main into feat/ai-sdk-v6-migration; port time tool to ne…
saoc90 May 29, 2026
274f10a
chore(deps): migrate to zod 4
saoc90 May 29, 2026
36967d7
fix(ci): allow zod 4 install under npm strict peer resolution
saoc90 May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 1 addition & 6 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Azure Chat Solution Accelerator powered by Azure Open AI Service",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/javascript-node:0-18-bullseye",
"image": "mcr.microsoft.com/devcontainers/javascript-node:22",

// Features to add to the dev container. More info: https://containers.dev/features.
"features": {
Expand All @@ -21,11 +21,6 @@
"version": "latest",
"dockerDashComposeVersion": "v2"
},
"ghcr.io/devcontainers-contrib/features/zsh-plugins:0": {
"plugins": "ssh-agent npm zsh-syntax-highlighting zsh-autosuggestions",
"omzPlugins": "https://github.com/zsh-users/zsh-autosuggestions https://github.com/zsh-users/zsh-syntax-highlighting",
"username": "node"
},
"ghcr.io/devcontainers/features/azure-cli:1": {
"installBicep": true
},
Expand Down
117 changes: 89 additions & 28 deletions .github/workflows/open-ai-app.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
name: Build & deploy Next.js app to Azure Web App

# When this action will be executed
# Runs only after the Tests workflow finishes successfully on main. This
# gates every deploy (dev + prod) on vitest + Playwright green. Manual
# dispatch stays available for hotfix / re-deploy scenarios.
on:
# Automatically trigger it when detected changes in repo
push:
workflow_run:
workflows: ["Tests"]
types: [completed]
branches: [main]

# Allow manual workflow trigger
workflow_dispatch:

jobs:
build:
# Only proceed when triggered by a successful Tests run (or manually).
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest

steps:
Expand All @@ -23,44 +26,66 @@ jobs:
node-version: "20.x"

- name: ⚙️ npm install and build
env:
NEXT_PUBLIC_FEEDBACK_LINK: ${{ secrets.NEXT_PUBLIC_FEEDBACK_LINK }}
NEXT_PUBLIC_MAX_PERSONA_DOCUMENT_LIMIT: ${{ secrets.NEXT_PUBLIC_PERSONA_DOCUMENT_LIMIT }}
NEXT_PUBLIC_AI_RULES: ${{ secrets.NEXT_PUBLIC_AI_RULES }}
NEXT_PUBLIC_SHAREPOINT_URL: ${{ secrets.NEXT_PUBLIC_SHAREPOINT_URL }}
run: |
cd ./src
npm install
npm run build --if-present
cd ..

- name: 📂 Copy standalone into the root
run: cp -R ./src/.next/standalone ./site-deploy

- name: 📂 Copy static into the .next folder
run: cp -R ./src/.next/static ./site-deploy/.next/static

- name: 📂 Copy Public folder
run: cp -R ./src/public ./site-deploy/public
run: |
# Next picks the workspace root for the standalone output by walking
# up for the first lockfile. The repo previously had a (stale) root
# package-lock.json, which made the standalone output nest under
# `standalone/src/`. With only `src/package-lock.json` left, the
# standalone bundle now sits directly under `build/standalone/`.
mkdir -p ./site-deploy
if [ -d ./src/build/standalone/src ]; then
cp -R ./src/build/standalone/src/* ./site-deploy/
else
cp -R ./src/build/standalone/* ./site-deploy/
fi

- name: 📂 Copy static and public folders into standalone
run: |
# Move static from build to standalone
mkdir -p ./site-deploy/build
cp -R ./src/build/static ./site-deploy/build/
# Move public folder to standalone
cp -R ./src/public ./site-deploy/

- name: 📦 Package Next application
run: |
cd ./site-deploy
zip Nextjs-site.zip ./* .next -qr
zip -qr Nextjs-site.zip .

- name: 🔍 Diagnostics
run: |
ls ./src
ls ./src/.next
ls ./site-deploy
echo "=== site-deploy contents ==="
ls -la ./site-deploy/
echo "=== Verifying server.js exists ==="
ls -la ./site-deploy/server.js || echo "server.js NOT FOUND!"
echo "=== Verifying node_modules/next exists ==="
ls -la ./site-deploy/node_modules/next/package.json || echo "next module NOT FOUND!"
echo "=== Zip contents (first 50) ==="
unzip -l ./site-deploy/Nextjs-site.zip | head -50

- name: ⬆️ Publish Next Application artifact
uses: actions/upload-artifact@v4
with:
name: Nextjs-site
path: ./site-deploy/Nextjs-site.zip

deploy:
deploy-development:
runs-on: ubuntu-latest
needs: build
environment:
name: Production

name: "Development"
steps:
- name: 🍏 Set up Node.js version
uses: actions/setup-node@v4
Expand All @@ -72,7 +97,7 @@ jobs:
with:
name: Nextjs-site

- name: 🗝️ Azure Login
- name: ️ Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
Expand All @@ -82,19 +107,55 @@ jobs:
uses: azure/CLI@v1
with:
inlineScript: |
rg=$(az webapp list --query "[?name=='${{ secrets.AZURE_APP_SERVICE_NAME }}'].resourceGroup" --output tsv)
echo Setting SCM_DO_BUILD_DURING_DEPLOYMENT=false on app service ${{ secrets.AZURE_APP_SERVICE_NAME }}
az webapp config appsettings set -n ${{ secrets.AZURE_APP_SERVICE_NAME }} -g $rg --settings SCM_DO_BUILD_DURING_DEPLOYMENT=false -o none
echo Setting --startup-file=\"node server.js\" on app service ${{ secrets.AZURE_APP_SERVICE_NAME }}
az webapp config set --startup-file="node server.js" -n ${{ secrets.AZURE_APP_SERVICE_NAME }} -g $rg -o none
rg=$(az webapp list --query "[?name=='${{ secrets.AZURE_APP_SERVICE_NAME_DEV }}'].resourceGroup" --output tsv)
echo Setting SCM_DO_BUILD_DURING_DEPLOYMENT=false on app service ${{ secrets.AZURE_APP_SERVICE_NAME_DEV }}
az webapp config appsettings set -n ${{ secrets.AZURE_APP_SERVICE_NAME_DEV }} -g $rg --settings SCM_DO_BUILD_DURING_DEPLOYMENT=false WEBSITE_SKIP_SYMLINK_NODEMODULES=1 -o none
echo Setting --startup-file=\"node server.js\" on app service ${{ secrets.AZURE_APP_SERVICE_NAME_DEV }}
az webapp config set --startup-file="node server.js" -n ${{ secrets.AZURE_APP_SERVICE_NAME_DEV }} -g $rg -o none
sleep 10

- name: 🚀 Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: ${{ secrets.AZURE_APP_SERVICE_NAME }}
resource-group-name: ${{ secrets.AZURE_APP_SERVICE_RG_NAME_DEV }}
app-name: ${{ secrets.AZURE_APP_SERVICE_NAME_DEV }}
package: ${{ github.workspace }}/Nextjs-site.zip

- name: 🧹 Cleanup
run: rm ${{ github.workspace }}/Nextjs-site.zip
deploy-production:
runs-on: ubuntu-latest
needs: build
environment:
name: "Production"
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} # or your production URL, add reviewers as well if you need
steps:
- name: ⬇️ Download artifact from build job
uses: actions/download-artifact@v4
with:
name: Nextjs-site

- name: ️Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}

# Set the build during deployment setting to false. This setting was added in the templates to all azd to work, but breaks deployment via webapps-deploy
- name: Azure CLI script
uses: azure/CLI@v1
with:
inlineScript: |
rg=$(az webapp list --query "[?name=='${{ secrets.AZURE_APP_SERVICE_NAME_PROD }}'].resourceGroup" --output tsv)
echo Setting SCM_DO_BUILD_DURING_DEPLOYMENT=false on app service ${{ secrets.AZURE_APP_SERVICE_NAME_PROD }}
az webapp config appsettings set -n ${{ secrets.AZURE_APP_SERVICE_NAME_PROD }} -g $rg --settings SCM_DO_BUILD_DURING_DEPLOYMENT=false WEBSITE_SKIP_SYMLINK_NODEMODULES=1 -o none
echo Setting --startup-file=\"node server.js\" on app service ${{ secrets.AZURE_APP_SERVICE_NAME_PROD }}
az webapp config set --startup-file="node server.js" -n ${{ secrets.AZURE_APP_SERVICE_NAME_PROD }} -g $rg -o none
sleep 10

- name: 🚀 Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
resource-group-name: ${{ secrets.AZURE_APP_SERVICE_RG_NAME_PROD }}
app-name: ${{ secrets.AZURE_APP_SERVICE_NAME_PROD }}
package: ${{ github.workspace }}/Nextjs-site.zip

90 changes: 90 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: Tests

on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:

jobs:
unit:
name: Unit tests + coverage
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./src
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20.x"
cache: npm
cache-dependency-path: src/package-lock.json

- name: Install
run: npm ci

- name: Run vitest with coverage
run: npm run test:coverage

- name: Roll up coverage by feature area
run: node __tests__/coverage-rollup.mjs

- name: Upload coverage HTML
if: always()
uses: actions/upload-artifact@v4
with:
name: coverage-html
path: src/coverage/

e2e:
name: Playwright e2e
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./src
env:
NEXTAUTH_SECRET: ci-nextauth-secret-do-not-use-in-prod
NEXTAUTH_URL: http://localhost:3000
AZURE_COSMOSDB_URI: https://cosmos.test.local
AZURE_COSMOSDB_KEY: test-key
AZURE_COSMOSDB_DB_NAME: chat
AZURE_COSMOSDB_CONTAINER_NAME: history
AZURE_COSMOSDB_CONFIG_CONTAINER_NAME: config
AZURE_SEARCH_API_KEY: test-search-key
AZURE_SEARCH_NAME: test-search
AZURE_SEARCH_INDEX_NAME: test-index
AZURE_OPENAI_API_KEY: test-openai-key
AZURE_OPENAI_API_INSTANCE_NAME: test-instance
AZURE_OPENAI_API_DEPLOYMENT_NAME: gpt-test
AZURE_OPENAI_API_VERSION: "2024-10-21"
AZURE_KEY_VAULT_NAME: test-kv
AZURE_STORAGE_ACCOUNT_NAME: teststorage
AZURE_STORAGE_ACCOUNT_KEY: test-storage-key
ADMIN_EMAIL_ADDRESS: admin@test.local
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20.x"
cache: npm
cache-dependency-path: src/package-lock.json

- name: Install
run: npm ci

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium

- name: Run Playwright
run: npx playwright test --project=chromium

- name: Upload Playwright report
if: always()
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: src/playwright-report/
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,22 @@
.DS_Store
*.pem

# playwright e2e artifacts
src/test-results/
src/playwright-report/
src/e2e/.auth/
src/e2e/.dev-server.pid
# global-setup.ts temporarily renames the (stale) root lockfile during e2e
package-lock.json.e2e-stash

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local
src/.env

# typescript
*.tsbuildinfo
Expand All @@ -34,3 +43,10 @@ next-env.d.ts
.azure/
infra/aad_setup.sh
.vscode
.claude/settings.local.json
src/.env.local.bak

# Local agent/skill tooling (installed via `npx skills add`) — not app code
.agents/
.claude/skills/
skills-lock.json
34 changes: 34 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Next.js: debug server-side",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev -- --inspect",
"cwd": "${workspaceFolder}/src"
},
{
"name": "Next.js: debug client-side",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000"
},
{
"name": "Next.js: debug full stack",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/src/node_modules/next/dist/bin/next",
"runtimeArgs": ["--inspect"],
"skipFiles": ["<node_internals>/**"],
"cwd": "${workspaceFolder}/src",
"serverReadyAction": {
"action": "debugWithChrome",
"killOnServerStop": true,
"pattern": "- Local:.+(https?://.+)",
"uriFormat": "%s",
"webRoot": "${workspaceFolder}"
}
}
]
}
Loading