Skip to content

v1.3.0 — UI Overhaul, Bug Fixes & Accessibility

Latest

Choose a tag to compare

@natorus87 natorus87 released this 01 Apr 06:51
· 2 commits to main since this release

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, and export_ips by loading subnet data once and building a lookup dict.
  • Numeric IP sort — IPs are now sorted by their integer value in get_ips and export_ips, not lexicographically.
  • CIDR normalization — host bits are silently normalised on subnet creation (strict=False).
  • Hardcoded debug=True removed; debug mode now reads the FLASK_DEBUG environment 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 useEffect caused the event listener to re-register on every open/close. Fixed with functional setState and 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-live for screen readers).
  • Accessibility — aria-label added 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 with rounded-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

  • subnetById Map (useMemo) replaces Array.find() for O(1) subnet lookups.
  • filteredIps and subnetPath wrapped in useMemo.
  • Lazy state initialisation in ThemeContext and SettingsModal.

Docs & Tooling

  • Added CLAUDE.md for 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.md added.
  • UI/UX design skills added at .agents/skills/.

Docker Images

moresophy/ipam-backend:1.3.0
moresophy/ipam-frontend:1.3.0