Recent History

{#if historyLoading}
Loading history...
{:else if historyItems.length === 0}

No history yet

Start browsing to see your recent history here.

{:else} {#each historyItems as item (item.url)}
navigateTo(item.url)} onkeydown={(e) => e.key === 'Enter' && navigateTo(item.url)} >
{#if item.favicon_url} { const target = e.target as HTMLImageElement; if (target) { target.style.display='none'; const fallback = target.nextElementSibling as HTMLElement; if (fallback) fallback.style.display='block'; } }} onload={(e) => { const target = e.target as HTMLImageElement; if (target) { const fallback = target.nextElementSibling as HTMLElement; if (fallback) fallback.style.display='none'; } }} /> {:else}
{/if}
{item.title || 'Untitled'}
•
{getDomain(item.url)}
•
{item.url}
{formatTime(item.last_visited)}
deleteHistoryEntry(item.id, e)} onkeydown={(e) => e.key === 'Enter' && deleteHistoryEntry(item.id, e)} title="Delete this entry" >
{/each} {#if hasMoreHistory}
{#if loadingMoreHistory}
Loading more history...
{/if} {/if} {/if}

Keyboard Shortcuts

{#if shortcutsLoading}
Loading shortcuts...
{:else} {#each shortcuts as shortcut (shortcut.key)} {/each}
{shortcut.key} {shortcut.description}
{/if}

Statistics

{#if statsLoading}
Loading stats...
{:else if stats}
{stats.total_entries}
History Entries
{:else}

No statistics available

{/if}

Top 5 Most Visited

{#if topVisitedLoading}
Loading top visited...
{:else if topVisited.length === 0}

No visit data available

{:else}
{#each topVisited as item, index (item.url)}
navigateTo(item.url)} onkeydown={(e) => e.key === 'Enter' && navigateTo(item.url)} >
{index + 1}
{item.title || 'Untitled'}
{getDomain(item.url)}
{item.visit_count}
{/each}
{/if}