···11+# Changelog
22+33+All notable changes to this project will be documented in this file.
44+55+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66+and this project targets [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77+88+## [Unreleased]
99+1010+Target release: `v1.0.0`.
1111+1212+### 2026-06-09
1313+1414+#### Added
1515+1616+- PGlite-backed local cache/search foundation with WASM build support.
1717+ - Transactional schema migrations for accounts, cached records, collection
1818+ sync state, and record search.
1919+- Ubuntu-purple boot splash that initializes PGlite, runs migrations, and offers
2020+ recovery actions.
2121+- Cache-aware AT Protocol browsing: live record fetches populate PGlite and offline
2222+ failures can fall back to cached collections/records.
2323+- Shared `errorMessage()` utility for consistent unknown-error messages.
2424+2525+### 2026-06-08
2626+2727+#### Added
2828+2929+- Ubuntu 8.10 / GNOME 2-inspired desktop shell, panel, wallpaper, windows, and Humanity
3030+ icon styling.
3131+- First-run AT Protocol account setup flow with handle resolution and persisted account
3232+ identity.
3333+- Nautilus-style collection browser backed by live AT Protocol repository collection and
3434+ record loading.
3535+- gedit-style JSON record viewer opened from selected records.
3636+- Window management basics including movable, resizable, minimizable, maximizable, and
3737+ closable windows.
3838+- About Computer dialog, desktop icons, sticky note, and Tangled project links.
+2-12
src/lib/atproto/identity.ts
···33import type { Handle } from '@atcute/lexicons/syntax';
44import type {} from '@atcute/atproto';
55import type {} from '@atcute/bluesky';
66+import type { AccountIdentity, DidDocument } from './types';
6777-export type AccountIdentity = {
88- handle: string;
99- did: string;
1010- pds: string | null;
1111- displayName: string | null;
1212- avatar: string | null;
1313- description: string | null;
1414-};
88+export type { AccountIdentity } from './types';
1591610export const defaultIdentity = { handle: 'desertthunder.dev', did: 'did:plc:xg2vq45muivyy3xwatcehspu' };
17111812const publicApi = new Client({ handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }) });
1919-2020-type DidDocument = {
2121- service?: Array<{ id?: string; type?: string; serviceEndpoint?: string | string[] | Record<string, unknown> }>;
2222-};
23132414export async function resolveAccount(handle: string): Promise<AccountIdentity> {
2515 const normalizedHandle = handle.trim().replace(/^@/, '').toLowerCase();