dependabot[bot]
b6c2e79031
build(deps): bump oauthlib from 4.0.0 to 4.0.1
...
Bumps [oauthlib](https://github.com/oauthlib/oauthlib ) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/oauthlib/oauthlib/releases )
- [Changelog](https://github.com/oauthlib/oauthlib/blob/v4.0.1/CHANGELOG.rst )
- [Commits](https://github.com/oauthlib/oauthlib/compare/v4.0.0...v4.0.1 )
---
updated-dependencies:
- dependency-name: oauthlib
dependency-version: 4.0.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-11-06 00:25:07 +00:00
Herculino Trotta
c05bdcf2bf
Merge pull request #640 from eitchtee/fix/update-check
...
fix(updates): keep update banner across page loads and restarts
2026-11-02 17:36:01 -03:00
Herculino Trotta
a5c73ec436
feat(updates): queue an update check on container startup
...
Fresh installs no longer wait up to 12 hours for the first periodic check.
2026-11-02 17:24:28 -03:00
Herculino Trotta
b10897e64b
fix(updates): keep update banner across page loads and restarts
...
The update check shared the file-based default cache with cachalot, whose culling randomly deleted the key as pages loaded. Store only the latest release in a dedicated cache, compare it to APP_VERSION at render time, and drop the startup delete. Hide the banner when CHECK_FOR_UPDATES is off or APP_VERSION isn't a valid version.
2026-11-02 17:24:28 -03:00
eitchtee
47a7fccd39
chore(locale): update translation files
...
[skip ci] Automatically generated by Django makemessages workflow
0.25.0
2026-11-02 19:54:48 +00:00
Herculino Trotta
da2085712b
Merge pull request #639 from eitchtee/weblate
...
Translations update from Weblate
2026-11-02 16:54:19 -03:00
Weblate
3719a09e64
Merge remote-tracking branch 'origin/main'
2026-11-02 19:49:54 +00:00
Herculino Trotta
30019a87b2
locale(Portuguese (Brazil)): update translation
...
Currently translated at 100.0% (832 of 832 strings)
Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/pt_BR/
2026-11-02 19:49:54 +00:00
eitchtee
6d45d097b8
chore(locale): update translation files
...
[skip ci] Automatically generated by Django makemessages workflow
2026-11-02 19:49:49 +00:00
Herculino Trotta
4ded47c5f9
Merge pull request #637 from fariskazmi/feat/oidc-disable-local-login
...
feat(auth): add OIDC_DISABLE_LOCAL_LOGIN to turn off password logins
2026-11-02 16:49:21 -03:00
Herculino Trotta
5b98779070
test(auth): add positive controls for local login and tighten basic auth check
...
- Add flag-off login page and admin password tests so the refusal tests can't pass for unrelated reasons
- Expect exactly 401 from refused basic auth
- Gate OIDC_DISABLE_LOCAL_LOGIN on an explicit OIDC_CONFIGURED flag
- Realign the README OIDC table, use "email" consistently, and warn about lockout with OIDC_ALLOW_SIGNUP=false
2026-11-02 16:41:52 -03:00
Herculino Trotta
3e2f3236d7
Merge pull request #638 from eitchtee/weblate
...
Translations update from Weblate
2026-11-02 16:28:40 -03:00
sorcierwax
318be51281
locale(French): update translation
...
Currently translated at 99.7% (830 of 832 strings)
Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/fr/
2026-11-02 18:46:46 +00:00
Dimitri Decrock
91209f49d1
locale(Dutch): update translation
...
Currently translated at 100.0% (832 of 832 strings)
Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/nl/
2026-11-02 17:58:57 +00:00
fariskazmi
161fc19721
feat(auth): add OIDC_DISABLE_LOCAL_LOGIN to turn off password logins
...
When the flag is on and an OIDC provider is configured, every e-mail and
password check is refused: the login page, the admin and the API's basic
auth. OIDC logins, API tokens, OAuth apps and permission checks keep working.
The login page hides the password form.
2026-11-02 09:08:30 -06:00
eitchtee
ec9efccdf2
chore(locale): update translation files
...
[skip ci] Automatically generated by Django makemessages workflow
2026-11-02 04:18:58 +00:00
Herculino Trotta
b956237390
Merge pull request #636 from eitchtee/feat/linked-transfers
...
feat(transactions): link transfer sides and show them as a single item
2026-11-02 01:18:33 -03:00
Herculino Trotta
3716b9b0e3
feat(transactions): link transfer sides and show them as a single item
...
Transfers are still two transactions, now linked to each other:
- shown as one item in lists, with each side's amount, account,
category and tags ("Combine transfers" user setting, on by default)
- date, reference date, paid and mute stay in sync between sides
- edit opens the transfer form; delete, restore, duplicate and bulk
actions act on both sides
- transfers made by the transfer form now trigger rules for each side
Recurring and quick transactions gain a Transfer type, with a "To
account" and optional "To amount", generating linked transfers. A
transfer can be converted into either.
Existing transfers are left as they are, since there is no reliable
way to pair them.
2026-11-02 01:14:46 -03:00
Herculino Trotta
7cb2713c6c
Merge pull request #635 from eitchtee/feat/relative-demo-data
...
feat(demo): generate demo data relative to today
2026-11-01 00:16:39 -03:00
Herculino Trotta
1d22c9ff66
feat(demo): generate demo data relative to today
...
Replace the hard-dated demo fixture with a load_demo_data command that
builds the dataset around the current date, so the demo always has data
in the current month. It also covers more features: multi-currency
accounts with exchange rate history, an ETF and Bitcoin tracked with DCA
strategies, transfers, a credit card using reference dates, installment
plans, recurring transactions, quick transactions, rules and filter
presets.
2026-11-01 00:13:01 -03:00
Herculino Trotta
556542ac9e
docs(readme): refresh screenshots
2026-11-01 00:12:33 -03:00
eitchtee
83da4226d9
chore(locale): update translation files
...
[skip ci] Automatically generated by Django makemessages workflow
2026-10-31 21:00:46 +00:00
Herculino Trotta
809564a1d3
Merge pull request #634 from eitchtee/feat/reconciliation-cutoff
...
feat(accounts): reconcile balances against a date or reference month cutoff
2026-10-31 18:00:23 -03:00
Herculino Trotta
fcd666946f
feat(accounts): reconcile balances against a date or reference month cutoff
...
Credit cards often have paid transactions dated after the invoice being
closed, which made reconciliation against all paid transactions wrong.
The reconciliation panel now lets you balance against all paid
transactions (previous behavior), paid transactions up to a date, or
paid transactions up to a reference month. The adjustment transaction is
dated at the cutoff so later reconciliations with the same or a later
cutoff include it. An invalid cutoff blocks the reconciliation instead
of silently falling back.
2026-10-31 17:56:36 -03:00
Herculino Trotta
2bb8b4e5d4
Merge pull request #631 from eitchtee/dependabot/uv/djangorestframework-3.18.2
...
build(deps): bump djangorestframework from 3.17.2 to 3.18.2
2026-10-25 12:11:37 -03:00
Herculino Trotta
948a3426ee
Merge pull request #632 from eitchtee/dependabot/uv/brotli-1.2.1
...
build(deps): bump brotli from 1.2.0 to 1.2.1
2026-10-25 12:11:24 -03:00
Herculino Trotta
02488a1d74
Merge pull request #633 from eitchtee/weblate
...
Translations update from Weblate
2026-10-25 12:11:12 -03:00
sorcierwax
edd87327d0
locale(French): update translation
...
Currently translated at 100.0% (817 of 817 strings)
Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/fr/
2026-10-25 12:58:57 +00:00
dependabot[bot]
785bd054df
build(deps): bump brotli from 1.2.0 to 1.2.1
...
Bumps [brotli](https://github.com/google/brotli ) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/google/brotli/releases )
- [Changelog](https://github.com/google/brotli/blob/go/brotli/v1.2.1/CHANGELOG.md )
- [Commits](https://github.com/google/brotli/compare/v1.2.0...go/brotli/v1.2.1 )
---
updated-dependencies:
- dependency-name: brotli
dependency-version: 1.2.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-10-24 21:15:51 +00:00
dependabot[bot]
b94a6aa4d2
build(deps): bump djangorestframework from 3.17.2 to 3.18.2
...
Bumps [djangorestframework](https://github.com/encode/django-rest-framework ) from 3.17.2 to 3.18.2.
- [Release notes](https://github.com/encode/django-rest-framework/releases )
- [Commits](https://github.com/encode/django-rest-framework/compare/3.17.2...3.18.2 )
---
updated-dependencies:
- dependency-name: djangorestframework
dependency-version: 3.18.2
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-10-24 21:15:42 +00:00
Herculino Trotta
aa92aa1926
Merge pull request #630 from eitchtee/ci/test-runner
...
ci: run Django test suite on pull requests
2026-10-24 14:05:45 -03:00
Herculino Trotta
5468d17e20
ci: provide container paths and a clean TMPDIR for tests
...
test(transactions): enable soft delete explicitly in the hard-delete attachment test
2026-10-24 14:01:47 -03:00
Herculino Trotta
b6833f2b7b
ci: run Django test suite on pull requests
2026-10-24 13:57:25 -03:00
eitchtee
2558d601dd
chore(locale): update translation files
...
[skip ci] Automatically generated by Django makemessages workflow
2026-10-24 16:57:23 +00:00
Herculino Trotta
d7537b54ad
Merge pull request #629 from eitchtee/fix/import-object-authorization
...
fix(import): enforce object-level authorization on import profiles and runs
0.24.0
2026-10-24 13:56:53 -03:00
Herculino Trotta
e46e9ad0cf
Merge pull request #628 from eitchtee/fix/oidc-tests-allauth-65-20
...
test(users): fix OIDC tests after allauth 65.20 bump
2026-10-24 13:56:26 -03:00
Herculino Trotta
4446db3249
test(users): stop using SocialLogin.state_from_request removed in allauth 65.20
...
django-allauth 65.20 removed SocialLogin.state_from_request, breaking the
OIDC email auto-connect tests after the bump in #627 .
2026-10-24 13:27:10 -03:00
Herculino Trotta
1e486a608e
fix(import): enforce object-level authorization on import profiles and runs
...
ImportProfile and ImportRun had no owner, and neither the web views nor the
REST viewsets filtered by the requesting user, so any authenticated user could
read, edit and delete every other user's import profiles and runs
(GHSA-q668-h56g-mfp4).
- ImportProfile is now a SharedObject, with share and take-ownership views
like transaction rules; the global unique constraint on name is dropped.
- ImportRun is now an OwnedObject owned by the uploader, so runs made with a
shared profile stay private to whoever ran them.
- Existing runs are backfilled with the owner of their imported
transactions; existing profiles stay unowned and usable by everyone.
2026-10-24 13:26:37 -03:00
Herculino Trotta
8888a850bd
Merge pull request #627 from eitchtee/fix/bump-allauth-oauthlib
...
build(deps): bump django-allauth to 65.20.1 to unblock oauthlib 4.0.0
2026-10-24 12:12:12 -03:00
Herculino Trotta
9941c8fb90
build(deps): bump django-allauth to 65.20.1 to allow oauthlib 4.0.0
...
django-allauth 65.18 pinned oauthlib<4, preventing Dependabot from
resolving GHSA-hj66-6f7g-4r5v and GHSA-xpv3-w29h-x7cv.
2026-10-24 12:09:19 -03:00
Herculino Trotta
39a67dfb4e
Merge pull request #626 from eitchtee/dependabot/npm_and_yarn/frontend/vite-8.3.5
...
build(deps): bump vite from 8.0.16 to 8.3.5 in /frontend
2026-10-24 12:00:43 -03:00
Herculino Trotta
1b4a2eb3d1
Merge pull request #625 from obervinov/fix/rules-set-mute-writes-to-mute
...
fix(rules): write set_mute action to mute instead of is_paid
2026-10-24 12:00:30 -03:00
Herculino Trotta
73e29e867f
Merge pull request #624 from obervinov/fix/bump-certifi-emudhra-distrust
...
build(deps): bump certifi to 2026.10.19 (GHSA-6q48-6c7w-9gw2, critical)
2026-10-24 11:59:39 -03:00
eitchtee
a6f56c4989
chore(locale): update translation files
...
[skip ci] Automatically generated by Django makemessages workflow
2026-10-24 14:59:16 +00:00
Herculino Trotta
601c641bb3
Merge pull request #623 from eitchtee/weblate
...
Translations update from Weblate
2026-10-24 11:58:49 -03:00
dependabot[bot]
0c9ccf797a
build(deps): bump vite from 8.0.16 to 8.3.5 in /frontend
...
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) from 8.0.16 to 8.3.5.
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.3.5/packages/vite )
---
updated-dependencies:
- dependency-name: vite
dependency-version: 8.3.5
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-10-21 17:56:02 +00:00
obervinov
aa95ade7ce
fix(rules): write set_mute action to mute instead of is_paid
2026-10-21 21:51:22 +04:00
obervinov
03a27002cc
build(deps): bump certifi from 2026.5.20 to 2026.10.19
2026-10-21 19:32:10 +04:00
Dimitri Decrock
565a770130
locale(Dutch): update translation
...
Currently translated at 100.0% (817 of 817 strings)
Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/nl/
2026-10-14 04:57:23 +00:00
Dimitri Decrock
a3d75de836
locale(Dutch): update translation
...
Currently translated at 97.3% (795 of 817 strings)
Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/nl/
2026-10-14 03:57:23 +00:00