diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..d546614f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,42 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: ":new:, bug" +assignees: '' + +--- + +## Bug Report + + + +### Environment + - `jrnl --diagnostic` output: + - Install method: + +### Current Behavior + + +### Expected Behavior + + +### Repro Steps + + +### Other Information + diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml deleted file mode 100644 index 0303209b..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ /dev/null @@ -1,74 +0,0 @@ -name: Bug Report -description: Create a report to help us improve -title: "Bug Report" -labels: [ ":new:", "bug" ] -body: - - type: markdown - attributes: - value: | - # Bug Report - Hello, and thank you for reporting an issue! - - Please fill out the points below, as it will make our process much easier. - - - type: textarea - id: diagnostic - attributes: - label: Diagnostic output - description: Run `jrnl --diagnostic` and paste the output below - placeholder: Paste output here - validations: - required: true - - - type: textarea - id: current-behavior - attributes: - label: Current Behavior - description: Please put a short description of what is currently happening. - placeholder: Tell us what is happening - validations: - required: true - - - type: textarea - id: expected-behavior - attributes: - label: Expected Behavior - description: Please write a short description of what you would expect to happen - placeholder: Tell us what should be happening - validations: - required: true - - - type: textarea - id: repro-steps - attributes: - label: Repro Steps - description: | - Provide the steps to reproduce the problem. - - Please be as precise as possible, since more info will let us help you faster. - placeholder: Repro steps - validations: - required: true - - - type: textarea - id: debug-output - attributes: - label: Debug output - description: | - Please provide the output of your command with the `--debug` flag on. - placeholder: "example: `jrnl --debug lorem ipsum`" - validations: - required: true - - - type: textarea - id: other-info - attributes: - label: Other Information - description: > - Is there anything else we should know? - - (e.g. more detailed explanation, stacktraces, related - issues, suggestions how to fix, links for us to have context, eg. - stackoverflow, gitter, etc) - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 00000000..dc186ee9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,31 @@ +--- +name: Documentation Change +about: Request or report any updates to our documentation (https://jrnl.sh) +title: '' +labels: ":new:, documentation" +assignees: '' + +--- + +## Documentation Change + + +### Affected Page(s) + + - + +### What Could Be Better? + + +### Other Information + diff --git a/.github/ISSUE_TEMPLATE/documentation.yaml b/.github/ISSUE_TEMPLATE/documentation.yaml deleted file mode 100644 index 32e58533..00000000 --- a/.github/ISSUE_TEMPLATE/documentation.yaml +++ /dev/null @@ -1,41 +0,0 @@ -name: Documentation Change -description: Request or report any updates to our documentation (https://jrnl.sh) -title: Documentation Change -labels: [ ":new:", "documentation" ] -body: - - type: markdown - attributes: - value: | - # Documentation Change - Hello, and thank you for reporting an issue! - - Please fill out the points below, as it will make our process much easier. - - - type: textarea - id: affected-pages - attributes: - label: Affected Page(s) - description: > - Please tell us which page, or pages, from the documentation site - (https://jrnl.sh) are affected in this issue - placeholder: "example: https://jrnl.sh/en/stable/overview" - validations: - required: true - - - type: textarea - id: what-could-be-better - attributes: - label: What Could Be Better? - description: > - Please write a short description of what you hope can be clarified or - further explained. - validations: - required: true - - - type: textarea - id: other-info - attributes: - label: Other Information - description: Is there anything else we should know that might be helpful? - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..d9061604 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,31 @@ +--- +name: Feature request +about: Suggest an idea for jrnl +title: '' +labels: ":new:, enhancement" +assignees: '' + +--- + +## Feature Request + + +### Use Case/Motivation + + +### Example Usage + + +### Other information + diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml deleted file mode 100644 index 9d0494c4..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ /dev/null @@ -1,43 +0,0 @@ -name: Feature Request -description: Suggest an idea for jrnl -title: "Feature Report" -labels: [ ":new:", "enhancement" ] -body: - - type: markdown - attributes: - value: | - # Feature Request - Hello, and thank you for reporting an issue! - - Please fill out the points below, as it will make our process much easier. - - - type: textarea - id: user-case - attributes: - label: Use Case/Motivation - description: What is the motivation / use case for changing the behavior? - placeholder: Tell us about your idea - validations: - required: true - - - type: textarea - id: example-usage - attributes: - label: Example Usage - description: Please provide examples of the usage you would like to see. - placeholder: e.g `jrnl --new-flag="super cool new feature"` - validations: - required: true - - - type: textarea - id: other-info - attributes: - label: Other Information - description: > - Is there anything else we should know? - - (e.g. more detailed explanation, stacktraces, related - issues, suggestions how to fix, links for us to have context, eg. - stackoverflow, gitter, etc) - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/support_request.md b/.github/ISSUE_TEMPLATE/support_request.md new file mode 100644 index 00000000..e7d1a96f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/support_request.md @@ -0,0 +1,40 @@ +--- +name: Support Request +about: Get help with jrnl +title: '' +labels: ":new:, support" +assignees: '' + +--- + +## Support Request + + +### Environment + + - Jrnl `--diagnostic` output: + - Install method: + +### What are you trying to do? + + +### What have you tried? + + +### Other Information + diff --git a/.github/ISSUE_TEMPLATE/support_request.yaml b/.github/ISSUE_TEMPLATE/support_request.yaml deleted file mode 100644 index 21c9bddc..00000000 --- a/.github/ISSUE_TEMPLATE/support_request.yaml +++ /dev/null @@ -1,54 +0,0 @@ -name: Support Request -description: Get help with jrnl -title: Support Request -labels: [ ":new:", "support" ] -body: - - type: markdown - attributes: - value: | - # Support Request - Hello, and thank you for reporting an issue! - - Please fill out the points below, as it will make our process much easier. - - - type: textarea - id: diagnostic - attributes: - label: Diagnostic output - description: Run `jrnl --diagnostic` and paste the output below - placeholder: Paste output here - validations: - required: true - - - type: textarea - id: current-behavior - attributes: - label: What are you trying to do? - description: Please put a short description of what is happening. - placeholder: Tell us what is happening - validations: - required: true - - - type: textarea - id: tried - attributes: - label: What have you tried? - description: > - Have you tried anything to fix the problem? This can help give us more - information to help you with. - placeholder: Tell us what should be happening - validations: - required: true - - - type: textarea - id: other-info - attributes: - label: Other Information - description: > - Is there anything else we should know? - - (e.g. more detailed explanation, stacktraces, related - issues, suggestions how to fix, links for us to have context, eg. - stackoverflow, gitter, etc) - validations: - required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 37711e2c..695290e8 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -12,13 +12,13 @@ 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/develop/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. - [ ] I have written new tests for these changes, as needed. diff --git a/.github/actionlint-matcher.json b/.github/actionlint-matcher.json deleted file mode 100644 index 4613e161..00000000 --- a/.github/actionlint-matcher.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "problemMatcher": [ - { - "owner": "actionlint", - "pattern": [ - { - "regexp": "^(?:\\x1b\\[\\d+m)?(.+?)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*: (?:\\x1b\\[\\d+m)*(.+?)(?:\\x1b\\[\\d+m)* \\[(.+?)\\]$", - "file": 1, - "line": 2, - "column": 3, - "message": 4, - "code": 5 - } - ] - } - ] -} diff --git a/.github/actions/run_tests/action.yaml b/.github/actions/run_tests/action.yaml deleted file mode 100644 index 490a00c4..00000000 --- a/.github/actions/run_tests/action.yaml +++ /dev/null @@ -1,46 +0,0 @@ -name: run jrnl tests -description: Runs all jrnl tests on multiple platforms -inputs: - cache-string: - description: 'Cache string secret. Change to bust the cache' - required: true -runs: - using: "composite" - steps: - - run: git config --global core.autocrlf false - shell: bash - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - 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 - shell: bash - - - name: poetry cache # Change CACHE_STRING secret to bust the cache - uses: actions/cache@v4 - with: - path: .venv - key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ env.PYTHON_FULL_VERSION }}-${{ inputs.cache-string }} - - - name: Install dependencies - run: | - echo '::group::poetry' - pip --disable-pip-version-check install poetry - poetry config --local virtualenvs.in-project true - echo '::endgroup::' - - echo '::group::Other dependencies' - poetry sync - echo '::endgroup::' - - echo 'DEPS_INSTALLED=true' >> $GITHUB_ENV - shell: bash - - - name: Linting & Testing - if: ${{ env.DEPS_INSTALLED == 'true' }} - run: poetry run poe test - shell: bash diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..070f47f8 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: +- package-ecosystem: pip + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 + reviewers: + - wren + - micahellison + labels: + - packaging diff --git a/.github/renovate.json b/.github/renovate.json deleted file mode 100644 index 5aa9f254..00000000 --- a/.github/renovate.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:base" - ], - "schedule": [ "at any time" ], - "prConcurrentLimit": 10, - "prHourlyLimit": 10, - "reviewers": [ - "wren", - "micahellison" - ], - "labels": [ "packaging" ] -} diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml index a9347a13..c8d184ec 100644 --- a/.github/workflows/changelog.yaml +++ b/.github/workflows/changelog.yaml @@ -1,6 +1,3 @@ -# Copyright © 2012-2023 jrnl contributors -# License: https://www.gnu.org/licenses/gpl-3.0.html - name: Changelog on: @@ -21,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v2 with: token: ${{ secrets.JRNL_BOT_TOKEN }} @@ -52,14 +49,14 @@ jobs: if [[ ! ${GITHUB_REF##*/} =~ $prerelease_regex ]]; then echo '::debug::Actual release (not a prerelease)' TAG_REGEX="$prerelease_regex" - echo "FULL_RELEASE=true" >> "$GITHUB_ENV" + echo "FULL_RELEASE=true" >> $GITHUB_ENV fi fi echo "::debug::TAG_REGEX: $TAG_REGEX" - if [[ "$(git rev-parse "origin/$BRANCH")" != "$GITHUB_SHA" ]]; then + if [[ "$(git rev-parse "origin/$BRANCH")" != $GITHUB_SHA ]]; then # Normal build on a branch (no tag) - echo "::debug::BRANCH: $BRANCH $(git rev-parse "origin/$BRANCH")" + echo "::debug::BRANCH: $BRANCH $(git rev-parse origin/$BRANCH)" echo "::debug::GITHUB_SHA: $GITHUB_SHA" echo "::error::$BRANCH has been updated since build started. Aborting changelog." exit 1 @@ -72,12 +69,10 @@ jobs: echo "::debug::FILENAME: CHANGELOG.md" echo "::debug::SINCE_TAG: $SINCE_TAG" - { - echo "BRANCH=$BRANCH" - echo "TAG_REGEX=$TAG_REGEX" - echo "FILENAME=CHANGELOG.md" - echo "SINCE_TAG=$SINCE_TAG" - } >> "$GITHUB_ENV" + echo "BRANCH=$BRANCH" >> $GITHUB_ENV + echo "TAG_REGEX=$TAG_REGEX" >> $GITHUB_ENV + echo "FILENAME=CHANGELOG.md" >> $GITHUB_ENV + echo "SINCE_TAG=$SINCE_TAG" >> $GITHUB_ENV - name: Prep changelog file (clear out old lines) run: | @@ -97,7 +92,7 @@ jobs: exit 1 fi - sed -i "1,$(( tagline - 1 ))d" "$FILENAME" + sed -i "1,$(expr $tagline - 1)d" "$FILENAME" # delete generated line (or it will be added multiple times) sed -i '/This Changelog was automatically generated by/d' "$FILENAME" # delete trailing empty lines @@ -141,30 +136,22 @@ jobs: SOMETHING_CHANGED=false git diff --exit-code || SOMETHING_CHANGED=true echo "::debug::SOMETHING_CHANGED: $SOMETHING_CHANGED" - echo "SOMETHING_CHANGED=$SOMETHING_CHANGED" >> "$GITHUB_ENV" + echo "SOMETHING_CHANGED=$SOMETHING_CHANGED" >> $GITHUB_ENV - name: Commit if: env.SOMETHING_CHANGED == 'true' run: | - git config --global user.name "${{ secrets.JRNL_BOT_NAME }}" - git config --global user.email "${{ secrets.JRNL_BOT_EMAIL }}" + git config user.email "jrnl.bot@gmail.com" + git config user.name "Jrnl Bot" git add "$FILENAME" git commit -m "Update changelog [ci skip]" - git push origin "$BRANCH" - - - name: Update tag to include changelog - if: startsWith(env.GITHUB_REF, 'refs/tags/') - run: | - # This is a tag build (releases and prereleases) - # update the tag to include the changelog - git tag -fam "$GITHUB_REF_NAME" "$GITHUB_REF_NAME" - git push --tags --force + git push origin $BRANCH - name: Merge to Release branch if: env.FULL_RELEASE == 'true' run: | git fetch --unshallow origin git checkout release - git merge --ff-only "$BRANCH" + git merge --ff-only $BRANCH git push origin release diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 3f5fe714..3b8cfa96 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -1,6 +1,3 @@ -# Copyright © 2012-2023 jrnl contributors -# License: https://www.gnu.org/licenses/gpl-3.0.html - name: Docs on: @@ -12,8 +9,6 @@ on: - 'mkdocs.yml' - 'readthedocs.yml' - '.github/workflows/docs.yaml' - - 'tasks.py' - - 'pyproject.toml' pull_request: branches: [ develop ] paths: @@ -22,41 +17,31 @@ on: - 'mkdocs.yml' - 'readthedocs.yml' - '.github/workflows/docs.yaml' - - 'tasks.py' - - 'pyproject.toml' jobs: accessibility: if: contains(toJson(github.event.commits), '[ci skip]') == false runs-on: ubuntu-latest - strategy: - fail-fast: true - matrix: - python-version: [ '3.11' ] - os: [ ubuntu-latest ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v2 with: - python-version: ${{ matrix.python-version }} + python-version: 3.9 - name: Setup Node.js environment uses: actions/setup-node@main - - name: Capture full Python version in env - run: echo "PYTHON_FULL_VERSION=$(python --version)" >> "$GITHUB_ENV" - - name: poetry cache - uses: actions/cache@v4 + uses: actions/cache@v2 with: path: .venv - key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ env.PYTHON_FULL_VERSION }}-${{ secrets.CACHE_STRING }} + key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ matrix.python-version }} - name: npm cache - uses: actions/cache@v4 + uses: actions/cache@v2 with: path: node_modules key: ${{ runner.os }}-pa11y-v3 @@ -65,12 +50,19 @@ jobs: run: | pip install poetry poetry config --local virtualenvs.in-project true - poetry sync --no-root - npm install - echo "node_modules/.bin" >> "$GITHUB_PATH" + poetry install --no-root --remove-untracked + npm install pa11y-ci + echo "node_modules/.bin" >> $GITHUB_PATH - name: Start docs server - run: poetry run poe docs-run & + run: poetry run mkdocs serve & + + - name: Generate sitemap + env: + site_url: http://127.0.0.1:8000 + run: | + select="{urls: [\"${site_url}/\", \"${site_url}/search.html?q=jrnl\", .urlset.url[].loc]}" + curl -s "$site_url/sitemap.xml" | poetry run xq "$select" > list.json - name: Accessibility testing (Pa11y) - run: poetry run poe docs-check + run: pa11y-ci -c list.json diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f8e203b2..5e0169c1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,22 +1,20 @@ -# Copyright © 2012-2023 jrnl contributors -# License: https://www.gnu.org/licenses/gpl-3.0.html - name: Release on: workflow_dispatch: inputs: version: description: 'Version (e.g. v2.5, v2.5.1-beta, v2.6-beta2)' - type: string required: true include_repo_version: - description: 'Update version in repo?' - type: boolean - required: true + description: 'Update version in repo? (true/false)' + require: true default: true include_pypi: - description: 'Publish to PyPI?' - type: boolean + description: 'Publish to PyPI? (true/false)' + required: true + default: true + include_brew: + description: 'Publish to Homebrew? (true/false)' required: true default: true @@ -58,15 +56,15 @@ jobs: run: | JRNL_VERSION="${{ github.event.inputs.version }}" echo "::debug::version: $JRNL_VERSION" - echo "JRNL_VERSION=$JRNL_VERSION" >> "$GITHUB_ENV" + echo "JRNL_VERSION=$JRNL_VERSION" >> $GITHUB_ENV - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v2 with: - python-version: '3.13' + python-version: 3.9 - name: Checkout repo - uses: actions/checkout@v4 + uses: actions/checkout@v2 with: token: ${{ secrets.JRNL_BOT_TOKEN }} @@ -82,7 +80,7 @@ jobs: if: ${{ github.event.inputs.include_repo_version == 'true' }} run: | poetry version "$JRNL_VERSION" - echo "__version__ = \"$JRNL_VERSION\"" > jrnl/__version__.py + echo __version__ = \"$JRNL_VERSION\" > jrnl/__version__.py - name: Commit updated files if: ${{ github.event.inputs.include_repo_version == 'true' && github.repository == env.HOME_REPO }} @@ -105,5 +103,113 @@ jobs: - name: Get PyPI version id: pypi-version-getter run: | - pypi_version="$(find dist/jrnl-*.tar.gz | sed -r 's!dist/jrnl-(.*)\.tar\.gz!\1!')" - echo "pypi_version=$pypi_version" >> "$GITHUB_OUTPUT" + pypi_version="$(ls dist/jrnl-*.tar.gz | sed -r 's!dist/jrnl-(.*)\.tar\.gz!\1!')" + echo "::set-output name=pypi_version::$pypi_version" + + release_homebrew: + if: ${{ github.event.inputs.include_brew == 'true' }} + needs: release_pypi + name: "Release to Homebrew" + runs-on: macos-latest + env: + HOMEBREW_NO_AUTO_UPDATE: 1 + HOMEBREW_NO_INSTALL_CLEANUP: 1 + HOME_REPO: ${{ secrets.HOME_REPO }} + steps: + - name: Get version + run: | + JRNL_VERSION="${{ github.event.inputs.version }}" + PYPI_VERSION="${{ needs.release_pypi.outputs.pypi_version }}" + + echo "::debug::jrnl version: $JRNL_VERSION" + echo "::debug::pypi version: $PYPI_VERSION" + + echo "JRNL_VERSION=$JRNL_VERSION" >> $GITHUB_ENV + echo "PYPI_VERSION=$PYPI_VERSION" >> $GITHUB_ENV + + - name: Set env variables + env: + REPO_OWNER: ${{ github.repository_owner }} + run: | + if [[ $JRNL_VERSION =~ (alpha|beta) ]]; then + echo '::debug::Prerelease (not a full release)' + { + echo "RELEASE_TYPE=pre" + echo "FORMULA_REPO=${REPO_OWNER}/homebrew-prerelease" + echo "BOT_REPO=jrnl-bot/homebrew-prerelease" + echo "FORMULA_NAME=jrnl-beta" + } >> $GITHUB_ENV + else + echo '::debug::Full release (not a prerelease)' + if [[ "${{ github.repository }}" == "${HOME_REPO}" ]]; then + REPO_OWNER="homebrew" + fi + { + echo "RELEASE_TYPE=full" + echo "FORMULA_REPO=${REPO_OWNER}/homebrew-core" + echo "BOT_REPO=jrnl-bot/homebrew-core" + echo "FORMULA_NAME=jrnl" + } >> $GITHUB_ENV + fi + + - name: Tap formula + run: | + brew tap ${FORMULA_REPO} + echo '::debug::Set tap directory' + echo "BREW_TAP_DIRECTORY=$(brew --repo ${FORMULA_REPO})" >> $GITHUB_ENV + - name: Install dependencies + run: brew install pipgrip + + - name: Query PyPI API + uses: nick-invision/retry@v2 + with: + timeout_seconds: 10 + max_attempts: 30 + retry_wait_seconds: 10 + command: | + curl -Ls https://pypi.org/pypi/jrnl/json > api_response.json + # if query doesn't have our version yet, give it some time before trying again + if [[ "null" == "$(jq ".releases[\"${PYPI_VERSION}\"][1].url" -r api_response.json)" ]]; then + echo "::debug::PYPI_VERSION: $PYPI_VERSION" + echo "::debug::JQ VALUE: $(jq ".releases[\"${PYPI_VERSION}\"][1].url" -r api_response.json)" + echo "::group::cat api_response.json" + cat api_response.json + echo "::endgroup::" + exit 1 + fi + + - name: Update Homebrew Formula + uses: nick-invision/retry@v2 + with: + timeout_minutes: 8 + max_attempts: 6 + retry_wait_seconds: 30 + command: > + brew bump-formula-pr "${FORMULA_NAME}" + --url $(jq ".releases[\"${PYPI_VERSION}\"][1].url" -r api_response.json) + --sha256 $(jq ".releases[\"${PYPI_VERSION}\"][1].digests.sha256" -r api_response.json) + --no-audit + --write + --force + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v3 + with: + path: ${{ env.BREW_TAP_DIRECTORY }} + token: ${{ secrets.JRNL_BOT_TOKEN }} + push-to-fork: ${{ env.BOT_REPO }} + + committer: ${{ secrets.JRNL_BOT_NAME }} <${{ secrets.JRNL_BOT_EMAIL }}> + author: ${{ secrets.JRNL_BOT_NAME }} <${{ secrets.JRNL_BOT_EMAIL }}> + + title: jrnl ${{ env.JRNL_VERSION }} + body: Created with `brew bump-formula-pr` + + branch: jrnl-${{ env.JRNL_VERSION }}-- + branch-suffix: random + commit-message: | + jrnl ${{ env.JRNL_VERSION }} + + Update jrnl to ${{ env.JRNL_VERSION }} + + ${{ secrets.RELEASE_COAUTHORS }} diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml new file mode 100644 index 00000000..2976399f --- /dev/null +++ b/.github/workflows/testing.yaml @@ -0,0 +1,101 @@ +name: Testing + +on: + push: + branches: [ develop, release ] + paths: + - 'jrnl/**' + - 'features/**' + - 'tests/**' + - 'poetry.lock' + - 'pyproject.toml' + - '.github/workflows/testing.yaml' + pull_request: + branches: [ develop ] + paths: + - 'jrnl/**' + - 'features/**' + - 'tests/**' + - 'poetry.lock' + - 'pyproject.toml' + - '.github/workflows/testing.yaml' + +defaults: + run: + shell: bash # needed to prevent Windows from using PowerShell + +jobs: + test: + if: > + ! contains(github.event.head_commit.message, '[ci skip]') + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.python-version == '3.10-dev' }} + strategy: + fail-fast: false + matrix: + python-version: [ 3.7, 3.8, 3.9, 3.10-dev ] + os: [ ubuntu-latest, macos-latest, windows-latest ] + + steps: + - run: git config --global core.autocrlf false + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: poetry cache + uses: actions/cache@v2 + with: + path: .venv + key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ matrix.python-version }}-v2 + + - name: Install dependencies + if: ${{ matrix.python-version != '3.10-dev' }} + run: | + echo '::group::poetry' + pip install poetry + poetry config --local virtualenvs.in-project true + echo '::endgroup::' + + echo '::group::Other dependencies' + poetry install --remove-untracked + echo '::endgroup::' + + echo 'DEPS_INSTALLED=true' >> $GITHUB_ENV + + + - name: Install dependencies (Prerelease) + if: ${{ matrix.python-version == '3.10-dev' }} + run: | + echo '::group::poetry' + pip install poetry==1.2.0a2 + poetry config --local virtualenvs.in-project true + echo '::endgroup::' + + echo '::group::Other dependencies' + poetry install --remove-untracked --no-dev --extras testing + echo '::endgroup::' + + echo 'DEPS_INSTALLED=true' >> $GITHUB_ENV + + - name: Code formatting (Black) + if: ${{ matrix.python-version != '3.10-dev' && env.DEPS_INSTALLED == 'true' }} + run: | + poetry run black --version + poetry run black --check --diff . + + - name: Code Style (flake8) + if: ${{ matrix.python-version != '3.10-dev' && env.DEPS_INSTALLED == 'true' }} + run: | + poetry run pflake8 --version + poetry run pflake8 jrnl features tests + + - name: Test with pytest + if: ${{ env.DEPS_INSTALLED == 'true' }} + run: poetry run pytest --junitxml=reports/pytest/results.xml + + - name: Test with behave + if: ${{ env.DEPS_INSTALLED == 'true' }} + run: poetry run behave --no-skipped --format progress2 --junit --junit-directory reports/behave diff --git a/.github/workflows/testing_pipelines.yaml b/.github/workflows/testing_pipelines.yaml deleted file mode 100644 index fbba51f1..00000000 --- a/.github/workflows/testing_pipelines.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright © 2012-2023 jrnl contributors -# License: https://www.gnu.org/licenses/gpl-3.0.html - -name: Testing Pipeline Files - -on: - push: - branches: [ develop, release ] - paths: - - '.github/workflows/**' - - '.github/actions/**' - pull_request: - branches: [ develop ] - paths: - - '.github/workflows/**' - - '.github/actions/**' - schedule: - - cron: '0 0 * * SAT' - -jobs: - test: - if: > - ! contains(github.event.head_commit.message, '[ci skip]') - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ ubuntu-latest ] - steps: - - run: git config --global core.autocrlf false - - uses: actions/checkout@v4 - - name: Check workflow files - uses: docker://rhysd/actionlint:latest - with: - args: -color diff --git a/.github/workflows/testing_prs.yaml b/.github/workflows/testing_prs.yaml deleted file mode 100644 index 42a3f86f..00000000 --- a/.github/workflows/testing_prs.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright © 2012-2023 jrnl contributors -# License: https://www.gnu.org/licenses/gpl-3.0.html - -name: Testing - -on: - push: - branches: [ develop, release ] - paths: - - 'jrnl/**' - - 'features/**' - - 'tests/**' - - 'poetry.lock' - - 'pyproject.toml' - - '.github/workflows/testing_prs.yaml' - - 'tasks.py' - pull_request: - branches: [ develop ] - paths: - - 'jrnl/**' - - 'features/**' - - 'tests/**' - - 'poetry.lock' - - 'pyproject.toml' - - '.github/workflows/testing_prs.yaml' - - 'tasks.py' - -defaults: - run: - shell: bash # needed to prevent Windows from using PowerShell - -jobs: - test: - if: > - ! contains(github.event.head_commit.message, '[ci skip]') - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - python-version: [ '3.10', '3.11', '3.12', '3.13' ] - os: [ ubuntu-latest, macos-latest, windows-latest ] - steps: - - run: git config --global core.autocrlf false - - uses: actions/checkout@v4 - - name: Run tests - uses: ./.github/actions/run_tests - with: - cache-string: ${{ secrets.CACHE_STRING }} diff --git a/.github/workflows/testing_schedule.yaml b/.github/workflows/testing_schedule.yaml deleted file mode 100644 index 9791349c..00000000 --- a/.github/workflows/testing_schedule.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright © 2012-2023 jrnl contributors -# License: https://www.gnu.org/licenses/gpl-3.0.html - -name: Testing - -on: - schedule: - - cron: '0 0 * * SAT' - -defaults: - run: - shell: bash # needed to prevent Windows from using PowerShell - -jobs: - test_all: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - python-version: [ '3.10', '3.11', '3.12', '3.13' ] - os: [ ubuntu-latest, macos-latest, windows-latest ] - steps: - - run: git config --global core.autocrlf false - - uses: actions/checkout@v4 - - name: Run tests - uses: ./.github/actions/run_tests - with: - cache-string: ${{ secrets.CACHE_STRING }} diff --git a/.gitignore b/.gitignore index 938692b0..374deb4b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,63 +1,63 @@ -# Byte-compiled DLL and Shared Library files *.py[cod] + +# C extensions *.so +.python-version # Packages *.egg -*.egg-info/ +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs .installed.cfg -bin/ -build/ -develop-eggs/ -dist/ -eggs/ -lib64/ -parts/ -sdist/ -.tox/ -var/ -node_modules/ -__pycache__/ -.pytest_cache/ -.flakeheaven_cache/ - -# Versioning +lib +lib64 .python-version -.tool-versions # Installer logs +pip-log.txt .DS_Store .travis-solo Icon -pip-log.txt # Documentation _build _sources _static -coverage.xml -exp/ objects.inv searchindex.js -# virtualenv -.venv*/ +# MS Visual Studio (PyTools) +obj +*.pyproj +*.sln +*.suo + +# virtaulenv env/ env*/ venv*/ +.venv*/ -# Editor and IDE specific files -# Since contributors may want to user a variety of development tools it is -# recommended that editor specific file types be ignored globally by each -# contributor via a global gitignore. Instructions for setting up a global -# ignore file can be found here: -# https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files -# (Configuring ignored files for all repositories on your computer) -# Examples of such files are: -# MS Visual Studio (PyTools) -# obj -# *.suo -# PyCharm -# .idea/ -# VS Code -# .vscode/settings.json \ No newline at end of file +# PyCharm Project files +.idea/ + +# export testing directories +exp/ + +_extras/ +*.sublime-* +site/ + +.vscode/settings.json +coverage.xml +.vscode/launch.json +.coverage +.vscode/tasks.json +todo.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index ba714328..6817dfc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,446 +2,17 @@ ## [Unreleased](https://github.com/jrnl-org/jrnl/) -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.2.1...HEAD) - -**Fixed bugs:** - -- poetry warning - "poetry.dev-dependencies" section is deprecated [\#1975](https://github.com/jrnl-org/jrnl/issues/1975) -- Homebrew autobump error on jrnl release [\#1961](https://github.com/jrnl-org/jrnl/issues/1961) - -**Build:** - -- Remove release step to publish to Homebrew [\#1994](https://github.com/jrnl-org/jrnl/pull/1994) ([micahellison](https://github.com/micahellison)) - -**Packaging:** - -- Update dependency rich to v14 [\#1989](https://github.com/jrnl-org/jrnl/pull/1989) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency python to 3.13 [\#1988](https://github.com/jrnl-org/jrnl/pull/1988) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tox to v4.25.0 [\#1986](https://github.com/jrnl-org/jrnl/pull/1986) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tzlocal to v5.3.1 [\#1984](https://github.com/jrnl-org/jrnl/pull/1984) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency jinja2 to v3.1.6 [\#1983](https://github.com/jrnl-org/jrnl/pull/1983) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency poethepoet to v0.33.1 [\#1982](https://github.com/jrnl-org/jrnl/pull/1982) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest to v8.3.5 [\#1981](https://github.com/jrnl-org/jrnl/pull/1981) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency cryptography to v44.0.2 [\#1980](https://github.com/jrnl-org/jrnl/pull/1980) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruff to v0.11.3 [\#1978](https://github.com/jrnl-org/jrnl/pull/1978) ([renovate[bot]](https://github.com/apps/renovate)) - -## [v4.2.1](https://pypi.org/project/jrnl/v4.2.1/) (2025-02-25) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.2...v4.2.1) - -**Documentation:** - -- Typing animation in landing page is broken [\#1969](https://github.com/jrnl-org/jrnl/issues/1969) - -**Packaging:** - -- Update dependency pytest to \>=8.1.1 [\#1974](https://github.com/jrnl-org/jrnl/pull/1974) ([wren](https://github.com/wren)) -- Update dependency black to v25 [\#1973](https://github.com/jrnl-org/jrnl/pull/1973) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tzlocal to v5.3 [\#1972](https://github.com/jrnl-org/jrnl/pull/1972) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruamel.yaml to v0.18.10 [\#1967](https://github.com/jrnl-org/jrnl/pull/1967) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency jinja2 to v3.1.5 [\#1966](https://github.com/jrnl-org/jrnl/pull/1966) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency cryptography to v44 [\#1962](https://github.com/jrnl-org/jrnl/pull/1962) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest-bdd to v8.1.0 [\#1952](https://github.com/jrnl-org/jrnl/pull/1952) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency poethepoet to v0.32.2 [\#1951](https://github.com/jrnl-org/jrnl/pull/1951) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency keyring to v25.6.0 [\#1948](https://github.com/jrnl-org/jrnl/pull/1948) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruff to v0.9.7 [\#1947](https://github.com/jrnl-org/jrnl/pull/1947) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency rich to v13.9.4 [\#1946](https://github.com/jrnl-org/jrnl/pull/1946) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tox to v4.24.1 [\#1945](https://github.com/jrnl-org/jrnl/pull/1945) ([renovate[bot]](https://github.com/apps/renovate)) - -## [v4.2](https://pypi.org/project/jrnl/v4.2/) (2024-11-17) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.2-beta...v4.2) +[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v2.8.2...HEAD) **Implemented enhancements:** -- Add Python 3.13 support [\#1893](https://github.com/jrnl-org/jrnl/issues/1893) -- Add calendar heatmap display format [\#1759](https://github.com/jrnl-org/jrnl/pull/1759) ([alichtman](https://github.com/alichtman)) - -**Fixed bugs:** - -- -contains doesn't accept multiple search terms, doesn't work with -and [\#1877](https://github.com/jrnl-org/jrnl/issues/1877) -- Tests failing on develop branch starting with pytest-bdd 7.1.2 [\#1875](https://github.com/jrnl-org/jrnl/issues/1875) -- Ignore color when used in a pipeline [\#1839](https://github.com/jrnl-org/jrnl/issues/1839) -- Fix -contains to allow multiple terms with "OR" logic unless -and is added [\#1890](https://github.com/jrnl-org/jrnl/pull/1890) ([eigenric](https://github.com/eigenric)) - -**Documentation:** - -- Recommend pipx as default installation method [\#1888](https://github.com/jrnl-org/jrnl/issues/1888) -- Remove documentation recommendation to install pipx through brew or pip [\#1886](https://github.com/jrnl-org/jrnl/issues/1886) -- Document security risks of using a computer that someone else has admin access to [\#1793](https://github.com/jrnl-org/jrnl/issues/1793) -- Recommend pipx as easiest installation method for all OSes and remove warning about apt [\#1889](https://github.com/jrnl-org/jrnl/pull/1889) ([micahellison](https://github.com/micahellison)) -- Docs accessibility checker failure - contrast ratio [\#1934](https://github.com/jrnl-org/jrnl/issues/1934) -- Docs accessibility test runner failing [\#1932](https://github.com/jrnl-org/jrnl/issues/1932) - -**Packaging:** - -- Update actions/cache action to v4 [\#1847](https://github.com/jrnl-org/jrnl/pull/1847) ([renovate[bot]](https://github.com/apps/renovate)) -- Update actions/setup-python action to v5 [\#1848](https://github.com/jrnl-org/jrnl/pull/1848) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency black to v24.8.0 [\#1923](https://github.com/jrnl-org/jrnl/pull/1923) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency cryptography to v43.0.3 [\#1942](https://github.com/jrnl-org/jrnl/pull/1942) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency jinja2 to v3.1.4 [\#1892](https://github.com/jrnl-org/jrnl/pull/1892) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency keyring to v25.4.1 [\#1924](https://github.com/jrnl-org/jrnl/pull/1924) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency mkdocs to v1.6.1 [\#1895](https://github.com/jrnl-org/jrnl/pull/1895) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pa11y-ci to v3.1.0 [\#1831](https://github.com/jrnl-org/jrnl/pull/1831) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency parse-type to v0.6.4 [\#1936](https://github.com/jrnl-org/jrnl/pull/1936) ([renovate[bot]](https://github.com/apps/renovate)) -- Update peter-evans/create-pull-request action to v7 [\#1929](https://github.com/jrnl-org/jrnl/pull/1929) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency poethepoet to v0.29.0 [\#1925](https://github.com/jrnl-org/jrnl/pull/1925) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest to v7.4.4 [\#1845](https://github.com/jrnl-org/jrnl/pull/1845) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest-bdd to v7.3.0 [\#1896](https://github.com/jrnl-org/jrnl/pull/1896) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest-xdist to v3.6.1 [\#1897](https://github.com/jrnl-org/jrnl/pull/1897) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency python-dateutil to v2.9.0 [\#1898](https://github.com/jrnl-org/jrnl/pull/1898) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency requests to v2.32.3 [\#1899](https://github.com/jrnl-org/jrnl/pull/1899) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency rich to v13.9.2 [\#1937](https://github.com/jrnl-org/jrnl/pull/1937) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruamel.yaml to v0.18.6 [\#1855](https://github.com/jrnl-org/jrnl/pull/1855) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruff to v0.7.0 [\#1938](https://github.com/jrnl-org/jrnl/pull/1938) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tox to v4.23.0 [\#1935](https://github.com/jrnl-org/jrnl/pull/1935) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency typed.js to v2.1.0 [\#1861](https://github.com/jrnl-org/jrnl/pull/1861) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency xmltodict to v0.14.2 [\#1940](https://github.com/jrnl-org/jrnl/pull/1940) ([renovate[bot]](https://github.com/apps/renovate)) -- Update nick-invision/retry action to v3 [\#1851](https://github.com/jrnl-org/jrnl/pull/1851) ([renovate[bot]](https://github.com/apps/renovate)) -- Update peter-evans/create-pull-request action to v6 [\#1852](https://github.com/jrnl-org/jrnl/pull/1852) ([renovate[bot]](https://github.com/apps/renovate)) - -## [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) - -**Fixed bugs:** - -- jrnl crashes when running `jrnl --list --format json` and `jrnl --list --format yaml` [\#1737](https://github.com/jrnl-org/jrnl/issues/1737) -- Refactor --template code [\#1711](https://github.com/jrnl-org/jrnl/pull/1711) ([micahellison](https://github.com/micahellison)) - -**Build:** - -- Fix linting issue in CI pipeline [\#1743](https://github.com/jrnl-org/jrnl/pull/1743) ([wren](https://github.com/wren)) - -**Packaging:** - -- Update dependency ruamel.yaml to v0.17.28 [\#1749](https://github.com/jrnl-org/jrnl/pull/1749) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency requests to v2.31.0 [\#1748](https://github.com/jrnl-org/jrnl/pull/1748) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruamel.yaml to v0.17.26 [\#1746](https://github.com/jrnl-org/jrnl/pull/1746) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tzlocal to v5 [\#1741](https://github.com/jrnl-org/jrnl/pull/1741) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest-xdist to v3.3.1 [\#1740](https://github.com/jrnl-org/jrnl/pull/1740) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency poethepoet to v0.20.0 [\#1735](https://github.com/jrnl-org/jrnl/pull/1735) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency mkdocs to v1.4.3 [\#1733](https://github.com/jrnl-org/jrnl/pull/1733) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency rich to v13.3.5 [\#1729](https://github.com/jrnl-org/jrnl/pull/1729) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency requests to v2.30.0 [\#1728](https://github.com/jrnl-org/jrnl/pull/1728) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tox to v4.5.1 [\#1727](https://github.com/jrnl-org/jrnl/pull/1727) ([renovate[bot]](https://github.com/apps/renovate)) -- Update peter-evans/create-pull-request action to v5 [\#1719](https://github.com/jrnl-org/jrnl/pull/1719) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency flake8-simplify to v0.20.0 [\#1716](https://github.com/jrnl-org/jrnl/pull/1716) ([renovate[bot]](https://github.com/apps/renovate)) - -## [v4.0](https://pypi.org/project/jrnl/v4.0/) (2023-05-20) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.0-beta3...v4.0) - -🚨 **BREAKING CHANGES** 🚨 - -**Deprecated:** - -- Drop Python 3.9 and use Python 3.11 official release [\#1611](https://github.com/jrnl-org/jrnl/pull/1611) ([micahellison](https://github.com/micahellison)) - -**Implemented enhancements:** - -- Add message with config location and docs location when installation is complete [\#1695](https://github.com/jrnl-org/jrnl/pull/1695) ([micahellison](https://github.com/micahellison)) -- Prompt to include colors in config when first running jrnl [\#1687](https://github.com/jrnl-org/jrnl/pull/1687) ([micahellison](https://github.com/micahellison)) -- Add ability to use template with `--template` [\#1667](https://github.com/jrnl-org/jrnl/pull/1667) ([alichtman](https://github.com/alichtman)) -- Search for entries with no tags or stars with `-not -starred` and `-not -tagged` [\#1663](https://github.com/jrnl-org/jrnl/pull/1663) ([cjcon90](https://github.com/cjcon90)) -- Refactor flow for easier access to some files \(avoid things like `jrnl.Journal.Journal` and `jrnl.jrnl` co-existing\) [\#1662](https://github.com/jrnl-org/jrnl/pull/1662) ([wren](https://github.com/wren)) -- Add more type hints [\#1642](https://github.com/jrnl-org/jrnl/pull/1642) ([outa](https://github.com/outa)) -- Add `rich` handler to debug logging [\#1627](https://github.com/jrnl-org/jrnl/pull/1627) ([wren](https://github.com/wren)) -- Rework Encryption to enable future support of other encryption methods [\#1602](https://github.com/jrnl-org/jrnl/pull/1602) ([wren](https://github.com/wren)) - -**Fixed bugs:** - -- Only read text files that look like entries when opening folder journal [\#1697](https://github.com/jrnl-org/jrnl/pull/1697) ([micahellison](https://github.com/micahellison)) -- Save empty journal on install instead of just creating a zero-length file [\#1690](https://github.com/jrnl-org/jrnl/pull/1690) ([micahellison](https://github.com/micahellison)) -- Allow combinations of `--change-time`, `--delete`, and `--edit` while correctly counting the number of entries affected [\#1669](https://github.com/jrnl-org/jrnl/pull/1669) ([wren](https://github.com/wren)) -- Don't save templated journal entries if the received raw text is the same as the template itself [\#1653](https://github.com/jrnl-org/jrnl/pull/1653) ([Briscoooe](https://github.com/Briscoooe)) -- Add tag to XML file when edited DayOne entry and is searchable afterward [\#1648](https://github.com/jrnl-org/jrnl/pull/1648) ([jonakeys](https://github.com/jonakeys)) -- Update version key in config file after version changes [\#1646](https://github.com/jrnl-org/jrnl/pull/1646) ([jonakeys](https://github.com/jonakeys)) - -**Build:** - -- Update copyright notices for 2023 [\#1660](https://github.com/jrnl-org/jrnl/pull/1660) ([wren](https://github.com/wren)) -- Fix bug where changelog is always slightly out of date on release tags [\#1631](https://github.com/jrnl-org/jrnl/pull/1631) ([wren](https://github.com/wren)) -- Add `simplify` plugin to linting checks [\#1630](https://github.com/jrnl-org/jrnl/pull/1630) ([wren](https://github.com/wren)) -- Add type hints [\#1614](https://github.com/jrnl-org/jrnl/pull/1614) ([outa](https://github.com/outa)) - -**Documentation:** - -- Update contributing.md links in documentation [\#1726](https://github.com/jrnl-org/jrnl/pull/1726) ([ahosking](https://github.com/ahosking)) -- Fix various typos [\#1718](https://github.com/jrnl-org/jrnl/pull/1718) ([hezhizhen](https://github.com/hezhizhen)) -- Update documentation front page text [\#1698](https://github.com/jrnl-org/jrnl/pull/1698) ([micahellison](https://github.com/micahellison)) -- Support mkdocs 1.4.2 and fix its missing breadcrumb [\#1691](https://github.com/jrnl-org/jrnl/pull/1691) ([micahellison](https://github.com/micahellison)) -- Document temporary file extension behavior when using template [\#1686](https://github.com/jrnl-org/jrnl/pull/1686) ([micahellison](https://github.com/micahellison)) -- Document `-tagged`, `-not -tagged`, and `-not -starred` [\#1684](https://github.com/jrnl-org/jrnl/pull/1684) ([micahellison](https://github.com/micahellison)) -- Update documentation about privacy and security in VSCode [\#1680](https://github.com/jrnl-org/jrnl/pull/1680) ([giuseppedandrea](https://github.com/giuseppedandrea)) -- Update documentation on temporary files naming [\#1673](https://github.com/jrnl-org/jrnl/pull/1673) ([giuseppedandrea](https://github.com/giuseppedandrea)) -- Update docs to include time and title in arguments with `--edit` [\#1657](https://github.com/jrnl-org/jrnl/pull/1657) ([pconrad-fb](https://github.com/pconrad-fb)) -- Fix markup in "Advanced Usage" doc [\#1655](https://github.com/jrnl-org/jrnl/pull/1655) ([multani](https://github.com/multani)) -- Remove Windows 7 known issue since Windows 7 is no longer supported [\#1636](https://github.com/jrnl-org/jrnl/pull/1636) ([micahellison](https://github.com/micahellison)) - -**Packaging:** - -- Lock ruamel.yaml version to v0.17.21 until bug is fixed [\#1738](https://github.com/jrnl-org/jrnl/pull/1738) ([wren](https://github.com/wren)) -- Update dependency black to v23.3.0 [\#1715](https://github.com/jrnl-org/jrnl/pull/1715) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency cryptography to v40.0.2 [\#1723](https://github.com/jrnl-org/jrnl/pull/1723) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency flake8-type-checking to v2.4.0 [\#1714](https://github.com/jrnl-org/jrnl/pull/1714) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency flakeheaven to v3.3.0 [\#1722](https://github.com/jrnl-org/jrnl/pull/1722) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ipdb to v0.13.13 [\#1703](https://github.com/jrnl-org/jrnl/pull/1703) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency poethepoet to v0.19.0 [\#1709](https://github.com/jrnl-org/jrnl/pull/1709) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest to v7.3.1 [\#1720](https://github.com/jrnl-org/jrnl/pull/1720) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest-xdist to v3.2.1 [\#1705](https://github.com/jrnl-org/jrnl/pull/1705) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency rich to v13.3.4 [\#1713](https://github.com/jrnl-org/jrnl/pull/1713) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tox to v4.4.7 [\#1707](https://github.com/jrnl-org/jrnl/pull/1707) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tzlocal to v4.3 [\#1708](https://github.com/jrnl-org/jrnl/pull/1708) ([renovate[bot]](https://github.com/apps/renovate)) - -## [v3.3](https://pypi.org/project/jrnl/v3.3/) (2022-10-29) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v3.3-beta2...v3.3) - -**Implemented enhancements:** - -- Change default config to use journal key [\#1594](https://github.com/jrnl-org/jrnl/pull/1594) ([micahellison](https://github.com/micahellison)) -- Add machine readable --list output [\#1592](https://github.com/jrnl-org/jrnl/pull/1592) ([apainintheneck](https://github.com/apainintheneck)) - -**Fixed bugs:** - -- Fix bug for new `--list --format` options when no default journal is specified [\#1621](https://github.com/jrnl-org/jrnl/pull/1621) ([wren](https://github.com/wren)) -- Don't create empty file when attempting a YAML export to a non-existing folder [\#1600](https://github.com/jrnl-org/jrnl/pull/1600) ([outa](https://github.com/outa)) - -**Build:** - -- Update `.gitignore` [\#1604](https://github.com/jrnl-org/jrnl/pull/1604) ([wren](https://github.com/wren)) -- Fix Docs Accessibility Testing [\#1588](https://github.com/jrnl-org/jrnl/pull/1588) ([wren](https://github.com/wren)) -- Update to use renamed flag for `brew bump-formula-pr` [\#1587](https://github.com/jrnl-org/jrnl/pull/1587) ([wren](https://github.com/wren)) -- Update peter-evans/create-pull-request action to v4 [\#1585](https://github.com/jrnl-org/jrnl/pull/1585) ([renovate[bot]](https://github.com/apps/renovate)) -- Update actions/setup-python action to v4 [\#1583](https://github.com/jrnl-org/jrnl/pull/1583) ([renovate[bot]](https://github.com/apps/renovate)) -- Update actions/checkout action to v3 [\#1582](https://github.com/jrnl-org/jrnl/pull/1582) ([renovate[bot]](https://github.com/apps/renovate)) -- Update actions/cache action to v3 [\#1581](https://github.com/jrnl-org/jrnl/pull/1581) ([renovate[bot]](https://github.com/apps/renovate)) -- Replace Dependabot with Renovate [\#1575](https://github.com/jrnl-org/jrnl/pull/1575) ([renovate[bot]](https://github.com/apps/renovate)) - -**Documentation:** - -- Add documentation about how the editor must be a blocking process [\#1456](https://github.com/jrnl-org/jrnl/issues/1456) -- Document that editors must be blocking processes [\#1624](https://github.com/jrnl-org/jrnl/pull/1624) ([micahellison](https://github.com/micahellison)) -- Remove wrong option in configuration file reference [\#1618](https://github.com/jrnl-org/jrnl/pull/1618) ([DSiekmeier](https://github.com/DSiekmeier)) -- Update YAML export description in docs [\#1591](https://github.com/jrnl-org/jrnl/pull/1591) ([apainintheneck](https://github.com/apainintheneck)) -- Update dependency jinja2 to v3.1.2 [\#1579](https://github.com/jrnl-org/jrnl/pull/1579) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency typed.js to v2.0.12 [\#1578](https://github.com/jrnl-org/jrnl/pull/1578) ([renovate[bot]](https://github.com/apps/renovate)) -- Add hint for how to get vi to go to end-of-file [\#1563](https://github.com/jrnl-org/jrnl/pull/1563) ([pjz](https://github.com/pjz)) - -**Packaging:** - -- Pin dependencies [\#1577](https://github.com/jrnl-org/jrnl/pull/1577) ([renovate[bot]](https://github.com/apps/renovate)) - -## [v3.2](https://pypi.org/project/jrnl/v3.2/) (2022-09-03) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v3.2-beta...v3.2) - -**Implemented enhancements:** - -- Update issue & PR templates to use forms [\#1559](https://github.com/jrnl-org/jrnl/issues/1559) -- Suppress "Entry added" message if using default journal [\#1561](https://github.com/jrnl-org/jrnl/pull/1561) ([micahellison](https://github.com/micahellison)) -- Add message showing the number of search results [\#1524](https://github.com/jrnl-org/jrnl/pull/1524) ([apainintheneck](https://github.com/apainintheneck)) - -**Build:** - -- Quick fix follow up for actionlint [\#1565](https://github.com/jrnl-org/jrnl/pull/1565) ([wren](https://github.com/wren)) - -**Documentation:** - -- Remove note in contributing docs about gh-pages branch that we no longer use [\#1566](https://github.com/jrnl-org/jrnl/pull/1566) ([micahellison](https://github.com/micahellison)) - -## [v3.1](https://pypi.org/project/jrnl/v3.1/) (2022-08-21) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v3.1-beta2...v3.1) - -**Implemented enhancements:** - -- Update tzlocal to v4.x and remove pytz dependency [\#1528](https://github.com/jrnl-org/jrnl/pull/1528) ([outa](https://github.com/outa)) -- Add linewrap option 'auto' [\#1507](https://github.com/jrnl-org/jrnl/pull/1507) ([jonakeys](https://github.com/jonakeys)) - -**Fixed bugs:** - -- Update formatting function to better account for indentation [\#1541](https://github.com/jrnl-org/jrnl/pull/1541) ([wren](https://github.com/wren)) -- Export to file\(s\) when first line/title of an entry is very long [\#1527](https://github.com/jrnl-org/jrnl/pull/1527) ([jonakeys](https://github.com/jonakeys)) -- Fixed index out of range error in fancy exporter [\#1522](https://github.com/jrnl-org/jrnl/pull/1522) ([apainintheneck](https://github.com/apainintheneck)) - -**Build:** - -- Add actionlint to testing pipelines [\#1555](https://github.com/jrnl-org/jrnl/pull/1555) ([wren](https://github.com/wren)) -- Fix docs pipeline, make docs tests easier to run locally and on different OSes [\#1554](https://github.com/jrnl-org/jrnl/pull/1554) ([wren](https://github.com/wren)) - -**Documentation:** - -- Reformat contributor appreciation on `--help` screen [\#1556](https://github.com/jrnl-org/jrnl/pull/1556) ([xeruf](https://github.com/xeruf)) -- Clean up copyright notices and version screen [\#1553](https://github.com/jrnl-org/jrnl/pull/1553) ([wren](https://github.com/wren)) - -**Packaging:** - -- Bump pyproject-flake8 from 0.0.1a4 to 0.0.1a5 [\#1552](https://github.com/jrnl-org/jrnl/pull/1552) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump keyring from 23.7.0 to 23.8.2 [\#1551](https://github.com/jrnl-org/jrnl/pull/1551) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump yq from 3.0.2 to 3.1.0 [\#1546](https://github.com/jrnl-org/jrnl/pull/1546) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump poethepoet from 0.15.0 to 0.16.0 [\#1542](https://github.com/jrnl-org/jrnl/pull/1542) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump keyring from 23.6.0 to 23.7.0 [\#1539](https://github.com/jrnl-org/jrnl/pull/1539) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump rich from 12.4.4 to 12.5.1 [\#1538](https://github.com/jrnl-org/jrnl/pull/1538) ([dependabot[bot]](https://github.com/apps/dependabot)) - -## [v3.0](https://pypi.org/project/jrnl/v3.0/) (2022-07-09) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v3.0-beta2...v3.0) - -🚨 **BREAKING CHANGES** 🚨 - -**Deprecated:** - -- Drop support for Python 3.7 and 3.8 [\#1412](https://github.com/jrnl-org/jrnl/pull/1412) ([micahellison](https://github.com/micahellison)) - -**Implemented enhancements:** - -- Show name of journal when creating a password/encrypting [\#1478](https://github.com/jrnl-org/jrnl/pull/1478) ([jonakeys](https://github.com/jonakeys)) -- Rework how all output and messaging works in jrnl [\#1475](https://github.com/jrnl-org/jrnl/pull/1475) ([wren](https://github.com/wren)) -- Implement --change-time flag [\#1452](https://github.com/jrnl-org/jrnl/pull/1452) ([richardjs](https://github.com/richardjs)) -- Reformat additional messages and finish centralizing exception handling [\#1424](https://github.com/jrnl-org/jrnl/pull/1424) ([wren](https://github.com/wren)) -- Reformat messages and add new centralized exception handling [\#1417](https://github.com/jrnl-org/jrnl/pull/1417) ([wren](https://github.com/wren)) - -**Fixed bugs:** - -- Display message when no edits take place [\#1510](https://github.com/jrnl-org/jrnl/pull/1510) ([apainintheneck](https://github.com/apainintheneck)) -- Fixed error related to display\_format in config file for some values [\#1495](https://github.com/jrnl-org/jrnl/pull/1495) ([apainintheneck](https://github.com/apainintheneck)) -- Create folder if config ends with \(back\)slash [\#1492](https://github.com/jrnl-org/jrnl/pull/1492) ([jonakeys](https://github.com/jonakeys)) -- `-not` search parameter no longer opens editor [\#1490](https://github.com/jrnl-org/jrnl/pull/1490) ([apainintheneck](https://github.com/apainintheneck)) -- Fix TypeError when using debug flag [\#1484](https://github.com/jrnl-org/jrnl/pull/1484) ([jonakeys](https://github.com/jonakeys)) -- Prompt for password change when using 'jrnl --encrypt' on already encrypted journal [\#1477](https://github.com/jrnl-org/jrnl/pull/1477) ([jonakeys](https://github.com/jonakeys)) -- Always expand all paths \(journals, templates, etc\) [\#1468](https://github.com/jrnl-org/jrnl/pull/1468) ([apainintheneck](https://github.com/apainintheneck)) -- The `-not` option with no arguments now outputs error instead of stack trace [\#1466](https://github.com/jrnl-org/jrnl/pull/1466) ([apainintheneck](https://github.com/apainintheneck)) -- Give a proper message when trying to use an empty config file [\#1461](https://github.com/jrnl-org/jrnl/pull/1461) ([jonakeys](https://github.com/jonakeys)) -- Display "No entry to save, because no text was received" after empty entry on cmdline [\#1459](https://github.com/jrnl-org/jrnl/pull/1459) ([apainintheneck](https://github.com/apainintheneck)) -- Yaml export errors now don't show stack trace [\#1449](https://github.com/jrnl-org/jrnl/pull/1449) ([apainintheneck](https://github.com/apainintheneck)) - -**Build:** - -- Pin `pytest-bdd` to \<6.0 to temporarily avoid breaking changes [\#1536](https://github.com/jrnl-org/jrnl/pull/1536) ([wren](https://github.com/wren)) -- Reduce difference between local and CI environments [\#1518](https://github.com/jrnl-org/jrnl/pull/1518) ([wren](https://github.com/wren)) -- Add bdd tests for jrnl installation [\#1513](https://github.com/jrnl-org/jrnl/pull/1513) ([apainintheneck](https://github.com/apainintheneck)) -- Stop hardcoding bot info in changelog pipeline [\#1506](https://github.com/jrnl-org/jrnl/pull/1506) ([wren](https://github.com/wren)) -- Fix Poetry caching for accessibility tests [\#1505](https://github.com/jrnl-org/jrnl/pull/1505) ([wren](https://github.com/wren)) -- Implement Tox for testing [\#1504](https://github.com/jrnl-org/jrnl/pull/1504) ([wren](https://github.com/wren)) -- Replace `make` with python alternative \(`poe`\) [\#1503](https://github.com/jrnl-org/jrnl/pull/1503) ([wren](https://github.com/wren)) -- Update copyright year [\#1502](https://github.com/jrnl-org/jrnl/pull/1502) ([wren](https://github.com/wren)) -- Add Python 3.11 to PR tests [\#1500](https://github.com/jrnl-org/jrnl/pull/1500) ([micahellison](https://github.com/micahellison)) -- Pin jinja2 in docs requirements to keep readthedocs builds from failing [\#1439](https://github.com/jrnl-org/jrnl/pull/1439) ([micahellison](https://github.com/micahellison)) -- Tidy up git ignore [\#1414](https://github.com/jrnl-org/jrnl/pull/1414) ([nelnog](https://github.com/nelnog)) - -**Documentation:** - -- Document --change-time in web-based docs' command line reference [\#1471](https://github.com/jrnl-org/jrnl/pull/1471) ([micahellison](https://github.com/micahellison)) - -**Packaging:** - -- Bump cryptography from 37.0.2 to 37.0.3 [\#1516](https://github.com/jrnl-org/jrnl/pull/1516) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump poethepoet from 0.13.1 to 0.14.0 [\#1514](https://github.com/jrnl-org/jrnl/pull/1514) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump keyring from 23.5.1 to 23.6.0 [\#1499](https://github.com/jrnl-org/jrnl/pull/1499) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pyxdg from 0.27 to 0.28 [\#1497](https://github.com/jrnl-org/jrnl/pull/1497) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump keyring from 23.5.0 to 23.5.1 [\#1487](https://github.com/jrnl-org/jrnl/pull/1487) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump cryptography from 37.0.1 to 37.0.2 [\#1467](https://github.com/jrnl-org/jrnl/pull/1467) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump cryptography from 36.0.2 to 37.0.1 [\#1462](https://github.com/jrnl-org/jrnl/pull/1462) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pytest from 7.1.1 to 7.1.2 [\#1458](https://github.com/jrnl-org/jrnl/pull/1458) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pyproject-flake8 from 0.0.1a3 to 0.0.1a4 [\#1447](https://github.com/jrnl-org/jrnl/pull/1447) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump black from 22.1.0 to 22.3.0 [\#1442](https://github.com/jrnl-org/jrnl/pull/1442) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump mkdocs from 1.2.3 to 1.3.0 [\#1441](https://github.com/jrnl-org/jrnl/pull/1441) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pyproject-flake8 from 0.0.1a2 to 0.0.1a3 [\#1440](https://github.com/jrnl-org/jrnl/pull/1440) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pytz from 2021.3 to 2022.1 [\#1438](https://github.com/jrnl-org/jrnl/pull/1438) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pytest from 7.0.1 to 7.1.1 [\#1430](https://github.com/jrnl-org/jrnl/pull/1430) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump cryptography from 36.0.1 to 36.0.2 [\#1427](https://github.com/jrnl-org/jrnl/pull/1427) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump yq from 2.13.0 to 2.14.0 [\#1418](https://github.com/jrnl-org/jrnl/pull/1418) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Replace PyYAML with ruamel.yaml [\#1416](https://github.com/jrnl-org/jrnl/pull/1416) ([micahellison](https://github.com/micahellison)) -- Bump pytest from 6.2.5 to 7.0.0 [\#1407](https://github.com/jrnl-org/jrnl/pull/1407) ([dependabot[bot]](https://github.com/apps/dependabot)) - -## [v2.8.4](https://pypi.org/project/jrnl/v2.8.4/) (2022-02-12) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v2.8.4-beta2...v2.8.4) - -**Implemented enhancements:** - -- Add hash as a default tag symbol for new jrnl config file [\#1398](https://github.com/jrnl-org/jrnl/pull/1398) ([micahellison](https://github.com/micahellison)) -- Add --config-file argument to use alternate config file at runtime [\#1290](https://github.com/jrnl-org/jrnl/pull/1290) ([samuelgregorovic](https://github.com/samuelgregorovic)) - -**Fixed bugs:** - -- Certs broken on website [\#1408](https://github.com/jrnl-org/jrnl/issues/1408) -- Add added option to \_print\_edited\_summary [\#1366](https://github.com/jrnl-org/jrnl/pull/1366) ([piero-vic](https://github.com/piero-vic)) - -**Build:** - -- Improve handling of mocking logic in pytest [\#1382](https://github.com/jrnl-org/jrnl/pull/1382) ([wren](https://github.com/wren)) -- Use full Python version for GitHub Actions cache key [\#1373](https://github.com/jrnl-org/jrnl/pull/1373) ([micahellison](https://github.com/micahellison)) -- Use Python 3.10 stable in CI [\#1362](https://github.com/jrnl-org/jrnl/pull/1362) ([micahellison](https://github.com/micahellison)) -- Switch from poetry to poetry-core [\#1359](https://github.com/jrnl-org/jrnl/pull/1359) ([fabaff](https://github.com/fabaff)) -- Add more steps to `pytest`, fully remove `behave` [\#1347](https://github.com/jrnl-org/jrnl/pull/1347) ([wren](https://github.com/wren)) - -**Documentation:** - -- Fix styling on documentation sidebar [\#1395](https://github.com/jrnl-org/jrnl/pull/1395) ([wren](https://github.com/wren)) -- Added Recipe for visualizing Markdown in the CLI [\#1354](https://github.com/jrnl-org/jrnl/pull/1354) ([viegasfh](https://github.com/viegasfh)) -- Fix recipe 'Launch a terminal for rapid logging' [\#1351](https://github.com/jrnl-org/jrnl/pull/1351) ([zapateo](https://github.com/zapateo)) -- Fix readme splash and add changelog link to readme [\#1339](https://github.com/jrnl-org/jrnl/pull/1339) ([micahellison](https://github.com/micahellison)) -- Add reference documentation to docs site and separate out "Tips and Tricks" and "External Editors" from "Recipes" [\#1332](https://github.com/jrnl-org/jrnl/pull/1332) ([micahellison](https://github.com/micahellison)) -- Document journal types [\#1331](https://github.com/jrnl-org/jrnl/pull/1331) ([micahellison](https://github.com/micahellison)) - -**Packaging:** - -- Bump asteval from 0.9.25 to 0.9.26 [\#1400](https://github.com/jrnl-org/jrnl/pull/1400) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump black from 21.7b0 to 22.1.0 [\#1404](https://github.com/jrnl-org/jrnl/pull/1404) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump cryptography from 3.4.8 to 36.0.1 [\#1389](https://github.com/jrnl-org/jrnl/pull/1389) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump ipython from 7.28.0 to 7.31.1 [\#1401](https://github.com/jrnl-org/jrnl/pull/1401) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump keyring from 23.1.0 to 23.5.0 [\#1392](https://github.com/jrnl-org/jrnl/pull/1392) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump mkdocs from 1.2.2 to 1.2.3 [\#1355](https://github.com/jrnl-org/jrnl/pull/1355) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pytest from 6.2.4 to 6.2.5 [\#1334](https://github.com/jrnl-org/jrnl/pull/1334) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pytest-bdd from 4.1.0 to 5.0.0 [\#1368](https://github.com/jrnl-org/jrnl/pull/1368) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump pytz from 2021.1 to 2021.3 [\#1348](https://github.com/jrnl-org/jrnl/pull/1348) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump yq from 2.12.2 to 2.13.0 [\#1385](https://github.com/jrnl-org/jrnl/pull/1385) ([dependabot[bot]](https://github.com/apps/dependabot)) - -## [v2.8.3](https://pypi.org/project/jrnl/v2.8.3/) (2021-09-06) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v2.8.3-beta...v2.8.3) +- Output after composition can be more useful and user friendly [\#1253](https://github.com/jrnl-org/jrnl/issues/1253) **Fixed bugs:** +- Entries from directory based journals do not get deleted [\#1316](https://github.com/jrnl-org/jrnl/issues/1316) +- Uncaught exception when encrypting folder journal [\#1243](https://github.com/jrnl-org/jrnl/issues/1243) +- Journals with emoji names can't be accessed on Windows [\#1162](https://github.com/jrnl-org/jrnl/issues/1162) - Fix deletion of entries on folder journal through `--delete` flag [\#1328](https://github.com/jrnl-org/jrnl/pull/1328) ([micahellison](https://github.com/micahellison)) - Warn when DayOne/directory journals have encrypt: true in config [\#1325](https://github.com/jrnl-org/jrnl/pull/1325) ([micahellison](https://github.com/micahellison)) - Fix failure to import into directory journal [\#1314](https://github.com/jrnl-org/jrnl/pull/1314) ([micahellison](https://github.com/micahellison)) @@ -449,6 +20,8 @@ **Build:** +- Windows CI behaving unreliable due to mismatch between Powershell & bash retrieving environment variables [\#1323](https://github.com/jrnl-org/jrnl/issues/1323) +- Python 3.10 build action is failing on poetry dependency installation [\#1321](https://github.com/jrnl-org/jrnl/issues/1321) - Set bash as default shell [\#1324](https://github.com/jrnl-org/jrnl/pull/1324) ([micahellison](https://github.com/micahellison)) **Packaging:** diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 68716f88..b177c666 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -59,7 +59,7 @@ representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by [emailing the maintainers](mailto:maintainers@jrnl.sh). +reported by [emailing the maintainers](mailto:jrnl-sh@googlegroups.com). All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dc078f3a..1f5e691a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,126 @@ - - + # Contributing -See "[Contributing](docs/contributing.md)" in the `docs` directory. +We welcome contributions to jrnl, whether it's through reporting bugs, improving the documentation, testing releases, engaging in discussion on features and bugs, or writing code. + +## Table of Contents + * [Code of Conduct](#code-of-conduct) + * [Reporting Bugs](#reporting-bugs) + * [Editing Documentation](#editing-documentation) + * [Testing](#testing) + * [Submitting feature requests and ideas](#submitting-feature-requests-and-ideas) + * [Developing](#developing) + +## Code of Conduct + +Before starting, please read the [Code of Conduct](CODE_OF_CONDUCT.md). + +## Reporting Bugs + +Please report bugs by [opening a new issue](https://github.com/jrnl-org/jrnl/issues/new/choose) and describing it as well as possible. Many bugs are specific to a particular operating system and Python version, so please include that information! + +## Editing Documentation + +If you find a typo or a mistake in the docs, please fix it right away and send a pull request. + +To edit the documentation, edit the `docs/*.md` files on the **develop** branch. You can see the result if you run `make html` (or `poetry run mkdocs serve` if on Windows) inside the project's root directory, then navigating your browser to [localhost:8000](http://localhost:8000). + +The `gh-pages` branch is automatically maintained and generated after your changes are merged. You should never have to edit that branch. + +### Recipes and external editors + +If you'd like to share a jrnl command line trick that you find useful, or advice on how to integrate a particular external editor, you may find it worthwhile to add it to the ["Recipes" section](docs/recipes.md). + +## Testing + +Much of the work of maintaining jrnl involves testing rather than coding. + +The nature of jrnl means we deal with extremely sensitive data, and can't risk data loss. While jrnl does have a comprehensive automated testing suite, user testing is crucial to mitigating this risk. + +### 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](CHANGELOG.md) for information on what has changed with each release. + +### Pull requests + +If you are comfortable enough with git, feel free to fetch particular [pull requests](https://github.com/jrnl-org/jrnl/pulls), test them yourself, and report back your findings. Bonus points if you can add a screencast of how the new feature works. + +### Confirm bug reports + +There are always [open bugs among our GitHub issues](https://github.com/jrnl-org/jrnl/issues?q=is%3Aissue+is%3Aopen+label%3Abug) and many are specific to a particular OS, Python version, or jrnl version. A simple comment like "Confirmed on jrnl v2.2, MacOS 10.15, Python 3.8.1" would be extremely helpful in tracking down bugs. + +### Automate tests + +See the develop section below for information on how to contribute new automated tests. + +## Submitting feature requests and ideas + +If you have a feature request or idea for jrnl, please [open a new issue](https://github.com/jrnl-org/jrnl/issues/new/choose) and describe the goal of the feature, and any relevant use cases. We'll discuss the issue with you, and decide if it's a good fit for the project. + +When discussing new features, please keep in mind our design goals. jrnl strives to do one thing well. To us, that means: + +* be _slim_ +* have a simple interface +* avoid duplicating functionality + +## Developing + +### Getting your environment set up + +You will need to install [poetry](https://poetry.eustace.io/) to develop jrnl. It will take care of all of the project's other dependencies. + +### Understanding the branches + +jrnl uses two primary branches: + + * `develop` - for ongoing development + * `release` - for releases + +In general, pull requests should be made on the `develop` branch. + +### Common development commands + +You can find an inventory of commands in the `makefile`. \*nix users can run the commands by typing `make` followed by the name of the command; however, Windows users will need to type out the commands directly, or install a third-party make tool such as [GNU Make for Windows](http://gnuwin32.sourceforge.net/packages/make.htm). + +A typical development workflow includes: + + * Installing dependencies: `poetry install` + * Running tests: `make test` + * Running the source in a virtual environment: + * `poetry shell` + * `jrnl` (with or without arguments as necessary) + * Linting the code to standardize its style: `make lint` + +### Updating automated tests + +When resolving bugs or adding new functionality, please add tests to prevent that functionality from breaking in the future. If you notice any functionality that isn't covered in the tests, feel free to submit a test-only pull request as well. + +For integration testing, jrnl uses [behave](https://behave.readthedocs.io/) tests, which are all in the `features` folder. + +Many tests can be created by only editing `feature` files with the same format as other tests. For more complicated functionality, you may need to implement steps in `features/steps` which are then executed by your tests in the `feature` files. + +Starting in 2020, jrnl is also using [pytest](https://docs.pytest.org/) for unit tests. These tests are in the `tests` folder. + +### Submitting pull requests + +When you're ready, feel free to submit a pull request (PR). The jrnl maintainers generally review the pull requests every two weeks, but the continuous integration pipeline will run on automated tests on it within a matter of minutes and will report back any issues it has found with your code across a variety of environments. + +The pull request template contains a checklist full of housekeeping items. Please fill them out as necessary when you submit. + +If a pull request contains failing tests, it probably will not be reviewed, and it definitely will not be approved. However, if you need help resolving a failing test, please mention that in your PR. + +### Finding things to work on + +You can search the [jrnl GitHub issues](https://github.com/jrnl-org/jrnl/issues) by [label](https://github.com/jrnl-org/jrnl/labels) for things to work on. Here are some labels worth searching: + +* [critical](https://github.com/jrnl-org/jrnl/labels/critical) +* [help wanted](https://github.com/jrnl-org/jrnl/labels/help%20wanted) +* [bug](https://github.com/jrnl-org/jrnl/labels/bug) +* [enhancement](https://github.com/jrnl-org/jrnl/labels/enhancement) + +### A note for new programmers and programmers new to python + +Although jrnl has grown quite a bit since its inception, the overall complexity (for an end-user program) is fairly low, and we hope you'll find the code easy enough to understand. + +If you have a question, please don't hesitate to ask! Python is known for its welcoming community and openness to novice programmers, so feel free to fork the code and play around with it! If you create something you want to share with us, please create a pull request. We never expect pull requests to be perfect, idiomatic, instantly mergeable code. We can work through it together! diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..b2e27f32 --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +# A Makefile for commands I run frequently: + +clean: + rm -rf dist + rm -rf _static + rm -rf jrnl.egg-info + rm -rf _build + rm -rf _sources + rm -rf _static + rm -rf site/ + rm -f *.html + +html: + poetry run mkdocs serve + +format: ## Format files to match style + poetry run black . + +lint: ## Check style with various tools + poetry check + poetry run pflake8 jrnl tests + poetry run black --check --diff . + +unit: # unit tests + poetry run pytest tests/unit + +bdd: # bdd tests + poetry run pytest tests/bdd --gherkin-terminal-reporter --tb=native + +bdd-debug: # bdd tests + poetry run pytest tests/bdd --gherkin-terminal-reporter --tb=native -x -vv + +test: lint unit bdd ## Run unit tests and behave tests + +build: + poetry build + +install: clean ## install the package to the active Python's site-packages + poetry install diff --git a/README.md b/README.md index a99f0ba8..55202436 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,6 @@ - -
@@ -15,11 +10,10 @@ jrnl [](https://pypi.python.org/pypi/jrnl/) [](https://formulae.brew.sh/formula/jrnl) [](https://gitter.im/jrnl-org/jrnl) - [](https://github.com/jrnl-org/jrnl/blob/develop/CHANGELOG.md) ==== _To get help, [submit an issue](https://github.com/jrnl-org/jrnl/issues/new/choose) on -GitHub._ +Github._ `jrnl` is a simple journal application for the command line. @@ -70,7 +64,7 @@ src="https://opencollective.com/jrnl/contributors.svg?width=890&button=false" /> If you'd also like to help make `jrnl` better, please see our [contributing -documentation](docs/contributing.md). +documentation](CONTRIBUTING.md). ### Financial Backers diff --git a/SECURITY.md b/SECURITY.md index 44a0f958..c239b957 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,6 +1,6 @@ # Security -If you've discovered a potential security issue in jrnl, please contact the maintainers at [maintainers@jrnl.sh](mailto:maintainers@jrnl.sh). +If you've discovered a potential security issue in jrnl, please contact the maintainers at [jrnl-sh@googlegroups.com](mailto:jrnl-sh@googlegroups.com). You can also feel free to [open an issue](https://github.com/jrnl-org/jrnl/issues/new/choose) (but please don't disclose the vulnerability) in case the email goes to spam. diff --git a/docs/advanced.md b/docs/advanced.md index 764ff98a..b1b7bef0 100644 --- a/docs/advanced.md +++ b/docs/advanced.md @@ -1,27 +1,100 @@ - + # Advanced Usage ## Configuration File -`jrnl` has a wide variety of options that can be customized through the config file, -including templates, formats, multiple journals, and more. See -the [configuration file reference](./reference-config-file.md) for details -or read on for some common use cases. +You can configure the way jrnl behaves in a configuration file. By +default, this is `~/.config/jrnl/jrnl.yaml`. If you have the `XDG_CONFIG_HOME` +variable set, the configuration file will be saved as +`$XDG_CONFIG_HOME/jrnl/jrnl.yaml`. -### Multiple journal files +!!! note + On Windows, the configuration file is typically found at `%USERPROFILE%\.config\jrnl\jrnl.yaml`. + +The configuration file is a YAML file with the following options +and can be edited with a plain text editor. + +!!! note + Backup your journal and config file before editing. Changes to the config file + can have destructive effects on your journal! + +- `journals` + paths to your journal files +- `editor` + if set, executes this command to launch an external editor for + writing your entries, e.g. `vim`. Some editors require special + options to work properly, see `FAQ