diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a9c475e35ca..6de821464cf 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,49 +2,30 @@ # Sorting by path instead of by who added it one day :( # this isn't how codeowners rules work pls read the first comment instead of trying to force a sorting order -#/Resources/ConfigPresets/WizardsDen/ @Chief-Engineer -# Moony's Gargantuan List Of Things She Cares About, or MGLOTSCA for short. -# You need to add your name to these entries, not make a new one, if you care about them. -#/Content.*/Toolshed/ @moonheart08 -#**/Toolshed/** @moonheart08 -#*Command.cs @moonheart08 -#/Content.*/Administration/ @moonheart08 @DrSmugleaf @Chief-Engineer -#/Content.*/Station/ @moonheart08 -#/Content.*/Maps/ @moonheart08 -#/Content.*/GameTicking/ @moonheart08 @EmoGarbage404 -#/Resources/ServerInfo/ @moonheart08 @Chief-Engineer -#/Resources/ServerInfo/Guidebook/ @moonheart08 @EmoGarbage404 -#/Resources/ServerInfo/Guidebook/ServerRules/ @Chief-Engineer -#/Resources/engineCommandPerms.yml @moonheart08 @Chief-Engineer -#/Resources/clientCommandPerms.yml @moonheart08 @Chief-Engineer +#/Resources/ConfigPresets/WizardsDen/ @nikthechampiongr @crazybrain23 +#/Content.*/Administration/ @DrSmugleaf @nikthechampiongr @crazybrain23 +#/Resources/ServerInfo/ @nikthechampiongr @crazybrain23 +#/Resources/ServerInfo/Guidebook/ServerRules/ @nikthechampiongr @crazybrain23 #/Resources/Prototypes/Maps/** @Emisse #/Resources/Prototypes/Body/ @DrSmugleaf # suffering #/Resources/Prototypes/Entities/Mobs/Player/ @DrSmugleaf #/Resources/Prototypes/Entities/Mobs/Species/ @DrSmugleaf -#/Resources/Prototypes/Guidebook/rules.yml @Chief-Engineer +#/Resources/Prototypes/Guidebook/rules.yml @nikthechampiongr @crazybrain23 #/Content.*/Body/ @DrSmugleaf #/Content.YAMLLinter @DrSmugleaf #/Content.Shared/Damage/ @DrSmugleaf -#/Content.*/Anomaly/ @EmoGarbage404 @TheShuEd -#/Content.*/Lathe/ @EmoGarbage404 -#/Content.*/Materials/ @EmoGarbage404 -#/Content.*/Mech/ @EmoGarbage404 -#/Content.*/Research/ @EmoGarbage404 -#/Content.*/Stack/ @EmoGarbage404 -#/Content.*/Xenoarchaeology/ @EmoGarbage404 -#/Content.*/Zombies/ @EmoGarbage404 -#/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml @EmoGarbage404 @TheShuEd -#/Resources/Prototypes/Research/ @EmoGarbage404 +#/Content.*/Anomaly/ @TheShuEd +#/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml @TheShuEd #/Content.*/Forensics/ @ficcialfaint # SKREEEE #/Content.*.Database/ @PJB3005 @DrSmugleaf -#/Content.Shared.Database/Log*.cs @PJB3005 @DrSmugleaf @Chief-Engineer +#/Content.Shared.Database/Log*.cs @PJB3005 @DrSmugleaf @nikthechampiongr @crazybrain23 #/Pow3r/ @PJB3005 #/Content.Server/Power/Pow3r/ @PJB3005 @@ -52,7 +33,7 @@ #/Content.*/Atmos/ @Partmedia #/Content.*/Botany/ @Partmedia -#Jezi +# Jezi #/Content.*/Medical @Jezithyr #/Content.*/Body @Jezithyr diff --git a/.github/workflows/build-map-renderer.yml b/.github/workflows/build-map-renderer.yml index 826bc59ab2b..b7b55263d7c 100644 --- a/.github/workflows/build-map-renderer.yml +++ b/.github/workflows/build-map-renderer.yml @@ -2,11 +2,11 @@ on: push: - branches: [ master, staging, trying ] + branches: [ master, staging, stable ] merge_group: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] - branches: [ master ] + branches: [ master, staging, stable ] jobs: build: diff --git a/.github/workflows/build-test-debug.yml b/.github/workflows/build-test-debug.yml index 1d10d39f45e..89114a1a835 100644 --- a/.github/workflows/build-test-debug.yml +++ b/.github/workflows/build-test-debug.yml @@ -2,11 +2,11 @@ name: Build & Test Debug on: push: - branches: [ master, staging, trying ] + branches: [ master, staging, stable ] merge_group: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] - branches: [ master ] + branches: [ master, staging, stable ] jobs: build: diff --git a/.github/workflows/conflict-labeler.yml b/.github/workflows/labeler-conflict.yml similarity index 93% rename from .github/workflows/conflict-labeler.yml rename to .github/workflows/labeler-conflict.yml index adcc983123e..eefee4b288c 100644 --- a/.github/workflows/conflict-labeler.yml +++ b/.github/workflows/labeler-conflict.yml @@ -16,6 +16,6 @@ jobs: - name: Check for Merge Conflicts uses: eps1lon/actions-label-merge-conflict@v3.0.0 with: - dirtyLabel: "Merge Conflict" + dirtyLabel: "S: Merge Conflict" repoToken: "${{ secrets.GITHUB_TOKEN }}" commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request." diff --git a/.github/workflows/labeler-needsreview.yml b/.github/workflows/labeler-needsreview.yml index 311048acb0f..819b34b7bbd 100644 --- a/.github/workflows/labeler-needsreview.yml +++ b/.github/workflows/labeler-needsreview.yml @@ -10,7 +10,7 @@ jobs: steps: - uses: actions-ecosystem/action-add-labels@v1 with: - labels: "Status: Needs Review" + labels: "S: Needs Review" - uses: actions-ecosystem/action-remove-labels@v1 with: - labels: "Status: Awaiting Changes" + labels: "S: Awaiting Changes" diff --git a/.github/workflows/labeler-review.yml b/.github/workflows/labeler-review.yml new file mode 100644 index 00000000000..9a4d76d7751 --- /dev/null +++ b/.github/workflows/labeler-review.yml @@ -0,0 +1,24 @@ +name: "Labels: Approved" +on: + pull_request_review: + types: [submitted] +jobs: + add_label: + # Change the repository name after you've made sure the team name is correct for your fork! + # Frontier: repo changed (space-wizards/space-station-14 < new-frontiers-14/frontier-station-14) + if: ${{ (github.repository == 'new-frontiers-14/frontier-station-14') && (github.event.review.state == 'APPROVED') }} + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: tspascoal/get-user-teams-membership@v3 + id: checkUserMember + with: + username: ${{ github.actor }} + team: "content-maintainers,junior-maintainers" + GITHUB_TOKEN: ${{ secrets.LABELER_PAT }} + - if: ${{ steps.checkUserMember.outputs.isTeamMember == 'true' }} + uses: actions-ecosystem/action-add-labels@v1 + with: + labels: "S: Approved" diff --git a/.github/workflows/labeler-size.yml b/.github/workflows/labeler-size.yml new file mode 100644 index 00000000000..50f89c9bc87 --- /dev/null +++ b/.github/workflows/labeler-size.yml @@ -0,0 +1,20 @@ +name: "Labels: Size" +on: pull_request_target +jobs: + size-label: + runs-on: ubuntu-latest + steps: + - name: size-label + uses: "pascalgn/size-label-action@v0.5.5" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + with: + # Custom size configuration + sizes: > + { + "0": "XS", + "10": "S", + "100": "M", + "1000": "L", + "5000": "XL" + } diff --git a/.github/workflows/labeler-stable.yml b/.github/workflows/labeler-stable.yml new file mode 100644 index 00000000000..f6fd2033a11 --- /dev/null +++ b/.github/workflows/labeler-stable.yml @@ -0,0 +1,16 @@ +name: "Labels: Branch stable" + +on: + pull_request_target: + types: + - opened + branches: + - 'stable' + +jobs: + add_label: + runs-on: ubuntu-latest + steps: + - uses: actions-ecosystem/action-add-labels@v1 + with: + labels: "Branch: Stable" diff --git a/.github/workflows/labeler-staging.yml b/.github/workflows/labeler-staging.yml new file mode 100644 index 00000000000..b46a198aefb --- /dev/null +++ b/.github/workflows/labeler-staging.yml @@ -0,0 +1,16 @@ +name: "Labels: Branch staging" + +on: + pull_request_target: + types: + - opened + branches: + - 'staging' + +jobs: + add_label: + runs-on: ubuntu-latest + steps: + - uses: actions-ecosystem/action-add-labels@v1 + with: + labels: "Branch: Staging" diff --git a/.github/workflows/labeler-untriaged.yml b/.github/workflows/labeler-untriaged.yml index 775aab26546..ec1d194851c 100644 --- a/.github/workflows/labeler-untriaged.yml +++ b/.github/workflows/labeler-untriaged.yml @@ -3,6 +3,8 @@ on: issues: types: [opened] + pull_request_target: + types: [opened] jobs: add_label: @@ -11,4 +13,4 @@ jobs: - uses: actions-ecosystem/action-add-labels@v1 if: join(github.event.issue.labels) == '' with: - labels: "Status: Untriaged" + labels: "S: Untriaged" diff --git a/.github/workflows/test-packaging.yml b/.github/workflows/test-packaging.yml index 2d002f869a1..bddacb9fa4e 100644 --- a/.github/workflows/test-packaging.yml +++ b/.github/workflows/test-packaging.yml @@ -2,7 +2,7 @@ on: push: - branches: [ master, staging, trying ] + branches: [ master, staging, stable ] paths: - '**.cs' - '**.csproj' @@ -16,7 +16,7 @@ on: merge_group: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] - branches: [ master ] + branches: [ master, staging, stable ] paths: - '**.cs' - '**.csproj' diff --git a/.github/workflows/validate-rgas.yml b/.github/workflows/validate-rgas.yml index 5a302d612b8..97858878da8 100644 --- a/.github/workflows/validate-rgas.yml +++ b/.github/workflows/validate-rgas.yml @@ -1,7 +1,7 @@ name: RGA schema validator on: push: - branches: [ master, staging, trying ] + branches: [ master, staging, stable ] merge_group: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] diff --git a/.github/workflows/validate-rsis.yml b/.github/workflows/validate-rsis.yml index 4c311fb622c..8d1ab31e0cc 100644 --- a/.github/workflows/validate-rsis.yml +++ b/.github/workflows/validate-rsis.yml @@ -2,7 +2,7 @@ name: RSI Validator on: push: - branches: [ staging, trying ] + branches: [ master, staging, stable ] merge_group: pull_request: paths: diff --git a/.github/workflows/validate_mapfiles.yml b/.github/workflows/validate_mapfiles.yml index ccc3bffe88e..2e5d542dd22 100644 --- a/.github/workflows/validate_mapfiles.yml +++ b/.github/workflows/validate_mapfiles.yml @@ -1,7 +1,7 @@ name: Map file schema validator on: push: - branches: [ master, staging, trying ] + branches: [ master, staging, stable ] merge_group: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] diff --git a/.github/workflows/yaml-linter.yml b/.github/workflows/yaml-linter.yml index e7e666508fc..60c7a6445e0 100644 --- a/.github/workflows/yaml-linter.yml +++ b/.github/workflows/yaml-linter.yml @@ -2,7 +2,7 @@ name: YAML Linter on: push: - branches: [ master, staging, trying ] + branches: [ master, staging, stable ] merge_group: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 7b13233bab5..b594817701e 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -258,13 +258,13 @@ public void UnlinkAllActions() public void LinkAllActions(ActionsComponent? actions = null) { - if (_playerManager.LocalEntity is not { } user || - !Resolve(user, ref actions, false)) - { - return; - } + if (_playerManager.LocalEntity is not { } user || + !Resolve(user, ref actions, false)) + { + return; + } - LinkActions?.Invoke(actions); + LinkActions?.Invoke(actions); } public override void Shutdown() diff --git a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs index 588d62e5603..3c7322d4739 100644 --- a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs +++ b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs @@ -22,11 +22,11 @@ namespace Content.Client.Administration.UI.BanPanel; [GenerateTypedNameReferences] public sealed partial class BanPanel : DefaultWindow { - public event Action? BanSubmitted; + public event Action? BanSubmitted; public event Action? PlayerChanged; private string? PlayerUsername { get; set; } private (IPAddress, int)? IpAddress { get; set; } - private byte[]? Hwid { get; set; } + private ImmutableTypedHwid? Hwid { get; set; } private double TimeEntered { get; set; } private uint Multiplier { get; set; } private bool HasBanFlag { get; set; } @@ -371,9 +371,8 @@ private void OnIpChanged() private void OnHwidChanged() { var hwidString = HwidLine.Text; - var length = 3 * (hwidString.Length / 4) - hwidString.TakeLast(2).Count(c => c == '='); - Hwid = new byte[length]; - if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !Convert.TryFromBase64String(hwidString, Hwid, out _)) + ImmutableTypedHwid? hwid = null; + if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !ImmutableTypedHwid.TryParse(hwidString, out hwid)) { ErrorLevel |= ErrorLevelEnum.Hwid; HwidLine.ModulateSelfOverride = Color.Red; @@ -390,7 +389,7 @@ private void OnHwidChanged() Hwid = null; return; } - Hwid = Convert.FromHexString(hwidString); + Hwid = hwid; } private void OnTypeChanged() diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml b/Content.Client/Administration/UI/Notes/NoteEdit.xaml index 506abac540c..72b2c55ce8d 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml @@ -8,6 +8,7 @@