Summary
The current get_search_*_list exports (get_search_manga_list, get_search_anime_list, get_search_novel_list) accept a flat query: String and optional filters: [FilterStruct], but there is no standardized way for plugin developers to expose richer search capabilities such as:
- Tag/genre-based filtering
- Advanced sort options within search
- Search suggestions / autocomplete
- Structured query parameters (author, year, status, etc.)
This limits the Ito app's ability to provide a premium search experience since the app cannot know what search features a given plugin actually supports.
Current API Surface
// ito-rs/src/provider.rs
fn get_search_manga_list(
query: &str,
page: i32,
filters: &[FilterStruct],
) -> Result<MangaPageResult>;
// ito_runner.swift
public func getSearchMangaList(query: String, page: Int32, filters: [FilterItem]?) async throws -> MangaPageResult
Proposed Enhancements
1. Search Capabilities Descriptor
Allow plugins to declare what search features they support via a new export:
fn get_search_capabilities() -> SearchCapabilities;
pub struct SearchCapabilities {
pub supports_tag_search: bool,
pub supports_author_search: bool,
pub supports_sort: bool,
pub available_sort_options: Vec<SortOption>,
pub available_genres: Vec<String>, // e.g. ["Action", "Romance", "Isekai"]
pub supports_suggestions: bool,
}
This would let the Ito app dynamically render genre chips, sort dropdowns, or author fields only when the active plugin actually supports them.
2. Search Suggestions Export (Optional)
fn get_search_suggestions(query: &str) -> Result<Vec<String>>;
Allows plugins backed by APIs with autocomplete (like AniList, MAL, or Typesense-powered backends like Atsumaru) to provide live suggestions as the user types.
3. Structured Search Parameters
Instead of relying solely on filters: [FilterStruct], consider a dedicated search params struct:
pub struct SearchParams {
pub query: String,
pub page: i32,
pub genres: Vec<String>,
pub author: Option<String>,
pub year: Option<i32>,
pub status: Option<String>,
pub sort_by: Option<SortOption>,
pub sort_order: Option<SortOrder>, // Asc / Desc
}
This gives plugin developers a clean, typed API surface instead of encoding everything into generic filter arrays.
Impact
- Ito App: Can dynamically render scope controls, genre tags, sort options, and autocomplete based on what plugins declare they support.
- Plugin Developers: Get a clear, well-documented API to implement richer search without guessing what the host app expects.
- User Experience: Enables Apple HIG-compliant search with contextual scopes and suggested searches.
Priority
Medium — The current flat query + filters API works for basic search. This enhancement would unlock premium UX features in a future Ito release.
Related Files
ito-rs/src/provider.rs — Rust trait definitions
ito-runner/Sources/ito-runner/ito_runner.swift — Swift bridge exports
Summary
The current
get_search_*_listexports (get_search_manga_list,get_search_anime_list,get_search_novel_list) accept a flatquery: Stringand optionalfilters: [FilterStruct], but there is no standardized way for plugin developers to expose richer search capabilities such as:This limits the Ito app's ability to provide a premium search experience since the app cannot know what search features a given plugin actually supports.
Current API Surface
Proposed Enhancements
1. Search Capabilities Descriptor
Allow plugins to declare what search features they support via a new export:
This would let the Ito app dynamically render genre chips, sort dropdowns, or author fields only when the active plugin actually supports them.
2. Search Suggestions Export (Optional)
Allows plugins backed by APIs with autocomplete (like AniList, MAL, or Typesense-powered backends like Atsumaru) to provide live suggestions as the user types.
3. Structured Search Parameters
Instead of relying solely on
filters: [FilterStruct], consider a dedicated search params struct:This gives plugin developers a clean, typed API surface instead of encoding everything into generic filter arrays.
Impact
Priority
Medium — The current flat
query + filtersAPI works for basic search. This enhancement would unlock premium UX features in a future Ito release.Related Files
ito-rs/src/provider.rs— Rust trait definitionsito-runner/Sources/ito-runner/ito_runner.swift— Swift bridge exports