diff --git a/.github/actions/run_tests/action.yaml b/.github/actions/run_tests/action.yaml index 918289a9..79c99964 100644 --- a/.github/actions/run_tests/action.yaml +++ b/.github/actions/run_tests/action.yaml @@ -14,6 +14,7 @@ runs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true - name: Capture full Python version in env run: echo "PYTHON_FULL_VERSION=$(python --version)" >> $GITHUB_ENV diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml index 4825bffe..a9347a13 100644 --- a/.github/workflows/changelog.yaml +++ b/.github/workflows/changelog.yaml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.JRNL_BOT_TOKEN }} diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 1e822dc7..ff40de92 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -36,7 +36,7 @@ jobs: os: [ ubuntu-latest ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 67885911..f663b7e7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -71,7 +71,7 @@ jobs: python-version: '3.11' - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.JRNL_BOT_TOKEN }} diff --git a/.github/workflows/testing_pipelines.yaml b/.github/workflows/testing_pipelines.yaml index 0239bca5..fbba51f1 100644 --- a/.github/workflows/testing_pipelines.yaml +++ b/.github/workflows/testing_pipelines.yaml @@ -28,7 +28,7 @@ jobs: os: [ ubuntu-latest ] steps: - run: git config --global core.autocrlf false - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check workflow files uses: docker://rhysd/actionlint:latest with: diff --git a/.github/workflows/testing_prs.yaml b/.github/workflows/testing_prs.yaml index 0469bbda..8e20d35c 100644 --- a/.github/workflows/testing_prs.yaml +++ b/.github/workflows/testing_prs.yaml @@ -37,11 +37,11 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ '3.10', '3.11' ] + python-version: [ '3.10', '3.11', '3.12' ] os: [ ubuntu-latest, macos-latest, windows-latest ] steps: - run: git config --global core.autocrlf false - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Run tests uses: ./.github/actions/run_tests with: diff --git a/.github/workflows/testing_schedule.yaml b/.github/workflows/testing_schedule.yaml index dc0ebab2..6f3ab6f6 100644 --- a/.github/workflows/testing_schedule.yaml +++ b/.github/workflows/testing_schedule.yaml @@ -17,11 +17,11 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ '3.10', '3.11' ] + python-version: [ '3.10', '3.11', '3.12' ] os: [ ubuntu-latest, macos-latest, windows-latest ] steps: - run: git config --global core.autocrlf false - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Run tests uses: ./.github/actions/run_tests with: diff --git a/readthedocs.yml b/.readthedocs.yaml similarity index 88% rename from readthedocs.yml rename to .readthedocs.yaml index 60d14db0..9ef346b7 100644 --- a/readthedocs.yml +++ b/.readthedocs.yaml @@ -5,6 +5,13 @@ # Required version: 2 +# Set the OS +build: + os: ubuntu-22.04 + tools: + python: "3" + + # Build documentation in the docs/ directory mkdocs: configuration: mkdocs.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 52bf94f7..b08f811a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,49 @@ # Changelog +## [Unreleased](https://github.com/jrnl-org/jrnl/) + +[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.1...HEAD) + +**Documentation:** + +- Document security risks of using a computer that someone else has admin access to [\#1793](https://github.com/jrnl-org/jrnl/issues/1793) + +## [v4.1](https://pypi.org/project/jrnl/v4.1/) (2023-11-04) + +[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.1-beta2...v4.1) + +**Build:** + +- Add Python 3.12 support [\#1761](https://github.com/jrnl-org/jrnl/pull/1761) ([micahellison](https://github.com/micahellison)) +- Set new required build fields in the ReadTheDocs config file [\#1803](https://github.com/jrnl-org/jrnl/pull/1803) ([micahellison](https://github.com/micahellison)) +- Replace flake8 and isort with ruff linter and add `black --check` to linting step [\#1763](https://github.com/jrnl-org/jrnl/pull/1763) ([micahellison](https://github.com/micahellison)) + +**Documentation:** + +- Add note about messages going to `stderr` and the implication for piping [\#1768](https://github.com/jrnl-org/jrnl/pull/1768) ([micahellison](https://github.com/micahellison)) + +**Packaging:** + +- Drop/replace ansiwrap dependency [\#1191](https://github.com/jrnl-org/jrnl/issues/1191) +- Use rich instead of ansiwrap to wrap text [\#1693](https://github.com/jrnl-org/jrnl/pull/1693) ([micahellison](https://github.com/micahellison)) +- Update actions/checkout action to v4 [\#1788](https://github.com/jrnl-org/jrnl/pull/1788) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency black to v23.10.1 [\#1811](https://github.com/jrnl-org/jrnl/pull/1811) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency cryptography to v41.0.5 [\#1815](https://github.com/jrnl-org/jrnl/pull/1815) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency keyring to v24.2.0 [\#1760](https://github.com/jrnl-org/jrnl/pull/1760) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency mkdocs to v1.5.3 [\#1795](https://github.com/jrnl-org/jrnl/pull/1795) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency parse-type to v0.6.2 [\#1762](https://github.com/jrnl-org/jrnl/pull/1762) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency poethepoet to v0.24.1 [\#1806](https://github.com/jrnl-org/jrnl/pull/1806) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency pytest to v7.4.3 [\#1816](https://github.com/jrnl-org/jrnl/pull/1816) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency pytest-bdd to v7 [\#1807](https://github.com/jrnl-org/jrnl/pull/1807) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency rich to v13.6.0 [\#1794](https://github.com/jrnl-org/jrnl/pull/1794) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency ruamel.yaml to v0.18.3 [\#1813](https://github.com/jrnl-org/jrnl/pull/1813) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency ruff to v0.1.3 [\#1810](https://github.com/jrnl-org/jrnl/pull/1810) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency tox to v4.11.3 [\#1782](https://github.com/jrnl-org/jrnl/pull/1782) ([renovate[bot]](https://github.com/apps/renovate)) +- Update dependency tzlocal to v5.2 [\#1814](https://github.com/jrnl-org/jrnl/pull/1814) ([renovate[bot]](https://github.com/apps/renovate)) + +**Special thanks:** +- jrnl uses UTC instead of local time for entries in WSL/Ubuntu [\#1607](https://github.com/jrnl-org/jrnl/issues/1607) investigated and reported upstream by [giuseppedandrea](https://github.com/giuseppedandrea) + ## [v4.0.1](https://pypi.org/project/jrnl/v4.0.1/) (2023-06-20) [Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.0.1-beta...v4.0.1) diff --git a/docs/formats.md b/docs/formats.md index e78194eb..520a197c 100644 --- a/docs/formats.md +++ b/docs/formats.md @@ -117,6 +117,11 @@ These formats are mainly intended for piping or exporting your journal to other programs. Even so, they can still be used in the same way as any other format (like written to a file, or displayed in your terminal, if you want). +!!! note +You may see boxed messages like "2 entries found" when using these formats, but +those messages are written to `stderr` instead of `stdout`, and won't be piped when +using the `|` operator. + ### JSON ``` sh diff --git a/docs/privacy-and-security.md b/docs/privacy-and-security.md index f855cc3e..df19ea13 100644 --- a/docs/privacy-and-security.md +++ b/docs/privacy-and-security.md @@ -14,6 +14,35 @@ program there are some limitations to be aware of. passwords can be easily circumvented by someone with basic security skills to access to your encrypted `jrnl` file. +## Plausible deniability + +You may be able to hide the contents of your journal behind a layer of encryption, +but if someone has access to your configuration file, then they can figure out that +you have a journal, where that journal file is, and when you last edited it. +With a sufficient power imbalance, someone may be able to force you to unencrypt +it through non-technical means. + +## Spying + +While `jrnl` can protect against unauthorized access to your journal entries while +it isn't open, it cannot protect you against an unsafe computer/location. +For example: + +- Someone installs a keylogger, tracking what you type into your journal. +- Someone watches your screen while you write your entry. +- Someone installs a backdoor into `jrnl` or poisons your journal into revealing your entries. + +## Saved Passwords + +When creating an encrypted journal, you'll be prompted as to whether or not you +want to "store the password in your keychain." This keychain is accessed using +the [Python keyring library](https://pypi.org/project/keyring/), which has different +behavior depending on your operating system. + +In Windows, the keychain is the Windows Credential Manager (WCM), which can't be locked +and can be accessed by any other application running under your username. If this is +a concern for you, you may not want to store your password. + ## Shell history Since you can enter entries from the command line, any tool that logs command @@ -198,25 +227,6 @@ vim.api.nvim_create_autocmd( {"BufNewFile","BufReadPre" }, { Please see `:h