| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2 days | test: run frontend verification natively under Bun | Adam Malczewski | |
| Make Bun the explicit Vitest runtime. Detect cyclic tool input before slow native pretty serialization, preserve shared references, and use native abort signals in the live jsdom probe. 2587 tests repeatedly green and2 real HTTP/UI tests pass; Bun-run typecheck, lint and production build pass without NODE_OPTIONS. | |||
| 5 days | fix(chat): delay delivery warning and shorten queued action label | Adam Malczewski | |
| Wait one second before displaying pending-input recovery UI, cancelling on confirmation or removal. Label the queued-message stop action Flush without changing behavior. Verified: 2451 frontend tests passed twice, typecheck, Biome, and build. | |||
| 5 days | fix(review-followup-fee): recover omitted chat payloads through history | Adam Malczewski | |
| 6 days | fix(review-followup-fea): clarify Stop with queued input | Adam Malczewski | |
| 12 days | feat(tool-call-cards): distinct Phosphor icon per tool (phosphor-svelte, ↵ | Adam Malczewski | |
| deep imports) | |||
| 12 days | feat(tool-call-cards): English tool names, no '{}' for argument-less calls, ↵ | Adam Malczewski | |
| thinking-style dots while running | |||
| 12 days | feat(tool-call-cards): final visual polish — unified edit diff, quiet ↵ | Adam Malczewski | |
| failed/orphan/pending headers | |||
| 12 days | feat(tool-call-cards): polish responsive headers and expanded details | Adam Malczewski | |
| 12 days | feat(tool-call-cards): pair calls and results in summarized collapsible bubbles | Adam Malczewski | |
| 2026-09-18 | feat(chat): compress images at attach time (JPEG re-encode + rescale) with a ↵ | Adam Malczewski | |
| per-image toggle Staged images now default to a compressed variant: LOSSLESS sources (PNG/BMP) are re-encoded to JPEG at q0.85, rescaled to cap the longest edge at 2048px (never upscaled, high-quality smoothing, alpha flattened onto white), and used only under a smaller-wins rule. JPEG/WebP/GIF are sent verbatim. Each staged thumbnail gets a Compress checkmark (default ON, reversible until send, cached so flipping never re-encodes); OFF sends the original untouched bytes. Conversion runs async at staging and any failure silently falls back to the original — sending is never blocked or broken. Pure decision logic lives in features/chat/logic/image-compress.ts (format selection, dimension math, smaller-wins); the canvas encode is a thin injected edge (features/chat/adapter/image-encode.ts, Composer prop encodeJpeg). No wire-contract, send-path, or backend changes; complements the backend's body-budget eviction safety net by shrinking payloads at the source. Verification: typecheck 0 errors, vitest 1720/1720 (twice), biome clean, build succeeds. New tests: 12 pure-logic, 2 encoder-edge, 6 component. | |||
