Skip to content

Commit

Permalink
Multi-platform support (#36)
Browse files Browse the repository at this point in the history
Co-authored-by: 0x5BFA <[email protected]>
Co-authored-by: NoobNotFound <[email protected]>
Co-authored-by: Lamparter <[email protected]>
  • Loading branch information
3 people authored Nov 30, 2024
2 parents 9c00053 + e829b4b commit 932d69d
Show file tree
Hide file tree
Showing 113 changed files with 6,042 additions and 696 deletions.
173 changes: 159 additions & 14 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,22 +1,167 @@
[*.cs]
; This file is for unifying the coding style for different editors and IDEs.
; More information at http://editorconfig.org

# CS8618: Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
dotnet_diagnostic.CS8618.severity = silent
# This file is the top-most EditorConfig file
root = true

dotnet_diagnostic.CS8604.severity = silent
##########################################
# Common Settings
##########################################

dotnet_diagnostic.CS8622.severity = silent
[*]
indent_style = space
end_of_line = crlf
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8

dotnet_diagnostic.CS8625.severity = silent
##########################################
# File Extension Settings
##########################################

# CS8602: Dereference of a possibly null reference.
dotnet_diagnostic.CS8602.severity = silent
[*.{yml,yaml}]
indent_size = 2

# CS8603: Possible null reference return.
dotnet_diagnostic.CS8603.severity = silent
[.vsconfig]
indent_size = 2
end_of_line = lf

# CS0252: Possible unintended reference comparison; left hand side needs cast
dotnet_diagnostic.CS0252.severity = silent
[*.sln]
indent_style = tab
indent_size = 2

# CS8600: Converting null literal or possible null value to non-nullable type.
dotnet_diagnostic.CS8600.severity = silent
[*.{csproj,proj,projitems,shproj}]
indent_size = 2

[*.{json,slnf}]
indent_size = 2
end_of_line = lf

[*.{props,targets}]
indent_size = 2

[*.xaml]
indent_size = 2
charset = utf-8-bom

[*.xml]
indent_size = 2
end_of_line = lf

[*.plist]
indent_size = 2
indent_style = tab
end_of_line = lf

[*.manifest]
indent_size = 2

[*.appxmanifest]
indent_size = 2

[*.{json,css,webmanifest}]
indent_size = 2
end_of_line = lf

[web.config]
indent_size = 2
end_of_line = lf

[*.sh]
indent_size = 2
end_of_line = lf

[*.cs]
# EOL should be normalized by Git. See https://github.com/dotnet/format/issues/1099
end_of_line = unset

# See https://github.com/dotnet/roslyn/issues/20356#issuecomment-310143926
trim_trailing_whitespace = false

tab_width = 4
indent_size = 4

# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true

# Avoid "this." and "Me." if not necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =

# Naming styles

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion

csharp_indent_labels = one_less_than_current
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = true:silent
csharp_style_namespace_declarations = file_scoped:warning
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_top_level_statements = true:silent
csharp_style_prefer_primary_constructors = true:suggestion
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent
101 changes: 66 additions & 35 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,52 +1,83 @@
name: 🐛 Bug Report
description: Create a bug report to help improve Emerald
labels: [bug]
title: "🐛 "
name: 🐞 Bug
title: '[BUG] <title>'
description: File a bug report
labels: ["bug", "to verify"]
assignees: []
body:
- type: checkboxes
- type: markdown
attributes:
label: ⏱️ Before you start...
options:
- label: Are you on the latest version of Emerald? You might be using an old version.
required: true
- label: Have you checked whether or not a similar issue has already been reported?
required: true
- type: textarea
attributes:
label: 🪟 What build of Windows is this issue present? (optional)
description: Windows key + R > winver.exe
placeholder: build 25174.1010
value: |
Thanks for taking the time to fill out this bug report! Please make sure to add as much detail as you can.
- type: textarea
id: description
attributes:
label: 🔢 What version of Emerald are you on?
description: Go to Emerald > Settings > About
label: Description
description: Please give a detailed description of the issue that you're seeing. You can add screenshots and videos as well.
placeholder: Tell us what you see!
validations:
required: true
- type: textarea
id: repro-steps
attributes:
label: 📄 Description
description: A clear and concise description of what the bug is.
label: Steps to Reproduce
description: Describe all the steps we need to take to show the behavior that you have observed. Also, include what you expected to happen and what did actually happen.
placeholder: |
1. Create a File > New App
2. Add a `Button` like so: `<Button Text="this is a bug" />`
3. Click the added button and observe the bug 🐞
Expected outcome: a bug was added
Actual outcome: a ladybug appeared
validations:
required: true
- type: textarea
- type: dropdown
id: platform-with-bug
attributes:
label: 🪜 Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Go to '....'
2. Click on '....'
3. Scroll down to '....'
4. See the error
label: Platform with bug
description: What Platform is this bug affecting?
options:
- Core
- Android
- iOS
- MacCatalyst
- Windows
- Skia
- WebAssembly
- Other
validations:
required: false
- type: textarea
required: true

- type: dropdown
id: platforms-affected
attributes:
label: 🤔 Expected behavior
description: A clear and concise description of what you expected to happen.
label: Affected platforms
description: Select all or any platform that you see this issue on. This helps us determine if it's something platform-specific or in the core. If you were only able to test on 1 platform, please check the last option to inform us about that.
multiple: true
options:
- Android
- iOS
- MacOS
- MacCatalyst
- Windows
- GTK
- Linux Framebuffer
- WPF
- Skia Desktop
- WebAssembly
- Other
- I was *not* able test on other platforms
validations:
required: true

- type: textarea
id: workaround
attributes:
label: Did you find any workaround?
description: Did you find any workaround for this issue? This can unblock other people while waiting for this issue to be resolved or even give us a hint on how to fix this.

- type: textarea
id: logs
attributes:
label: 📸 Assets
description: |
A list of assets (errors, screenshots) relevant to the bug.
label: Relevant log output
description: Please copy and paste any relevant log output. This will be auomatically formatted into code, so no need for back ticks.
render: shell
57 changes: 26 additions & 31 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,39 @@
name: Feature Request
description: Request a new feature for Emerald
labels: [feature request]
title: ""
name: Feature Request
description: Suggest an idea for this project
labels: ["enhancement"]
assignees: []
body:
- type: markdown
attributes:
value: |
##### ⏱️ Before you start...
- [ ] Have you checked whether or not a similar feature request has already been reported?
Fill in this template with some detail. A detailed description, perhaps supported with some screenshots, mockups, and a (public) API design in pseudo-code.
- type: textarea
id: description
attributes:
label: 📄 Description
description: A clear and concise description of what your idea is. Include things like possible use cases, drawbacks, etc.
label: Description
description: Please give us a detailed description of the feature that you envision. Focus on _what_ this feature does, over the _why_ you want this feature. What would be the end-result when implemented? Feel free to add any diagrams, (mocked up) screenshots, or other materials that support your story.
placeholder: I would love to have a button that I can make shiny. This is something that is supported on all the underlaying platforms.
validations:
required: true
- type: textarea
id: api-changes
attributes:
label: 🗃️ Alternative solutions
description: Describe more ways this idea could be implemented.
validations:
required: false
- type: textarea
attributes:
label: ✅ Tasks
description: Give an overview of all the specific things you would like to be changed or implemented.
value: |
```[tasklist]
### High Priority
- [ ] Something
- [ ] Another thing
- [ ] https://github.com/link/to/an/issue
```
```[tasklist]
### Nice to have
- [ ] Something
- [ ] Another thing
- [ ] https://github.com/link/to/an/issue
label: API Changes
description: Include a list of all API changes, additions, subtractions as would be required by your proposal. These APIs should be considered placeholders, so the naming is not as important as getting the concepts correct. If possible you should include some example (pseudo-)code of usage of your new API.
placeholder: |
```csharp
var button = new Button ();
button.MakeShiny = true; // new API
```
The MakeShiny API works even if the button is already visible.
validations:
required: true
- type: textarea
id: use-case
attributes:
label: 📸 Assets
description: |
A list of assets (screenshots, mockups) relevant to this feature request.
label: Intended Use-Case
description: Provide a detailed example of where your proposal would be used and for what purpose. Focus on _why_ you want this feature instead of _what_ the feature does.
placeholder: I have a situation where I would really want a shiny button to make it stand out from the rest of the plain and boring buttons.
validations:
required: true
Loading

0 comments on commit 932d69d

Please sign in to comment.