···6677- Forward/Back history navigation in the app rail/navigation, and thread drawer
88- Added theme control (light/dark/system) with proper light theme support
99+- Help section with keyboard shortcuts and usage help
9101011### 2026-04-07
1112
docs/public/README.md
This is a binary file and will not be displayed.
+1-10
docs/todo.md
···11---
22title: "To-Do List/Parking Lot"
33-updated: 2026-03-31
33+updated: 2026-04-08
44---
5566## Bugs
77-88-## Refactor
99-1010-Typeahead code is largely repeated in the following places:
1111-1212-1. `src/components/LoginPanel.tsx`
1313-2. `src/components/deck/ColumnPicker/ProfileColumnPicker.tsx`
1414-3. `src/components/explorer/ExplorerUrlBar.tsx`
1515-4. `src/components/search/hooks/useSearchController.ts`
167178## High Priority Updates
189
+7-7
src/components/explorer/ExplorerPanel.tsx
···11import { ExplorerController } from "$/lib/api/explorer";
22import { ProfileController } from "$/lib/api/profile";
33-import type { ExplorerNavigation, ExplorerTargetKind } from "$/lib/api/types/explorer";
33+import type {
44+ ExplorerNavigation,
55+ ExplorerTargetKind,
66+ ExplorerViewLevel,
77+ ExplorerViewState,
88+} from "$/lib/api/types/explorer";
49import { NAVIGATION_EVENT } from "$/lib/constants/events";
510import { consumeQueuedExplorerTarget } from "$/lib/explorer-navigation";
611import { listen } from "@tauri-apps/api/event";
···1116import { createExplorerState } from "./explorer-state";
1217import { ExplorerBreadcrumb } from "./ExplorerBreadcrumb";
1318import { ExplorerUrlBar } from "./ExplorerUrlBar";
1414-import type { ExplorerViewLevel, ExplorerViewState } from "./types";
1519import { CollectionView } from "./views/CollectionView";
1620import { PdsView } from "./views/PdsView";
1721import { RecordView } from "./views/RecordView";
1822import { RepoView } from "./views/RepoView";
1919-2020-function resolveTargetLevel(kind: ExplorerTargetKind): ExplorerViewLevel {
2121- return kind as ExplorerViewLevel;
2222-}
23232424function resolveParentInput(view: ExplorerViewState): string | null {
2525 switch (view.level) {
···145145 const resolved = await ExplorerController.resolveInput(submittedInput);
146146 if (requestId !== resolveRequestId) return;
147147148148- const level = resolveTargetLevel(resolved.targetKind);
148148+ const level = resolved.targetKind as ExplorerViewLevel;
149149150150 const viewState = { level, input: submittedInput, resolved, loading: true, error: null, data: null };
151151
+1-2
src/components/explorer/explorer-state.ts
···11-import type { ExplorerTargetKind } from "$/lib/api/types/explorer";
11+import type { ExplorerState, ExplorerTargetKind, ExplorerViewState } from "$/lib/api/types/explorer";
22import { createStore, produce } from "solid-js/store";
33-import type { ExplorerState, ExplorerViewState } from "./types";
4354export function createExplorerState() {
65 const [state, setState] = createStore<ExplorerState>({
···11import { RecordBacklinksPanel } from "$/components/diagnostics/RecordBacklinksPanel";
22-import { type JsonValue, JsonValueAs } from "$/components/explorer/types";
32import { ArrowIcon, Icon } from "$/components/shared/Icon";
43import { PostRichText } from "$/components/shared/PostRichText";
44+import { type JsonValue, JsonValueAs } from "$/lib/api/types/explorer";
55import { getStringProperty, isRecordLike, isString } from "$/lib/type-guards";
66import type { PostRecord } from "$/lib/types";
77import { createMemo, createSignal, For, type ParentProps, Show } from "solid-js";