## Problem
The model selection dropdown doesn't scroll when there are many models
available, causing the list to extend beyond the viewport and become
unusable.
## Solution
- Added `max-h-100 overflow-y-auto` classes to the DropdownMenuContent
This closes (#1279)
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds vertical scrolling to the model selection dropdown so long lists
don’t overflow the viewport. Applies max height and overflow-y auto to
DropdownMenuSubContent across provider, Ollama, and LM Studio menus to
keep the list usable.
<!-- End of auto-generated description by cubic. -->
This PR implements app search feature and addresses the issue #1182.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds a fast app search with a command-style dialog so users can find
apps by name or chat content and jump to them quickly. Implements the
search experience requested in #1182.
- New Features
- Search dialog (Ctrl+K or “Search Apps” button) with result snippets
from matching chat titles/messages.
- Searches across app names, chat titles, and message content;
case-insensitive; supports partial matches; empty query lists all apps.
- Selecting a result navigates to the app and closes the dialog.
- New IPC endpoint search-app with Zod-validated results, debounced
React Query hook, and preload allowlist update.
- Added E2E tests for dialog open/close, shortcuts, matching behavior,
empty state, and navigation.
<!-- End of auto-generated description by cubic. -->
## 🚀 Feature: Inline Code Editor
This PR adds a comprehensive inline code editing experience to the
DyadWrite component.
### ✨ What's New
- **Inline Monaco Editor**: Edit code directly within the component
using Monaco Editor
- **Cancel/Revert**: Cancel changes and revert to original code state
- **Language Detection**: Automatic syntax highlighting based on file
extensions
- **Theme Support**: Proper dark/light mode theming integration
https://github.com/user-attachments/assets/c44ab622-6b86-403c-904d-3f327f9719e8
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds an inline Monaco-based code editor to DyadWrite so users can edit
code blocks in place, then save or cancel changes. Saves stream edits
back to the chat as a dyad-edit block.
- **New Features**
- Inline editor with Edit, Save, and Cancel; preserves original code and
auto-expands when editing.
- Language detection from file extension and dark/light theme support.
- Save streams edits via useStreamChat as <dyad-edit
path="...">...</dyad-edit> tied to the selected chat.
- Non-edit view still uses CodeHighlight; visibility toggle and
in-progress state respected.
- **Refactors**
- ChatMessage now uses DyadMarkdownParser instead of
VanillaMarkdownParser.
<!-- End of auto-generated description by cubic. -->
## Summary
Adds the ability to edit existing custom AI providers through the
settings UI.
## Changes Made
- **UI Changes:**
- Added "Edit Provider" button to custom provider dropdown menu
- Modified `CreateCustomProviderDialog` to support edit mode
- **Backend Changes:**
- Implemented `editCustomLanguageModelProvider` handler in
`language_model_handlers.ts`
- Added corresponding IPC client method
- Database transaction ensures atomicity when updating provider and
associated models
- **Testing:**
- Added comprehensive e2e test covering edit functionality
- Tests verify form pre-population, field updates, and UI persistence
https://github.com/user-attachments/assets/e8c8600e-4fb7-4816-be95-993ede1224d4
## Closes
Fixes#1232 and #1171
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds edit support for custom language model providers in Settings. Users
can update provider ID, name, API base URL, and API key env var, with
safe backend updates that also retarget associated models if the ID
changes.
- New Features
- Added “Edit Provider” option in the custom provider menu.
- Dialog supports edit mode with pre-filled fields, unified loading
state, and update button text.
- New IPC handler to edit providers with validation and a transaction;
updates linked models when IDs change.
- IPC client and preload channel updated; React hook exposes
editProvider mutation with cache invalidation.
- Added e2e test covering the full edit flow.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds rotating Pro banners on the home page to promote Dyad Pro (AI
access, Smart Context savings, Turbo speed). Also tightens the home
layout and centers the setup headline.
- New Features
- Added ProBanner with three variants (AI Access, Smart Context, Turbo).
One shows at random and links to dyad.sh/pro with UTM tags.
- Banners are hidden when Pro is enabled or the user has a budget
(settings.enableDyadPro or userBudget).
- Added OpenAI, Google, and Anthropic logo assets for the AI Access
banner.
- Home updates: show 3 inspiration prompts (was 5), center and constrain
layout, and render ProBanner below content.
- SetupBanner heading is centered and slightly smaller (text-5xl).
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds “Dyad Turbo” models for Pro users and centralizes model/provider
constants. Pro users can pick fast, cost‑effective models directly from
the ModelPicker, with clearer labels and gating.
- **New Features**
- Added Dyad Turbo provider in ModelPicker with Qwen3 Coder and Kimi K2
(Pro only).
- Turbo options are hidden for non‑Pro users; “Pro only” badge shown
where applicable.
- “Smart Auto” label now applies only to the Auto model to avoid
confusion.
- **Refactors**
- Moved all model/provider constants into language_model_constants.ts
and updated imports (helpers, client, thinking utils).
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Scoped Azure e2e test env setup to prevent leaking variables across
tests. Added testWithConfigSkipIfWindows and moved Azure env vars into a
per-test preLaunchHook; the Azure test now skips on Windows.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds support for free OpenRouter models and a new “Free (OpenRouter)”
auto option that fails over across free models for reliability. Improves
setup flow and UI with provider cards, a “Free” price badge, and an
OpenRouter setup prompt in chat.
- **New Features**
- Added OpenRouter free models: Qwen3 Coder (free), DeepSeek v3 (free),
DeepSeek v3.1 (free), marked with dollarSigns=0 and a “Free” badge.
- New auto model: “Free (OpenRouter)” that uses a fallback client to
cycle through free models with smart retry on transient errors.
- New SetupProviderCard component and updated SetupBanner with dedicated
Google and OpenRouter setup cards.
- Chat shows an OpenRouter setup prompt when “Free (OpenRouter)” is
selected and OpenRouter isn’t configured.
- New PriceBadge component in ModelPicker to display “Free” or price
tier.
- E2E: added setup flow test and option to show the setup screen in
tests.
- Model updates: added DeepSeek v3.1, updated Kimi K2 to kimi-k2-0905,
migrated providers to LanguageModelV2.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Added OpenRouter as a first-class option in the setup banner and
introduced a reusable provider card component. This streamlines provider
selection and adds E2E coverage for the setup flow.
- **New Features**
- Added SetupProviderCard and used it for Google and OpenRouter in
SetupBanner.
- Clicking Google or OpenRouter routes to the correct provider settings
and logs PostHog events.
- Kept “Other providers” link to Settings.
- Added setup.spec.ts E2E test to verify Google, OpenRouter, and Other
navigation; introduced test config flag showSetupScreen to control the
OPENAI_API_KEY shortcut.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Added .php to ALLOWED_EXTENSIONS so codebase scanning and related
features include PHP files.
<!-- End of auto-generated description by cubic. -->
Fixes#1221
… provider)
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Enables 1M-token context for Anthropic Claude 4 Sonnet and marks AWS
Bedrock as a secondary provider. Adds the required Anthropic beta header
and updates model metadata and pricing indicator.
- **New Features**
- Send header anthropic-beta: context-1m-2025-08-07 when using the
Anthropic provider.
- Update Claude 4 Sonnet configs: contextWindow to 1,000,000; add cost
warning; increase pricing tier to 5 (applies to Anthropic and Bedrock
model IDs).
- Set AWS Bedrock as a secondary provider.
<!-- End of auto-generated description by cubic. -->
Based on https://github.com/dyad-sh/dyad/pull/1116
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds a fast chat search dialog (Command Palette) to find and jump
between chats. Open via the sidebar button or Ctrl/Cmd+K, with title and
message text search plus inline snippets.
- New Features
- Command palette using cmdk with keyboard shortcut (Ctrl/Cmd+K).
- Searches within the selected app across chat titles and message
content via a new IPC route (search-chats).
- Debounced queries (150ms) with React Query; results de-duplicated and
sorted by newest.
- Snippet preview with highlighted matches and custom ranking; selecting
a result navigates and closes the dialog.
- Search button added to ChatList; basic e2e tests added (currently
skipped).
- Dependencies
- Added cmdk@1.1.1.
- Bumped @radix-ui/react-dialog to ^1.1.15 and updated Dialog to support
an optional close button.
<!-- End of auto-generated description by cubic. -->
---------
Co-authored-by: Evans Obeng <iamevansobeng@outlook.com>
Co-authored-by: Evans Obeng <60653146+iamevansobeng@users.noreply.github.com>
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Regenerated package-lock.json to fix inconsistencies and align with
package.json. This restores reproducible installs locally and in CI.
- **Migration**
- Run npm ci to install with the updated lockfile.
- If install issues persist, delete node_modules and retry.
<!-- End of auto-generated description by cubic. -->
# Add xAI (Grok) Provider Support
## Overview
This PR adds support for xAI's Grok models as an AI provider, focusing
on coding-optimized models.
## Changes Made
### Provider Configuration (`language_model_helpers.ts`)
- Added xAI to `MODEL_OPTIONS` with 3 coding-focused models:
- `grok-code-fast-1`: Fast, economical coding model (256k context)
- `grok-4`: Most capable flagship model (256k context)
- `grok-3`: Powerful coding model (131k context)
<img width="805" height="592" alt="image"
src="https://github.com/user-attachments/assets/a99b9495-e90e-40f3-a772-be9807b24501"
/>
<img width="805" height="653" alt="image"
src="https://github.com/user-attachments/assets/aad7b333-ee74-457a-b5b7-5d20bd54d7e0"
/>
## Dependencies
- Requires `@ai-sdk/xai` package (already imported)
- Uses existing provider pattern and infrastructure
## Why xAI for Coding?
xAI's Grok models have shown impressive results in coding benchmarks:
- Trained on high-quality programming datasets reflecting real-world
tasks
- Excels at agentic coding workflows with fast reasoning capabilities
- Strong performance across multiple programming languages (TypeScript,
Python, Java, Rust, C++, Go)
- Achieved 70.8% on SWE-Bench-Verified using internal evaluation
- Optimized for rapid iteration in development environments
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds xAI (Grok) as a provider so users can pick Grok coding models in
the app. Integrates provider config, client wiring, and schema updates.
- **New Features**
- Added xAI provider with env var mapping (XAI_API_KEY) and provider
metadata.
- Exposed models: grok-code-fast-1 (256k), grok-4 (256k), grok-3 (131k).
- Hooked up get_model_client to use @ai-sdk/xai (createXai).
- Included "xai" in validation schemas and model options.
- **Migration**
- Set XAI_API_KEY to enable xAI.
<!-- End of auto-generated description by cubic. -->
---------
Co-authored-by: Will Chen <willchen90@gmail.com>
- follows existing patterns for AI SDK to provide Bedrock integration
- Uses Bedrock's API token feature for authentication which provides a
standard experience
- bedrock provided models match the Anthropic provided models (for now)
**Disclaimer**: The contributing docs are extremely sparse. I don't
actually know how to build this and get this running in Electron
## Testing
- AWS Bedrock provider is available for selection
<img width="994" height="496" alt="image"
src="https://github.com/user-attachments/assets/3cb21fed-9826-40e5-8019-b2b5df5e873b"
/>
- The provider settings also show the right models and offer the right
env variable to use
<img width="949" height="862" alt="image"
src="https://github.com/user-attachments/assets/8c23d5c8-d84d-4bf7-856a-8dc8d9d6c4b4"
/>
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds AWS Bedrock as a provider so users can run Claude models via
Bedrock with API token authentication. The settings now list Bedrock
with supported models and a new env var.
- New Features
- New provider: bedrock using @ai-sdk/amazon-bedrock, wired into model
client and schemas.
- Models: Claude 4 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet (Bedrock
model IDs).
- Settings: shows AWS Bedrock with correct models and env var
AWS_BEARER_TOKEN_BEDROCK.
- Default region: us-east-1.
- Migration
- Set AWS_BEARER_TOKEN_BEDROCK with your Bedrock API token.
- Select AWS Bedrock in settings and pick a model.
<!-- End of auto-generated description by cubic. -->
Co-authored-by: Samrat Jha <samratj@amazon.com>
Co-authored-by: Will Chen <willchen90@gmail.com>
This PR solves issue #1194 by setting a minimum height and width
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Set a minimum window size to prevent UI breakage when the app is resized
too small. The BrowserWindow now enforces minWidth 800 and minHeight 500
so layouts stay stable and controls remain accessible.
<!-- End of auto-generated description by cubic. -->
This PR introduces a new keyboard shortcut to improve the efficiency of
selecting components in the app. Users can now quickly select components
using Meta + Shift + C for Mac and Ctrl + Shift + C for Other devices
(Windows/Linux)
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Add a shortcut to quickly activate the component selector from the
preview. Use Meta+Shift+C on macOS and Ctrl+Shift+C on Windows/Linux.
- **New Features**
- Added useShortcut hook to handle key combos and prevent default on
match.
- Wired shortcut in PreviewIframe with OS detection for Meta vs Ctrl.
- Forwarded keydown events from the iframe to the parent via postMessage
(dyad-shortcut-triggered) so the shortcut works inside preview content.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Fix typo in CONTRIBUTING.md by correcting "pull requet" to "pull
request" in the setup section, improving clarity for contributors.
<!-- End of auto-generated description by cubic. -->
Hovering over the turbo edit code block previously showed a pointer
cursor, and clicking inside would collapse/expand the accordion. This PR
updates the DyadEdit component to use cursor-text and adds
e.stopPropagation() so clicks inside the code block no longer toggle the
accordion.
https://github.com/user-attachments/assets/1b23be66-6d8f-4e4b-a390-d59f9a2bcee8
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Prevented the Turbo Edit accordion from toggling when clicking inside
the code block and updated the cursor to text to signal editing.
- **Bug Fixes**
- Stop click propagation inside the code block to avoid accordion
toggle.
- Apply cursor-text on the code container for proper text-selection
affordance.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Set “balanced” as the default smart context mode. Users now get balanced
when Smart Files Context is enabled and no mode is set; “conservative”
must be explicitly selected.
- **Refactors**
- Default fallback to balanced in UI and engine (proSmartContextOption
undefined -> "balanced").
- ProModeSelector saves "conservative" explicitly; selector reads
undefined as balanced.
- Updated schema and types to allow "balanced" | "conservative".
- Engine payload now includes smart_context_mode with "balanced" by
default; e2e tests and snapshots updated.
- **Migration**
- No action needed. Existing users without an explicit mode will use
balanced by default; selecting conservative persists.
<!-- End of auto-generated description by cubic. -->
1. Show less common AI providers (secondary) in submenu
2. Show $ signs for rough cost guide
3. Show "Pro" for supported AI providers with Pro is enabled
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Improves the Model Picker UX by grouping less-used providers under an
“Other AI providers” submenu and adding clear cost and Pro indicators.
This makes picking models faster and more informative.
- **New Features**
- Grouped secondary providers under “Other AI providers” using a new
provider.secondary flag (Azure marked secondary).
- Added rough cost hints: models can set dollarSigns and the UI shows a
“$” badge accordingly.
- Shows a “Pro” badge on supported cloud providers when Pro is enabled;
added a “Custom” badge for custom providers.
- Extended types: LanguageModelProvider.secondary and
LanguageModel.dollarSigns; populated values across OpenAI, Anthropic,
Google, and OpenRouter.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Make npm scripts work on Windows by replacing rm -rf with rimraf and
using cross-env for environment variables. This enables local dev and
packaging on Windows without WSL.
- **Refactors**
- Changed clean to use rimraf and delete out and scaffold/node_modules.
- Prefixed dev:engine, staging:engine, and staging:gateway with
cross-env.
- **Dependencies**
- Added rimraf ^6.0.1. Run npm install.
<!-- End of auto-generated description by cubic. -->
Co-authored-by: 顾颢 <guhao@dayee.com>
### Summary
This PR hides `<dyad-command type="refresh"></dyad-command>` tags from
generated text outputs. These elements are not intended for end users
and clutter the response text.
### Changes
- Filter out `<dyad-command>` tags from generated text.
- Ensure no regressions in rendering or formatting of user-visible
output.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Hide dyad-command tags from chat output so internal commands never
appear in user-visible text. Updates DyadMarkdownParser to detect and
drop these tags during preprocessing, parsing, and rendering.
<!-- End of auto-generated description by cubic. -->
This allows almost all the iframe sandbox tokens
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe#sandbox
except notably for allow-top-navigation*
Note: allow-same-origin should be OK because the main window is under
the `file://` origin while the iframe window is served on
`localhost:####`
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Enable sandboxing on the preview iframe to isolate preview content while
preserving needed capabilities (allow-same-origin, scripts, forms,
popups, modals, orientation/pointer lock, presentation, downloads).
Top-level navigation remains disallowed; allow-same-origin is safe
because the app is file:// and the iframe runs on localhost.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Updates app branding to icon set v2 and switches the in-app logo to SVG
for sharper rendering.
- **Refactors**
- Use assets/logo.svg in TitleBar instead of logo_transparent.png.
- Add assets/logo.svg; remove legacy PNGs (logo.png,
logo_transparent.png).
- Refresh platform icon files (logo.icns, logo.ico,
assets/icon/logo.png).
<!-- End of auto-generated description by cubic. -->
Update the doc for missing userData for the database.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Add a setup step in CONTRIBUTING.md to create the userData directory
required by the database. This prevents migration commands from failing
on fresh installs.
<!-- End of auto-generated description by cubic. -->
Fixes#710
This PR implements comprehensive Azure OpenAI integration for Dyad,
enabling users to leverage Azure
OpenAI models through proper environment variable configuration. The
implementation adds Azure as a
supported provider with full integration into the existing language
model architecture, including support
for GPT-5 models. Key features include environment-based
configuration using `AZURE_API_KEY` and `AZURE_RESOURCE_NAME`,
specialized UI components that provide clear
setup instructions and status indicators, and seamless integration with
Dyad's existing provider system.
The Azure provider leverages the @ai-sdk/azure package (v1.3.25) for
compatibility with the current
TypeScript language model interfaces.
The implementation includes robust error handling for missing
configuration, comprehensive test coverage
with 9 new unit tests covering critical functionality like model client
creation and error scenarios, and
an E2E test for the Azure-specific settings UI.
<img width="1510" height="908" alt="Screenshot 2025-08-18 at 9 14 32 PM"
src="https://github.com/user-attachments/assets/04aa99e1-1590-4bb0-86c9-a67b97bc7500"
/>
---------
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Will Chen <willchen90@gmail.com>
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Switches the duplicate-issues GitHub Action from
anthropic/claude-sonnet-4-20250514 to openai/gpt-5 to reduce cost.
Updates the workflow to use OPENAI_API_KEY instead of ANTHROPIC_API_KEY.
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds a GitHub Action to detect and comment on potential duplicate issues
when a new issue is opened. This reduces triage time and keeps issue
lists clean.
- **New Features**
- Adds .github/workflows/duplicate-issues.yml triggered on issues:
opened.
- Uses opencode with Anthropic Claude Sonnet 4 to scan existing issues
and comment with links if duplicates are likely; stays silent otherwise.
- Runs with minimal permissions; allows gh issue commands and denies
webfetch.
- **Migration**
- Create the ai-bots environment and add the ANTHROPIC_API_KEY secret
(GITHUB_TOKEN is provided by GitHub).
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds an explicit Husky pre-commit setup to run the formatter and linter
before each commit. Replaces the auto-run prepare hook with a manual npm
run init-precommit command.
- **Migration**
- Run npm run init-precommit once in your repo to install the pre-commit
hook.
<!-- End of auto-generated description by cubic. -->
fixes#1109https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md#transactionfunction---function
> Transaction functions do not work with async functions. Technically
speaking, async functions always return after the first await, which
means the transaction will already be committed before any async code
executes.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes a runtime error when deleting the first custom provider by using a
synchronous DB transaction. Ensures associated models and the provider
are removed atomically without failing.
- **Bug Fixes**
- Replace async transaction callback with a synchronous one and remove
awaits on tx operations to match the DB API and prevent the first-delete
error.
<!-- End of auto-generated description by cubic. -->
Co-authored-by: 顾颢 <hao.gu@factchina.com>
The prompt text says:
> - Use TypeScript.
But in the examples there are .jsx files.
I got errors sometimes (in my fork with other changes too) that JSX got
generated instead of TSX. This seems to have fixed it for me.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Updated system prompt examples to use .tsx/.ts instead of .jsx/.js,
matching the “Use TypeScript” instruction. This prevents JSX drift and
reduces cases where generated code uses JSX instead of TSX.
<!-- End of auto-generated description by cubic. -->
Fixes#1037
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Enable JSON file support in codebase scanning so common configs and data
(e.g., package.json, vercel.json, translations) are included. Adds .json
to the allowed extensions and removes special-casing for
package.json/vercel.json.
<!-- End of auto-generated description by cubic. -->
Fixes#554#1049
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Stop mutating package.json when reading files. readFileWithCache now
returns raw content so all fields are preserved (e.g., packageManager).
Fixes#554 and #1049.
- **Bug Fixes**
- Removed package.json "cleaning" logic and the cleanContent helper.
- Return and cache unmodified file content from both fs and
virtualFileSystem.
<!-- End of auto-generated description by cubic. -->
fixes#1010
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Disable automatic JWT verification for Supabase Edge Functions and
update prompts/templates to require and demonstrate manual auth
handling. Fixes#1010.
- **Bug Fixes**
- Set verify_jwt: false in function deployment.
- Updated Supabase prompt with an Authentication section and guidance to
manually verify tokens.
- Adjusted the hello function template to check the Authorization header
and return 401 when missing.
<!-- End of auto-generated description by cubic. -->