Skip to content

Commit e14e55e

Browse files
authored
Update CHANGELOG.md and README files (#1981)
As part of this custom agents were created to handle the management of the readmes and changelogs for the future.
1 parent b232be8 commit e14e55e

File tree

10 files changed

+239
-11
lines changed

10 files changed

+239
-11
lines changed

.github/agents/changelog.agent.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
---
2+
name: changelog-maintainer
3+
description: Identify changes since last release and update CHANGELOG.md
4+
tools: ['edit/editFiles', 'search', 'list_tags', 'get_release_by_tag', 'get_latest_release', 'list_commits', 'search_pull_requests', 'search_issues', 'fetch']
5+
---
6+
7+
# Changelog Creator Instructions
8+
9+
You are a changelog creator assistant. Your role is to systematically identify changes since the last release and update the CHANGELOG.md file following the project's established format.
10+
11+
## Your Process
12+
13+
1. **Identify the Last Release**
14+
- Use #tool:list_tags to find the most recent release tag
15+
- Use #tool:github/get_release_by_tag or #tool:github/get_latest_release to get release details and date
16+
- Note the release date and version number
17+
18+
2. **Gather Changes Since Last Release**
19+
- Use #tool:github/search_pull_requests to search for merged pull requests since that date
20+
- Use #tool:github/search_issues to search for closed issues that were fixed
21+
- Collect information about:
22+
- Merged pull requests with their descriptions and PR numbers
23+
- Closed issues that were fixed
24+
- New features added
25+
- Breaking changes or deprecations
26+
- **Filter out infrastructure-only changes** such as:
27+
- CI/CD pipeline updates
28+
- Build system changes
29+
- Development tooling updates
30+
- Test infrastructure modifications
31+
- Documentation-only updates
32+
- Repository configuration changes
33+
- **Review borderline changes with the user** before including them to ensure they are product-facing
34+
35+
3. **Categorize Changes**
36+
- Organize changes into these categories (following Keep a Changelog format):
37+
- **Added**: New features, namespaces, methods, or functionality
38+
- **Changed**: Changes to existing functionality, updates to dependencies
39+
- **Fixed**: Bug fixes and issue resolutions
40+
- **Deprecated**: Features marked for future removal
41+
- **Removed**: Features that were removed
42+
- **Security**: Security-related fixes or improvements
43+
44+
4. **Format the Changelog Entry**
45+
- Follow the existing CHANGELOG.md format:
46+
- Version header: `## [X.Y.Z] - YYYY-MM-DD`
47+
- Group changes by category with `### Category` headers
48+
- List each change with a brief description
49+
- Include PR/issue numbers in parentheses at the end of the line, with no trailing period and no extra words (for example: `Added X feature (#1234, #5678)`)
50+
- Reference related issues or PRs for context
51+
- Add contributor acknowledgments at the end if applicable
52+
53+
5. **Update CHANGELOG.md**
54+
- Insert the new version entry at the top of the changelog, right after the main header
55+
- Ensure proper spacing and formatting matches existing entries
56+
- Add the version to the links section at the bottom if needed
57+
- Maintain the existing style and markdown structure
58+
59+
## Important Guidelines
60+
61+
- Be thorough: Review ALL commits and PRs since the last release
62+
- Be accurate: Verify categorization is correct (e.g., a bug fix goes under "Fixed", not "Changed")
63+
- Be concise: Write clear, brief descriptions that explain what changed and why it matters
64+
- Be consistent: Match the writing style and format of existing changelog entries
65+
- Include context: Reference PR/issue numbers so readers can find more details
66+
- Acknowledge contributors: List GitHub usernames of contributors at the end of the entry
67+
- **Focus on product-facing changes only**: Exclude infrastructure, build system, CI/CD, and development tooling changes unless they directly impact end users
68+
- **When in doubt, ask**: Present questionable changes to the user for review to confirm they should be included in the changelog
69+
70+
## Before Making Changes
71+
72+
Always present the proposed changelog entry to the user for review before updating the file. This ensures accuracy and allows for any necessary adjustments.

.github/agents/readme.agent.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
name: readme-maintainer
3+
description: Keeps README files accurate, concise, and aligned with project and NuGet documentation.
4+
tools: ['edit/createFile', 'edit/editFiles', 'search']
5+
---
6+
7+
You are a specialized documentation agent focused on README files in this repository.
8+
9+
Base your behavior on the patterns established in this repo and this project’s conventions:
10+
11+
- Focus first on the shipped packages under `src/` (`DocumentFormat.OpenXml`, `DocumentFormat.OpenXml.Framework`, `DocumentFormat.OpenXml.Linq`, and `DocumentFormat.OpenXml.Features`).
12+
- Keep NuGet package READMEs short and scenario-focused, similar to the existing package READMEs in `src/`.
13+
14+
Your responsibilities:
15+
16+
- Identify relevant README files (for example, in `src/`, `samples/`, `docs/`, and the repository root).
17+
- Ensure package READMEs (especially under `src/`) stay in sync with:
18+
- The public Open XML SDK documentation at https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk
19+
- The project structure and current feature set
20+
- NuGet package conventions for README content
21+
- Keep READMEs simple, clear, and concise. Prefer short sections and bullet lists over long prose.
22+
- Avoid redundant content that is already clearly covered in the main docs or in other READMEs; link instead of duplicating.
23+
- For NuGet-focused READMEs, follow these conventions from this repository:
24+
- Briefly describe what the package is for and when to use it.
25+
- Summarize key scenarios or capabilities rather than providing exhaustive reference docs.
26+
- Do not add install commands (such as `dotnet add package`) unless someone explicitly asks for them.
27+
- Prefer lightweight samples or short code snippets only when they demonstrate a key scenario (for example, a minimal `WordprocessingDocument` sample or a simple LINQ query).
28+
- Use a single "Documentation and feedback" section that links to:
29+
- Official docs: https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk
30+
- The GitHub repository and any relevant samples, linking directly to the appropriate `samples/` subdirectory on GitHub (for example, https://github.com/dotnet/Open-XML-SDK/tree/main/samples/Linq)
31+
- The GitHub issues page for feedback: https://github.com/dotnet/Open-XML-SDK/issues
32+
- Maintain consistency in tone, section ordering, and terminology across package READMEs, aligning with the existing READMEs in `src/`.
33+
- For the `DocumentFormat.OpenXml.Features` package, ensure its README clearly lists the main feature scenarios (paragraph ID management, random number generation as a feature, element/part change events, and shared/composed features) without going into low-level implementation details.
34+
35+
When making changes:
36+
37+
- Prefer small, focused edits that improve clarity, correctness, or alignment with the patterns above.
38+
- Preserve existing structure and style where practical instead of rewriting from scratch.
39+
- Do not change code, configuration, or tests unless explicitly asked; focus on documentation.
40+
- When unsure about behavior or APIs, look for existing docs, samples, or README patterns in this repo before inventing new patterns.
41+
42+
Always explain briefly in your response which READMEs you inspected and what changes you made or decided not to make, so maintainers can review your work quickly.

.vscode/mcp.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"servers": {
3+
"github": {
4+
"type": "http",
5+
"url": "https://api.githubcopilot.com/mcp",
6+
"gallery": "https://1es-mcp.data.eastus.azure-apicenter.ms/workspaces/default",
7+
"version": "original"
8+
}
9+
},
10+
"inputs": []
11+
}

CHANGELOG.md

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
77

8+
## [3.4.0] - 2025-12-10
9+
10+
### Added
11+
12+
- Added `MediaDataPartType.Mp4` to support MP4 video media parts in presentations and documents (#1866)
13+
- Updated bundled Open XML schemas to the Q3 2025 Office release, enabling newer document and presentation features (#1963)
14+
15+
### Changed
16+
17+
- Reduced JIT and AOT size and improved document load performance by removing the generic builder pattern from element metadata creation (#1842, #1843)
18+
- Optimized `FromChunkedBase64String` to significantly reduce allocations and improve throughput when decoding chunked base64 content (≈2.4× faster, ≈70% less memory) (#1868)
19+
20+
### Fixed
21+
22+
- Switched to `XmlDOMTextWriter` instead of `XmlWriter.Create` to correctly handle serialization of certain XML content (#1869, #1961)
23+
- Added a clear error when attempting to open encrypted documents that the SDK cannot process (#1635, #1969)
24+
- Improved exception messages when required package parts are missing by including the name of the missing part (#1971, #1974)
25+
26+
### Documentation
27+
28+
- Clarified the README SDK description and simplified the note on 3.0.0 breaking changes (#1858)
29+
- Documented that disposing a package with `AutoSave` set to `false` does not persist changes (#1873)
30+
- Removed the PowerPoint modern comments sample, which now lives on learn.microsoft.com (#1861)
31+
32+
Thanks to the following for their contributions:
33+
34+
@QuocDatHoang
35+
@Varorbc
36+
837
## [3.3.0] - 2025-03-06
938

1039
### Added
@@ -83,7 +112,7 @@ Thanks to the following for their contributions:
83112

84113
### Added
85114

86-
- Packages can now be saved on .NET Core and .NET 5+ if constructed with a path or stream (#1307).
115+
- Packages can now be saved on .NET Core and .NET 5+ if constructed with a path or stream (#1307)
87116
- Packages can now support malformed URIs (such as relationships with a URI such as `mailto:person@`)
88117
- Introduce equality comparers for `OpenXmlElement` (#1476)
89118
- `IFeatureCollection` can now be enumerated and has a helpful debug view to see what features are registered (#1452)
@@ -227,7 +256,7 @@ Thanks to the following for their contribution:
227256
- Added samples for strongly typed classes and Linq-to-XML in the `./samples` directory (#1101, #1087)
228257
- Shipping additional libraries for some additional functionality in `DocumentFormat.OpenXml.Features` and `DocumentFormat.OpenXml.Linq`. See documentation in repo for additional details.
229258
- Added extension method to support getting image part type (#1082)
230-
- Added generated classes and `FileFormatVersions.Microsoft365` for new subscription model types and constraints (#1097).
259+
- Added generated classes and `FileFormatVersions.Microsoft365` for new subscription model types and constraints (#1097)
231260

232261
### Fixed
233262

@@ -375,7 +404,7 @@ Thanks to the following for their contributions:
375404
### Added
376405

377406
- Added `FileFormatVersions.2019` enum (#695)
378-
- Added `ChartSpace` and chart elements for the new 2016 namespaces. This allows the connecting pieces for building a chart part with chart styles like "Sunburst" (#687).
407+
- Added `ChartSpace` and chart elements for the new 2016 namespaces. This allows the connecting pieces for building a chart part with chart styles like "Sunburst" (#687)
379408
- Added `OpenXmlElementFunctionalExtensions.With(...)` extension methods, which offer flexible means for constructing `OpenXmlElement` instances in the context of pure functional transformations (#679)
380409
- Added minimum Office versions for enum types and values (#707)
381410
- Added additional `CompatSettingNameValues` values: `UseWord2013TrackBottomHyphenation`, `AllowHyphenationAtTrackBottom`, and `AllowTextAfterFloatingTableBreak` (#706)

Directory.Build.props

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,4 @@
100100
<IsBenchmarkProject Condition=" '$(IsBenchmarkProject)' == '' ">false</IsBenchmarkProject>
101101
</PropertyGroup>
102102

103-
<PropertyGroup>
104-
<PackageReadmeFile>README.md</PackageReadmeFile>
105-
</PropertyGroup>
106-
107-
<ItemGroup>
108-
<None Include="..\..\README.md" Pack="true" PackagePath="\"/>
109-
</ItemGroup>
110-
111103
</Project>

src/Directory.Build.props

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<PackageIcon>icon.png</PackageIcon>
2828
<!-- For backwards compatibility. See https://aka.ms/deprecateIconUrl -->
2929
<PackageIconUrl>https://raw.githubusercontent.com/dotnet/Open-XML-SDK/master/icon.png</PackageIconUrl>
30+
<PackageReadmeFile>README.md</PackageReadmeFile>
3031
</PropertyGroup>
3132

3233
<PropertyGroup>
@@ -43,6 +44,10 @@
4344

4445
<ItemGroup>
4546
<None Include="$(MSBuildThisFileDirectory)..\icon.png" Pack="true" PackagePath="\" />
47+
<None Include="$(MSBuildProjectDirectory)\README.md"
48+
Pack="true"
49+
PackagePath="\"
50+
Condition="Exists('$(MSBuildProjectDirectory)\\README.md')" />
4651
</ItemGroup>
4752

4853
<ItemGroup>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# DocumentFormat.OpenXml.Features
2+
3+
Optional feature extensions that add incremental functionality on top of the core Open XML SDK.
4+
5+
This package is intended for advanced scenarios where you need specific feature sets layered over `DocumentFormat.OpenXml`.
6+
7+
## Scenarios
8+
9+
- Paragraph ID management for Word documents (generate and track unique paragraph IDs, optionally ensuring uniqueness across existing content and new paragraphs).
10+
- Random number generation as a reusable feature attached to an `OpenXmlPackage`, used by higher-level features such as paragraph ID generation.
11+
- Element and part change events so you can react when parts or elements are added, removed, or reloaded in a package.
12+
- Shared/composed features that aggregate the same feature type (for example, paragraph ID tracking) across multiple documents.
13+
14+
## Documentation and feedback
15+
16+
- Official SDK docs: https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk
17+
- Source and feature examples: https://github.com/dotnet/Open-XML-SDK
18+
- Issues and ideas: https://github.com/dotnet/Open-XML-SDK/issues
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# DocumentFormat.OpenXml.Framework
2+
3+
Low-level infrastructure and shared primitives used by the Open XML SDK libraries.
4+
5+
Most consumers should reference `DocumentFormat.OpenXml` (and optionally `DocumentFormat.OpenXml.Linq`) directly. This package is intended primarily for advanced scenarios and library authors extending the SDK.
6+
7+
## Getting started
8+
9+
Typical usage is indirect, via `DocumentFormat.OpenXml` types such as `OpenXmlElement`, `OpenXmlPart`, and related infrastructure.
10+
11+
## Documentation and feedback
12+
13+
- Official SDK docs: https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk
14+
- Source and infrastructure details: https://github.com/dotnet/Open-XML-SDK
15+
- Issues and feedback: https://github.com/dotnet/Open-XML-SDK/issues
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# DocumentFormat.OpenXml.Linq
2+
3+
LINQ-friendly extensions for the Open XML SDK, providing XLINQ-based APIs for querying and transforming Open XML documents.
4+
5+
## Getting started
6+
7+
Basic usage with LINQ to XML:
8+
9+
```csharp
10+
using (var doc = WordprocessingDocument.Open("example.docx", false))
11+
{
12+
var xDoc = doc.MainDocumentPart!.GetXDocument();
13+
var paragraphs = from p in xDoc.Descendants(W.p)
14+
select p;
15+
}
16+
```
17+
18+
## Documentation and feedback
19+
20+
- Official SDK docs: https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk
21+
- LINQ samples: https://github.com/dotnet/Open-XML-SDK/tree/main/samples/Linq
22+
- Issues and suggestions: https://github.com/dotnet/Open-XML-SDK/issues
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# DocumentFormat.OpenXml
2+
3+
The core Open XML SDK library for working with Office Word, Excel, and PowerPoint documents using strongly-typed .NET APIs.
4+
5+
## Getting started
6+
7+
Create a simple Word document:
8+
9+
```csharp
10+
using (var doc = WordprocessingDocument.Create("example.docx", WordprocessingDocumentType.Document))
11+
{
12+
var mainPart = doc.AddMainDocumentPart();
13+
mainPart.Document = new Document(new Body(new Paragraph(new Run(new Text("Hello, Open XML!")))));
14+
}
15+
```
16+
17+
## Documentation and feedback
18+
19+
- Official SDK docs: https://learn.microsoft.com/en-us/office/open-xml/open-xml-sdk
20+
- Source: https://github.com/dotnet/Open-XML-SDK
21+
- Samples: https://github.com/dotnet/Open-XML-SDK/tree/main/samples
22+
- Issues and feature requests: https://github.com/dotnet/Open-XML-SDK/issues

0 commit comments

Comments
 (0)