{"id":42904386,"url":"https://github.com/twiddler/deputui","last_synced_at":"2026-01-31T03:07:47.405Z","repository":{"id":333567925,"uuid":"1135284572","full_name":"twiddler/deputui","owner":"twiddler","description":"A TUI for reviewing minor version updates of NPM packages 👮","archived":false,"fork":false,"pushed_at":"2026-01-20T00:44:02.000Z","size":296,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-20T04:13:22.234Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twiddler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-15T22:18:51.000Z","updated_at":"2026-01-20T00:44:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/twiddler/deputui","commit_stats":null,"previous_names":["twiddler/deputui"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/twiddler/deputui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twiddler%2Fdeputui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twiddler%2Fdeputui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twiddler%2Fdeputui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twiddler%2Fdeputui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twiddler","download_url":"https://codeload.github.com/twiddler/deputui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twiddler%2Fdeputui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28927844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T02:59:34.861Z","status":"ssl_error","status_checked_at":"2026-01-31T02:59:05.369Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-30T16:00:33.853Z","updated_at":"2026-01-31T03:07:47.400Z","avatar_url":"https://github.com/twiddler.png","language":"Rust","funding_links":[],"categories":["Table of Contents","💻 Apps"],"sub_categories":["⌨️ Development Tools"],"readme":"\u003cimg src=\"./logo.svg\" alt=\"Alt Text\" width=\"100\" /\u003e\n\n`deputui` is a TUI for reviewing release notes of NPM dependencies.\n\n# Motivation\n\nReviewing release notes is tedious: Run `pnpm outdated`, look up the corresponding repositories, and hunt down all relevant release notes.\n\nHowever, for dependencies that adhere to semver semantics, we know that …\n\n- **major** version updates have breaking changes that might take some effort,\n- **minor** version updates have new features we might want to adopt, and\n- **patch** version updates have bug fixes only which we always want to install.\n\nMost of the time, we will be reviewing minor version updates. It'd be great to make that fast and convenient. This is what `deputui` is for. 🏎️💨\n\n# How to use\n\nPipe your pnpm output directly into `deputui`:\n\n```console\n$ pnpm outdated --format json | deputui\n```\n\nThen, in `deputui`, review release notes and select those releases you want to install.\n\n\u003cimg width=\"1342\" height=\"557\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f69533fc-7c89-4208-a0c1-e81c75dbc6fd\" /\u003e\n\nWhen you're done, confirm. The `package@version` identifiers you selected will be printed to stdout.\n\nIf you want to update to the selected releases, you can pipe the output back to pnpm:\n\n```console\n$ pnpm outdated --format json | deputui | xargs pnpm update\n```\n\n# Configuration\n\n`deputui` fetches release notes from GitHub's REST API. GitHub limits unauthenticated requests to 60 requests per hour, and authenticated requests to 5,000 requests per hour (https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api).\n\n`deputui` makes unauthenticated requests by default. You can make it make authenticated requests by providing your [GitHub personal access token](https://github.com/settings/personal-access-tokens) via an environment variable:\n\n```console\n$ export DEPUTUI_GITHUB_TOKEN=your_github_token_here\n$ pnpm outdated --format json | deputui | xargs pnpm update\n```\n\n# Installation\n\n## Manually\n\nIf you're using nix, run\n\n```console\n$ nix develop\n```\n\nYou will enter a nix shell that has access to all the binaries in this project, including the rust toolchain.\n\nIf you're not using nix, reconsider your life decisions, then [install rust](https://rust-lang.github.io/rustup/) and\n\n```console\n$ make all\n```\n\nThis will build and install three binaries:\n\n- `deputui`\n- `deputui-pnpm`\n- `deputui-review`\n\n## Via flake.nix\n\nIf you want to use this in a project that has a `flake.nix`, this is the minimal setup for having the binaries in your dev shell:\n\n```nix\n{\n  inputs = {\n    nixpkgs.url = \"github:NixOS/nixpkgs/nixos-25.11\";\n    deputui.url = \"github:twiddler/deputui\";\n  };\n\n  outputs = { self, nixpkgs, deputui }:\n    let\n      system = \"x86_64-linux\";\n\n      pkgs = import nixpkgs {\n        inherit system;\n      };\n    in {\n      devShells.${system}.default = pkgs.mkShell {\n        name = \"dev-shell\";\n\n        buildInputs = with pkgs; [\n          deputui.packages.${system}.default\n        ];\n      };\n    };\n}\n```\n\n# What about npm, yarn, …?\n\nIf you're using a package manager other than pnpm, you can still use this! You only need to transform its output to a JSON dictionary that matches this schema:\n\n```json\n{\n  \"foo\": { \"current\": \"1.0.0\", \"wanted\": \"1.0.1\" },\n  \"bar\": { \"current\": \"2.0.0\", \"wanted\": \"2.3.2\" }\n}\n```\n\nYou might want to try `jq` for transforming. After that, you can\n\n```console\n$ some-package-manager outdated | jq \u003cyour transform\u003e | deputui\n```\n\n# Advanced Usage\n\nThis project provides both an all-in-one binary and a modular architecture:\n\n- **`deputui`**: All-in-one binary that handles parsing, fetching, and review in one command\n- **`deputui-pnpm`**: Reads `pnpm outdated --format json`, fetches minor version updates from the NPM registry and outputs releases to review\n- **`deputui-review`**: The TUI application for reviewing and selecting updates\n\n## Save release list for later review\n\n```console\n$ pnpm outdated --format json | deputui-pnpm \u003e releases.json\n$ cat releases.json | deputui-review\n```\n\n## Filter releases with custom tools\n\n```console\n$ pnpm outdated --format json | deputui-pnpm | jq 'select(.package | startswith(\"@types\"))' | deputui-review\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwiddler%2Fdeputui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwiddler%2Fdeputui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwiddler%2Fdeputui/lists"}