Skip to content

25-08-2025

Compare
Choose a tag to compare
@fulleni fulleni released this 25 Aug 21:01
· 554 commits to main since this release
3716d7a

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 prevent setState 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