Metadata-Version: 2.5
Name: halig
Version: 0.7.0
Summary: age-encrypted, file-based, note-taking CLI app
Project-URL: Homepage, https://git.roboces.dev/catalin/halig
Project-URL: Repository, https://git.roboces.dev/catalin/halig
Project-URL: Documentation, https://git.roboces.dev/catalin/halig
Project-URL: Changelog, https://git.roboces.dev/catalin/halig
Author-email: cătălin <185504a9@duck.com>
License: GPL-3.0-or-later
License-File: LICENSE
Keywords: age,cli,encryption,notebook,notes,rage
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Terminals
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.14
Requires-Dist: gitpython>=3.1
Requires-Dist: hishel[httpx]>=0
Requires-Dist: httpx<1,>=0.28
Requires-Dist: platformdirs>=4.2
Requires-Dist: pydantic-settings>=2
Requires-Dist: pydantic>=2.8
Requires-Dist: pyrage>=1
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.8
Requires-Dist: typer>=0
Requires-Dist: whenever>=0.6
Provides-Extra: dev
Requires-Dist: bump-pydantic>=0.6.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.1.5; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.20.0; extra == 'docs'
Provides-Extra: linting
Requires-Dist: ruff>=0.4; extra == 'linting'
Requires-Dist: ty>=0.0.1a3; extra == 'linting'
Requires-Dist: types-pyyaml>=6.0; extra == 'linting'
Provides-Extra: testing
Requires-Dist: faker>=28.1.0; extra == 'testing'
Requires-Dist: mock>=5; extra == 'testing'
Requires-Dist: pyfakefs>=5; extra == 'testing'
Requires-Dist: pytest-clarity>=1; extra == 'testing'
Requires-Dist: pytest-cov>=4; extra == 'testing'
Requires-Dist: pytest-duration-insights>=0; extra == 'testing'
Requires-Dist: pytest-mock>=3; extra == 'testing'
Requires-Dist: pytest-pretty>=1; extra == 'testing'
Requires-Dist: pytest-reportlog>=0; extra == 'testing'
Requires-Dist: pytest>=7; extra == 'testing'
Description-Content-Type: text/markdown

# halig

[![Build status](https://git.roboces.dev/catalin/halig/badges/workflows/ci.yaml/badge.svg)](https://git.roboces.dev/catalin/halig/actions)
![PyPI](https://img.shields.io/pypi/v/halig?logo=python)
![PyPI - License](https://img.shields.io/pypi/l/halig)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/halig)
[![uv](https://img.shields.io/badge/uv-managed-blueviolet)](https://docs.astral.sh/uv/)

[(R)age](https://github.com/woodruffw/pyrage) encrypted note-taking CLI app.

`halig` opens, using your favorite `$EDITOR`, an in-memory copy of a file and upon save-and-exit,
it encrypts the new contents into an [age](https://github.com/FiloSottile/age) file that
you can store, _relatively_ safe, anywhere.

## Features

- Simple notebooks management with paths autocompletion
- Passphrase-less, fully-encrypted notes, compatible with existing SSH keys
- No external `age` binary needed
- Almost all `age` advantages, like having multiple keys for encryption and decryption
- Remote (HTTP) public keys import: e.g: github.com/\<username\>.keys

## Install

```shell
pipx install halig # or pip
```

### Nix

```shell
nix profile install git+https://git.roboces.dev/catalin/halig
```

Or, locally, for development:

```shell
nix develop
```

## Setup TLDR

```shell
set -e
ssh-keygen -t ed25519
mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/halig"
cat << EOF > "${XDG_CONFIG_HOME:-$HOME/.config}/halig/halig.yml"
---
notebooks_root_path: ~/Documents/Notebooks
identity_paths:
  - ~/.ssh/id_ed25519
recipient_paths:
  - ~/.ssh/id_ed25519.pub
  - https://github.com/<username>.keys
  - https://gitlab.com/<username>.keys
EOF
```

## Usage TLDR

```shell
halig edit some_notebook     # edit today's note relative to <notebooks_root_path>/some_notebook
halig edit some_notebook/foo # edit  <notebooks_root_path>/some_notebook/foo.age
halig notebooks              # list current notebooks
halig git commit
halig git push
```
