Personal Aquarium - Changelog
Changelog
Analytics and cookie consent
2026/06
- New cookie consent banner (GDPR) with options to accept all, reject or configure by category
- Necessary cookies (language, session, theme) are told apart from analytics cookies, which are not loaded until you accept them
- Google Analytics 4 integration with Consent Mode v2 (denied by default), subject to consent and excluded in development and for administrators
- You can review or withdraw your consent at any time from the footer or the privacy policy
- Privacy and cookie policy updated with the actual list of cookies, their purpose, duration and legal basis
First-time experience (MVP)
2026/06
- Redesigned home page: a short explanation of the catalog, filters and planning, with calls to action to the fish catalog and to create a planned aquarium
- Aquarium list with status, calculated litres, number of inhabitants and the main compatibility warning
- Fish profile with visible actions to add to favourites and to a planned aquarium (with a suggested quantity and an empty state that invites you to create the aquarium)
- Texts reviewed to avoid mixing Spanish and English in profiles and in the messages of the add-species flow
- Mobile usability improvements: fish profile, aquarium page, planned aquarium form and compatibility warnings
Planned compatibility
2026/06
- New compatibility summary calculated from the aquarium's target parameters (without relying on measurements)
- Warnings per species and an overall summary with a recommendation: recommended, recommended with warnings or not recommended
- Temperature, pH, GH, water type, size/litres and behaviour (aggression, schooling, territoriality) are checked, as well as compatibility between species
- Severity per warning (informative, warning or critical) with easy-to-understand texts
- It is a warning calculated in real time, separate from saved notifications, and it doesn't block any action
Planned aquarium
2026/06
- Aquariums are now created as "planned": design them before setting them up
- Editable target parameters (temperature, pH, GH and KH) and water type, with range validation
- Visible status (Planned / Active) in the list and on the aquarium page
- Button to activate the aquarium once you set it up, keeping its species and target parameters
- New calls to action to plan an aquarium from the home page and from species profiles
Favourites
2026/06
- Mark fish, plants and invertebrates as favourites from their profile and from the lists
- New "Favourites" page with filters by type and name to review and remove your saved items
- Visitors who aren't signed in see the favourite button and are taken to sign in, then brought back to the page they were on
Transitions and animations
2026/06
- Smooth fade transition when navigating between pages (0.2 s, respects prefers-reduced-motion)
- Hover with scale and shadow on main buttons; :active with 0.97 scale for tactile feedback
- Header icon buttons (theme, language, units) scale to 1.08 on hover
- Staggered entrance animation (fadeSlideUp, 50 ms between cards) in the fish, plant and invertebrate catalogs
- Skeleton loaders with an animated shimmer in catalogs while data loads
- Save buttons show a spinner while saving and a success checkmark for 1 second
Images: security, performance and UX
2026/06
- Image validation by magic bytes (JPEG, PNG, WebP) to reject malicious files disguised as images
- Per-user storage limit (500 MB) with tracking of bytes used
- Upload rate limiting: at most 20 images per hour per user
- Storage abstraction with LocalStorageProvider (ready for S3/Azure Blob)
- Daily automatic clean-up of orphaned images with no reference in the database
- Native lazy loading with loading="lazy/eager" on every image element
- Upload progress indicator (X/total counter), per-image errors and a button disabled while processing
Security
2026/06
- Removed logging of OAuth tokens (AccessToken/RefreshToken) in Google sign-in
- Stronger password policy: at least 12 characters, with a digit, an uppercase letter and a special character required
- Lockout increased to 30 minutes after 3 failed attempts
- Rate limiting: at most 10 requests/min on Identity pages and 20 image uploads/hour
- HTTP security headers: X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy and Content-Security-Policy
- Authentication cookies set to HttpOnly, SecurePolicy Always, SameSite Strict and a 31-day sliding expiry
- AllowedHosts restricted to the real domains; validation with Url.IsLocalUrl() when changing language
Aquarium equipment: maintenance and power use
2026/06
- Configurable maintenance interval per piece of equipment with a visual badge (overdue / due soon / date)
- "Log maintenance" button that updates the date and clears the reminder notification
- Automatic Warning notification when maintenance is overdue
- Watts (W) field per device and a summary of total power use, monthly estimate in kWh and cost if you have set your price per kWh
- New "Price per kWh" field in the user profile
Global search
2026/06
- Search box always visible in the header, showing fish, plant, invertebrate, habitat and blog results in a dropdown grouped by category
- 300 ms debounce, closes with Escape or a click outside, expandable on mobile
- The fish, plant and invertebrate search pages also return results by taxonomic family name
- The "View all" links in the dropdown take you to the search page with the filter already applied
Sponsored Amazon products
2026/06
- Amazon product suggestions on fish, plant and invertebrate profiles, prioritised in context by species, family and section
- Block of relevant products on aquarium pages and blog posts
- Full management from the admin panel at
/admin/sponsored
Aquarium management
2026/06
- Aquarium deletion with a 7-day grace period and the option to cancel
- Clone your own aquarium or a public one as a starting point
- Inhabitant history: record of additions and removals with the reason for removal
Technical SEO
2026/06
- Section-specific Open Graph image (fish, plants, invertebrates, habitats, algae)
- Lazy loading on the main image of blog posts
- Audit and verification of canonical, breadcrumbs, h1 and metadata on every public page
Compatibility
2025/09
- Added compatibility between fish
- Added compatibility between invertebrates
- Added compatibility between fish and invertebrates
Various changes, version 2
2025/08
- Added habitats to fish, plants and invertebrates
- Geographic map of where the fish live
- Option to search by region or country
- Recommended minimum aquarium dimensions for fish
- Small display improvements in Water parameters and Minimum tank size
First changelog entries
2025/03
- Added light requirements, light spectrum, CO2 requirements, natural growth, soil requirements and maximum size fields to plants