Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
002e793
chore(ai): expand and restructure Copilot instructions
xperiandri May 24, 2026
ca0d892
chore(ai): add `repo-assist.md` for automated repository assistant
xperiandri May 24, 2026
f557b46
chore(ai): add prompt to upgrade tests file
xperiandri May 24, 2026
1e88ad3
chore: migrate to .NET SDK `10.0.402`
xperiandri Oct 10, 2026
8a0553f
chore: align script line endings between .gitattributes and .editorco…
xperiandri Oct 10, 2026
009d01e
chore(deps): update Fantomas to `8.0.10`
xperiandri Oct 10, 2026
dbaa9ec
style: reformat with Fantomas `8.0.10`
xperiandri Oct 10, 2026
1d78cf0
chore(deps): update FSharp.Analyzers to `0.41.0`
xperiandri Oct 17, 2026
748131e
fix(build): restore tools before restore and format each project once
xperiandri Oct 10, 2026
e7647ac
chore(deps): update FAKE to `6.2.0`
xperiandri Oct 11, 2026
1404cf0
chore(deps): update NuGet packages
xperiandri Oct 17, 2026
93a8723
fix(build): collect coverage with the MSTest runner instead of the Al…
xperiandri Oct 10, 2026
adc6c8c
chore: add src/Directory.Build.props and group the solution into folders
xperiandri Oct 10, 2026
ae14c02
fix(build): generate the assembly info when the latest changelog entr…
xperiandri Oct 11, 2026
250fe0d
fix(package): describe the package correctly and stamp the assembly v…
xperiandri Oct 10, 2026
ac7f7d9
chore(ai): add the F# MCP server
xperiandri Oct 10, 2026
41a6a78
chore(claude): configure the repository for Claude Code
xperiandri Oct 10, 2026
1fda142
chore(ai): adopt the latest shared Copilot instructions
xperiandri Oct 10, 2026
d6f01aa
chore(ai): add path-scoped instructions for test categories
xperiandri Oct 10, 2026
15f924a
ci: update the GitHub Pages actions
xperiandri Oct 10, 2026
e3a215d
chore(devcontainer): add the starship prompt
xperiandri Oct 10, 2026
79401e9
fix(ai): indent `update_issue.target` of the repository assistant lik…
xperiandri Oct 10, 2026
776879f
docs: correct the stale statements in the README and the PR template
xperiandri Oct 10, 2026
d926785
fix(build): write the release date of the latest changelog entry into…
xperiandri Oct 10, 2026
20d98e5
fix(build): restore the tools once per build instead of once per project
xperiandri Oct 10, 2026
1471f6a
chore(ai): put test categories on the test classes only
xperiandri Oct 18, 2026
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
6 changes: 6 additions & 0 deletions .claude/rules/test-categories.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
paths:
- "tests/**/*.fs"
---

@../../.github/instructions/test-categories.instructions.md
22 changes: 22 additions & 0 deletions .claude/scripts/github-mcp-headers.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Emits GitHub MCP request headers for Claude Code's `headersHelper`.
# Reuses the GitHub OAuth token stored by Git Credential Manager, so no PAT is needed.
# Prints `{}` when no credential is available, so the server stays unauthenticated instead of failing.

$ErrorActionPreference = 'Stop'
$env:GCM_INTERACTIVE = 'never'
$env:GIT_TERMINAL_PROMPT = '0'

$token = $null
try {
$credential = "protocol=https`nhost=github.com`n`n" | git credential fill 2>$null
$token = ($credential | Where-Object { $_ -like 'password=*' }) -replace '^password=', ''
}
catch {
}

