German date display + optional street address for precise geocoding
- Date pickers (entry form + edit dialog) now display TT.MM.JJJJ instead of
ISO (DATE_DISPLAY_FORMAT). Storage stays YYYY-MM-DD; parse_date() already
accepted both formats, so existing data and the self-updater are unaffected.
- New optional "Straße" field (street + house number) in the entry form and
edit dialog, backed by a new `street` CSV column. geocode_city() and
GeocoderWorker.enqueue() gained a street parameter: when set, a full-address
query is tried first for a much more precise map point, falling back
automatically to the existing city/PLZ search if it doesn't resolve.
- Tab 2 and the entry queue show a Straße column; Tab 2 search now also
matches on street.
- Fix: pandas turns a blank CSV cell into NaN even for a dtype=str column, so
every existing (blank-street) row would have shown literal "nan" in Tab 2.
DataStore._load now does street.fillna("") after every read.
Verified with a non-GUI test suite (date parsing, query construction, CSV
round-trip incl. the NaN case) and a full GUI build/drive test on Python
3.12/Tk 9. Docs updated (changelog, overview, architecture, data-model,
dev-notes, improvements).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,28 @@
|
||||
|
||||
Notable changes to the app. Newest first.
|
||||
|
||||
## 2026-09-12 — German date display + optional street address for geocoding
|
||||
|
||||
- **Date fields now display `TT.MM.JJJJ`** (e.g. `12.09.2026`) instead of ISO,
|
||||
in both the entry form and the edit dialog (`DATE_DISPLAY_FORMAT`). Storage on
|
||||
disk is unchanged (`YYYY-MM-DD`) — `parse_date()` still accepts either format
|
||||
when typed, so nothing about existing data changes.
|
||||
- **New optional "Straße" field** (street + house number) on the entry form and
|
||||
in the edit dialog, and a new `street` CSV column. When set, geocoding tries
|
||||
the full address first for a much more precise map point, falling back to the
|
||||
existing city/PLZ search if the address doesn't resolve — see
|
||||
[overview.md](overview.md#geocoding-behaviour). `geocode_city()` and
|
||||
`GeocoderWorker.enqueue()` both gained a `street` parameter.
|
||||
- Tab 2 and the entry queue both show a **Straße** column; the Tab 2 search box
|
||||
now also matches on street.
|
||||
- Fixed a bug this surfaced immediately: pandas turns a **blank CSV cell into
|
||||
`NaN`, even for a column forced to `dtype=str`** — every pre-existing row (all
|
||||
blank on `street`) would have displayed the literal text `nan`. `DataStore._load`
|
||||
now does `self.df["street"] = self.df["street"].fillna("")`. See
|
||||
[dev-notes.md](dev-notes.md#pandas-turns-blank-csv-cells-into-nan-even-with-dtypestr).
|
||||
- `find_duplicates` intentionally still ignores `street` (unchanged: date + city
|
||||
+ PLZ only).
|
||||
|
||||
## 2026-09-07 — fix: right-click context menu instantly triggered its first item
|
||||
|
||||
On Linux the Tab 2 (and queue) right-click menu flashed and immediately ran
|
||||
|
||||
Reference in New Issue
Block a user