25-08-2025
Content Discovery Overhaul & Architectural Refinements
This release marks a significant leap in how users discover and personalize their news feeds. We've introduced a suite of powerful filtering tools that offer granular control over content, while foundational architectural changes enhance navigation, stability, and the overall robustness of the application.
🔍 Advanced Content Filtering & Discovery
We focused on giving users more precise tools to find the news that matters to them. This involved not just adding new filters, but rethinking how filtering works to create a more cohesive and efficient experience.
- 🗺️ Geographical Filtering Introduced: Users can now pinpoint news with surgical precision by filtering headlines based on where an event occurred (
Event Country
) or the headquarters of a news source (Source Headquarter
). This was built on a newly refactored, reusable country selection component. #92 - ✨ Unified Source Filtering: The user experience for filtering by source has been streamlined by integrating country selection directly into the main source filter page, eliminating unnecessary navigation steps. #93
- ✅ Corrected Filter Logic: A bug in the headline feed's filtering mechanism was addressed by refining the
HeadlineFilter
model and ensuring source headquarters are correctly filtered by their ISO codes. #94 - 📌 "Apply My Followed" Shortcut: A new "Apply My Followed" feature has been implemented across country, source, and topic filters, allowing users to instantly apply their saved preferences with a single tap. #95
🗺️ Deeper Personalization & Navigation
This release deepens user personalization by treating countries as first-class entities that can be followed and explored. We also refactored core navigation to be more robust and idiomatic.
- ❤️ Followable Countries: Users can now follow and unfollow specific countries, adding another layer of personalization to their content preferences, managed through dedicated new BLoCs and UI pages. #97
- 🔗 Unified Entity Details: Countries are now integrated into our generic entity details feature, allowing them to be viewed and managed with the same rich detail pages as topics and sources. #98
- 🧭 Robust Navigation Arguments: Navigation to detail pages was refactored to pass simple, serializable identifiers (
entityId
,contentType
) instead of entire objects. This aligns with GoRouter best practices and improves maintainability. #99 - 📍 Centralized Navigation Logic: The
EntityDetailsBloc
is now created at the routing level, centralizing its management. This change also enabled direct navigation from a headline to its corresponding country detail page. #100
🛠️ Under-the-Hood: A More Robust Foundation
Significant effort went into improving the application's core stability, especially within the demo environment, and ensuring our asynchronous operations are handled safely.
- 🔄 Synchronized User Preferences: The
AccountBloc
now subscribes to repository updates, ensuring that user content preferences are always synchronized and instantly reflect any changes. #104 - 🛡️ Resilient Ad Loading: The
AdLoaderWidget
has been fortified with improved lifecycle management to preventsetState
calls on disposed widgets and to cancel ad requests when the widget is removed or updated, preventing memory leaks. #105 - 🧪 Stabilized Demo Environment: The demo mode experience is now more reliable. We've fixed the email login flow, introduced a service to pre-emptively initialize user data to prevent read errors, and implemented a specialized in-memory client for advanced country filtering. #101, #102, #103