if ($token) {
@{ Authorization = "Bearer $token" } | ConvertTo-Json -Compress
}
else {
'{}'
}
11 changes: 9 additions & 2 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,21 @@
"rollForward": false
},
"fsharp-analyzers": {
"version": "0.31.0",
"version": "0.41.0",
"commands": [
"fsharp-analyzers"
],
"rollForward": false
},
"fslangmcp": {
"version": "0.18.0",
"commands": [
"fslangmcp"
],
"rollForward": true
},
"fantomas": {
"version": "7.0.2",
"version": "8.0.10",
"commands": [
"fantomas"
],
Expand Down
6 changes: 6 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
},
// https://github.com/devcontainers/features/blob/main/src/github-cli/README.md
"ghcr.io/devcontainers/features/github-cli:1": {},
// https://github.com/devcontainers-extra/features/blob/main/src/starship/README.md
"ghcr.io/devcontainers-extra/features/starship:1": {},
// https://github.com/devcontainers/features/blob/main/src/dotnet/README.md
"ghcr.io/devcontainers/features/dotnet:2": {
"version": "10.0",
Expand All @@ -28,6 +30,7 @@
"overrideFeatureInstallOrder": [
"ghcr.io/devcontainers/features/common-utils",
"ghcr.io/devcontainers/features/github-cli",
"ghcr.io/devcontainers-extra/features/starship",
"ghcr.io/devcontainers/features/dotnet"
],
"customizations": {
Expand Down Expand Up @@ -60,6 +63,9 @@
// They are used for releasing and publishing from the container
"GITHUB_TOKEN": "${localEnv:GITHUB_TOKEN}"
},
"onCreateCommand": {
"enable-starship": "echo 'eval \"$(starship init zsh)\"' >> ~/.zshrc"
},
"postAttachCommand": {
"restore": "dotnet tool restore && dotnet restore"
},
Expand Down
65 changes: 33 additions & 32 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# EditorConfig is awesome:
http://EditorConfig.org
# EditorConfig is awesome: https://EditorConfig.org
# Comments must be on their own lines: the specification does not support inline comments

# top-most EditorConfig file
root = true
Expand All @@ -8,7 +8,8 @@ root = true
# Core EditorConfig Options #
###############################
# All files
[*] # Do not apply to all files not to break something
# Do not apply to all files not to break something
[*]
guidelines = 120 dashed, 130
# Either crlf | lf, default is system-dependent (when not specified at all)
# end_of_line=crlf
Expand All @@ -22,8 +23,10 @@ indent_style = tab
[*.{cs,csx,fs,fsi,fsx}]
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space # default=space
indent_size = 4 # default=4
# default=space
indent_style = space
# default=4
indent_size = 4
charset = utf-8

# Project files and app specific XML files
Expand All @@ -42,7 +45,8 @@ indent_size = 2

# XML files
[*.xml]
trim_trailing_whitespace = false # do not trim as it affects CData
# do not trim as it affects CData
trim_trailing_whitespace = false
insert_final_newline = true
indent_style = space
indent_size = 2
Expand Down Expand Up @@ -70,12 +74,14 @@ trim_trailing_whitespace = false
end_of_line = lf

# Batch Files
# keep in sync with .gitattributes
[*.{cmd,bat}]
end_of_line = crlf

# Powershell Files
[*.{ps1, psm1}]
end_of_line = crlf
# keep in sync with .gitattributes
[*.{ps1,psm1}]
end_of_line = lf

# Paket files
[paket.*]
Expand Down Expand Up @@ -105,16 +111,12 @@ indent_size=4
max_line_length=130

# Either crlf | lf, default is system-dependent (when not specified at all)
# end_of_line=crlf
# lf matches the eol .gitattributes stores F# files with, so formatting does not touch line endings
end_of_line=lf

# Whether end-of-file has a newline, default=true
insert_final_newline=true

# false: someLineOfCode
# true: someLineOfCode;
# default false
fsharp_semicolon_at_end_of_line=false

# false: f(1,2)
# true: f(1, 2)
# default true
Expand All @@ -135,8 +137,8 @@ fsharp_space_before_uppercase_invocation=true
# default false
fsharp_space_before_class_constructor=true

# false: __.member Foo(x) = x
# true: __.member Foo (x) = x
# false: member this.Foo(x) = x
# true: member this.Foo (x) = x
# default false
fsharp_space_before_member=true

Expand All @@ -160,18 +162,18 @@ fsharp_space_before_semicolon=false
# default true
fsharp_space_after_semicolon=true

# false: let a = [1;2;3]
# true: let a = [ 1;2;3 ]
# false: let a = [1; 2; 3]
# true: let a = [ 1; 2; 3 ]
# default true
fsharp_space_around_delimiter=true

# breaks an if-then-else in smaller parts if it is on one line
# default 40
# default 60
fsharp_max_if_then_else_short_width=60

# breaks an infix operator expression if it is on one line
# infix: a + b + c
# default 50
# default 80
fsharp_max_infix_operator_expression=60

# breaks a single-line record declaration
Expand All @@ -192,7 +194,7 @@ fsharp_max_record_number_of_items=1
fsharp_record_multiline_formatter=character_width

# breaks a single line array or list if it exceeds this size
# default 40
# default 80
fsharp_max_array_or_list_width=100

# breaks an array or list into one item per line if items exceeds this number
Expand All @@ -207,18 +209,14 @@ fsharp_max_array_or_list_number_of_items=1
# default character_width
fsharp_array_or_list_multiline_formatter=character_width

# maximum with of a value binding, does not include keyword "let"
# maximum width of a value binding, does not include keyword "let"
# default 80
fsharp_max_value_binding_width=100

# maximum width for function and member binding (rh-side)
# default 40
fsharp_max_function_binding_width=80

# maximum width for expressions like X.DoY().GetZ(10).Help()
# default 50
fsharp_max_dot_get_expression_width=80

# whether open/close brackets go on the same column
# cramped: type Range =
# { From: float
Expand All @@ -232,17 +230,18 @@ fsharp_max_dot_get_expression_width=80
# From: float
# To: float
# }
# default cramped
# default aligned
fsharp_multiline_bracket_style=stroustrup

# whether to move the beginning of compuitation expression to the new line
# whether to move the beginning of computation expression to the new line
# true: let x =
# computation {
# ...
# }
# false: let x = computation {
# ..
# }
# default true
fsharp_newline_before_multiline_computation_expression=false

# whether a newline should be placed before members
Expand All @@ -253,7 +252,7 @@ fsharp_newline_before_multiline_computation_expression=false
# { From: float }
#
# member this.Length = this.To - this.From
# default false
# default true
fsharp_newline_between_type_definition_and_members=true

# if a function sign exceeds max_line_length, then:
Expand All @@ -262,15 +261,16 @@ fsharp_newline_between_type_definition_and_members=true
# default false
fsharp_align_function_signature_to_indentation=false

# see docs: https://github.com/fsprojects/fantomas/blob/master/docs/Documentation.md#fsharp_alternative_long_member_definitions
# see docs: https://fsprojects.github.io/fantomas/docs/end-users/Configuration.html#fsharp_alternative_long_member_definitions
# default false
fsharp_alternative_long_member_definitions=true

# places closing paren in lambda on a newline in multiline lambdas
# default false
fsharp_multi_line_lambda_closing_newline=true

# allows the 'else'-branch to be aligned at same level as 'else' if the ret type allows it
# keeps the last branch of if/then/else or match at the same indentation as the expression (early-return style)
# see docs: https://fsprojects.github.io/fantomas/docs/end-users/Configuration.html#fsharp_experimental_keep_indent_in_branch
# false: match x with
# | null -> ()
# | _ -> ()
Expand All @@ -279,7 +279,7 @@ fsharp_multi_line_lambda_closing_newline=true
# | _ ->
# ()
# default false
fsharp_keep_indent_in_branch=true
fsharp_experimental_keep_indent_in_branch=true

# whether a bar is placed before DU
# false: type MyDU = Short of int
Expand All @@ -293,4 +293,5 @@ fsharp_blank_lines_around_nested_multiline_expressions=false

# set maximal number of consecutive blank lines to keep from original source
# it doesn't change number of new blank lines generated by Fantomas
# default 100
fsharp_keep_max_number_of_blank_lines=2
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
*.fsproj merge=union
*.dbproj merge=union
*.sh text eol=lf
# cmd.exe misreads labels and goto in LF batch files
*.cmd text eol=crlf
*.bat text eol=crlf
# LF keeps the `#!/usr/bin/env pwsh` shebang working on Linux; PowerShell on Windows reads LF too
*.ps1 text eol=lf
*.psm1 text eol=lf

# Standard to msysgit
*.doc diff=astextplain
Expand Down
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Describe the big picture of your changes here to communicate to the maintainers

## Types of changes

What types of changes does your code introduce to FSharp.Azure.Cosmos?
What types of changes does your code introduce to FSharp.Collections.Immutable?
_Put an `x` in the boxes that apply_

- [ ] Bugfix (non-breaking change which fixes an issue)
Expand Down
Loading
Loading