From d1ed9cdd7e0a4cb29ef55d34ab73401648491d1a Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Mon, 29 Jun 2026 16:19:18 +0800 Subject: [PATCH 1/2] chore: bump Teams app manifest schema from v1.28 to v1.29 (#1753) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * chore: bump Teams manifest schema from v1.28 to v1.29 - Update LATEST_MANIFEST_VERSION to 1.29.0 in teamsAppManifestValidator.ts - Update manifest-valid.json test data to use v1.29 schema/manifestVersion - Update test assertion to reference 1.29.0 - Update all 21 sample appPackage/manifest.json files: $schema and manifestVersion bumped from 1.28 → 1.29 Closes #1751 --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- ProxyAgent-NodeJS/appPackage/manifest.json | 4 ++-- ProxyAgent-Python/appPackage/manifest.json | 4 ++-- adaptive-card-notification/appPackage/manifest.json | 4 ++-- bot-sso/appPackage/manifest.json | 4 ++-- coffee-agent/appPackage/manifest.json | 4 ++-- copilot-connector-app/appPackage/manifest.json | 4 ++-- data-analyst-agent-v2/appPackage/manifest.json | 4 ++-- developer-assist-dashboard/appPackage/manifest.json | 4 ++-- graph-toolkit-contact-exporter/appPackage/manifest.json | 4 ++-- graph-toolkit-one-productivity-hub/appPackage/manifest.json | 4 ++-- hello-world-in-meeting/appPackage/manifest.json | 4 ++-- hello-world-tab-docker/appPackage/manifest.json | 4 ++-- hello-world-tab-with-backend/appPackage/manifest.json | 4 ++-- large-scale-notification/appPackage/manifest.json | 4 ++-- live-share-dice-roller/appPackage/manifest.json | 4 ++-- .../appPackage/manifest.json | 4 ++-- sso-enabled-tab-via-apim-proxy/appPackage/manifest.json | 4 ++-- stocks-update-notification-bot/appPackage/manifest.json | 4 ++-- team-central-dashboard/appPackage/manifest.json | 4 ++-- todo-list-SPFx/appPackage/manifest.json | 4 ++-- todo-list-with-Azure-backend-M365/appPackage/manifest.json | 4 ++-- validation-tool/src/validators/teamsAppManifestValidator.ts | 2 +- validation-tool/test/data/manifest-valid.json | 4 ++-- .../test/validators/teamsAppManifestValidator.test.ts | 2 +- 24 files changed, 46 insertions(+), 46 deletions(-) diff --git a/ProxyAgent-NodeJS/appPackage/manifest.json b/ProxyAgent-NodeJS/appPackage/manifest.json index f71246b0..68b96085 100644 --- a/ProxyAgent-NodeJS/appPackage/manifest.json +++ b/ProxyAgent-NodeJS/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/ProxyAgent-Python/appPackage/manifest.json b/ProxyAgent-Python/appPackage/manifest.json index c53b64a2..aa484cd9 100644 --- a/ProxyAgent-Python/appPackage/manifest.json +++ b/ProxyAgent-Python/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/adaptive-card-notification/appPackage/manifest.json b/adaptive-card-notification/appPackage/manifest.json index c133f5d4..103f8c4e 100644 --- a/adaptive-card-notification/appPackage/manifest.json +++ b/adaptive-card-notification/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/bot-sso/appPackage/manifest.json b/bot-sso/appPackage/manifest.json index 4c86bf9c..0b4ed67e 100644 --- a/bot-sso/appPackage/manifest.json +++ b/bot-sso/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/coffee-agent/appPackage/manifest.json b/coffee-agent/appPackage/manifest.json index 19b0eeb9..98fd73c0 100644 --- a/coffee-agent/appPackage/manifest.json +++ b/coffee-agent/appPackage/manifest.json @@ -1,7 +1,7 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", "version": "1.0.0", - "manifestVersion": "1.28", + "manifestVersion": "1.29", "id": "${{TEAMS_APP_ID}}", "name": { "short": "CoffeeAgent${{APP_NAME_SUFFIX}}", diff --git a/copilot-connector-app/appPackage/manifest.json b/copilot-connector-app/appPackage/manifest.json index ad768365..328a8d8b 100644 --- a/copilot-connector-app/appPackage/manifest.json +++ b/copilot-connector-app/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/data-analyst-agent-v2/appPackage/manifest.json b/data-analyst-agent-v2/appPackage/manifest.json index b2a106b7..2bbbb92c 100644 --- a/data-analyst-agent-v2/appPackage/manifest.json +++ b/data-analyst-agent-v2/appPackage/manifest.json @@ -1,7 +1,7 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", "version": "1.0.0", - "manifestVersion": "1.28", + "manifestVersion": "1.29", "id": "${{TEAMS_APP_ID}}", "name": { "short": "data-analyst-v2-${{APP_NAME_SUFFIX}}", diff --git a/developer-assist-dashboard/appPackage/manifest.json b/developer-assist-dashboard/appPackage/manifest.json index 2326168e..106731c2 100644 --- a/developer-assist-dashboard/appPackage/manifest.json +++ b/developer-assist-dashboard/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/graph-toolkit-contact-exporter/appPackage/manifest.json b/graph-toolkit-contact-exporter/appPackage/manifest.json index 45783907..8a2c07fb 100644 --- a/graph-toolkit-contact-exporter/appPackage/manifest.json +++ b/graph-toolkit-contact-exporter/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/graph-toolkit-one-productivity-hub/appPackage/manifest.json b/graph-toolkit-one-productivity-hub/appPackage/manifest.json index bb32504d..d2760c82 100644 --- a/graph-toolkit-one-productivity-hub/appPackage/manifest.json +++ b/graph-toolkit-one-productivity-hub/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/hello-world-in-meeting/appPackage/manifest.json b/hello-world-in-meeting/appPackage/manifest.json index 9c570c7f..a72cf8cb 100644 --- a/hello-world-in-meeting/appPackage/manifest.json +++ b/hello-world-in-meeting/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/hello-world-tab-docker/appPackage/manifest.json b/hello-world-tab-docker/appPackage/manifest.json index 603f2087..116a4014 100644 --- a/hello-world-tab-docker/appPackage/manifest.json +++ b/hello-world-tab-docker/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/hello-world-tab-with-backend/appPackage/manifest.json b/hello-world-tab-with-backend/appPackage/manifest.json index b5a58464..243bde1e 100644 --- a/hello-world-tab-with-backend/appPackage/manifest.json +++ b/hello-world-tab-with-backend/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/large-scale-notification/appPackage/manifest.json b/large-scale-notification/appPackage/manifest.json index 41f7cd2e..df146f70 100644 --- a/large-scale-notification/appPackage/manifest.json +++ b/large-scale-notification/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/live-share-dice-roller/appPackage/manifest.json b/live-share-dice-roller/appPackage/manifest.json index e3ea0f41..6b66201d 100644 --- a/live-share-dice-roller/appPackage/manifest.json +++ b/live-share-dice-roller/appPackage/manifest.json @@ -1,7 +1,7 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", "version": "1.0.1", - "manifestVersion": "1.28", + "manifestVersion": "1.29", "id": "${{TEAMS_APP_ID}}", "name": { "short": "DiceRollerLiveShare${{APP_NAME_SUFFIX}}", diff --git a/query-org-user-with-message-extension-sso/appPackage/manifest.json b/query-org-user-with-message-extension-sso/appPackage/manifest.json index f222af4c..39f3e29b 100644 --- a/query-org-user-with-message-extension-sso/appPackage/manifest.json +++ b/query-org-user-with-message-extension-sso/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/sso-enabled-tab-via-apim-proxy/appPackage/manifest.json b/sso-enabled-tab-via-apim-proxy/appPackage/manifest.json index f38468b6..05b22f42 100644 --- a/sso-enabled-tab-via-apim-proxy/appPackage/manifest.json +++ b/sso-enabled-tab-via-apim-proxy/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/stocks-update-notification-bot/appPackage/manifest.json b/stocks-update-notification-bot/appPackage/manifest.json index 5828ace6..12b9150f 100644 --- a/stocks-update-notification-bot/appPackage/manifest.json +++ b/stocks-update-notification-bot/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/team-central-dashboard/appPackage/manifest.json b/team-central-dashboard/appPackage/manifest.json index 4ed14f12..d2ac8ac2 100644 --- a/team-central-dashboard/appPackage/manifest.json +++ b/team-central-dashboard/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/todo-list-SPFx/appPackage/manifest.json b/todo-list-SPFx/appPackage/manifest.json index 18942853..04324e18 100644 --- a/todo-list-SPFx/appPackage/manifest.json +++ b/todo-list-SPFx/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "id": "${{TEAMS_APP_ID}}", "version": "1.0.0", "developer": { diff --git a/todo-list-with-Azure-backend-M365/appPackage/manifest.json b/todo-list-with-Azure-backend-M365/appPackage/manifest.json index 9f39118f..85a6844c 100644 --- a/todo-list-with-Azure-backend-M365/appPackage/manifest.json +++ b/todo-list-with-Azure-backend-M365/appPackage/manifest.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/validation-tool/src/validators/teamsAppManifestValidator.ts b/validation-tool/src/validators/teamsAppManifestValidator.ts index c70bbcae..d387cd78 100644 --- a/validation-tool/src/validators/teamsAppManifestValidator.ts +++ b/validation-tool/src/validators/teamsAppManifestValidator.ts @@ -9,7 +9,7 @@ import addFormats from "ajv-formats"; import { Result } from "../resultType"; import { detectProjectType } from "../projectDetector"; -const LATEST_MANIFEST_VERSION = "1.28.0"; +const LATEST_MANIFEST_VERSION = "1.29.0"; const MANIFEST_PREVIEW_VERSION = "devPreview"; async function fetchSchema(schemaUrl: string): Promise | null> { diff --git a/validation-tool/test/data/manifest-valid.json b/validation-tool/test/data/manifest-valid.json index 8f4c62a5..cf964f56 100644 --- a/validation-tool/test/data/manifest-valid.json +++ b/validation-tool/test/data/manifest-valid.json @@ -1,6 +1,6 @@ { - "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json", - "manifestVersion": "1.28", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.29/MicrosoftTeams.schema.json", + "manifestVersion": "1.29", "version": "1.0.0", "id": "${{TEAMS_APP_ID}}", "developer": { diff --git a/validation-tool/test/validators/teamsAppManifestValidator.test.ts b/validation-tool/test/validators/teamsAppManifestValidator.test.ts index 7552048b..74a05a3e 100644 --- a/validation-tool/test/validators/teamsAppManifestValidator.test.ts +++ b/validation-tool/test/validators/teamsAppManifestValidator.test.ts @@ -85,6 +85,6 @@ describe('validateTeamsAppManifest()', () => { expect(result.name).toEqual("Teams App Manifest"); expect(result.failed.length).toBe(0); expect(result.passed.length).toBe(1); - expect(result.warning[0]).toEqual("Manifest version(1.12) is NOT aligned with Microsoft 365 Agents Toolkit(1.28.0)."); + expect(result.warning[0]).toEqual("Manifest version(1.12) is NOT aligned with Microsoft 365 Agents Toolkit(1.29.0)."); }); }); From 4445e486b858b10ab41484158c6b991247ba098d Mon Sep 17 00:00:00 2001 From: kumburovicbranko682-boop Date: Mon, 29 Jun 2026 16:31:47 +0800 Subject: [PATCH 2/2] Quality: Missing directory existence check causes unhandled crash in build hook (#1755) * refactor: missing directory existence check causes unhandled crash in build hook The `onSuccess` handler calls `readdirSync(srcDataDir)` without verifying the `src/data` directory exists. If a developer deletes or restructures the directory, or if a fresh clone is missing it, the build will crash with an unhandled `ENOENT` error. This is a build-breaking bug that surfaces as an opaque Node.js filesystem error rather than a clear message. Affected files: tsup.config.js Signed-off-by: kumburovicbranko682-boop <295886834+kumburovicbranko682-boop@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Signed-off-by: kumburovicbranko682-boop <295886834+kumburovicbranko682-boop@users.noreply.github.com> Co-authored-by: Ning Tang Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- data-analyst-agent-v2/tsup.config.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/data-analyst-agent-v2/tsup.config.js b/data-analyst-agent-v2/tsup.config.js index 2a151699..dfea504d 100644 --- a/data-analyst-agent-v2/tsup.config.js +++ b/data-analyst-agent-v2/tsup.config.js @@ -1,4 +1,4 @@ -const { copyFileSync, mkdirSync, readdirSync } = require('fs'); +const { copyFileSync, mkdirSync, readdirSync, existsSync } = require('fs'); const { join } = require('path'); /** @type {import('tsup').Options} */ @@ -19,7 +19,12 @@ module.exports = { const distDataDir = join(__dirname, 'dist', 'data'); mkdirSync(distDataDir, { recursive: true }); - + + if (!existsSync(srcDataDir)) { + console.warn('src/data directory not found, skipping static file copy'); + return; + } + const files = readdirSync(srcDataDir); for (const file of files) { if (file.endsWith('.sql') || file.endsWith('.jsonl') || file.endsWith('.md') || file.endsWith('.db')) {