You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge tiann/hapi upstream (33 commits, v0.20.2) into the liuxin fork.
Notable adoptions:
- file viewer download button (tiann#926) — the download UI the user asked
about; decodes existing base64 content to a Blob, no new endpoint
- Claude Code 'auto' permission mode (tiann#879)
- in-app PWA update prompt when a new service worker is ready (tiann#946) —
PwaUpdateBannerWithStatusOffset, adopted WITHOUT enabling voice
- drag-and-drop files onto chat to attach (tiann#936) + Web Share Target (tiann#933)
- Codex fast mode / service-tier toggle (tiann#904), session service_tier
column + merge-preserve
- four hub-restart-cascade cleanup bugs (tiann#923), stale-PID detection
after abnormal runner shutdown (tiann#931), OutgoingMessageQueue flush
before next turn (tiann#909), inactive-session send error surface (tiann#922)
- OLED black theme + per-appearance custom colors (tiann#937), session-list
attention tooltips (tiann#941), active-only filter + paginated Show-N-more
(tiann#903), file-explorer state persistence (tiann#911)
Conflict resolutions (22 files) — fork features preserved:
- store/index.ts: both forks bumped schema to V10 with different
migrateFromV9ToV10; combined into one migration doing BOTH our
content_uuid dedup index (messages) AND upstream service_tier (sessions)
- socket/server.ts: collapsed duplicate maxHttpBufferSize key into
Math.max(SOCKET_MAX_HTTP_BUFFER_SIZE, 100MB) — keeps our 100MB upload
floor while honoring upstream's image-buffer constant
- spawnSession plumbing (apiMachine/rpcGateway/syncEngine): unioned our
sandbox+continueLatest with upstream's serviceTier across signature,
RPC payload, and the resume call site
- App.tsx: kept signOut + voice-disabled; adopted PWA update banner
(PwaUpdateProvider auto-merged into App() wrapper)
- SessionChat: nested both wrappers — HappyChatProvider > ShareSeedConsumer
+ DragDropZone > thread
- sessionModel.test: split the two same-named merge tests (our codex
dedup + upstream service-tier) back into separate it() blocks
- useSendMessage: kept fork queue-stop AND upstream onError surface;
keyed onError by non-null sid
- startHappyServer: kept fork's manual-rename skip in change_title
- schemas/locales/StatusBar/HappyComposer: unioned both sides
Post-merge type fixes: pinned-session test mock gained pendingRequests +
nextScheduledAt (new required SessionSummary fields); legacy-CLI model
backfill in applySessionConfig now extracts modelId from upstream's Pi
{provider,modelId} union.
Validation: typecheck green (cli/web/hub); full suite 2260 tests pass
incl. the runner stress test.
via [HAPI](https://hapi.run)
Co-Authored-By: HAPI <noreply@hapi.run>
0 commit comments