Personalized Delta Feed – Real-Time “Unread Updates”
The new “Unread Updates” toggle enables logged-in users to instantly switch between the global latest updates feed and their own personalized unread feed without reloading the page. This creates a frictionless reading experience tailored to individual activity.
The underlying query logic is performance-focused. Only manga that have never been read or have received new chapters after the user’s last read timestamp are included. By aggregating reading history and leveraging indexed queries, the system avoids heavy JOIN operations and maintains high scalability even with large datasets.
To ensure smooth interaction, the feature combines dual-layer caching: a 10-minute server-side object cache and lightweight in-memory browser caching. The result is near-instant feed switching with minimal server overhead.
Assistant Signal Engine – From Reactive to Proactive
In previous versions, the Virtual Assistant responded only when users asked questions. In 2.1.4, it becomes proactive. The new Signal Engine allows the server to generate contextual suggestions tailored to each user and surface them intelligently within the Assistant interface.
- Signals are generated server-side based on user context
- Each signal has a unique instance ID to prevent repetition
- The system automatically resolves the highest-priority signal
- Content is lazily fetched only when the Assistant modal is opened
- Context-aware “thinking” states adapt to signal categories such as economy or event
This architecture transforms the Assistant into a proactive engagement layer suitable for VIP renewals, seasonal events, personalized notifications, and marketing campaigns.
Extending Signals via Code Snippets (No Core Modification Required)
The Signal Engine is fully extensible through WordPress filters. Developers can inject custom signals without modifying theme core files. Below is an example of adding a Valentine’s Day signal using Code Snippets.
add_filter('init_manga_assistant_signals', function($signals, $user_id){
$now = current_time('timestamp');
$month = date('n', $now);
$day = date('j', $now);
if ($month == 2 && $day == 14) {
$signals[] = [
'id' => 'valentine_' . date('Ymd', $now),
'type' => 'valentine_greeting',
'category' => 'event',
'priority' => 999,
'fetch_url' => rest_url(INIT_MANGA_NAMESPACE . '/assistant/proactive/valentine'),
];
}
return $signals;
}, 10, 2);
The corresponding REST endpoint for rendering the content:
add_action('rest_api_init', function(){
register_rest_route(INIT_MANGA_NAMESPACE, '/assistant/proactive/valentine', [
'methods' => 'GET',
'permission_callback' => function(){
return is_user_logged_in();
},
'callback' => function(){
ob_start();
?>
<div class="ima-answer uk-text-center">
<h3>Happy Valentine’s Day!</h3>
<p>Wishing you a sweet and love-filled February 14th.</p>
</div>
<?php return new WP_REST_Response([ 'ok' => true,
'answer' => [
'type' => 'html',
'data' => ob_get_clean(),
],
], 200);
},
]);
});
Thanks to the instance-based ID mechanism, each signal appears only once per event cycle, preventing spam and preserving a natural user experience.
Conclusion
Version 2.1.4 strengthens Init Manga at the architectural level. It delivers behavior-driven personalization, optimized unread queries with dual-layer caching, and a fully extensible proactive Assistant framework. Init Manga is no longer just a display theme—it is now an intelligent, scalable platform capable of adapting to user behavior and driving engagement proactively.
Comments