Motty
原生桌面 SSH 工作台:终端、SFTP/SCP、端口转发、VNC 与 RDP 远程桌面、AI 助手都在一个窗口里。Go 编写,没有 Electron,空闲时保持安静。免费开源,支持 macOS、Windows 和 Linux。
Translation pending
Free tool to compare package versions across NuGet, npm, PyPI, Maven, Pub & Packagist. Track breaking changes, view release notes, and analyze version differences between any two versions.
Developer toolsC# · HTMLGitHub @pkgdiff-devOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
pkgdiff is a web application that aggregates and displays release notes between any two versions of a package. Instead of jumping between registry pages, GitHub releases, and changelog files, you get a single, consolidated view of everything that changed.
Loading the full README.
Read the full README ↗Every release note between two versions of a package, in one timeline: NuGet, npm, PyPI and pub.dev.
pkgdiff collects the release notes between any two versions of a package and shows them as one categorized timeline, so you can decide whether an upgrade is safe without jumping between registry pages, GitHub releases and changelog files.
🌐 Live: pkgdiff.dev
| Registry | Status |
|---|---|
| NuGet | ✅ |
| npm | ✅ |
| PyPI | ✅ |
| pub.dev | ✅ |
Security data is collected by background jobs and never while a visitor waits:
Backend: .NET 10, ASP.NET Core, Entity Framework Core with PostgreSQL 18, Hangfire, SignalR, Redis, Polly, AngleSharp, QuestPDF.
Frontend: Angular 21 (standalone components, signals, zoneless) with @angular/ssr, Tailwind CSS,
Lucide icons.
Operations: Docker Compose on one host, images built and scanned in GitHub Actions and pulled from GHCR, nginx in front, Prometheus and Grafana.
src/
backend/
PkgDiff.API/ controllers, middleware, hubs, composition root
PkgDiff.Application/ services, interfaces (ports), background jobs
PkgDiff.Domain/ entities and persistence contracts
PkgDiff.Infrastructure/ EF Core, registry clients, scraping
PkgDiff.Shared/ DTOs and constants
PkgDiff.Tests/ unit and integration tests
frontend/ Angular application and its render server (src/server.ts)
deploy/ deploy, rollback and backup scripts, host nginx, Grafana provisioning
.github/scripts/ dependency gate, QuestPDF CPU check and their tests
Prerequisites: .NET 10 SDK, Node.js 22 with npm, PostgreSQL and Redis on localhost
(or docker compose up -d db redis with a .env made from .env.example).
src/backend/PkgDiff.API/appsettings.json holds the defaults and no secrets. Put your own values in
src/backend/PkgDiff.API/appsettings.Development.json, which git ignores:
{
"ConnectionStrings": { "DefaultConnection": "Host=localhost;Database=pkgdiffdb;Username=postgres;Password=..." },
"JwtSettings": { "SecretKey": "<32 or more random bytes>", "Issuer": "PkgDiffAPI", "Audience": "PkgDiffClient" },
"Security": { "SettingsEncryptionKey": "<base64 of 32 random bytes>" },
"AdminSettings": { "AdminPassword": "<password of the first administrator>" }
}
cd src/backend
dotnet run --project PkgDiff.API
The API applies its migrations on start and listens on http://localhost:5054
(Swagger at /swagger in Development).
cd src/frontend
npm ci
npm start
The application runs on http://localhost:4200, rendered on the server by the development server
as in production.
dotnet test --project src/backend/PkgDiff.Tests/PkgDiff.Tests.csproj
cd src/frontend && npm test -- --watch=false && npm run build && npm run test:ssr
node --test .github/scripts/tests/*.test.mjs
Backend tests that need PostgreSQL run when PKGDIFF_TEST_POSTGRES holds a connection string
(without a database name); without it they are skipped.
This is the beginning of the README. Read the rest at the original. Read the full README ↗