Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
df59c51
chore: introduce non-blocking .NET quality analysis (#16)
paulcam206 Sep 10, 2026
87bb5c8
chore: enforce C# formatting and style (#17)
paulcam206 Sep 10, 2026
b3d98ae
improve: harden native library loading (#18)
paulcam206 Sep 10, 2026
c3e1810
improve: make validation and comparisons deterministic (#19)
paulcam206 Sep 10, 2026
2904bd8
improve: remove blocking work from async paths (#20)
paulcam206 Sep 10, 2026
5624168
improve: tighten resource ownership and type boundaries (#21)
paulcam206 Sep 10, 2026
51969c7
chore: enforce the complete .NET quality gate (#22)
paulcam206 Sep 10, 2026
8251626
docs: align guidance with immutable package execution
Sep 10, 2026
bf2ce9f
docs: remove obsolete cleanup callout
Sep 10, 2026
52f2a53
Merge pull request #27 from xlinush/docs/refresh-current-behavior
xlinush Sep 11, 2026
27cc6b8
feat: bundle Node.js runtime in gateway MSIX
Sep 11, 2026
fa303bf
fix: fail loudly when test MSIX signing has no inputs (#31)
paulcam206 Sep 11, 2026
6f89905
refactor(clawctl): parse management arguments with System.CommandLine…
paulcam206 Sep 11, 2026
5208c1d
fix: follow upstream Node selection and repair bundled runtimes
Sep 11, 2026
5baa5e6
Merge current main into bundled runtime PR
Sep 11, 2026
cc1d833
chore(ci): finalize Artifact Signing setup (#24)
RomneyDa Sep 12, 2026
54d4c43
feat(ci): publish signed Gateway MSIX releases (#33)
RomneyDa Sep 12, 2026
735bd4e
fix(ci): authorize MakeAppx zero-version bundles (#34)
RomneyDa Sep 12, 2026
4bd8a55
Merge main and preserve bundled runtime release validation
Sep 14, 2026
df917ac
docs: make PR descriptions plain-language first (#35)
roboclaw-bot Sep 14, 2026
ba1a1e3
fix: keep dashboard and gateway builds aligned
anna-dingler Sep 14, 2026
bf02d02
test: validate emitted dashboard build identity
anna-dingler Sep 14, 2026
e4fee8a
docs: clarify build identity validation
anna-dingler Sep 14, 2026
f1071a1
Merge pull request #30 from xlinush/feature/bundle-node-runtime
xlinush Sep 14, 2026
59707e8
Merge pull request #37 from anna-dingler/fix/control-ui-build-identity
anna-dingler Sep 14, 2026
9a8cd4a
fix: preserve build identity validator in pipeline (#39)
anna-dingler Sep 14, 2026
bfc2664
Add Gateway isolation status plugin
Sep 11, 2026
d6855d0
docs: attach Gateway isolation local E2E evidence
Sep 11, 2026
db2b16c
test: expand Gateway isolation contract proof
Sep 11, 2026
ecc3a57
feat(plugin): follow Control UI theme
Sep 12, 2026
b732945
feat(plugin): inherit host theme styling
Sep 12, 2026
301b8cf
feat(plugin): label tab Windows Launcher
Sep 12, 2026
0b3a6d4
feat(plugin): consume forwarded Control UI themes
Sep 14, 2026
97c19ae
fix: align launcher plugin with current quality gates
Sep 14, 2026
742c939
build: require merged plugin theme forwarding
Sep 14, 2026
253f5a6
Rename launcher isolation status label
Sep 14, 2026
cc707aa
Restore launcher CLI control
Sep 14, 2026
dbb141f
Add final themed launcher proof
Sep 14, 2026
13cded5
Revert "Restore launcher CLI control"
Sep 14, 2026
1d44895
Reapply "Restore launcher CLI control"
Sep 14, 2026
81f7ddd
Refresh proof after upstream rebase
Sep 14, 2026
d51e34b
Fix plugin packaging fixture metadata
Sep 14, 2026
3b45f60
Host launcher proof images on GitHub
Sep 14, 2026
c32127c
Disable Windows Launcher plugin by default
Sep 15, 2026
543dc17
Validate plugin through isolated enablement
Sep 15, 2026
605640e
Retain the approved OpenClaw baseline
Sep 15, 2026
814b02a
feat: register a local development build without building an MSIX (#41)
paulcam206 Sep 15, 2026
3e5b1ff
chore(release): prepare Gateway MSIX v0.0.0.1 (#56)
RomneyDa Sep 15, 2026
5134565
Use Cascadia Code for plugin commands
Sep 16, 2026
9cb3ef7
perf: cancel superseded pull request runs (#57)
paulcam206 Sep 16, 2026
306df11
ci: skip packaging for documentation-only changes (#58)
paulcam206 Sep 16, 2026
fec25e0
refactor: compose payload and MSIX in one job (#59)
paulcam206 Sep 16, 2026
c4e0aa3
feat: resolve immutable upstream source for caching (#60)
paulcam206 Sep 16, 2026
8d5e0b5
perf: cache verified upstream package builds (#61)
paulcam206 Sep 16, 2026
390e5bc
refactor: validate reusable payload installs (#62)
paulcam206 Sep 16, 2026
3a0491c
perf: cache validated Windows dependency trees (#63)
paulcam206 Sep 16, 2026
37e4cd7
Merge upstream main into themed launcher plugin
Sep 16, 2026
e6cac4e
Merge pull request #40 from ChazGo/chazgo-themed-windows-launcher-plugin
xlinush Sep 16, 2026
685ee93
feat(ci): derive deterministic MSIX release versions (#36)
RomneyDa Sep 17, 2026
8d98d48
Add console restoration and runtime environment policy (#43)
paulcam206 Sep 17, 2026
539976e
feat: add the pinned MXC isolation backend (#44)
paulcam206 Sep 17, 2026
d69eee6
feat: run commands through an attached session guest helper (#45)
paulcam206 Sep 17, 2026
19d1f85
feat: run OpenClaw in an owned isolated agent session (#46)
paulcam206 Sep 17, 2026
4abfee5
feat: open an interactive shell inside the isolated agent session (#47)
paulcam206 Sep 17, 2026
bd7408f
feat: manage the OpenClaw gateway inside the isolated session (#48)
paulcam206 Sep 17, 2026
318c65f
feat: restart the managed gateway after sign-in (#49)
paulcam206 Sep 17, 2026
272a332
feat: stage guest diagnostics (#50)
paulcam206 Sep 17, 2026
e2a0728
fix: complete setup and recover interrupted session state (#51)
paulcam206 Sep 17, 2026
1989f97
feat: reset an installation with clawctl setup --fresh (#52)
paulcam206 Sep 17, 2026
d579e7a
docs: document the isolated session runtime (#53)
paulcam206 Sep 17, 2026
e8c1e7d
Stage session dependencies in local deployment (#54)
paulcam206 Sep 17, 2026
b0ec783
chore(release): prepare Gateway MSIX v2026.9.4-msix.1 (#68)
RomneyDa Sep 17, 2026
ad5df93
Make isolated sessions mandatory (#67)
paulcam206 Sep 17, 2026
b904c90
improve: make clawctl output readable and colour it (#66)
paulcam206 Sep 18, 2026
a86309e
fix: make Windows Launcher isolation status informational
Sep 17, 2026
8aa8252
Restore useful copy-only Windows Launcher command references
Sep 17, 2026
e3ae00a
Add agent session PowerShell and consolidate Gateway Isolation status
Sep 17, 2026
f7a2e1c
Add verified dashboard access reference
Sep 17, 2026
a8fc29e
Pin theme-capable development runtime without expanding release approval
Sep 18, 2026
14c75c5
Validate Windows payloads with architecture-matched Node
Sep 18, 2026
875f4c9
Group Windows Launcher commands into a concise cheat sheet
Sep 18, 2026
99597e7
Clarify launcher command purposes and session routing
Sep 18, 2026
1b2ea92
Group launcher commands under an accessible reference heading
Sep 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
285 changes: 285 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,285 @@
root = true

# Repository-wide defaults. `.gitattributes` normalizes tracked text to LF, so
# `end_of_line` must stay `lf`; otherwise `dotnet format` rewrites files with
# CRLF and every formatted line shows up as a spurious diff.
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[*.{json,jsonc,yml,yaml}]
indent_size = 2

[*.md]
# Markdown uses trailing double-space for hard line breaks.
trim_trailing_whitespace = false

[*.{appxmanifest,csproj,props,targets,slnx,xml}]
indent_size = 2

[*.ps1]
indent_size = 4

[*.cs]
indent_size = 4
max_line_length = 100

#### .NET code style ####

# `this.` qualification is not used anywhere in this repository.
dotnet_style_qualification_for_field = false:error
dotnet_style_qualification_for_property = false:error
dotnet_style_qualification_for_method = false:error
dotnet_style_qualification_for_event = false:error

dotnet_style_predefined_type_for_locals_parameters_members = true:error
dotnet_style_predefined_type_for_member_access = true:error

dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_explicit_tuple_names = true:error
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
# IDE0045/IDE0046: collapsing guard clauses into conditional expressions hurts
# readability in this codebase, which uses early-return validation throughout.
dotnet_style_prefer_conditional_expression_over_assignment = false:silent
dotnet_style_prefer_conditional_expression_over_return = false:silent
dotnet_style_prefer_compound_assignment = true:error
dotnet_style_prefer_simplified_boolean_expressions = true:error
dotnet_style_prefer_simplified_interpolation = true:error
dotnet_style_null_propagation = true:error
dotnet_style_coalesce_expression = true:error
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:error
dotnet_style_readonly_field = true:error
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_namespace_match_folder = true:suggestion

dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:suggestion

# Accessibility modifiers are written explicitly, except where C# requires
# them to be omitted (for example interface members).
dotnet_style_require_accessibility_modifiers = for_non_interface_members:error

#### C# code style ####

# `var` versus explicit types is left to the author. Both forms are idiomatic,
# this codebase deliberately mixes them, and enforcing either direction is
# churn that catches no defects.
csharp_style_var_for_built_in_types = false:silent
csharp_style_var_when_type_is_apparent = true:silent
csharp_style_var_elsewhere = false:silent

csharp_style_expression_bodied_methods = when_on_single_line:suggestion
csharp_style_expression_bodied_constructors = false:suggestion
csharp_style_expression_bodied_operators = when_on_single_line:suggestion
csharp_style_expression_bodied_properties = true:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
csharp_style_expression_bodied_accessors = true:suggestion
csharp_style_expression_bodied_lambdas = true:suggestion
csharp_style_expression_bodied_local_functions = when_on_single_line:suggestion

csharp_style_pattern_matching_over_is_with_cast_check = true:error
csharp_style_pattern_matching_over_as_with_null_check = true:error
csharp_style_prefer_not_pattern = true:error
csharp_style_prefer_pattern_matching = true:suggestion
csharp_style_prefer_switch_expression = true:suggestion
csharp_style_prefer_extended_property_pattern = true:suggestion

csharp_style_inlined_variable_declaration = true:error
csharp_style_deconstructed_variable_declaration = true:suggestion
# Guard clauses that throw read better than ternary `throw` expressions, and
# this codebase already uses them consistently.
csharp_style_throw_expression = false:silent
csharp_style_conditional_delegate_call = true:error
csharp_style_prefer_index_operator = true:suggestion
csharp_style_prefer_range_operator = true:suggestion
csharp_style_prefer_null_check_over_type_check = true:error
csharp_style_prefer_tuple_swap = true:suggestion
csharp_style_prefer_utf8_string_literals = true:suggestion
csharp_style_prefer_readonly_struct = true:suggestion
csharp_style_prefer_readonly_struct_member = true:suggestion
csharp_style_prefer_primary_constructors = false:suggestion

csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_static_local_function = true:error
csharp_prefer_static_anonymous_function = true:suggestion
csharp_prefer_braces = true:error
csharp_style_namespace_declarations = file_scoped:error
csharp_style_prefer_method_group_conversion = true:suggestion
csharp_style_prefer_top_level_statements = false:suggestion
# IDE0058: requiring `_ =` on every ignored return value is noise. Ignoring the
# result of calls such as `Directory.CreateDirectory` is ordinary C#.
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
# IDE0059 catches dead stores, which are a real defect signal.
csharp_style_unused_value_assignment_preference = discard_variable:error

csharp_using_directive_placement = outside_namespace:error

#### C# formatting ####

csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true

csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = false
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current
csharp_indent_block_contents = true
csharp_indent_braces = false

csharp_space_after_cast = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_after_comma = true
csharp_space_before_comma = false
csharp_space_after_dot = false
csharp_space_before_dot = false
csharp_space_after_semicolon_in_for_statement = true
csharp_space_before_semicolon_in_for_statement = false
csharp_space_around_declaration_statements = false
csharp_space_before_open_square_brackets = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_square_brackets = false
csharp_space_around_binary_operators = before_and_after

csharp_preserve_single_line_statements = false
csharp_preserve_single_line_blocks = true

#### Naming conventions ####

dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.camel_case.capitalization = camel_case

dotnet_naming_style.interface_prefix.capitalization = pascal_case
dotnet_naming_style.interface_prefix.required_prefix = I

dotnet_naming_style.type_parameter_prefix.capitalization = pascal_case
dotnet_naming_style.type_parameter_prefix.required_prefix = T

dotnet_naming_style.underscore_camel_case.capitalization = camel_case
dotnet_naming_style.underscore_camel_case.required_prefix = _

dotnet_naming_symbols.interfaces.applicable_kinds = interface
dotnet_naming_symbols.interfaces.applicable_accessibilities = *

dotnet_naming_symbols.type_parameters.applicable_kinds = type_parameter
dotnet_naming_symbols.type_parameters.applicable_accessibilities = *

dotnet_naming_symbols.types_and_members.applicable_kinds = class, struct, enum, property, method, event, delegate, local_function
dotnet_naming_symbols.types_and_members.applicable_accessibilities = *

dotnet_naming_symbols.constants.applicable_kinds = field
dotnet_naming_symbols.constants.applicable_accessibilities = *
dotnet_naming_symbols.constants.required_modifiers = const

dotnet_naming_symbols.static_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.static_readonly_fields.applicable_accessibilities = *
dotnet_naming_symbols.static_readonly_fields.required_modifiers = static, readonly

dotnet_naming_symbols.instance_fields.applicable_kinds = field
dotnet_naming_symbols.instance_fields.applicable_accessibilities = private, private_protected

dotnet_naming_symbols.parameters_and_locals.applicable_kinds = parameter, local

dotnet_naming_rule.interfaces_are_prefixed.symbols = interfaces
dotnet_naming_rule.interfaces_are_prefixed.style = interface_prefix
dotnet_naming_rule.interfaces_are_prefixed.severity = error

dotnet_naming_rule.type_parameters_are_prefixed.symbols = type_parameters
dotnet_naming_rule.type_parameters_are_prefixed.style = type_parameter_prefix
dotnet_naming_rule.type_parameters_are_prefixed.severity = error

dotnet_naming_rule.constants_are_pascal_case.symbols = constants
dotnet_naming_rule.constants_are_pascal_case.style = pascal_case
dotnet_naming_rule.constants_are_pascal_case.severity = error

dotnet_naming_rule.static_readonly_fields_are_pascal_case.symbols = static_readonly_fields
dotnet_naming_rule.static_readonly_fields_are_pascal_case.style = pascal_case
dotnet_naming_rule.static_readonly_fields_are_pascal_case.severity = error

dotnet_naming_rule.instance_fields_are_underscore_camel_case.symbols = instance_fields
dotnet_naming_rule.instance_fields_are_underscore_camel_case.style = underscore_camel_case
dotnet_naming_rule.instance_fields_are_underscore_camel_case.severity = error

dotnet_naming_rule.parameters_and_locals_are_camel_case.symbols = parameters_and_locals
dotnet_naming_rule.parameters_and_locals_are_camel_case.style = camel_case
dotnet_naming_rule.parameters_and_locals_are_camel_case.severity = error

dotnet_naming_rule.types_and_members_are_pascal_case.symbols = types_and_members
dotnet_naming_rule.types_and_members_are_pascal_case.style = pascal_case
dotnet_naming_rule.types_and_members_are_pascal_case.severity = error

#### Analyzer severities ####
#
# IDE style and naming rules above are errors: the tree is clean of them and
# CI must reject new drift.
#
# The CA rules below are still a known backlog and report as warnings. Later
# PRs in this stack promote one cohesive family at a time to `error` in the
# same change that clears it.

# Unnecessary usings. Requires `GenerateDocumentationFile` to run at build time.
dotnet_diagnostic.IDE0005.severity = error

# Style rules cleared by the formatting layer.
dotnet_diagnostic.IDE0305.severity = error
dotnet_diagnostic.IDE0330.severity = error

# Interop and security.
dotnet_diagnostic.CA5392.severity = error
dotnet_diagnostic.CA1838.severity = error

# Public contracts and globalization.
dotnet_diagnostic.CA1062.severity = error
dotnet_diagnostic.CA1307.severity = error
dotnet_diagnostic.CA1308.severity = error

# Asynchronous code.
dotnet_diagnostic.CA2007.severity = error
dotnet_diagnostic.CA1849.severity = error

# Lifetime and design.
dotnet_diagnostic.CA2000.severity = error
dotnet_diagnostic.CA1031.severity = error
dotnet_diagnostic.CA1515.severity = error
dotnet_diagnostic.CA1859.severity = error

[tests/**/*.cs]
# xUnit theory and member data intentionally expose public members, and test
# names describe scenarios rather than following production naming.
dotnet_diagnostic.CA1515.severity = none

# A test writes and reads its own fixture files. Synchronous file access keeps
# arrange and assert readable, and the thread-pool starvation this rule guards
# against does not apply to a test that owns its whole process.
dotnet_diagnostic.CA1849.severity = none

# xUnit owns the lifetime of the fixture objects a test constructs, and test
# doubles that implement IDisposable are disposed by the class fixture.
dotnet_diagnostic.CA2000.severity = none

# Arguments reaching a test helper come from the test itself, so a null guard
# would assert against a value the test just wrote.
dotnet_diagnostic.CA1062.severity = none

# A helper that does not yet touch instance state is still part of the
# fixture's shape; forcing it static churns tests for no behavioral gain.
dotnet_diagnostic.CA1822.severity = none
Loading
Loading