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
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 {
'{}'
}
25 changes: 18 additions & 7 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,39 @@
"isRoot": true,
"tools": {
"dotnet-reportgenerator-globaltool": {
"version": "5.3.11",
"version": "5.4.7",
"commands": [
"reportgenerator"
]
],
"rollForward": false
},
"fsharp-analyzers": {
"version": "0.27.0",
"version": "0.31.0",
"commands": [
"fsharp-analyzers"
]
],
"rollForward": false
},
"fslangmcp": {
"version": "0.18.0",
"commands": [
"fslangmcp"
],
"rollForward": true
},
"fantomas": {
"version": "6.3.16",
"version": "8.0.5",
"commands": [
"fantomas"
]
],
"rollForward": false
},
"fsdocs-tool": {
"version": "20.0.1",
"commands": [
"fsdocs"
]
],
"rollForward": false
}
}
}
8 changes: 4 additions & 4 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@
},
// https://github.com/devcontainers/features/blob/main/src/github-cli/README.md
"ghcr.io/devcontainers/features/github-cli:1": {},
// https://github.com/devcontainers-contrib/features/blob/main/src/starship/README.md
"ghcr.io/devcontainers-contrib/features/starship: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.300",
"version": "10.0",
"additionalVersions": "8.0"
}
},
"overrideFeatureInstallOrder": [
"ghcr.io/devcontainers/features/common-utils",
"ghcr.io/devcontainers/features/github-cli",
"ghcr.io/devcontainers-contrib/features/starship",
"ghcr.io/devcontainers-extra/features/starship",
"ghcr.io/devcontainers/features/dotnet"
],
"customizations": {
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, 150
# 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=150

# 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
Loading
Loading