Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
83c3631
fix: prevent concurrent jrnl processes from silently clobbering each …
alichtman Jul 15, 2026
8fa4a93
Update changelog [ci skip]
jrnl-bot Jul 15, 2026
bc4796c
Update dependency tox to v4.57.0
renovate[bot] Jul 17, 2026
30454c5
Update changelog [ci skip]
jrnl-bot Jul 17, 2026
036775b
refactor: base64-encode the v3 encryption JSON header
alichtman Jul 19, 2026
1a0b538
fix: don't overwrite the default config when using --config-file
alichtman Jul 20, 2026
1db55aa
Update changelog [ci skip]
jrnl-bot Jul 20, 2026
84abe43
fix: add v prefix to version in --diagnostic output
alichtman Jul 20, 2026
1c3fcda
Update actions/setup-python action to v7
renovate[bot] Jul 20, 2026
95e3e02
Update dependency ruff to v0.15.22
renovate[bot] Jul 16, 2026
0e69ddc
Update changelog [ci skip]
jrnl-bot Jul 20, 2026
0f27de3
Minor fixes to docstrings of functions
MuditJ Mar 12, 2024
768d7ce
Add line break to appease linter 88-char line length max
micahellison Mar 24, 2024
734bd9c
Update changelog [ci skip]
jrnl-bot Jul 20, 2026
1d65cdc
docs: update develop branch references to main
alichtman Jul 20, 2026
585f7f1
Update changelog [ci skip]
jrnl-bot Jul 20, 2026
7e501dd
add alichtman to maintainers list in pyproject.toml
alichtman Jul 20, 2026
83a880c
fix pyproject formatting
alichtman Jul 20, 2026
febf562
fix: don't crash on invalid UTF-8 from stdin when writing an entry
alichtman Jul 20, 2026
65ee139
Update changelog [ci skip]
jrnl-bot Jul 20, 2026
4ee7d33
fix: guarantee editor tempfile cleanup on failure
alichtman Jul 20, 2026
80aa7de
feat: add debug logging to editor.py
alichtman Jul 20, 2026
5c814e2
feat: log the editor command when opening it in append mode
alichtman Jul 20, 2026
999984a
refactor: extract editor var in _write_in_editor
alichtman Jul 20, 2026
8874dd4
Update changelog [ci skip]
jrnl-bot Jul 20, 2026
0262a91
fix: prevent concurrent jrnl processes from silently clobbering each …
alichtman Jul 15, 2026
eb206f2
fix: fail fast on a locked journal instead of waiting 2s by default
alichtman Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Here are some key points to include in your description:

### Checklist

