2026-10-21Calendar (month view)
- See how full each day is at a glance: every day now shows one small bar per machine
that grows with the number of bookings, still green, yellow or red. The selected day is outlined
instead of filled, so its bars stay visible.
2026-09-20Homepage, legal pages
- Search engine visibility fixed: the site was being served to Google with no page
title, no description, no canonical link and no social preview tags at all. Every page now carries
its own title, description and preview image, so search results and shared links show the real
EasyLaundry wording instead of a bare address.
- German is now the version Google sees: the pre-built copy of the site handed to
search engines was accidentally the English one, while the site targets German-speaking
Switzerland. It is now built in German.
- Legal pages are their own pages: Impressum, Datenschutz and Nutzungsbedingungen
used to be served as an exact copy of the homepage until the browser caught up. Each now has its
own title and address from the first moment it loads.
- Faster first load: the homepage now downloads roughly 60% less than before
(about 1.0 MB down to 0.4 MB), by loading the admin, chat and info screens only when they are
actually opened and by using a lighter background image.
- The site is now findable in all six languages: until now the whole site
lived at a single address, so Google could only ever list it in one language. Each language
now also has its own address (easylaundry.ch/de, /fr, /it, /en, /es, /vi) and the pages tell
Google how they relate, so a French-speaking search can find the French page. The plain
easylaundry.ch address still picks a language automatically, exactly as before, and sharing
a language address always opens in that language.
- Clearer headline for search results: the main heading now reads
"Easy Laundry - Digitale Waschküchenverwaltung für Schweizer Liegenschaften" instead of just the
brand name. The page looks unchanged.
2026-01-23Calendar Privacy
- Visitor Privacy: Hidden tenant names and apartment numbers for non-logged-in visitors
in the booking modal. Visitors effectively see "Busy" status instead of personal details.
2025-12-31UX / Navigation
- Improved Language Selector: Replaced the language dropdown with a direct
"click-to-switch" horizontal bar (EN DE FR IT ES). This makes changing languages faster and requires one
less click.
2025-12-31Landing Page / SEO
- Optimized Meta Description: Shortened the meta description to <160 characters for
all languages to resolve SEO warnings and improve click-through rates.
- HTTPS Enforcement: Updated Open Graph and Canonical tags to strictly enforce
https://www.easylaundry.ch, resolving mixed content warnings (HTTP vs HTTPS).
- Translation Fixes: Resolved syntax errors in translation files and ensured missing SEO
keys were present for all supported languages.
2025-12-31SEO Improvements
- Optimized Visibility: Integrated automated Sitemap generation and dynamic Metadata
(Title, Description, Canonical Tags) for all pages to improve search engine ranking.
- Technical SEO: Implemented Static Pre-rendering (SSG) to resolve "0
words" crawling errors. Search engines now see the full landing page content immediately.
- Content Expansion: Added a detailed "Why Easy Laundry?" section to the Home Page,
translated into all 5 languages, to address content density requirements.
- Accessibility: Added descriptive Alt text to key images for better accessibility and
SEO.
2025-12-31Booking Notifications
- Email Reminders: Implemented a scheduled email reminder system that alerts tenants 2
hours before their first booking of the day.
- Smart Logic: The system intelligently checks for earlier bookings to avoid spamming
tenants with multiple notifications for the same day.
- User Preferences: Added a "Booking Reminder" toggle in the Profile Settings, allowing
tenants to opt-out of these notifications.
2025-12-31Admin Capabilities
- Admin Bookings: House Admins can now book washing machines directly from the calendar,
even without a personal tenant profile. Bookings are marked as "House Admin".
2025-12-31Admin UI Improvements
- Security Section Redesign: Relocated the Admin Password Change section to the bottom of
the page (before Danger Zone) and redesigned it into a unified card with a lock icon.
- Progressive Disclosure: The password change form is now hidden by default and can be
toggled via a "Change Password" button to declutter the interface.
2025-12-31Internationalization & Admin Tools
- Full Localization: Completed translations for all 5 languages (EN, DE, FR, IT, ES).
Added missing keys across the entire application including Modals and Landing Page.
- Spanish Support: Fully integrated Spanish (Español) as a supported language.
- Admin Interface:
- Enabled "Inbox" access for Admins to view messages sent to the administration.
- Added a dedicated "Help" button in the header for quick access to support documentation.
- Message Management: Added a "Delete" button (trash icon) to the Inbox, allowing
users to keep their inbox clean.
- Fixes: Resolved duplicate translation keys, standardized modal messages, and fixed a
messaging bug that prevented tenants from sending messages due to an invalid data
field.
2025-12-31Security & User Management
- Hidden PINs: Tenant PINs are now masked (****) in the Admin Panel to improve security.
- Secure Reset: Added a "Reset PIN" button that securely resets credentials to '1234' and
automates the email notification flow.
- Permission Recovery: Implemented robust retry logic for admin operations (like
adding/resetting tenants) to handle transient permission errors gracefully.
- Login Fix: Relaxed Firestore rules to allow tenants to re-claim their account session
using their PIN, resolving "insufficient permissions" errors when re-logging in.
2025-12-31Tenant Management
- Welcome Emails: New tenants now automatically receive a welcome email containing their
login credentials (PIN) and a link to the app.
- Reply-To: Welcome emails are configured so that if a tenant replies, the email goes
directly to the House Admin.
- UI Polish: Updated the Admin Inbox icon for better clarity.
2025-12-31Access Requests
- Email Notifications: Implemented automatic email notifications for access requests.
Admins now receive an email whenever a guest requests access via the login screen.
- Reliability: Configured Firebase Trigger Email Extension with Gmail SMTP and
automated "App Password" troubleshooting.
- UX: Improved Request Access form with an optional email field for better communication.
2025-12-30Tenant Profiles & Login Fixes
- Tenant Profiles: Added "Contact & Security" section to the Profile modal. Tenants can
now update their Email and change their PIN (Password).
- Login Standardized: Updated Login and Registration screens to support 4-6 digit PINs,
matching the new profile settings.
- Critical Login Fix: Adjusted Firestore security rules to allow proper tenant lookup
during login, resolving the "Invalid PIN" error.
2025-12-30Security Rules Optimization
- CSP Fixes: Updated
firebase.json content security policy to allow loading
fonts from r2cdn.perplexity.ai and ensure Firestore Web Channel connections are not blocked
by strict client-side policies.
- Page Context: Bug reports now include a human-readable "Context" (e.g., "Calendar",
"Chat", "Admin Panel") to help identify where the issue occurred.
- Firestore Rules Cleanup: Removed legacy/unused
isTenant logic and cleaned
up comments to resolve compiler warnings during deployment.
2025-12-30Bug Reporting Feature
- Bug Report Modal: Added a user-facing modal to report bugs and feedback directly from
the
header.
- Page Context: Automatically captures the current page URL to help with debugging.
- File Uploads: Integrated Firebase Storage to allow users to attach screenshots or logs
to
their reports.
- Infrastructure:
- Enabled Firebase Storage service.
- Deployed Storage Security Rules to protect user data.
- Configured CORS for the storage bucket to allow secure browser uploads.
- Admin Interface: Created
ManageReports component in Admin Panel to view,
resolve, and download attached files from user reports.
- Translations: Added full multi-language support (EN/DE/FR/IT) for the reporting
feature.
2025-12-30Security & Stability Fixes
-
2025-12-30
System
Optimized Firebase connection settings to reduce false positives from ad blockers
(experimentalAutoDetectLongPolling).
-
2025-12-30
Global
Fixed Content Security Policy (CSP) to allow fonts from Perplexity CDN.
- CSP (Content Security Policy): Updated
firebase.json to allow connections
to Firebase and Google Analytics, fixing the "Calendar loading" freeze.
- Permission Fixes:
- Relaxed Firestore rules to allow users to claim their tenant identity without strict field
diffing errors.
- Updated
useTenants hook to only fetch data for Admins, suppressing permission
errors for regular users.
- Fixed booking cancellation permission error by verifying ownership via stable
tenantId instead of transient auth UID.
- Authentication Logic: Updated
AuthContext and Rules to allow users
to securely "re-claim" their tenant profile by proving PIN knowledge, fixing "insufficient
permissions" after session rotation.
- Admin Redirection: Implemented deep linking for tabs. Admin logins (header and
landing page) now automatically redirect to the Admin Dashboard.
- Admin Persistence: Fixed "Care Taker Login" issue where admin privileges were
not correctly set after redirection.
- Crash Fix: Resolved
ReferenceError: useAuth is not defined by restoring
the corrupted useTenants.ts file.
- Performance: Optimized
App.tsx by removing redundant
AuthProvider and memoized context values to stop excessive re-renders.