Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# GitHub Copilot Instructions for vscode-documentdb

VS Code Extension for Azure Cosmos DB and the MongoDB API. TypeScript (strict mode), React webviews, Vitest testing.
The DocumentDB extension for Visual Studio Code: a DocumentDB and MongoDB GUI for Azure DocumentDB, DocumentDB and MongoDB. TypeScript (strict mode), React webviews, Vitest testing.

## Critical Build Commands

Expand Down Expand Up @@ -278,6 +278,21 @@ This is a **DocumentDB** extension that uses the **MongoDB-compatible wire proto

This applies to: code comments, JSDoc/TSDoc, naming (prefer `documentdb` prefix), user-facing strings, docs, and test descriptions.

### Product name

The extension is the **DocumentDB extension for Visual Studio Code** (was "DocumentDB for VS Code", see #1024).

| Where | Name to use |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| README, docs, release notes, blog posts, announcements, Marketplace listing (title and first mention) | **DocumentDB extension for Visual Studio Code** |
| Later mentions in the same text | "the extension" or "the DocumentDB extension" |
| In-product UI (`displayName`, output channel, walkthrough, notifications, view and command titles) | **DocumentDB**, or "the DocumentDB extension" where it could be confused with the database |
| Running text | "VS Code" is fine, for example "without leaving VS Code" |

- Keep UI strings short: never put the full product name in a notification, quick pick, tree item or webview.
- Never write "DocumentDB for VS Code" as a product name in new content.
- Unchanged: the extension ID `ms-azuretools.vscode-documentdb`, the repo slug `vscode-documentdb`, URLs, and historical content (0.x release notes, `CHANGELOG.md`, `docs/ai-and-plans/**`).

## TDD Contract Tests

Test suites prefixed with `TDD:` (e.g., `describe('TDD: Completion Behavior', ...)`) are **behavior contracts** written before the implementation. If a `TDD:` test fails after a code change:
Expand Down
2 changes: 1 addition & 1 deletion .github/skills/documentation-screenshots/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: documentation-screenshots
description: Frames and annotates DocumentDB for VS Code screenshots for release notes, documentation and blog posts, so every image shares one visual style (brand background, Fluent 2 shadow, rounded corners, consistent text size), in a light theme for this repo or a dark theme for dark sites such as documentdb.io. Use when adding or replacing screenshots in docs/release-notes, docs/user-manual or docs/blog-posts, when preparing images for the documentdb.io blog, when the operator provides raw captures, or when asked to frame, beautify, annotate (numbered steps, arrows) or unify images.
description: Frames and annotates screenshots of the DocumentDB extension for Visual Studio Code for release notes, documentation and blog posts, so every image shares one visual style (brand background, Fluent 2 shadow, rounded corners, consistent text size), in a light theme for this repo or a dark theme for dark sites such as documentdb.io. Use when adding or replacing screenshots in docs/release-notes, docs/user-manual or docs/blog-posts, when preparing images for the documentdb.io blog, when the operator provides raw captures, or when asked to frame, beautify, annotate (numbered steps, arrows) or unify images.
---

# Documentation and Release Notes Screenshots
Expand Down
2 changes: 1 addition & 1 deletion .github/skills/documentation-screenshots/scripts/frame.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
DocumentDB for VS Code screenshot framing tool.
Screenshot framing tool for the DocumentDB extension for Visual Studio Code.

Frames tool screenshots in the DocumentDB release-notes style:
- brand background: pale blue -> cyan gradient with a subtle dot grid
Expand Down
107 changes: 107 additions & 0 deletions .github/skills/writing-release-notes/ANNOUNCING-ON-DISCUSSIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Announcing a Release on GitHub Discussions

Every release is announced in the **Announcements** category of
[GitHub Discussions](https://github.com/microsoft/vscode-documentdb/discussions). The body always comes
from `docs/release-notes/X.Y.md`, so write and commit the release notes first.

| Version type | What to post | Title |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| Major or minor (X.Y.0) | One new discussion with the whole release notes file | `DocumentDB extension for Visual Studio Code vX.Y Released! <emoji>` |
| Patch (X.Y.Z, Z > 0) | 1. A new discussion with the patch section<br>2. Then the same text as a comment on the X.Y.0 announcement, in that order | `Patch Release vX.Y.Z 📎` (the 📎 emoji is part of the title) |

## Patch release: post, then comment

The order matters. Discussions sorts Announcements by most recent activity, so the X.Y.0 announcement
must receive its comment **after** the patch discussion is created. That keeps the main release
announcement on top, with the patch post right below it.

1. **Extract the patch section** from the release notes. It starts at `## Patch Release vX.Y.Z` and
ends before the next `---` separator (or at the end of the file). Use it as is, heading included:

```bash
awk '/^## Patch Release vX.Y.Z$/{p=1} p&&/^---$/{exit} p' docs/release-notes/X.Y.md > patch-body.md
```

2. **Create the patch discussion** in Announcements, titled `Patch Release vX.Y.Z 📎`:

```bash
gh api graphql -f query='
{
repository(owner: "microsoft", name: "vscode-documentdb") {
id
discussionCategories(first: 20) { nodes { id name } }
}
}'

gh api graphql -f query='
mutation($repo: ID!, $cat: ID!, $title: String!, $body: String!) {
createDiscussion(input: {repositoryId: $repo, categoryId: $cat, title: $title, body: $body}) {
discussion { url }
}
}' -f repo=<repository id> -f cat=<Announcements category id> -f title="Patch Release vX.Y.Z 📎" \
-F body=@patch-body.md --jq '.data.createDiscussion.discussion.url'
```

3. **Find the X.Y.0 announcement** for the version being patched. Do not assume it is the discussion
that `releaseNotesUrl` in `package.json` points to: that is the announcement of the newest minor
release, and a patch can target an older version (for example 1.0.2 shipped from a
`release/1.0.2` branch while `main` is on 1.1). Look it up by title and check its content:

```bash
gh api graphql -f query='
query($cat: ID!) {
repository(owner: "microsoft", name: "vscode-documentdb") {
discussions(categoryId: $cat, first: 100) {
nodes { number id title url body }
}
}
}' -f cat=<Announcements category id> --jq '.data.repository.discussions.nodes[]
| select(.title | contains("vX.Y Released"))
| {number, id, title, url, heading: (.body | split("\n") | map(select(startswith("# "))) | first)}'
```

- The title must contain `vX.Y Released`. Older titles use the retired product name (for example
"DocumentDB for VS Code v0.7 Released! 🦈"), so match on the version, not on the name. The
trailing space keeps `v0.1` from matching `v0.11`.
- The `heading` (the first `# ` line of the body) must name the same `vX.Y` and must not be a
patch heading. Compare a paragraph of the body with the opening of `docs/release-notes/X.Y.md`
if in doubt.
- Use the result only if exactly one discussion passes both checks. If none or several do, stop and
ask the operator which discussion to use. Never fall back to `releaseNotesUrl` silently.
- If Announcements ever holds more than 100 discussions, page through them with `pageInfo` and
`after`.

4. **Comment on that announcement** with the same text, using the `id` from the lookup:

```bash
gh api graphql -f query='
mutation($id: ID!, $body: String!) {
addDiscussionComment(input: {discussionId: $id, body: $body}) { comment { url } }
}' -f id=<discussion id> -F body=@patch-body.md --jq '.data.addDiscussionComment.comment.url'
```

5. Check that the Announcements list shows the X.Y.0 announcement first and the patch discussion second.

## Major or minor release

1. Create the discussion in Announcements with the release notes body (everything after the front
matter, `sed '1,/^---$/d' docs/release-notes/X.Y.md`, read with `-F body=@file`), titled
`DocumentDB extension for Visual Studio Code vX.Y Released! <emoji>`. Pick one emoji that fits the
release.
2. Copy the discussion URL into `releaseNotesUrl` in `package.json`, so users reach the announcement
from inside the extension.
3. Pin the new announcement and unpin the previous one. The API cannot pin discussions; use the
**Pin discussion** and **Unpin discussion** actions on the discussion page.

## Things to know

- **Pass long bodies from a file.** Use `-F body=@file.md`. Passing the text inline can exceed the
command-line length limit on Windows.
- **Images need absolute URLs.** Relative paths such as `./images/X.Y.Z_feature.png` do not render in
Discussions. Upload each image by dragging it into any Discussions comment box (do not submit the
comment), copy the generated `https://github.com/user-attachments/assets/...` URL, and replace the
relative path in the body. There is no API for these uploads.
- **Keep `<picture>` light and dark pairs.** Upload both variants and set `srcset` and `src` to the two
uploaded URLs.
- **Edit with `updateDiscussion`** (title and body) when the post needs a fix later. Keep the release
notes file and the discussion text in sync.
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ parent: 'Release Notes'
nav_order: NNNN
---

# DocumentDB for VS Code Extension vX.Y
# DocumentDB extension for Visual Studio Code vX.Y

We are excited to announce the release of **DocumentDB for VS Code Extension vX.Y**. This is a landmark update for our DocumentDB and MongoDB GUI, focused on [primary theme]. It introduces [headline feature], enhances [secondary improvement], and improves [third improvement] for developers working with DocumentDB and MongoDB API databases.
We are excited to announce the release of **version X.Y of the DocumentDB extension for Visual Studio Code**. This is a landmark update for our DocumentDB and MongoDB GUI, focused on [primary theme]. It introduces [headline feature], enhances [secondary improvement], and improves [third improvement] for developers working with DocumentDB and MongoDB API databases.

## What's New in vX.Y

Expand Down Expand Up @@ -64,6 +64,8 @@ See the full changelog entry for this release:

## Real Example (v0.6.0)

Historical example: it uses the retired name "DocumentDB for VS Code". Use the template above for the product name.

```markdown
---
title: 'v0.6'
Expand Down
12 changes: 8 additions & 4 deletions .github/skills/writing-release-notes/RELEASE-NOTES-FORMAT.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Patch releases append to the existing file and do not change the front matter.
### Main Release Section (X.Y.0)

```markdown
# DocumentDB for VS Code Extension vX.Y
# DocumentDB extension for Visual Studio Code vX.Y

Opening paragraph expressing excitement about the release. Summarize 2-3 key highlights. Mention the extension name and target audience (developers working with DocumentDB/MongoDB).

Expand Down Expand Up @@ -91,24 +91,28 @@ See the full changelog entry for this release:

## Writing Style

### Product Name

The extension is the **DocumentDB extension for Visual Studio Code**. Use the full name in the title and the first mention, then "the extension". "VS Code" is fine in running text. Never use the retired name "DocumentDB for VS Code" in new release notes; it still appears in the real 0.x examples below because those notes are historical. See [Product name](../../copilot-instructions.md#product-name).

### Opening Paragraph Patterns

**For Major Features:**

```markdown
We are excited to announce the release of **DocumentDB for VS Code Extension vX.Y**. This is a landmark update for our DocumentDB and MongoDB GUI, focused on [theme]. It introduces [major feature], enhances [improvement area], and improves [another area] for developers working with DocumentDB and MongoDB API databases.
We are excited to announce the release of **version X.Y of the DocumentDB extension for Visual Studio Code**. This is a landmark update for our DocumentDB and MongoDB GUI, focused on [theme]. It introduces [major feature], enhances [improvement area], and improves [another area] for developers working with DocumentDB and MongoDB API databases.
```

**For Incremental Updates:**

```markdown
We are excited to announce the release of **DocumentDB for VS Code Extension vX.Y**. This update significantly enhances [area] with [improvement], introduces [feature], and delivers several key bug fixes to improve stability and user experience.
We are excited to announce the release of **version X.Y of the DocumentDB extension for Visual Studio Code**. This update significantly enhances [area] with [improvement], introduces [feature], and delivers several key bug fixes to improve stability and user experience.
```

**For Initial/Foundation Releases:**

```markdown
We're happy to announce the **public release of the DocumentDB for VS Code Extension (vX.Y)**, a dedicated VS Code extension designed specifically for developers working with **DocumentDB** and **MongoDB** databases.
We're happy to announce the **public release of the DocumentDB extension for Visual Studio Code (vX.Y)**, a dedicated VS Code extension designed specifically for developers working with **DocumentDB** and **MongoDB** databases.
```

### Feature Description Patterns
Expand Down
22 changes: 20 additions & 2 deletions .github/skills/writing-release-notes/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
name: writing-release-notes
description: Generates release notes and changelog entries for the DocumentDB VS Code extension. Use when preparing version releases, creating patch update notes, writing changelog entries, or documenting new features and fixes. Handles both major/minor versions (new file) and patch updates (append to existing file).
description: Generates release notes and changelog entries for the DocumentDB extension for Visual Studio Code, and announces releases on GitHub Discussions. Use when preparing version releases, creating patch update notes, writing changelog entries, documenting new features and fixes, or posting a release or patch release announcement to Discussions. Handles both major/minor versions (new file) and patch updates (append to existing file).
---

# Writing Release Notes and Changelog

Generate professional release documentation for the DocumentDB VS Code extension.
Generate professional release documentation for the DocumentDB extension for Visual Studio Code.

Product name: use **DocumentDB extension for Visual Studio Code** in titles and first mentions, then "the extension". The old name "DocumentDB for VS Code" is retired; see [Product name](../../copilot-instructions.md#product-name).

## When to Use

- Creating release notes for a new version (X.Y.0)
- Appending patch release notes (X.Y.Z where Z > 0)
- Writing changelog entries for any version
- Documenting new features, improvements, or fixes
- Announcing a release or patch release on GitHub Discussions

## Quick Reference

Expand Down Expand Up @@ -102,6 +105,20 @@ Version X.Y.Z:
4. For X.Y.Z (patch): Append `, [X.Y.Z](./release-notes/X.Y#patch-release-vXYZ)` to the existing line for that major.minor version (where `vXYZ` uses no dots, e.g., `v071`)
5. Follow the existing pattern of other entries in the list

### Step 6: Announce on GitHub Discussions

Once the release notes are committed, post the announcement in the **Announcements** category. Follow
[ANNOUNCING-ON-DISCUSSIONS.md](./ANNOUNCING-ON-DISCUSSIONS.md) for the commands and the image handling.

- **X.Y.0:** one new discussion, titled `DocumentDB extension for Visual Studio Code vX.Y Released! <emoji>`,
with the release notes as the body. Point `releaseNotesUrl` in `package.json` at it and pin it.
- **X.Y.Z (patch):** first create a new discussion titled `Patch Release vX.Y.Z 📎` whose body is the
`## Patch Release vX.Y.Z` section; then post the same text as a comment on the X.Y.0 announcement.
Find that announcement by title (`vX.Y Released`) and content, not through `releaseNotesUrl`: a
patch can target an older version. If the lookup is not a single clear match, ask the operator.
Keep this order: it puts the X.Y.0 announcement first and the patch post second in the
recently updated Announcements list.

## Writing Guidelines

### Changelog Tone
Expand Down Expand Up @@ -146,3 +163,4 @@ Before completing:
- [ ] `docs/index.md` Release Notes section updated with link to new version
- [ ] Screenshot question was answered
- [ ] Every requested screenshot is framed with [documentation-screenshots](../documentation-screenshots/SKILL.md), saved under `docs/release-notes/images/` and referenced
- [ ] Announcement posted per [ANNOUNCING-ON-DISCUSSIONS.md](./ANNOUNCING-ON-DISCUSSIONS.md) (for a patch: new `Patch Release vX.Y.Z 📎` discussion first, then the same text as a comment on the X.Y.0 announcement)
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Change Log

## 1.0.1

### Improvements

- **New Name**: The extension is now the DocumentDB extension for Visual Studio Code. The product UI, walkthrough, settings group and output channel use the short name DocumentDB; the extension ID, settings and commands are unchanged. [#1024](https://github.com/microsoft/vscode-documentdb/issues/1024), [#1027](https://github.com/microsoft/vscode-documentdb/issues/1027), [#1035](https://github.com/microsoft/vscode-documentdb/pull/1035)
- **Documentation**: Updates the README, user manual and documentation site header to the new name, and adds product name guidance for contributors and agents. [#1025](https://github.com/microsoft/vscode-documentdb/issues/1025), [#1029](https://github.com/microsoft/vscode-documentdb/issues/1029), [#1030](https://github.com/microsoft/vscode-documentdb/issues/1030), [#1035](https://github.com/microsoft/vscode-documentdb/pull/1035)

## 1.0.0

### New Features
Expand Down
Loading
Loading