Dumber Browser - Homepage {@html ``} {@html ``}
dumb://home {statsLoading ? 'syncing…' : `${stats?.recent_count ?? 0} recent`} · {historyItems.length} entries · {pinnedSites.size} pinned
history {historyItems.length}
pinned {pinnedSites.size}
quick-links {quickAccess.length}
{#if stats && stats.total_entries}
stored {stats.total_entries}
{/if}
latestVisitInfo && navigateTo(latestVisitInfo.entry.url)} onkeydown={(event) => { if (event.key === 'Enter' && latestVisitInfo) { navigateTo(latestVisitInfo.entry.url); } }} aria-label={latestVisitInfo ? `Open ${latestVisitInfo.title}` : 'No recorded visits'} > {#if latestVisitInfo} {:else} {/if}

Recent History

Scroll to revisit anything from your latest sessions.

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

No history yet

Start browsing to see your recent history here.

{:else}
{#each displayedHistoryItems as item (item.id)}
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 = 'flex'; } }} onload={(e) => { const target = e.target as HTMLImageElement; if (target) { const fallback = target.nextElementSibling as HTMLElement; if (fallback) fallback.style.display = 'none'; } }} /> {:else}
{/if}
{getDisplayTitle(item)}
{formatTime(item.last_visited)}
{@html highlightDomainInUrl(item.url)}
{ e.stopPropagation(); togglePin(item.url); }} onkeydown={(e) => { if (e.key === 'Enter') { e.stopPropagation(); togglePin(item.url); } }} title={isPinned(item.url) ? "Unpin from favorites" : "Pin to favorites"} > {#if isPinned(item.url)} {:else} {/if}
deleteHistoryEntry(item.id, e)} onkeydown={(e) => e.key === 'Enter' && deleteHistoryEntry(item.id, e)} title="Delete this entry" >
{/each} {#if !showAllHistory && historyItems.length > INITIAL_HISTORY_DISPLAY} {:else if showAllHistory && hasMoreHistory}
{#if loadingMoreHistory}
Loading more history...
{/if} {/if}
{/if}

Jump back in

Direct access to the sites you like the most.

{#if quickAccessLoading}
Preparing your shortcuts...
{:else if quickAccess.length === 0}

No quick links yet

Browse a few sites and we'll surface your frequent destinations here.

{:else}
{#each quickAccess as item (item.id)}
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 = 'flex'; } }} onload={(e) => { const target = e.target as HTMLImageElement; if (target) { const fallback = target.nextElementSibling as HTMLElement; if (fallback) fallback.style.display = 'none'; } }} /> {:else}
{/if}
{getDisplayTitle(item)}
{getDomain(item.url)}
{ e.stopPropagation(); togglePin(item.url); }} onkeydown={(e) => { if (e.key === 'Enter') { e.stopPropagation(); togglePin(item.url); } }} title={isPinned(item.url) ? "Unpin from favorites" : "Pin to favorites"} > {#if isPinned(item.url)} {:else} {/if}
{formatVisitLabel(item.visit_count)}
{/each}
{/if}

Search Shortcuts

Quick search prefixes for faster browsing.

{#if searchShortcutsLoading}
Loading search shortcuts...
{:else if Object.keys(searchShortcuts).length === 0}

No shortcuts configured

Add search shortcuts to your config file.

{:else}
{#each Object.entries(searchShortcuts) as [key, shortcut] (key)}
{key}:
{shortcut.description.toLowerCase()}
{/each}
{/if}

Keyboard Shortcuts

Stay quick with the essentials.

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

Usage Stats

Your browsing activity at a glance.

{#if statsLoading}
Loading stats...
{:else if stats}
{stats.total_entries}
Entries Stored
{stats.recent_count}
Recent Window
{#if stats.newest_entry}
{formatTime(stats.newest_entry)}
Newest Visit
{/if} {#if stats.oldest_entry}
{formatCalendarDate(stats.oldest_entry)}
Oldest Entry
{/if}
{:else}

No statistics available

{/if}