v0.6.0
New Features
Sync filter option for in-memory omnibar endpoints
Use filter instead of fetch for in-memory data sources - no async wrapper, no AbortSignal, and instant updates (no debounce delay):
useOmnibarEndpoint('stations', {
filter: (query, pagination) => {
const matches = stations.filter(s => s.name.includes(query))
return {
entries: matches.slice(pagination.offset, pagination.offset + pagination.limit)
.map(s => ({ id: s.id, label: s.name, handler: () => select(s) })),
total: matches.length,
hasMore: pagination.offset + pagination.limit < matches.length,
}
},
group: 'Stations',
minQueryLength: 0,
})Improvements
Eliminated omnibar flicker
- Stale-while-revalidate: Results stay visible while loading new ones instead of clearing
- Sync endpoints skip debouncing:
filterendpoints update instantly (0ms) whilefetchendpoints still debounce (150ms)
Bug Fixes
- Fixed
hideFromModalnot working: Actions withhideFromModal: truenow correctly hidden from shortcuts modal - Fixed stale
enabledcheck: Endpoint enabled state now checked with fresh values - Fixed empty query handling: Endpoints with
minQueryLength: 0now show results before typing
Full Changelog: v0.5.0...v0.6.0