Metadata-Version: 2.4
Name: youpdated
Version: 0.4.0
Summary: Simple update tracker for games, apps, and packages
Author-email: Void1-1 <161782542+Void1-1@users.noreply.github.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Void1-1/youpdated
Project-URL: Repository, https://github.com/Void1-1/youpdated
Project-URL: Issues, https://github.com/Void1-1/youpdated/issues
Project-URL: Changelog, https://github.com/Void1-1/youpdated/blob/main/CHANGELOG.md
Keywords: updates,release-tracking,scraper,rss,privacy,steam,itch,npm,pypi,github,gitlab,forgejo,youtube,notifications,cli
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx[socks]>=0.27
Requires-Dist: feedparser>=6.0
Requires-Dist: packaging>=22
Requires-Dist: rich>=13.0
Requires-Dist: PyYAML>=6.0
Requires-Dist: platformdirs>=4.0
Provides-Extra: encryption
Requires-Dist: cryptography>=42.0; extra == "encryption"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: respx>=0.21; extra == "dev"
Requires-Dist: cryptography>=42.0; extra == "dev"
Provides-Extra: publish
Requires-Dist: build>=1.2; extra == "publish"
Requires-Dist: twine>=5.0; extra == "publish"
Dynamic: license-file

# Youpdated

[![tests](https://github.com/Void1-1/youpdated/actions/workflows/tests.yml/badge.svg)](https://github.com/Void1-1/youpdated/actions/workflows/tests.yml)

Youpdated keeps track of the games, apps, and packages you follow, and tells you what changed since you last checked in.

It is built to be **privacy-preserving, anonymous, and customizable**: no accounts, no API keys required, nothing stored anywhere non-local.

```text
╭─ steam ──────────────────────────────────────────────────────────╮
│ Team Fortress 2  (440)                                           │
│   • CLTF2 Halloween Cup   7d ago                                 │
│     https://store.steampowered.com/news/app/440/view/6728766547… │
╰──────────────────────────────────────────────────────────────────╯
╭─ git ────────────────────────────────────────────────────────────╮
│ github.com/python/cpython                                        │
│   • v3.14.7   5d ago                                             │
│     https://github.com/python/cpython/releases/tag/v3.14.7       │
╰──────────────────────────────────────────────────────────────────╯
```

## Sources

| Source | What it watches |
| --- | --- |
| `git` | Releases, tags, and commits on GitHub, GitLab, Codeberg, or any Forgejo/Gitea server |
| `npm` | New versions of a JavaScript package |
| `homebrew` | New versions of a Homebrew formula or cask |
| `pypi` | New releases of a Python package, and if it's archived or deprecated |
| `steam` | Patch notes and news for a game |
| `itch` | Devlog posts and new builds of an itch.io game |
| `youtube` | New videos on a channel or playlist |
| `browser` | New Chrome, Brave, Firefox, and Edge releases |
| `feed` | Anything else with an RSS or Atom feed |

## Get started

### 1. Install

Works on macOS, Linux, and Windows. Needs **Python 3.11 or newer** (`python3 --version` to check). Then:

```sh
pipx install youpdated
```

[pipx](https://pipx.pypa.io) installs command-line tools so they don't interfere with anything else.
`pip install youpdated` works too.

Check it worked with:

```sh
youpdated --version
```

### 2. Create your config

```sh
youpdated init
```

This creates a starter config file and **prints where it was placed**.

### 3. Add sources to watch

Name the source, then what to watch, in any form from [Where to find identifiers](#where-to-find-identifiers):

```sh
youpdated add git neovim/neovim
youpdated add npm react
youpdated add youtube @NASA
```

A link or handle that can only work with one source doesn't need to be named: `youpdated add https://github.com/neovim/neovim`.

The starter config comes with examples; `youpdated rm` to remove any you don't want.

Or open the file and list them under each source yourself:

```yaml
sources:
  git:
    - python/cpython
  steam:
    - 440
  youtube:
    - "@NASA"
```

### 4. Run it

```sh
youpdated check
```

**The first run will not display updates.** That's intended: it records everything that already exists, so later runs show only what's new. To see everything now, run `youpdated check --all`.

## Where to find identifiers

| Source you want watched | Example of what to put in config | How to find it |
| --- | --- | --- |
| A GitHub repo | `python/cpython` | The `owner/repo` part of the repo URL. A full `https://github.com/owner/repo` URL also works. |
| A GitLab, Codeberg, or Forgejo/Gitea repo | `https://gitlab.com/gitlab-org/cli` | The repo's URL as it appears in the address bar. |
| An npm package | `express`, `"@types/node"` | The package name on npmjs.com. **Quote names starting with `@`.** |
| A Homebrew formula or cask | `wget`, `cask:firefox` | The name after `brew install`. Put `cask:` in front of casks. |
| A PyPI package | `httpx` | The name after `pip install`. |
| A Steam game | `440` | The number in the store URL: `store.steampowered.com/app/`**`440`**`/Team_Fortress_2/`. The full store URL also works. |
| An itch.io game | `https://user.itch.io/game-name` | The game's page URL, exactly as it appears in the address bar. |
| A YouTube channel | `"@NASA"` | The `@handle` from the channel URL. **Keep the quotes with `@` characters** |
| A YouTube playlist | `playlist: PLxxxx` | The `list=` part of the playlist URL. A full playlist URL also works. |
| A browser | `chrome`, `brave`, `firefox`, `edge` | Just the name. |
| Anything else | `https://example.com/feed.xml` | Any RSS or Atom feed URL. Many sites publish one at `/feed.xml`, `/releases.atom`, or `/blog/rss`. |

## Basic commands

```sh
youpdated check              # what's new since the last run
youpdated check --all        # everything, not just what's new
youpdated check --since 7d   # only things from the last week
youpdated check -s steam     # only one source
youpdated check --test -v    # check your config without fetching anything
youpdated add npm react      # start watching something
youpdated remove npm react   # stop watching it
youpdated uninstall          # remove Youpdated files
```

## Privacy

- **No accounts or keys.** Every source works without sign in.
- **Everything stays local.** Nothing is sent anywhere except the sites you choose to watch.
- **Optional extras:** route everything through Tor or another proxy, and encrypt your config with a passphrase.

## Learn more

- [Configuration](https://github.com/Void1-1/youpdated/blob/main/docs/configuration.md): all options, ignoring update types, and how long history is kept
- [Usage](https://github.com/Void1-1/youpdated/blob/main/docs/usage.md): all commands, JSON and RSS output, and running on a schedule
- [Notifications](https://github.com/Void1-1/youpdated/blob/main/docs/notifications.md): get updates on your phone, Discord, Slack, or to a script
- [Privacy](https://github.com/Void1-1/youpdated/blob/main/docs/privacy.md): proxies, Tor, and details on what information is sent where
- [Encryption at rest](https://github.com/Void1-1/youpdated/blob/main/docs/encryption.md): lock your config and history behind a passphrase
- [Troubleshooting](https://github.com/Void1-1/youpdated/blob/main/docs/troubleshooting.md): common issues, and more about uninstalling
- [Contributing](https://github.com/Void1-1/youpdated/blob/main/CONTRIBUTING.md): installing from source, running the tests, and [adding a source](https://github.com/Void1-1/youpdated/blob/main/ADDING_SOURCES.md)
