From ce6d47293ac0012616940483375a87ee6f80e882 Mon Sep 17 00:00:00 2001 From: b0ink <40929320+b0ink@users.noreply.github.com> Date: Sun, 30 Mar 2025 22:03:32 +1100 Subject: [PATCH 1/7] chore: format --- # Password Guideline.md | 64 ++++++++++++++----- .../Component Reviews/group-member-list.md | 22 +++++-- 2 files changed, 65 insertions(+), 21 deletions(-) diff --git a/# Password Guideline.md b/# Password Guideline.md index 3346c3ec2..84f6d4ccc 100644 --- a/# Password Guideline.md +++ b/# Password Guideline.md @@ -1,14 +1,26 @@ # Password Guideline -Our ‘Thoth Tech’ organisational security policy is the document that defines the scope of a utility’s cybersecurity efforts. It serves as a repository for decisions and information generated by other building blocks and a guide for future cybersecurity decisions. The policy includes proposed solutions, scopes, goals, responsibilities, security program structure, compliance, and the approach to risk management. +Our ‘Thoth Tech’ organisational security policy is the document that defines the scope of a +utility’s cybersecurity efforts. It serves as a repository for decisions and information generated +by other building blocks and a guide for future cybersecurity decisions. The policy includes +proposed solutions, scopes, goals, responsibilities, security program structure, compliance, and the +approach to risk management. ## Background Information -Hackers are born as bright as developers and programmers nowadays. Cybersecurity problems are faced by individuals or groups connected to the internet in a day-to-day working environment. -According to a study by the University of Maryland, “hackers attack computers connected to the Internet every 39 seconds. Thus, online computers attacked on average 2,244 times a day. The Worldwide Information Security Market is forecast to reach 170.4 billion in 2022 (Gartner). It is now not a question of “If” an attack will happen but when.” – (Cukier, Michel. May 2020). -In this ever-evolving threat landscape, it is imperative for every organisation to have documented Security Policies to mitigate the risks. -As mentioned by Chaudary, “Cybersecurity plays a crucial role within the field of the digital world. Securing information and data has become one of the most critical challenges in the present day. Whenever we expect cybersecurity, the primary thing that involves our mind is cybercrimes increasing immensely daily. Various Governments and Organizations are taking many measures to stop these cybercrimes”. (Chaudary, Varsha, Feb. 2022) -Besides various measures, cybersecurity remains a massive concern to several. The top three cybersecurity trends in 2021 are: +Hackers are born as bright as developers and programmers nowadays. Cybersecurity problems are faced +by individuals or groups connected to the internet in a day-to-day working environment. According to +a study by the University of Maryland, “hackers attack computers connected to the Internet every 39 +seconds. Thus, online computers attacked on average 2,244 times a day. The Worldwide Information +Security Market is forecast to reach 170.4 billion in 2022 (Gartner). It is now not a question of +“If” an attack will happen but when.” – (Cukier, Michel. May 2020). In this ever-evolving threat +landscape, it is imperative for every organisation to have documented Security Policies to mitigate +the risks. As mentioned by Chaudary, “Cybersecurity plays a crucial role within the field of the +digital world. Securing information and data has become one of the most critical challenges in the +present day. Whenever we expect cybersecurity, the primary thing that involves our mind is +cybercrimes increasing immensely daily. Various Governments and Organizations are taking many +measures to stop these cybercrimes”. (Chaudary, Varsha, Feb. 2022) Besides various measures, +cybersecurity remains a massive concern to several. The top three cybersecurity trends in 2021 are: - Ransomware - Cyber-attack Surface (IoT supply chain and Remote work systems) @@ -16,21 +28,33 @@ Besides various measures, cybersecurity remains a massive concern to several. Th ## Password Policy -Furthermore, I quote the work of Chaudhary about networks or any internet-related password policy. “A crucial component of computer security is passwords. They are the user accounts' first line of defence. The concept of usernames and passwords has been a fundamental way of protecting our information. The purpose of this policy is to determine the creation of strong passwords, the protection of these passwords, and, therefore, the frequency of password change must be followed.” (Chaudary, Varsha, Feb. 2022) +Furthermore, I quote the work of Chaudhary about networks or any internet-related password policy. +“A crucial component of computer security is passwords. They are the user accounts' first line of +defence. The concept of usernames and passwords has been a fundamental way of protecting our +information. The purpose of this policy is to determine the creation of strong passwords, the +protection of these passwords, and, therefore, the frequency of password change must be followed.” +(Chaudary, Varsha, Feb. 2022) ### Purpose: -This policy aims to provide a standard for developing secure passwords, their protection, and how frequently they should be changed. +This policy aims to provide a standard for developing secure passwords, their protection, and how +frequently they should be changed. -It is necessary to make sure each person is whom they claim to be (authentication), usually by checking the user ID and password they enter and allowing them to access only the data they’re allowed to use (authorisation). +It is necessary to make sure each person is whom they claim to be (authentication), usually by +checking the user ID and password they enter and allowing them to access only the data they’re +allowed to use (authorisation). -Thoth Tech requires passwords to include a variety of symbols. It should have at least one number, both uppercase and lowercase letters, and one or more special characters. +Thoth Tech requires passwords to include a variety of symbols. It should have at least one number, +both uppercase and lowercase letters, and one or more special characters. -1. It should not contain your personal information — specifically, your real name, username, student ID, etc. -2. Reset local admin passwords every 180 days. This can be done with the free Netwrix Bulk Password Reset tool. +1. It should not contain your personal information — specifically, your real name, username, student + ID, etc. +2. Reset local admin passwords every 180 days. This can be done with the free Netwrix Bulk Password + Reset tool. 3. Passwords cannot be used from the previous five passwords. 4. All online and desktop accounts must change at least every six months. -5. The password should be changed in the case of a potential threat or suspected unauthorised access. +5. The password should be changed in the case of a potential threat or suspected unauthorised + access. The following passwords are discouraged: @@ -38,7 +62,8 @@ The following passwords are discouraged: - A string of numbers or letters like “1234” or “abcd.” - A series of characters appear sequentially on the keyboard, like “@#$%^&.” - A user’s given name, the name of a spouse or partner, or other names -- The user’s phone number or license plate number, anybody’s birth date, or additional information easily obtained about a user (e.g., address or alma mater) +- The user’s phone number or license plate number, anybody’s birth date, or additional information + easily obtained about a user (e.g., address or alma mater) - The same character typed multiple times, like “zzzzzz.” - Words that can be found in a dictionary - Default or suggested passwords, even if they seem strong @@ -47,10 +72,15 @@ The following passwords are discouraged: ## Account Management Policy: -This policy aims to establish a precise procedure for setting up, managing, and deleting accounts that permit access to Thoth Tech's information. In Thoth Tech, we use Miro, Trello, Microsoft Teams, Docker hub, lucid chart etc. The top system administrator, like the leaders, has control and management roles in creating, editing, and maintaining group access. Credentials dedicated to users' access are identified, and data security bridging is controlled. +This policy aims to establish a precise procedure for setting up, managing, and deleting accounts +that permit access to Thoth Tech's information. In Thoth Tech, we use Miro, Trello, Microsoft Teams, +Docker hub, lucid chart etc. The top system administrator, like the leaders, has control and +management roles in creating, editing, and maintaining group access. Credentials dedicated to users' +access are identified, and data security bridging is controlled. ## References: -1. Cukier, Michel. “Hackers Attack Every 39 Seconds.” Security Magazine RSS, Security Magazine, 24 May 2020, https://www.securitymagazine.com/articles/ 87787-hackers-attack-every-39-seconds. +1. Cukier, Michel. “Hackers Attack Every 39 Seconds.” Security Magazine RSS, Security Magazine, 24 + May 2020, https://www.securitymagazine.com/articles/ 87787-hackers-attack-every-39-seconds. 2. Chaudhary, Varsha, “Cyber Security Policy” 22 Feb. 2022, Cyber Security Policy - GeeksforGeeks -3. https://www.quest.com/solutions/active-directory/what-is-active-directory.aspx \ No newline at end of file +3. https://www.quest.com/solutions/active-directory/what-is-active-directory.aspx diff --git a/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md b/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md index 9df8fc225..46b6c285f 100644 --- a/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md +++ b/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md @@ -1,11 +1,13 @@ # OnTrack Component Review ## Team Member Name + [Fuk Sang Wong] | [224078886] --- ## Component Name + - `group-member-list.component.ts` - `group-member-list.component.html` - `group-member-list.component.scss` @@ -13,7 +15,9 @@ --- ## Component Purpose + The purpose of `group-member-list` is to display members within a selected group. It supports: + - Sorting members by specific attributes like name, grade, or ID. - Dynamically updating the list of members when one is removed. - Displaying appropriate messaging for empty groups or unauthorized actions. @@ -21,19 +25,23 @@ The purpose of `group-member-list` is to display members within a selected group --- ## Component Outcomes and Interactions + Users can: + - View the list of group members. - Sort members by various columns (e.g., name, ID). - Remove members dynamically (if authorized). - See a loading spinner during data fetching. Inputs used in the component: + ```typescript @Input() group: Group; // The group object containing the list of members @Input() allowRemove: boolean; // Determines if users can remove members ``` Outputs emitted by the component: + ```typescript @Output() memberRemoved: EventEmitter; // Event triggered when a member is removed ``` @@ -41,27 +49,33 @@ Outputs emitted by the component: --- ## Component Migration Plan -I will be following the [Thoth-Tech Migration Guide](https://github.com/thoth-tech/doubtfire-web/blob/main/MIGRATION-GUIDE.md) + +I will be following the +[Thoth-Tech Migration Guide](https://github.com/thoth-tech/doubtfire-web/blob/main/MIGRATION-GUIDE.md) and referring to other migrated components to ensure consistency with the project. Steps to be completed: + 1. Refactor CoffeeScript logic to TypeScript using Angular 17. 2. Rewrite the HTML template using Angular 17's syntax and Tailwind CSS for styling. 3. Migrate and modularize the SCSS styling into reusable Tailwind CSS classes. Visual references: + - Original Design (Before Migration): - ![group-member-list-original](Resources/group-member-list-original.jpg) - ![group-member-list-original1](Resources/group-member-list-original1.jpg) - Migrated Design (After Migration): - - *Placeholder: To be added after migration is completed.* + - _Placeholder: To be added after migration is completed._ --- ## Component Post-Migration -*This section will be updated after the migration is completed.* + +_This section will be updated after the migration is completed._ Expected outcomes after migration: + - The component will be refactored to align with Angular's best practices. - Accessibility improvements: - Keyboard navigation support. @@ -70,4 +84,4 @@ Expected outcomes after migration: - User-friendly messages for server errors or unauthorized access. - Validated UI responsiveness for different screen sizes. ---- \ No newline at end of file +--- From 3c4759922a963d756b873ea5f3ee5ee65250526f Mon Sep 17 00:00:00 2001 From: b0ink <40929320+b0ink@users.noreply.github.com> Date: Sun, 30 Mar 2025 22:18:53 +1100 Subject: [PATCH 2/7] chore: format --- .../Component Reviews/grade-icon.md | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/docs/OnTrack/UI Enhancement/Component Reviews/grade-icon.md b/docs/OnTrack/UI Enhancement/Component Reviews/grade-icon.md index 2d2f557cc..869563e25 100644 --- a/docs/OnTrack/UI Enhancement/Component Reviews/grade-icon.md +++ b/docs/OnTrack/UI Enhancement/Component Reviews/grade-icon.md @@ -1,6 +1,7 @@ # Ontrack Component review ## Team Member Name + Shounak Bhalerao | S224743249 ## Component Name @@ -11,23 +12,29 @@ Shounak Bhalerao | S224743249 ## Component purpose -The purpose of `grade-icon` is to provide a unified simple component, for displaying the grade student is expecting. -This item, can only be seen on screens with Tutor or higher permissions. +The purpose of `grade-icon` is to provide a unified simple component, for displaying the grade +student is expecting. This item, can only be seen on screens with Tutor or higher permissions. ## Component outcomes and interactions -Users can hover over this icon to get what grade student is targeting. -It's a Visual component with no interactivity or subcomponents. + +Users can hover over this icon to get what grade student is targeting. It's a Visual component with +no interactivity or subcomponents. ## Interaction with other components + ### Input + Any Component which wants to invoke this components need the following inputs + ```typescript @Input grade: string; // project.targetGrade ``` ### Current Usages -I noticed that this component was used in `student-list` model. -In order to view this model we need to log in using the following credentials. + +I noticed that this component was used in `student-list` model. In order to view this model we need +to log in using the following credentials. + > username: atutor > password: password @@ -35,27 +42,32 @@ In order to view this model we need to log in using the following credentials. ![grade-icon-usage](Resources/grade-icon-usage.png) ## Component Migration Plan -will be following doubtfire-web's Migration Guide and refer to existing components already migrated to TypeScript to ensure my code follows the same code style & conventions. -I will be using the following as reference: [comments-modal](comments-modal.md) + +will be following doubtfire-web's Migration Guide and refer to existing components already migrated +to TypeScript to ensure my code follows the same code style & conventions. I will be using the +following as reference: [comments-modal](comments-modal.md) ### Original (Image): + ![grade-icon](Resources/grade-icon.png) ### Post-Migration (Image) + ![migrated-grade-icon](Resources/migrated-grade-icon.png) ### Original (Hover) + ![grade-icon-hover](Resources/grade-icon-hover.png) ### Post-Migration (Hover) + ![migrated-grade-icon-hover](Resources/migrated-grade-icon-hover.png) -> Note: -> There is a small change in the way the hover block looks -> since previously we were using Bootstrap, and now we shifted to -> Angular Material. +> Note: There is a small change in the way the hover block looks since previously we were using +> Bootstrap, and now we shifted to Angular Material. ## Referenes + - Doubtfire-web Pull Request: https://github.com/thoth-tech/doubtfire-web/pull/258 ## Status of operations: PR in REVIEW From cf29efdcc9e49241b1e4765192d38f24a9526cdf Mon Sep 17 00:00:00 2001 From: b0ink <40929320+b0ink@users.noreply.github.com> Date: Sun, 30 Mar 2025 22:23:26 +1100 Subject: [PATCH 3/7] chore: fix vale conflicts --- .../UI Enhancement/Component Reviews/group-member-list.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md b/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md index 46b6c285f..fde63fed3 100644 --- a/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md +++ b/docs/OnTrack/UI Enhancement/Component Reviews/group-member-list.md @@ -20,7 +20,7 @@ The purpose of `group-member-list` is to display members within a selected group - Sorting members by specific attributes like name, grade, or ID. - Dynamically updating the list of members when one is removed. -- Displaying appropriate messaging for empty groups or unauthorized actions. +- Displaying appropriate messaging for empty groups or unauthorised actions. --- @@ -30,7 +30,7 @@ Users can: - View the list of group members. - Sort members by various columns (e.g., name, ID). -- Remove members dynamically (if authorized). +- Remove members dynamically (if authorised). - See a loading spinner during data fetching. Inputs used in the component: @@ -81,7 +81,7 @@ Expected outcomes after migration: - Keyboard navigation support. - Screen reader-friendly attributes (e.g., `aria` tags). - Enhanced error handling: - - User-friendly messages for server errors or unauthorized access. + - User-friendly messages for server errors or unauthorised access. - Validated UI responsiveness for different screen sizes. --- From 81d05d457fc995e4ef5be2b051808e91598841ea Mon Sep 17 00:00:00 2001 From: b0ink <40929320+b0ink@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:11:41 +1100 Subject: [PATCH 4/7] chore: enforce lf eol --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..d56abbf30 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto eol=lf From 44c5460e2a7f6778b68c98f99aadec1ff44007c5 Mon Sep 17 00:00:00 2001 From: b0ink <40929320+b0ink@users.noreply.github.com> Date: Wed, 14 May 2025 18:29:13 +1000 Subject: [PATCH 5/7] chore: format --- .../GPIO Support/gpio-support-research.md | 70 ++++++++++++------- 1 file changed, 44 insertions(+), 26 deletions(-) diff --git a/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md b/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md index 7ad205a95..140264f39 100644 --- a/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md +++ b/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md @@ -20,17 +20,20 @@ ## What we found out -Through this spike, we explored various libraries and interfaces for GPIO and PWM control across Raspberry Pi 5 and generic Linux SBCs. Below are our detailed findings: +Through this spike, we explored various libraries and interfaces for GPIO and PWM control across +Raspberry Pi 5 and generic Linux SBCs. Below are our detailed findings: ### [WiringPi](https://github.com/WiringPi/WiringPi/) - Pros: - Supports both GPIO and PWM operations on Raspberry Pi models, including the Raspberry Pi 5. - - Offers a simple interface well-suited to SplashKit's existing structure, facilitating straightforward integration. + - Offers a simple interface well-suited to SplashKit's existing structure, facilitating + straightforward integration. - Community-driven forks are still maintained, providing ongoing updates. - Cons: - Lacks support for remote GPIO operations, a crucial feature for SplashKit. - - Since the original project was deprecated, relying on community-maintained forks raises concerns about long-term support and stability. + - Since the original project was deprecated, relying on community-maintained forks raises concerns + about long-term support and stability. - May not be a reliable choice for future development due to potential abandonment. ### [lgpio/rgpio](https://github.com/joan2937/lg) @@ -49,56 +52,71 @@ Through this spike, we explored various libraries and interfaces for GPIO and PW ### [gpiod/libgpiod](https://github.com/brgl/libgpiod) - Pros: - - The new Linux kernel interface for GPIO control, providing a unified approach across different Linux-based SBCs. + - The new Linux kernel interface for GPIO control, providing a unified approach across different + Linux-based SBCs. - Offers broad compatibility with modern Linux systems, making it future-proof. - Supports Raspberry Pi 5 and generic SBCs. - Provides C bindings compatible with our C/C++ project. - Cons: - - Integration may be complex due to structural differences from SplashKit’s current setup, requiring significant refactoring. - - Does not natively support PWM; implementing PWM would require a custom solution using the sysfs interface or gpiomem, which are more complex and less performant. + - Integration may be complex due to structural differences from SplashKit’s current setup, + requiring significant refactoring. + - Does not natively support PWM; implementing PWM would require a custom solution using the sysfs + interface or gpiomem, which are more complex and less performant. - Lacks remote GPIO support, limiting its utility in replacing pigpio in SplashKit. - -These libraries, in the writers opinion, are currently the most suitable for enable GPIO operations on the Raspberry Pi 5, and potentially on other linux SBC's. -Whether they are ready for integration into SplashKit, is another question entirely. + +These libraries, in the writers opinion, are currently the most suitable for enable GPIO operations +on the Raspberry Pi 5, and potentially on other linux SBC's. Whether they are ready for integration +into SplashKit, is another question entirely. ## Open issues/risks - PWM Functionality: - - Implementing PWM with gpiod/libgpiod requires a custom solution, potentially leading to increased complexity and maintenance overhead. + + - Implementing PWM with gpiod/libgpiod requires a custom solution, potentially leading to + increased complexity and maintenance overhead. - The performance of such a custom implementation may not meet SplashKit's requirements. - Remote GPIO Operations: + - Maintaining remote GPIO capabilities is crucial for SplashKit. - - WiringPi and gpiod/libgpiod lack this feature, necessitating either a hybrid approach or alternative libraries. + - WiringPi and gpiod/libgpiod lack this feature, necessitating either a hybrid approach or + alternative libraries. - Library Maturity and Support: - - Both lgpio/rgpio and gpiod/libgpiod are relatively new, and this may pose risks regarding long-term support. + - Both lgpio/rgpio and gpiod/libgpiod are relatively new, and this may pose risks regarding + long-term support. - Limited documentation might increase the learning curve and integration time. - ## Recommendations - Further Evaluation of lgpio/rgpio: - - Given its support for GPIO control, remote operations, PWM functionality, and C/C++ bindings, lgpio/rgpio is a strong candidate. - - Conduct comprehensive testing to assess performance, stability, and compatibility with SplashKit. - + - Given its support for GPIO control, remote operations, PWM functionality, and C/C++ bindings, + lgpio/rgpio is a strong candidate. + - Conduct comprehensive testing to assess performance, stability, and compatibility with + SplashKit. - Explore Alternatives: - - This is by no means an exhaustive list of options; other libraries may better fulfill SplashKit's requirements. - - Investigate additional libraries that can provide the needed functionalities, possibly with more mature ecosystems. + + - This is by no means an exhaustive list of options; other libraries may better fulfill + SplashKit's requirements. + - Investigate additional libraries that can provide the needed functionalities, possibly with more + mature ecosystems. - Additional Spikes and Testing: + - Plan further spikes focused on integrating and testing different GPIO libraries. - - Perform performance benchmarking, especially for time-sensitive operations like PWM and remote GPIO control. + - Perform performance benchmarking, especially for time-sensitive operations like PWM and remote + GPIO control. - Long-Term Strategy: - - Monitor updates to pigpio or its forks for potential future support of Raspberry Pi 5 and generic SBCs. - - Stay informed about emerging libraries and technologies that could meet SplashKit's evolving requirements. - - + - Monitor updates to pigpio or its forks for potential future support of Raspberry Pi 5 and + generic SBCs. + - Stay informed about emerging libraries and technologies that could meet SplashKit's evolving + requirements. + ## Additional Resources - [lgpio/rgpio website](https://abyz.me.uk/lg/index.html) -- [gpiod/libgpiod additional information](https://docs.kernel.org/userspace-api/gpio/chardev.html) - - Note: libgpiod is the library provided by the kernel to interact with the linux GPIO character device. +- [gpiod/libgpiod additional information](https://docs.kernel.org/userspace-api/gpio/chardev.html) + - Note: libgpiod is the library provided by the kernel to interact with the linux GPIO character + device. - [Additional Linux Kernel GPIO drivers](https://docs.kernel.org/driver-api/gpio/drivers-on-gpio.html) - From f1ef67480902ba8436eb422d10573376db76762a Mon Sep 17 00:00:00 2001 From: b0ink <40929320+b0ink@users.noreply.github.com> Date: Wed, 14 May 2025 18:31:59 +1000 Subject: [PATCH 6/7] chore: format --- docs/Splashkit/Website/Troubleshoot/windows/win-issue-1.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/Splashkit/Website/Troubleshoot/windows/win-issue-1.md b/docs/Splashkit/Website/Troubleshoot/windows/win-issue-1.md index e60495328..1a061b38e 100644 --- a/docs/Splashkit/Website/Troubleshoot/windows/win-issue-1.md +++ b/docs/Splashkit/Website/Troubleshoot/windows/win-issue-1.md @@ -1,7 +1,6 @@ --- - -title: FAQs on Splashkit installation tags: faq,error,troubleshoot - +title: FAQs on Splashkit installation +tags: faq,error,troubleshoot ---

Issue : Windows

From f8f2de93f763f187fc17496f90f764e131e606c4 Mon Sep 17 00:00:00 2001 From: b0ink <40929320+b0ink@users.noreply.github.com> Date: Wed, 14 May 2025 18:35:15 +1000 Subject: [PATCH 7/7] chore: fix vale conflicts --- .../Extensions/GPIO Support/gpio-support-research.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md b/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md index 140264f39..48f2f597f 100644 --- a/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md +++ b/docs/Splashkit/Extensions/GPIO Support/gpio-support-research.md @@ -96,8 +96,8 @@ into SplashKit, is another question entirely. SplashKit. - Explore Alternatives: - - This is by no means an exhaustive list of options; other libraries may better fulfill - SplashKit's requirements. + - This is by no means an exhaustive list of options; other libraries may better fulfil SplashKit's + requirements. - Investigate additional libraries that can provide the needed functionalities, possibly with more mature ecosystems.