- [ ] I have read the [contributing doc](https://github.com/jrnl-org/jrnl/blob/develop/docs/contributing.md).
- [ ] I have read the [contributing doc](https://github.com/jrnl-org/jrnl/blob/main/docs/contributing.md).
- [ ] I have included a link to the relevant issue number.
- [ ] I have checked to ensure there aren't other open [pull requests](../pulls)
for the same issue.
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/run_tests/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ runs:
shell: bash

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ name: Changelog
on:
push:
branches:
- develop
- main
tags:
- 'v*'

Expand Down Expand Up @@ -44,7 +44,7 @@ jobs:
fi

RELEASE=1
BRANCH=develop
BRANCH=main
git checkout $BRANCH

# if actual release (not pre), then changelog should exclude prereleases on update
Expand Down Expand Up @@ -122,7 +122,7 @@ jobs:
sinceTag: ${{ env.SINCE_TAG }}
maxIssues: 150
releaseUrl: https://pypi.org/project/jrnl/%s/
releaseBranch: develop
releaseBranch: main
verbose: false
author: true

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name: Docs

on:
push:
branches: [ develop, release ]
branches: [ main, release ]
paths:
- 'docs/**'
- 'docs_theme/**'
Expand All @@ -15,7 +15,7 @@ on:
- 'tasks.py'
- 'pyproject.toml'
pull_request:
branches: [ develop ]
branches: [ main ]
paths:
- 'docs/**'
- 'docs_theme/**'
Expand All @@ -39,7 +39,7 @@ jobs:
- uses: actions/checkout@v7

- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
echo "JRNL_VERSION=$JRNL_VERSION" >> "$GITHUB_ENV"

- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: '3.14'

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/testing_pipelines.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ name: Testing Pipeline Files

on:
push:
branches: [ develop, release ]
branches: [ main, release ]
paths:
- '.github/workflows/**'
- '.github/actions/**'
pull_request:
branches: [ develop ]
branches: [ main ]
paths:
- '.github/workflows/**'
- '.github/actions/**'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/testing_prs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name: Testing

on:
push:
branches: [ develop, release ]
branches: [ main, release ]
paths:
- 'jrnl/**'
- 'features/**'
Expand All @@ -15,7 +15,7 @@ on:
- '.github/workflows/testing_prs.yaml'
- 'tasks.py'
pull_request:
branches: [ develop ]
branches: [ main ]
paths:
- 'jrnl/**'
- 'features/**'
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,44 @@

[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.3...HEAD)

**Implemented enhancements:**

- Feature Request: Add a config option to output any new entries to the terminal after submission. [\#1871](https://github.com/jrnl-org/jrnl/issues/1871)

**Fixed bugs:**

- `--config-file` broken on latest build [\#2099](https://github.com/jrnl-org/jrnl/issues/2099)
- Bug Report [\#2082](https://github.com/jrnl-org/jrnl/issues/2082)
- KeyError: date [\#2077](https://github.com/jrnl-org/jrnl/issues/2077)
- Bug Report - jrnl item not written [\#2073](https://github.com/jrnl-org/jrnl/issues/2073)
- 6 Tests failed because 'v' is missing in front of '4.3.0' [\#2065](https://github.com/jrnl-org/jrnl/issues/2065)
- Version tests failing on 4.3-beta release due to beta/b0 tags [\#2060](https://github.com/jrnl-org/jrnl/issues/2060)
- jrnl crashes when `colors.tags` is not configured [\#2021](https://github.com/jrnl-org/jrnl/issues/2021)

**Packaging:**

- Drop Python 3.10 support [\#2055](https://github.com/jrnl-org/jrnl/issues/2055)
- Update actions/setup-python action to v7 [\#2102](https://github.com/jrnl-org/jrnl/pull/2102) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency ruff to v0.15.22 [\#2098](https://github.com/jrnl-org/jrnl/pull/2098) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency rich to v15 [\#2094](https://github.com/jrnl-org/jrnl/pull/2094) ([renovate[bot]](https://github.com/apps/renovate))
- Update actions/checkout action to v7 - autoclosed [\#2093](https://github.com/jrnl-org/jrnl/pull/2093) ([renovate[bot]](https://github.com/apps/renovate))
- Update actions/cache action to v6 [\#2092](https://github.com/jrnl-org/jrnl/pull/2092) ([renovate[bot]](https://github.com/apps/renovate))
- Update heinrichreimer/action-github-changelog-generator action to v2.4 [\#2078](https://github.com/jrnl-org/jrnl/pull/2078) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency tox to v4.57.0 [\#2017](https://github.com/jrnl-org/jrnl/pull/2017) ([renovate[bot]](https://github.com/apps/renovate))

**Merged pull requests:**

- fix: guarantee editor tempfile cleanup and add debug logging [\#2106](https://github.com/jrnl-org/jrnl/pull/2106) ([alichtman](https://github.com/alichtman))
- fix: don't crash on invalid UTF-8 from stdin when writing an entry [\#2104](https://github.com/jrnl-org/jrnl/pull/2104) ([alichtman](https://github.com/alichtman))
- fix: don't overwrite the default config when using --config-file [\#2101](https://github.com/jrnl-org/jrnl/pull/2101) ([alichtman](https://github.com/alichtman))
- fix: write journal files atomically to avoid corruption on crash [\#2096](https://github.com/jrnl-org/jrnl/pull/2096) ([alichtman](https://github.com/alichtman))
- fix: emit error when running --decrypt on an unencrypted journal [\#2095](https://github.com/jrnl-org/jrnl/pull/2095) ([alichtman](https://github.com/alichtman))
- chore: upgrade all deps [\#2091](https://github.com/jrnl-org/jrnl/pull/2091) ([alichtman](https://github.com/alichtman))
- fix: don't crash on missing or invalid color config values [\#2089](https://github.com/jrnl-org/jrnl/pull/2089) ([alichtman](https://github.com/alichtman))
- Drop Python 3.10 support [\#2088](https://github.com/jrnl-org/jrnl/pull/2088) ([alichtman](https://github.com/alichtman))
- docs: add CLAUDE.md [\#2086](https://github.com/jrnl-org/jrnl/pull/2086) ([alichtman](https://github.com/alichtman))
- fix: prevent ValueError when upgrading with no journals configured [\#2080](https://github.com/jrnl-org/jrnl/pull/2080) ([miloquinn](https://github.com/miloquinn))
- Minor fixes to docstrings of functions [\#1868](https://github.com/jrnl-org/jrnl/pull/1868) ([MuditJ](https://github.com/MuditJ))

## [v4.3](https://pypi.org/project/jrnl/v4.3/) (2026-02-24)

Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Project Overview

jrnl is a command-line journal application written in Python. It supports plain text and encrypted (AES) journals, multiple journal types, and various export formats. The main branch for development is `develop`; PRs should target `develop`.
jrnl is a command-line journal application written in Python. It supports plain text and encrypted (AES) journals, multiple journal types, and various export formats. The main branch for development is `main`

## Development Setup

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ License: https://www.gnu.org/licenses/gpl-3.0.html

<p align="center">
<a href="https://jrnl.sh">
<img align="center" src="https://raw.githubusercontent.com/jrnl-org/jrnl/develop/docs_theme/assets/readme-header.png"/>
<img align="center" src="https://raw.githubusercontent.com/jrnl-org/jrnl/main/docs_theme/assets/readme-header.png"/>
</a>
</p>

Expand All @@ -15,7 +15,7 @@ jrnl
[![Version](http://img.shields.io/pypi/v/jrnl.svg?style=flat)](https://pypi.python.org/pypi/jrnl/)
[![Homebrew](https://img.shields.io/homebrew/v/jrnl?style=flat-square)](https://formulae.brew.sh/formula/jrnl)
[![Gitter](https://img.shields.io/gitter/room/jrnl-org/jrnl)](https://gitter.im/jrnl-org/jrnl)
[![Changelog](https://img.shields.io/badge/changelog-on%20github-green)](https://github.com/jrnl-org/jrnl/blob/develop/CHANGELOG.md)
[![Changelog](https://img.shields.io/badge/changelog-on%20github-green)](https://github.com/jrnl-org/jrnl/blob/main/CHANGELOG.md)
====

_To get help, [submit an issue](https://github.com/jrnl-org/jrnl/issues/new/choose) on
Expand Down
29 changes: 24 additions & 5 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ We welcome contributions to jrnl, whether it's through reporting bugs, improving

## Code of Conduct

Before starting, please read the [Code of Conduct](https://github.com/jrnl-org/jrnl/blob/develop/CODE_OF_CONDUCT.md).
Before starting, please read the [Code of Conduct](https://github.com/jrnl-org/jrnl/blob/main/CODE_OF_CONDUCT.md).

## Reporting Bugs

Expand All @@ -27,7 +27,7 @@ Please report bugs by [opening a new issue](https://github.com/jrnl-org/jrnl/iss

If you find a typo or a mistake in the docs, please fix it right away and send a pull request. If you're unsure what to change but still see a problem, you can [open a new issue](https://github.com/jrnl-org/jrnl/issues/new/choose) with the "Documentation change" type.

To edit the documentation, edit the `docs/*.md` files on the **develop** branch. You can see the result by running `poe docs-run` inside the project's root directory, then navigating your browser to [localhost:8000](http://localhost:8000).
To edit the documentation, edit the `docs/*.md` files on the **main** branch. You can see the result by running `poe docs-run` inside the project's root directory, then navigating your browser to [localhost:8000](http://localhost:8000).

### External editors and tips and tricks

Expand All @@ -41,7 +41,7 @@ The nature of jrnl means we deal with extremely sensitive data, and can't risk d

### Prereleases

[Prereleases are deployed through PyPi much like normal releases](https://pypi.org/project/jrnl/#history). You can use [pipx](https://pypi.org/project/pipx/) to fetch them and test them. See the [changelog](https://github.com/jrnl-org/jrnl/blob/develop/CHANGELOG.md) for information on what has changed with each release.
[Prereleases are deployed through PyPi much like normal releases](https://pypi.org/project/jrnl/#history). You can use [pipx](https://pypi.org/project/pipx/) to fetch them and test them. See the [changelog](https://github.com/jrnl-org/jrnl/blob/main/CHANGELOG.md) for information on what has changed with each release.

### Pull requests

Expand Down Expand Up @@ -76,10 +76,29 @@ You will need to install [poetry](https://python-poetry.org/) to develop jrnl. I

jrnl uses two primary branches:

* `develop` - for ongoing development
* `main` - for ongoing development
* `release` - for releases

In general, pull requests should be made on the `develop` branch.
In general, pull requests should be made on the `main` branch.

#### Updating an existing clone after the `develop` → `main` rename

If you have a clone from before the default branch was renamed from `develop` to `main`, update it with:

```bash
git checkout develop
git branch -m develop main
git fetch origin
git remote prune origin
git branch -u origin/main main
git remote set-head origin -a
```

If you have other local branches based on `develop`, rebase them onto `main`:

```bash
git rebase --onto main develop <your-branch>
```

### Common development commands

Expand Down
9 changes: 7 additions & 2 deletions docs/encryption.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,17 @@ File layout:
| Field | Size | Description |
| --- | --- | --- |
| `JRNLv3` | 6 bytes | Magic prefix |
| `header_len` | 2 bytes (uint16 BE) | Length of JSON header |
| JSON header | `header_len` bytes | Includes `salt` (base64url-encoded 16-byte salt) |
| `header_len` | 2 bytes (uint16 BE) | Length of the header field, max 64KB |
| header | `header_len` bytes | Base64-encoded JSON, includes `salt` (base64url-encoded 16-byte salt) |
| Fernet token | Remaining bytes | Ciphertext |

Additional header fields may be added in future without changing the format version.

!!! note
Journals encrypted with v3 before this format was base64-encoded store
raw JSON in the header field instead. These are still read correctly;
the base64-encoded format is written on the next save.

## Encrypting and Decrypting from the CLI

To encrypt a journal, run:
Expand Down
2 changes: 1 addition & 1 deletion docs/formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ jrnl --format md

Markdown is a simple markup language that is human readable and can be used to be
rendered to other formats (html, pdf). `jrnl`'s
[README](https://github.com/jrnl-org/jrnl/blob/develop/README.md) for example is
[README](https://github.com/jrnl-org/jrnl/blob/main/README.md) for example is
formatted in markdown, then Github adds some formatting to make it look nice.

The markdown format groups entries by date (first by year, then by month), and adds
Expand Down
Loading