About Oxide Cleaner | Keep your system clean
##
Description
Finds **orphaned files** in `oxide/config/`, `oxide/data/`, and `oxide/lang/` based on the installed/loaded plugins and provides a sleek **in-game CUI** for selecting and deleting them.
##
Features
- **Matching logic (plugin detection)**
- Reads plugin base names from `oxide/plugins` (`*.cs`) **and** from the oxide runtime (loaded plugins).
- Base names `Admin` and `CorePlugin` are always treated as present.
- **Scan areas**
- **config:** Top-level `*.json` **and** top-level folders whose **base name** does not correspond to a plugin.
- **data:** Top-level files (except `*.data`/`*.db`) **and** top-level folders without a plugin match.
- **lang:** `lang/<LOCALE>/*.json` whose base name does not correspond to a plugin.
- **UI (CUI)**
- Three columns: **CONFIG**, **DATA**, **LANG** with count, file size, and checkboxes.
- **Select All** for CONFIG/DATA, **language sections can be expanded/collapsed** for LANG.
- Delete button shows number of selections; after deletion, automatic rescan.
- **Secure deletion**
- Deletes only within the `oxide/` root (path is validated).
- Supports files **and** folders (recursively).
- **Backup**
- You have the option to decide whether you want to back up individual files..
> **Note:** `*.data` and `*.db` in the **data** root are **not** listed as orphaned (are skipped). This protects runtime databases.
---
##
Commands
### In-Game (Chat)
- `/oxidecleaner` — Opens the UI (requires permission).
### Server console
- `oxidecleaner.scan` — Shows number/size of hits.
- `oxidecleaner.delete “<relativePath>|<relativePath>|...”`
Example:
`oxidecleaner.delete “config/Old.json|data/OldFolder|lang/en/Old.json”`
Deletes the specified relative paths under `oxide/`.
---
##
Permissions
- `oxidecleaner.admin` — required for all functions (chat/UI).
---
# load, run, enjoy