Repository navigation
What's New in v1.3.0
Bug Fixes
Backend
- IP reassignment on subnet creation was broken for root-level subnets — the old code only walked the parent chain. Rewritten to use
ipaddress.subnet_of()across all existing subnets, so IPs are correctly migrated regardless of nesting depth. - N+1 query patterns eliminated in
get_ips,import_ips, andexport_ipsby loading subnet data once and building a lookup dict. - Numeric IP sort — IPs are now sorted by their integer value in
get_ipsandexport_ips, not lexicographically. - CIDR normalization — host bits are silently normalised on subnet creation (
strict=False). - Hardcoded
debug=Trueremoved; debug mode now reads theFLASK_DEBUGenvironment variable. - Security: removed
print()statements that leaked password hashes to stdout on login. - API error messages translated from German to English.
Frontend
- Subnet tree was limited to 2 levels deep. Replaced with a recursive
buildTree(parentId)— unlimited nesting depth now works correctly. - Stale closure in context menu
useEffectcaused the event listener to re-register on every open/close. Fixed with functionalsetStateand empty[]dependency array.
New Features
- Toast notification system — all
alert()calls replaced with a professional bottom-right toast (auto-dismiss after 4 s, success/error/info variants with icons,aria-livefor screen readers). - Accessibility —
aria-labeladded to every icon-only button (theme toggle, logout, settings, import/export, edit/add/delete in subnet tree). - Form loading states — subnet and IP modal submit buttons are disabled and show a spinner during API calls.
- Escape key closes all modals (subnet, IP, delete confirmation, settings).
UI Redesign
- Dashboard: dark sidebar (
slate-900, always), resizable pane, breadcrumb navigation, compact IP table with semantic colour-coded architecture badges (VM, Kubernetes, Firewall, IoT Device, etc.), sticky table header, professional modals withrounded-xl shadow-2xl. - Login page: split layout (dark branding panel + form), password show/hide toggle, loading state on submit, styled error message.
- SettingsModal: section headers, scrollable content, coloured feedback messages.
Performance
subnetByIdMap (useMemo) replacesArray.find()for O(1) subnet lookups.filteredIpsandsubnetPathwrapped inuseMemo.- Lazy state initialisation in
ThemeContextandSettingsModal.
Docs & Tooling
- Added
CLAUDE.mdfor AI coding assistant context. - Rewrote
README.md,DEVELOPMENT.md,CICD.md,k8s/README.md,frontend/README.md— all now in English, updated for v1.3.0. - Full
CHANGELOG.mdadded. - UI/UX design skills added at
.agents/skills/.
Docker Images
moresophy/ipam-backend:1.3.0
moresophy/ipam-frontend:1.3.0