Cedric
8b1d96fad0
Version Bump
Build and Deploy Spring Boot Server / build (push) Successful in 1m16s
2026-07-08 13:16:24 +02:00
Cedric
b8938d521f
Version 1.2.1
Build and Deploy Spring Boot Server / build (push) Successful in 1m14s
2026-07-08 10:38:09 +02:00
Cedric
4b6198ab5c
Merge feature/split-modes: persist split modes + default-split endpoint
Build and Deploy Spring Boot Server / build (push) Successful in 1m17s
2026-07-08 09:18:48 +02:00
Cedric
9eb9483162
fix: validate splitPercentage bounds and cover default-split auth
2026-07-08 09:15:23 +02:00
Cedric
693289525e
feat: add PUT /{id}/default-split endpoint
2026-07-07 22:03:24 +02:00
Cedric
a3d66129ac
feat: record split mode/percentage changes in history diff
2026-07-07 21:59:30 +02:00
Cedric and Claude Opus 4.8
da0cf48dc3
feat: persist splitMode/splitPercentage and list defaultSplitPercentage
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-07 21:55:55 +02:00
Cedric
7fd7882188
version upgrade
Build and Deploy Spring Boot Server / build (push) Successful in 1m9s
2026-07-07 00:29:19 +02:00
Cedric
af648bca70
feat: add GET /history/recent endpoint for cross-list activity
Build and Deploy Spring Boot Server / build (push) Successful in 1m30s
2026-07-06 19:04:40 +02:00
Cedric
b7e0fa1c8b
feat: add cross-list recent history query and service method
2026-07-06 18:59:32 +02:00
Cedric and Claude Fable 5
b58008c8bc
fix: allow editing quick-add stub expenses (amount 0, no category)
...
Build and Deploy Spring Boot Server / build (push) Successful in 3m36s
Quick Add deliberately creates stub expenses with amount 0 and no
category (ExpenseInput allows both), but ExpenseChangeRequest required
amount >= 0.01 and a non-blank category, so every edit of a stub that
did not simultaneously fill in both fields was rejected with 400.
Update validation now accepts the same states create can produce, and
a blank category is normalized to null.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-06 18:52:42 +02:00
Cedric
ac0118d435
fix: delete history entries when their expense list is deleted
Build and Deploy Spring Boot Server / build (push) Successful in 2m31s
2026-07-06 13:20:10 +02:00
Cedric
765c5d5b32
feat: idempotent startup backfill for lastModified and history
2026-07-06 12:50:33 +02:00
Cedric
b8ca1b94ec
feat: paged history endpoint GET /api/expenselist/{id}/history
2026-07-06 12:46:46 +02:00
Cedric
b19cdd0264
feat: record history and lastModified on expense mutations
2026-07-06 12:40:32 +02:00
Cedric
27f747b44d
fix: migrate HistoryService to Jackson 3 (Spring Boot 4)
2026-07-06 12:35:39 +02:00
Cedric
8f42add0c2
feat: HistoryService with field-level diff logic
2026-07-06 12:27:55 +02:00
Cedric
9d1cf862c7
feat: history entity, repository and Expense.lastModified
2026-07-06 12:21:05 +02:00
Cedric
6203a83af3
Fix Tag Workflow
Build and Deploy Spring Boot Server / build (push) Successful in 1m19s
2026-07-05 00:08:18 +02:00
Cedric
41e32efd7e
Added Rename User and Lists
Build and Deploy Spring Boot Server / build (push) Successful in 1m18s
2026-07-04 22:50:54 +02:00
Cedric
d73d349a58
Release 1.1.0 Final Security Hardening
Build and Deploy Spring Boot Server / build (push) Successful in 1m11s
2026-07-04 22:14:58 +02:00
Cedric
f958fb7853
Fixed Auth and Connection issues
Build and Deploy Spring Boot Server / build (push) Successful in 3m41s
2026-07-04 17:31:21 +02:00
Cedric
7ad72119a8
fix secrets no longer needed
Build and Deploy Spring Boot Server / build (push) Successful in 1m13s
2026-05-14 23:46:40 +02:00
Cedric
f7f2bf5768
ci: switch to compose.deploy to force fresh image pull
Build and Deploy Spring Boot Server / build (push) Successful in 1m12s
2026-05-12 23:57:45 +02:00
Cedric
28df2a66ca
fix: always pull latest image on redeploy
Build and Deploy Spring Boot Server / build (push) Successful in 1m21s
2026-05-12 23:25:07 +02:00
Cedric
29f26a8a18
feat: add /api/version endpoint returning build time and version
Build and Deploy Spring Boot Server / build (push) Successful in 1m25s
2026-05-12 23:08:37 +02:00
Cedric
a3fa59f347
ci: test full pipeline end-to-end
Build and Deploy Spring Boot Server / build (push) Successful in 1m12s
2026-05-12 20:34:42 +02:00
Cedric
2880934644
ci: test full pipeline end-to-end
Build and Deploy Spring Boot Server / build (push) Successful in 1m10s
2026-05-10 23:43:13 +02:00
Cedric
b42980200d
ci: trigger Dokploy redeploy via API after image push
Build and Deploy Spring Boot Server / build (push) Failing after 1m48s
2026-05-10 23:38:07 +02:00
Cedric
8381cdbffa
ci: test full pipeline
Build and Deploy Spring Boot Server / build (push) Successful in 1m20s
2026-05-10 22:59:53 +02:00
Cedric
5cab2fed3b
ci: test Dokploy webhook
Build and Deploy Spring Boot Server / build (push) Successful in 1m13s
2026-05-10 22:36:44 +02:00
Cedric
417eef7042
ci: fix Dokploy webhook, token is in URL not Authorization header
Build and Deploy Spring Boot Server / build (push) Failing after 1m11s
2026-05-10 22:29:40 +02:00
Cedric
ed5543ce61
ci: fix Java 21 in dockerfile, add Docker Hub login to avoid rate limits
Build and Deploy Spring Boot Server / build (push) Failing after 1m23s
2026-05-10 22:22:06 +02:00
Cedric
40b8f45de8
ci: test with Java 21 runner image
Build and Deploy Spring Boot Server / build (push) Failing after 1m2s
2026-05-10 22:15:16 +02:00
Cedric
b221d07b48
ci: use ubuntu-java17 runner image, remove setup-java step
Build and Deploy Spring Boot Server / build (push) Failing after 2m22s
2026-05-10 22:08:23 +02:00
Cedric
0e63b6e4e6
ci: fix mvnw executable permission
Build and Deploy Spring Boot Server / build (push) Has been cancelled
2026-05-10 22:07:30 +02:00
Cedric
4a04c85fe8
ci: use Maven wrapper instead of mvn to fix command not found on Gitea runner
Build and Deploy Spring Boot Server / build (push) Failing after 4m43s
2026-05-10 21:40:25 +02:00
Cedric
b8e2c9114d
chore: merge main into dev, keep clean docker-compose from main
Build and Deploy Spring Boot Server / build (push) Failing after 9m2s
2026-05-10 21:29:11 +02:00
Cedric
0876eecf50
ci: improve dev pipeline with Dokploy webhook and Docker layer caching
2026-05-10 21:27:28 +02:00
Cedric
5549691d50
ci: test pipeline
2026-05-10 21:24:18 +02:00
Cedric
46c8df45d6
ci: test pipeline
2026-05-10 21:24:10 +02:00
Cedric and Claude Sonnet 4.6
50d274f36a
chore: resolve merge conflicts, keep Spring Boot 4.0.6 version
...
Kept our version over remote (security hardening PR #12 ) for all conflicts:
- pom.xml: Spring Boot 4.0.6 vs 3.4.1, new test deps
- SecurityConfig: new csrf/package API for SB4
- GlobalExceptionHandler: full handler set with SLF4J logging
- AppUserController/ExpenseListController: clean delegation to GlobalExceptionHandler
- Test files: SB4 package paths, extra test coverage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-10 20:29:49 +02:00
Cedric and Claude Sonnet 4.6
ba4f365f06
chore: merge feature/security-hardening into main
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-10 20:25:12 +02:00
Cedric
a5e5824a44
docs: write recent changes section
2026-05-10 20:18:58 +02:00
Cedric
7189e4fb08
docs: write error handling section
2026-05-10 20:18:28 +02:00
Cedric
2782823c3d
docs: write data models section
2026-05-10 20:17:55 +02:00
Cedric
ddf64305a5
docs: write expense lists endpoint section
2026-05-10 20:17:22 +02:00
Cedric
2b84ed0de8
docs: write home and users endpoint sections
2026-05-10 20:14:22 +02:00
Cedric
18e740bb73
docs: write rate limiting section
2026-05-10 20:13:58 +02:00
Cedric
9b93cd97a6
docs: write authentication section
2026-05-09 23:56:14 +02:00
Cedric
8fb1820bc7
docs: write API overview section
2026-05-09 23:50:42 +02:00
Cedric
9c35bb8435
docs: scaffold API.md with section headings
2026-05-09 23:49:56 +02:00
Cedric
3d456f2f81
Bugfixes
2026-05-09 23:04:27 +02:00
Cedric
b1324e3048
test: add jsonPath field assertions to create validation tests
2026-05-06 14:40:11 +02:00
Cedric and Claude Sonnet 4.6
8b96433b1a
feat: add CreateExpenseListRequest DTO with validation to POST /create endpoint
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 17:28:47 +02:00
Cedric and Cedric
19c7e1915f
security hardening ( #12 )
...
Reviewed-on: #12
Co-authored-by: Cedric Hornberger <ceddi.hornberger@gmx.de >
Co-committed-by: Cedric Hornberger <ceddi.hornberger@gmx.de >
2026-05-05 17:13:53 +02:00
Cedric and Claude Sonnet 4.6
f0de751da4
fix: centralise error handling in GlobalExceptionHandler, add SLF4J logging, remove HTTP 417 and e.printStackTrace()
...
- Expand GlobalExceptionHandler with handlers for ResourceNotFoundException (404),
UsernameAlreadyExistsException (409), ResponseStatusException (pass-through),
RuntimeException (500), and generic Exception (500); add SLF4J logging
- Remove all bare try/catch blocks and e.printStackTrace() calls from
ExpenseListController; add SLF4J logger field
- Add test: create_returns500_onUnexpectedServiceError
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 17:11:37 +02:00
Cedric
9b95741292
fix: add /docs/superpowers to .gitignore
2026-05-05 17:00:01 +02:00
Cedric
2bd229cc5e
Remove docs from tracking
2026-05-05 16:59:35 +02:00
Cedric
797d482ebf
fix: use ResourceNotFoundException for not-found cases in updateExpense, IllegalArgumentException for ownership mismatch in deleteCustomCategory
2026-05-05 16:55:01 +02:00
Cedric and Claude Sonnet 4.6
906b60d264
fix: single-param JPQL queries, ResourceNotFoundException throughout ExpenseListService, remove addExpenseToList loop
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 16:40:31 +02:00
Cedric
68783cc892
fix: throw ResourceNotFoundException instead of returning null, replace full-table-scan list queries with JPQL
2026-05-05 15:20:46 +02:00
Cedric and Claude Sonnet 4.6
9c91da9f30
test: fix ExpenseListRepositoryTest with H2 and proper save-then-find pattern
...
Added H2 as a test-scoped dependency so @DataJpaTest has an embedded
database. Rewrote the test to save an entity and assert on the returned
ID rather than assuming a record exists at ID=1.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:23:51 +02:00
Cedric and Claude Sonnet 4.6
024b3880e7
security: add per-user/IP rate limiting via Bucket4j
...
RateLimitFilter (OncePerRequestFilter) enforces 60 req/min per
authenticated Google ID or client IP, using Bucket4j in-memory
token buckets. Filter is registered after BearerTokenAuthenticationFilter
in the production security chain. Added 4 unit tests covering
allow, block, per-IP isolation, and X-Forwarded-For preference.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:19:42 +02:00
Cedric and Claude Sonnet 4.6
457efab452
security: enforce JWT-based authorization on AppUserController
...
Added AuthenticatedUserResolver injection and assertSelf guard to
getUser, getUserByGoogleId, and deleteUser endpoints. createUser
remains open for registration. Added 7 controller tests covering
validation failures and 403 enforcement.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-05 11:13:05 +02:00
Cedric
95688e5111
test: add unit tests for AuthenticatedUserResolver
2026-05-05 10:03:35 +02:00
Cedric
bb2a4d70b2
feat: add ExpenseListController validation and authorization tests
2026-05-04 22:46:29 +02:00
Cedric
a948bca2fc
feat: add GlobalExceptionHandler, @Valid to user creation, AuthenticatedUserResolver stub, and rewrite ExpenseListController with authorization
2026-05-04 22:44:37 +02:00
Cedric
3bea06fead
feat: add Bean Validation annotations to request models
2026-05-04 22:36:20 +02:00
Cedric
b7db35defe
build: add spring-boot-starter-validation and bucket4j-core
2026-05-04 22:34:10 +02:00
Cedric and Claude Sonnet 4.6
efe84942ff
docs: add security hardening implementation plan
...
8-task TDD plan covering input validation, JWT-based authorization
enforcement, and Bucket4j rate limiting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-04 22:22:54 +02:00
Cedric and Claude Sonnet 4.6
e3b8917bfc
docs: add security hardening design spec
...
Covers input validation, JWT-based authorization enforcement, and
per-user rate limiting via Bucket4j.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-04 21:58:20 +02:00
Cedric
2ba7f8d5da
Vps update
2026-02-04 14:55:25 +01:00
Cedric
12f6733b48
fix user
Build and Deploy Spring Boot Server / build (push) Successful in 10m7s
2025-01-11 14:16:49 +01:00
Cedric Hornberger
e12e8067ce
ich dreh am login
Build and Deploy Spring Boot Server / build (push) Failing after 9m57s
2025-01-11 11:58:07 +01:00
Cedric Hornberger
0b624f1562
docker login
2025-01-11 11:46:19 +01:00