Live overview
++ CPU, memory, storage and network cards with 60-second graphs, plus larger history + views from 60 seconds to one hour. +
+diff --git a/src-tauri/.cargo/config.toml b/.cargo/config.toml similarity index 60% rename from src-tauri/.cargo/config.toml rename to .cargo/config.toml index 763933f..220bc12 100644 --- a/src-tauri/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,4 +1,4 @@ # TypeScript bindings are generated from Rust models by `cargo test` (ts-rs). [env] -TS_RS_EXPORT_DIR = { value = "../src/types/generated", relative = true } +TS_RS_EXPORT_DIR = { value = "src/types/generated", relative = true } TS_RS_LARGE_INT = "number" diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml new file mode 100644 index 0000000..8e9af66 --- /dev/null +++ b/.github/workflows/actionlint.yml @@ -0,0 +1,24 @@ +name: Workflow lint + +on: + pull_request: + types: [opened, reopened, ready_for_review, synchronize] + paths: [".github/workflows/**"] + workflow_dispatch: + +permissions: + contents: read + +jobs: + actionlint: + runs-on: ubuntu-24.04 + timeout-minutes: 5 + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + with: + persist-credentials: false + - uses: taiki-e/install-action@cfdb7ed4ccc7c7dce37759eae89dc5674b469b39 # v2.90.3 + with: + tool: actionlint@1.7.12 + # shellcheck is preinstalled on GitHub's Ubuntu runners; actionlint uses it for `run:` scripts. + - run: actionlint -color diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5213881..9ed8e39 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,20 +66,22 @@ jobs: - name: Generated TypeScript types are up to date shell: bash - run: git diff --exit-code -- src/types/generated + run: | + git status --porcelain -- src/types/generated + test -z "$(git status --porcelain -- src/types/generated)" bundle: name: Bundle (${{ matrix.os }}) needs: check - # Validate Debian packaging on pull requests; build every bundle manually. - if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && matrix.os == 'ubuntu-22.04') strategy: fail-fast: false matrix: + # Pull requests validate Debian packaging only; a manual run builds every bundle. + # `matrix` is not available in a job-level `if:`, so the OS list is chosen here. # Linux bundles are built on the oldest supported base so the # binary's glibc requirement (2.35) is met by Debian 12, Ubuntu 22.04 # and newer. Building on a newer distro would raise that floor. - os: [windows-latest, ubuntu-22.04] + os: ${{ github.event_name == 'pull_request' && fromJSON('["ubuntu-22.04"]') || fromJSON('["windows-latest", "ubuntu-22.04"]') }} runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 @@ -102,9 +104,9 @@ jobs: with: workspaces: src-tauri - run: npm ci - - run: npx tauri build --config src-tauri/tauri.linux.conf.json + - run: npx tauri build --config src-tauri/tauri.linux.conf.json -- --locked if: runner.os == 'Linux' - - run: npx tauri build + - run: npx tauri build -- --locked if: runner.os == 'Windows' - name: Validate Debian package if: runner.os == 'Linux' diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index d8e568e..f855c15 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -19,7 +19,13 @@ jobs: - name: Check release version env: TAG: ${{ github.ref_name }} - run: test "${TAG#v}" = "$(jq -r .version src-tauri/tauri.conf.json)" + run: | + version=${TAG#v} + test "$version" = "$(jq -r .version src-tauri/tauri.conf.json)" + test "$version" = "$(jq -r .version package.json)" + grep -qx "version = \"$version\"" src-tauri/Cargo.toml + grep -qx "version = \"$version\"" src-tauri/core/Cargo.toml + head -n 1 src-tauri/linux/tasky.1 | grep -qF "\"Tasky $version\"" - run: sudo apt-get update && sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev desktop-file-utils - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: @@ -27,9 +33,21 @@ jobs: cache: npm - uses: dtolnay/rust-toolchain@b725eda525362e7cf34af9a7243cac1e3f01a7ec # stable branch with: + components: clippy toolchain: 1.96.0 + - uses: Swatinem/rust-cache@e9d7b9f1e587218970671bac74e5511ed9506e6a # v2 + with: + workspaces: src-tauri - run: npm ci - - run: npx tauri build --bundles deb --config src-tauri/tauri.linux.conf.json + - name: Verify before publishing + run: | + npm run typecheck + npm run lint + npm test + cd src-tauri + cargo clippy --workspace --all-targets --locked -- -D warnings + cargo test --workspace --locked + - run: npx tauri build --bundles deb --config src-tauri/tauri.linux.conf.json -- --locked - name: Validate package and checksum run: | mapfile -t packages < <(find src-tauri/target/release/bundle/deb -maxdepth 1 -type f -name '*.deb' -print) @@ -90,6 +108,15 @@ jobs: APTLY_PASSPHRASE_FILE: ${{ runner.temp }}/aptly-passphrase run: | scripts/publish-apt.sh Tasky.deb "$GITHUB_REF_NAME" public + - name: Remove signing key from runner + if: always() + env: + APTLY_KEY_ID: ${{ vars.APTLY_KEY_ID || secrets.APTLY_KEY_ID }} + run: | + rm -f "$RUNNER_TEMP/aptly-passphrase" + if [ -n "$APTLY_KEY_ID" ] && gpg --batch --list-secret-keys "$APTLY_KEY_ID" >/dev/null 2>&1; then + gpg --batch --yes --delete-secret-keys "$APTLY_KEY_ID" + fi - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 with: path: public diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index f433ccd..51e4db4 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -27,9 +27,9 @@ jobs: - name: Audit npm lockfile without running package scripts run: npm audit --package-lock-only --audit-level=moderate - name: Install pinned local auditors - run: | - cargo install --locked --version 0.22.2 cargo-audit - cargo install --locked --version 0.20.2 cargo-deny + uses: taiki-e/install-action@cfdb7ed4ccc7c7dce37759eae89dc5674b469b39 # v2.90.3 + with: + tool: cargo-audit@0.22.2,cargo-deny@0.20.2 - name: RustSec (including visible maintenance and unsoundness warnings) working-directory: src-tauri run: cargo audit diff --git a/.gitignore b/.gitignore index 965d537..1d200cc 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,8 @@ dist-ssr # Rust / Tauri src-tauri/target +# ts-rs default output when its export dir isn't configured +src-tauri/core/bindings coverage playwright-report test-results diff --git a/README.md b/README.md index 13e5a8a..f67d4e4 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ then capture the page. - End, force end, suspend, resume, change priority, copy details, open file location. - Confirmation dialogs with escalating warnings. - - Server-side protection for critical system processes and for Task Manager + - Server-side protection for critical system processes and for Tasky itself. - **Benchmarks:** a repeatable CPU benchmark (single-core and multi-core: integer, floating point, SHA-256, compression) and a GPU compute benchmark @@ -104,14 +104,16 @@ then capture the page. ## Supported operating systems -| OS | Status | -| ------------------------------------------ | ---------------------------------------------------- | -| Windows 11 (x64) | Supported (primary) | -| Debian / Ubuntu and other mainstream Linux | Supported; works on KDE Plasma and GNOME | -| macOS | Not yet; the architecture has a platform slot for it | +| OS | Status | +| ---------------------------------- | ---------------------------------------------------- | +| Windows 11 (x64) | Supported (primary) | +| Debian 12+ / Ubuntu 22.04+ (amd64) | Supported; works on KDE Plasma and GNOME | +| Other Linux distributions | Not tested; build from source | +| macOS | Not yet; the architecture has a platform slot for it | **Linux desktops:** the Linux port is available and compatible with both -KDE Plasma and GNOME, on Wayland. Packages: `.deb`, `.rpm` and AppImage (see +KDE Plasma and GNOME, on Wayland. Release builds ship a `.deb` only (APT +repository and GitHub Releases); `.rpm` and AppImage can be built locally (see Building). | Desktop | Status | System tray | Window position | @@ -196,7 +198,25 @@ Platform differences are documented in ### Release notes -**0.1.4** (current) +**0.1.5** (current) + +- **Safer process actions:** menus, the Ports page and Process Details links + act only on the exact process you picked, never on a new one that reused + its PID. Suspending or ending your desktop session now warns first. +- **Drives:** unmounting and powering off ask first, and power-off refuses + unless it can confirm nothing on the drive (including LUKS/LVM volumes) is + still mounted. A dead network mount no longer freezes the metrics; network + mounts are no longer listed. +- **Services:** desktop-session services are locked; stopping SSH, PipeWire + and similar shows a warning. +- **Reliability:** a page error no longer blanks the window, settings changes + can't overwrite each other, and a crashing benchmark reports "Failed" + instead of closing Tasky. +- **Keyboard and screen readers:** the selected process is announced, + Shift+F10 opens its menu, columns resize with the arrow keys, and view + switches support arrow keys. + +**0.1.4** - Fixed the login entry written by "Start with the OS" when Tasky had been upgraded or rebuilt while running. It could point at a path ending in @@ -252,7 +272,8 @@ Platform differences are documented in Prerequisites: - Node.js 20+ (developed with 24). -- Rust stable (1.90+), via [rustup](https://rustup.rs). +- Rust via [rustup](https://rustup.rs); `rust-toolchain.toml` pins the + version CI uses (minimum supported: 1.90). - **Windows:** Microsoft C++ Build Tools ("Desktop development with C++") and the WebView2 runtime, which ships with Windows 11. - **Linux:** @@ -272,7 +293,8 @@ npm run tauri dev ## Building ```sh -npm run tauri build +npm run tauri build # Windows +npm run tauri build -- --config src-tauri/tauri.linux.conf.json # Linux (Tasky name and man page) ``` | Platform | Output (`src-tauri/target/release/bundle/`) | @@ -280,7 +302,8 @@ npm run tauri build | Windows | `msi/` (WiX) and `nsis/` (per-user installer) | | Linux | `deb/`, `rpm/` and `appimage/` | -Build each platform on that platform; CI builds both. To build only the +Build each platform on that platform. Only the `.deb` is published; `.rpm` +and AppImage are local builds and are not tested by CI. To build only the executable, without installers: `npx tauri build --no-bundle`. ## Testing and checks @@ -331,8 +354,8 @@ See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) and - Protection rules run in Rust on every request. The UI cannot bypass them. - The app is unprivileged. It never elevates itself; denied operations say so clearly. -- Tauri capabilities are limited to `core:default`. Plugins are used from Rust - only. +- The Tauri capability for the local main window allows only event + listening and the app's own commands. Plugins are used from Rust only. - Command lines are never logged, and are excluded from exports unless you opt in. diff --git a/SECURITY.md b/SECURITY.md index d620d5f..64912f5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -17,5 +17,5 @@ and coordinate a fix before disclosure. No guaranteed response SLA is currently published; an acknowledgement or fix date should not be assumed. See [the application security model](docs/SECURITY.md), -[audit findings](docs/SECURITY_AUDIT.md), and +[2026-11-03 audit findings](docs/archive/security-2026-11-03/SECURITY_AUDIT.md), and [release checklist](docs/SECURITY_CHECKLIST.md). diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 754c08e..a8dec9e 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -1,6 +1,6 @@ # Architecture -Task Manager is a Tauri 2 desktop app. A Rust backend samples the operating +Tasky is a Tauri 2 desktop app. A Rust backend samples the operating system; a React frontend renders what it is sent. This document explains how the pieces fit and why they are shaped this way. diff --git a/docs/BENCHMARKS.md b/docs/BENCHMARKS.md index 5189ad2..054cbfa 100644 --- a/docs/BENCHMARKS.md +++ b/docs/BENCHMARKS.md @@ -1,7 +1,7 @@ # Benchmarks What the Benchmarks page measures, how, and what the numbers do and do not -mean. Implementation plan: [`LINUX_BENCHMARK_IMPLEMENTATION.md`](LINUX_BENCHMARK_IMPLEMENTATION.md). +mean. Implementation plan: [`LINUX_BENCHMARK_IMPLEMENTATION.md`](archive/plans/LINUX_BENCHMARK_IMPLEMENTATION.md). Validation data: [`LINUX_BENCHMARK_VALIDATION.md`](LINUX_BENCHMARK_VALIDATION.md). **Status:** the CPU, GPU, disk and internet benchmarks exist. The full system diff --git a/docs/DEBIAN_PACKAGING.md b/docs/DEBIAN_PACKAGING.md index 27a782f..8cff65e 100644 --- a/docs/DEBIAN_PACKAGING.md +++ b/docs/DEBIAN_PACKAGING.md @@ -86,13 +86,15 @@ Releases. revocation certificate. 5. Commit the desired application version, push it, create the matching - annotated tag (for example `git tag -a v0.1.0 -m 'Release v0.1.0'`), and - push that tag. The release fails if the tag differs from the Tauri version. + annotated tag (for example `git tag -a vX.Y.Z -m 'Release vX.Y.Z'`), and + push that tag. The release fails if the tag differs from the version in + `src-tauri/tauri.conf.json`, `package.json`, both `Cargo.toml` files or the + `tasky(1)` man page. The signing job imports the key only after the protected environment grants access, verifies the complete fingerprint, builds the repository, and checks -both `InRelease` and `Release.gpg` signatures before uploading the Pages -artifact. A separate job deploys that verified artifact with only Pages +both `InRelease` and `Release.gpg` signatures. It then deletes the secret key +from the runner keyring and uploads the Pages artifact. A separate job deploys that verified artifact with only Pages permissions. ## Local package checks @@ -101,7 +103,7 @@ After building the Linux package with `npx tauri build --bundles deb --config src-tauri/tauri.linux.conf.json`, run: ```sh -scripts/validate-deb.sh src-tauri/target/release/bundle/deb/Tasky_0.1.0_amd64.deb +scripts/validate-deb.sh src-tauri/target/release/bundle/deb/Tasky_X.Y.Z_amd64.deb ``` The CI and release workflows also install and remove the package in a clean diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 8b6970a..8962e67 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -14,7 +14,7 @@ palette, light/dark/system themes. Ports view with port-conflict diagnosis, Find Process Using File, per-process Open Files, Modules, Memory Map and Threads tabs, and the Activity timeline (starts/exits, CPU spikes, memory jumps, alerts, actions, benchmarks). See -`FEATURE_GAP_ANALYSIS.md` for the research and scoring behind them. +[`FEATURE_GAP_ANALYSIS.md`](archive/plans/FEATURE_GAP_ANALYSIS.md) for the research and scoring behind them. Also done: Applications view in the process table (processes grouped by program), new-process highlighting (configurable, default 10 s), memory- and diff --git a/docs/SECURITY.md b/docs/SECURITY.md index 8283e27..c779c71 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -1,6 +1,6 @@ # Application security model -Task Manager treats the WebView and all OS-provided text as untrusted. It runs +Tasky treats the WebView and all OS-provided text as untrusted. It runs as the normal user and respects OS permission failures. Never run the GUI as root/Administrator to make a feature work. No elevation broker, shell runner, service-control command or arbitrary memory/file/HTTP command is provided. @@ -37,7 +37,7 @@ The UI also explains unsaved-work and suspension risks. Residual limitations: selected start times currently have one-second resolution; Linux setpriority uses a numeric PID; Windows WM_CLOSE has an HWND reuse interval, and thread enumeration is not atomic. These are documented -in SECURITY_AUDIT.md rather than described as fully race-free. +in the [2026-11-03 audit](archive/security-2026-11-03/SECURITY_AUDIT.md) rather than described as fully race-free. ## Files and local history @@ -98,5 +98,5 @@ policy even when the application does not initiate HTTP traffic. No auto-updater is configured. Distributed artifacts still require trustworthy signing/checksums and protected release credentials; a successful local bundle is not signed provenance. Dependency policies, advisories and CI controls are -in SUPPLY_CHAIN_SECURITY.md. Remaining risks and exact validation status are -in SECURITY_AUDIT.md. For private reporting, see the repository SECURITY.md. +in [SUPPLY_CHAIN_SECURITY.md](SUPPLY_CHAIN_SECURITY.md). Remaining risks and exact validation +status are in the [2026-11-03 audit](archive/security-2026-11-03/SECURITY_AUDIT.md). For private reporting, see the repository [SECURITY.md](../SECURITY.md). diff --git a/docs/SECURITY_CHECKLIST.md b/docs/SECURITY_CHECKLIST.md index ca18d2e..e6560b5 100644 --- a/docs/SECURITY_CHECKLIST.md +++ b/docs/SECURITY_CHECKLIST.md @@ -21,7 +21,7 @@ - [ ] Linux production build/package and interactive controls tested unprivileged. - [ ] Real GPU tests run on supported hardware without claiming fake-device tests validate drivers. - [ ] Installers signed where supported; checksums generated and release provenance retained. -- [ ] Review SECURITY_AUDIT.md remaining risks; do not describe unresolved checks as passed. +- [ ] Review [SECURITY_AUDIT.md](archive/security-2026-11-03/SECURITY_AUDIT.md) remaining risks; do not describe unresolved checks as passed. The audit validation results are recorded separately. This reusable checklist is deliberately unchecked: it must be completed for each release. diff --git a/docs/THREAT_MODEL.md b/docs/THREAT_MODEL.md index 61feb14..1d77f7e 100644 --- a/docs/THREAT_MODEL.md +++ b/docs/THREAT_MODEL.md @@ -1,6 +1,6 @@ # Threat model -Audit date: 2026-11-03. Baseline: SECURITY_BASELINE.md. This is a normal-user +Audit date: 2026-11-03. Baseline: [SECURITY_BASELINE.md](archive/security-2026-11-03/SECURITY_BASELINE.md). This is a normal-user desktop application, not a privileged broker. A WebView compromise grants access to permitted commands, not unrestricted OS authority. @@ -72,4 +72,4 @@ during the audit must be revalidated before release. account is outside the protection of WebView ACLs. No claim of protection against root, Administrator, kernel or GPU-driver compromise is made. -See SECURITY_AUDIT.md for severity, evidence and unresolved release checks. +See [SECURITY_AUDIT.md](archive/security-2026-11-03/SECURITY_AUDIT.md) for severity, evidence and unresolved release checks. diff --git a/docs/apt-landing.html b/docs/apt-landing.html index 83541d7..b05d7f0 100644 --- a/docs/apt-landing.html +++ b/docs/apt-landing.html @@ -3,30 +3,110 @@
- + + + +- Tasky is a fast, private system monitor and task manager. Follow live resource use, - inspect processes and keep control from one quiet, focused desktop app. + Tasky is a fast, private task manager and system monitor for Linux and Windows. Follow + live CPU, memory, disk and network use, inspect and control processes, and benchmark + your machine, all without sending anything off your computer.
-Linux · amd64 Ubuntu 22.04+ and Debian 12+
++ Tasky keeps the essentials one click away and stays fast with thousands of processes. +
++ CPU, memory, storage and network cards with 60-second graphs, plus larger history + views from 60 seconds to one hour. +
++ Instant search by name, PID, command line or user. Filter presets, a process tree, + sortable columns and heat mapping. +
++ End, suspend, resume or reprioritize processes. Critical system processes are + protected, and risky actions ask first. +
++ CPU, memory and disk history, working directory, child processes and TCP and UDP + connections for any process. +
++ Repeatable CPU and GPU compute tests, a disk benchmark on Linux, and run history + with safe comparison between results. +
+ Internet test only runs after you confirm ++ Rules such as “CPU above 80% for 20 s” with desktop notifications, and a tray icon + with a live CPU and memory summary. +
++ See and manage systemd services, and mount or unmount external drives from the + Storage page. System-critical items stay locked. +
+ Linux ++ Export processes as CSV or JSON. A command palette (Ctrl+K), search (Ctrl+F) and + full keyboard navigation. +
+Follow your system theme, or pick one in Settings.
+
+
+ | Platform | +Status | +
|---|---|
| Debian 12+ and Ubuntu 22.04+ (amd64) | ++ Signed APT repository below. Tested on KDE Plasma and GNOME under Wayland. The + tray needs StatusNotifier or the AppIndicator extension on GNOME. + | +
| Windows 11 (x64) | +Supported. See the README for details. | +
| macOS | +Not yet. | +
- Add the signed Tasky repository once. APT will keep it updated with your system - packages. -
-- Before installing, review the - key verification steps - and compare the full fingerprint with a trusted project announcement. -
-- View the repository key fingerprint + Add the signed repository once and APT keeps Tasky updated with your other packages. + Verify the signing key before you trust it.
sudo install -d -m 0755 /usr/share/keyrings
-curl -fsSL https://mikeholp87.github.io/Tasky/tasky-archive-keyring.asc \
- | gpg --dearmor \
- | sudo tee /usr/share/keyrings/tasky-archive-keyring.gpg >/dev/null
+
+ -
+
Install the prerequisites
+
+ sudo apt update
+sudo apt install ca-certificates curl gnupg
+
+
+ -
+
Download the key and check its fingerprint
+
+ The fingerprint printed by gpg must be exactly this. Also compare it
+ with the one in the
+ README on GitHub.
+
+ 48F8 0DD5 6C89 66D2 59B2 11C8 1D4B 05C4 EEA1 F6B4
+
+ curl -fsSLo /tmp/tasky-archive-keyring.asc \
+ https://mikeholp87.github.io/Tasky/tasky-archive-keyring.asc
+gpg --show-keys --with-fingerprint /tmp/tasky-archive-keyring.asc
+
+
+ -
+
Add the repository
+
+ gpg --dearmor --output /tmp/tasky-archive-keyring.gpg \
+ /tmp/tasky-archive-keyring.asc
+sudo install -D -m 0644 /tmp/tasky-archive-keyring.gpg \
+ /usr/share/keyrings/tasky-archive-keyring.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/tasky-archive-keyring.gpg] https://mikeholp87.github.io/Tasky stable main' \
- | sudo tee /etc/apt/sources.list.d/tasky.list >/dev/null
-sudo apt update
+ | sudo tee /etc/apt/sources.list.d/tasky.list >/dev/null
+
+
+ -
+
Install Tasky
+
+ sudo apt update
sudo apt install tasky
-
- To update later: sudo apt update && sudo apt upgrade. To remove:
- sudo apt remove tasky.
-
+
+
+ Update later with sudo apt update && sudo apt upgrade. Remove
+ with sudo apt remove tasky. Prefer a single file? Download
+ Tasky.deb and its SHA-256 checksum from
+ GitHub Releases.
+
+
+
+
+
+
+
+ Private by design
+
+
+
+ No telemetry
+ All monitoring stays on your machine. Tasky does not phone home.
+
+
+ Works offline
+
+ The only network use is the optional internet benchmark, which runs only when you
+ press its button and confirm the dialog.
+
+
+
+ Open source and signed
+
+ MIT licensed source on GitHub, and a signed APT repository you can verify yourself.
+
+
-
-
- Processes in context
+
+
+
+ Questions
+
+
+ Does Tasky collect or send any data?
- Search, sort and inspect process trees. End or suspend tasks with safeguards for
- critical system processes.
+ No. There is no telemetry and it works fully offline. The only network use is the
+ optional internet benchmark, which contacts Cloudflare’s speed endpoints only after
+ you press its button and confirm.
-
-
- Private by design
+
+
+ Can it end any process?
- Monitoring stays on your computer. Tasky works offline; network access is used only by
- the optional internet benchmark.
+ It can end, force end, suspend, resume and reprioritize processes you are allowed to
+ control. Critical system processes and Tasky itself are protected by the backend, and
+ risky actions show a confirmation first.
-
-
- Built for Linux desktops
+
+
+ How are service and drive changes authorized?
- Native packages support Ubuntu 22.04 and newer, and Debian 12 and newer on amd64. KDE
- Plasma and GNOME are supported.
+ On Linux, changes to system services use your desktop’s own authorization prompt.
+ System and internal partitions are never offered for unmounting.
-
+
+
+ Which Linux desktops work?
+
+ KDE Plasma and GNOME on Wayland are tested. Other desktops are not verified. The tray
+ icon needs StatusNotifier or AppIndicator support. See the platform support notes in
+ the repository for GNOME window-position details.
+
+
+
+ Where do I report a bug or a security issue?
+
+ Open an issue on
+ GitHub. For security reports,
+ read the
+ security policy
+ first.
+
+