undergroundwires eb096d07e2 Fix memory leaks via auto-unsubscribing and DI
This commit simplifies event handling, providing a unified and robust
way to handle event lifecycling. This way, it fixes events not being
unsubscribed when state is changed.

Introduce a new function in `EventSubscriptionCollection` to remove
existing events and adding new events. This provides an easier to use
API, which leads to code that's easier to understand. It also prevents
potential bugs that may occur due to forgetting to call both functions.
It fixes `TheScriptsMenu` not unregistering events on state change.
Other improvements include:
  - Include a getter to get total amount of registered subcriptions.
    This helps in unit testing.
  - Have nullish checks to prevent potential errors further down the
    execution.
  - Use array instead of rest parameters to increase readability and
    simplify tests.

Ensure `SliderHandler` stops resizes on unmount, unsubscribing from all
events and resetting state to default.

Update `injectionKeys` to do imports as types to avoid circular
dependencies. Simplify importing `injectionKeys` to enable and strict
typings for iterating injection keys.

Add tests covering new behavior.
2023-09-01 18:14:25 +02:00
2022-10-09 22:38:35 +02:00
2020-08-09 03:00:13 +01:00
2023-08-25 12:46:25 +00:00
2022-01-30 13:15:34 +01:00
2020-07-14 18:20:15 +01:00
2019-12-31 16:23:45 +01:00

privacy.sexy — Now you have the choice

Enforce privacy & security best-practices on Windows, macOS and Linux, because privacy is sexy 🍑🍆

donation badge contributions are welcome
Language grade: JavaScript/TypeScript Maintainability
Unit tests status Integration tests status E2E tests status
Quality checks status Security checks status Build checks status Status of runtime error checks for the desktop application Status of external URL checks
Git release status Site release status Desktop application release status
Auto-versioned by bump-everywhere

Get started

Online version does not require to run any software on your computer. Offline version has more functions such as running the scripts directly.

💡 You should apply your configuration from time to time (more than once). It would strengthen your privacy and security control because privacy.sexy and its scripts get better and stronger in every new version.

privacy.sexy application

Features

  • Rich: Hundreds of scripts that aims to give you control of your data.
  • Free: Both free as in "beer" and free as in "speech".
  • Transparent. Have full visibility into what the tweaks do as you enable them.
  • Reversible. Revert if something feels wrong.
  • Accessible. No need to run any compiled software on your computer with web version.
  • Open. What you see as code in this repository is what you get. The application itself, its infrastructure and deployments are open-source and automated thanks to bump-everywhere.
  • Tested. A lot of tests. Automated and manual. Community-testing and verification. Stability improvements comes before new features.
  • Extensible. Effortlessly extend scripts with a custom designed templating language.
  • Portable and simple. Every script is independently executable without cross-dependencies.

Support

Sponsor 💕. Consider sponsoring on GitHub Sponsors, or you can donate using other ways such as crypto or a coffee.

Star 🤩. Feel free to give it a star .

Contribute 👷. Contributions of any type are welcome. See CONTRIBUTING.md as the starting point. It includes useful information like how to add new scripts.

Development

Refer to development.md for Docker usage and reading more about setting up your development environment.

Check architecture.md for an overview of design and how different parts and layers work together. You can refer to application.md for a closer look at application layer codebase and presentation.md for code related to GUI layer. collection-files.md explains the YAML files that are the core of the application and templating.md documents how to use templating language in those files. In ci-cd.md, you can read more about the pipelines that automates maintenance tasks and ensures you get what see.

docs/ folder includes all other documentation.

Languages
TypeScript 91.5%
Vue 6.3%
JavaScript 0.9%
SCSS 0.8%
Python 0.4%