Files
PinchChat/CHANGELOG.md
2026-02-13 15:46:50 +00:00

366 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Changelog
All notable changes to PinchChat are documented here.
Format based on [Keep a Changelog](https://keepachangelog.com/), with [Conventional Commits](https://www.conventionalcommits.org/).
## [1.37.0] — 2026-02-13
### Added
- Response generation time displayed on assistant messages (e.g. "· 12.3s") — shows how long each response took to generate during the current session
## [1.36.1] — 2026-02-13
### Fixed
- Sync `<html lang>` attribute with i18n locale selection for better screen reader and browser language support
- Remove duplicate `aria-label` on message search input
## [1.36.0] — 2026-02-13
### Added
- Semantic `<time>` elements on all message timestamps with full-date tooltip on hover
- Lazy-loaded ReactMarkdown and plugins for faster initial page render
- Print stylesheet for conversation export
- GatewayClient WebSocket unit tests (12 tests)
### Documentation
- Reverse proxy configuration guide (Nginx, Caddy, Traefik)
## [1.34.1] — 2026-02-13
### Fixed
- Drop Node 18 from CI matrix — Vite 7.3 requires Node 20.19+
- Update minimum Node.js version to 20.19 in engines and docs
## [1.34.0] — 2026-02-13
### Added
- Loading spinner while JS bundles load (CSS-only, no flash of blank screen)
- Noscript fallback message for users with JavaScript disabled
## [1.33.1] — 2026-02-13
### Fixed
- Service worker cache now busts on each build (version+timestamp in cache name)
- PWA users no longer get stuck on stale cached assets
- Auto-reload when new service worker version is detected
- Periodic SW update check every 30 minutes
## [1.33.0] — 2026-02-13
### Added
- Syntax highlighting for C, C++, and Java code blocks
- Aliases: `h` (C headers), `cc`/`cxx`/`c++`/`hpp`/`hxx` (C++ variants)
## [1.32.2] — 2026-02-13
### Fixed
- Render markdown unordered and ordered lists with proper bullet/number styles
## [1.32.1] — 2026-02-13
### Fixed
- Improve light theme readability for tool call badges (darker text, higher bg opacity) and user message bubbles (more contrast)
## [1.32.0] — 2026-02-13
### Added
- Optimistic message rendering — sent messages appear instantly with status indicators (sending → sent)
- Debugging section in troubleshooting guide
### Fixed
- Theme switcher portal — max z-index, remove backdrop-blur to fix compositing issues
- Theme switcher rendered via portal to escape overflow/stacking context
- Theme switcher click handling — prevent click-outside from swallowing button clicks
### Tests
- Add i18n and highlight.js test suites (18 cases, 95 total)
## [1.31.1] — 2026-02-13
### Fixed
- Replace remaining hardcoded `text-zinc-*` classes in App.tsx with theme CSS variables for proper light/OLED theme support
## [1.31.0] — 2026-02-13
### Added
- Unit test infrastructure with Vitest — 27 tests across 3 suites (relativeTime, sessionDisplayName, messagesToMarkdown)
- `npm test` and `npm run test:watch` scripts
- Test step added to CI workflow (runs on all Node.js matrix versions)
## [1.30.1] — 2026-02-13
### Fixed
- Added missing `aria-label` attributes to icon-only buttons (sidebar close, search clear, JSON copy) for screen reader accessibility
- Added i18n keys for new aria-labels (EN + FR)
## [1.30.0] — 2026-02-13
### Added
- Service worker for PWA support — static assets are cached for instant loads and offline shell
- App is now installable as a standalone PWA on mobile and desktop (Add to Home Screen)
- Enhanced manifest with orientation, categories, and complete icon set
## [1.29.2] — 2026-02-13
### Fixed
- Images now show a pulsing loading skeleton while loading and a graceful error fallback (icon + alt text) when they fail to load
## [1.29.1] — 2026-02-13
### Fixed
- External links in markdown messages now open in a new tab with `rel="noopener noreferrer"` for security
## [1.29.0] — 2026-02-13
### Added
- System theme option — automatically follows OS light/dark preference via `prefers-color-scheme`, updates dynamically when OS setting changes
## [1.28.2] — 2026-02-13
### Fixed
- Resolved all 3 ESLint warnings (react-hooks/set-state-in-effect) — lint now passes with 0 errors and 0 warnings
## [1.28.1] — 2026-02-13
### Fixed
- Docker: added security headers (X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy)
- Docker: index.html is no longer cached, ensuring SPA updates are always picked up after redeploy
### Changed
- Added `engines` field (`node >=18`) and `lint:fix` npm script to package.json
## [1.28.0] — 2026-02-13
### Added
- Multi-tab split view — open 2 sessions side by side with a resizable divider
- Split view button in sidebar session actions (columns icon)
- Secondary pane supports full chat: history, streaming, sending, aborting
- Divider width persisted in localStorage
## [1.27.0] — 2026-02-13
### Added
- Syntax highlighting in chat input textarea — real-time markdown coloring (code blocks, inline code, bold, italic, headings, links) using transparent overlay technique
- Toggle button (highlighter icon) to enable/disable syntax highlighting, persisted in localStorage
## [1.26.0] — 2026-02-13
### Added
- Drag & drop session reordering in sidebar — custom order persists in localStorage, works within pinned/unpinned groups
## [1.24.0] — 2026-02-13
### Added
- Raw JSON viewer toggle on each message — hover to reveal `{}` button, click to show full gateway payload as formatted JSON with copy support
## [1.20.2] — 2026-02-13
### Fixed
- Theme switcher now actually works — migrated ~150 hardcoded Tailwind color classes across all 17 components to CSS custom properties
- All UI elements (backgrounds, text, borders, accents, hover states) now respond to Dark/Light/OLED theme changes in real-time
- Added theme-aware hover, separator, and scrollbar variables per theme mode
- Markdown styles (code, blockquotes, tables) now use theme variables instead of hardcoded colors
## [1.20.0] — 2026-02-12
### Added
- Theme switcher — Dark, Light, and OLED Black modes with 6 configurable accent colors (Cyan, Violet, Emerald, Amber, Rose, Blue)
- CSS custom properties system for consistent theming across all components
- Theme and accent preferences persisted in localStorage
## [1.18.0] — 2026-02-12
### Added
- Improved thinking/reasoning indicator with elapsed time counter — shows pulsing "Reasoning..." with timer when agent is thinking with hidden content, instead of generic bouncing dots
## [1.16.0] — 2026-02-12
### Added
- Display agent avatar from OpenClaw identity config — shown in assistant message bubbles and header when configured
## [1.15.1] — 2026-02-12
### Fixed
- Metadata viewer popup was invisible due to parent `overflow-hidden` — now renders via portal outside the message bubble
## [1.15.0] — 2026-02-12
### Added
- Message metadata viewer — discreet button on hover shows raw message details (id, role, timestamp, channel, etc.)
## [1.14.2] — 2026-02-12
### Fixed
- Textarea scrollbar only appears when content overflows max-height (no more permanent scrollbar)
## [1.14.1] — 2026-02-12
### Fixed
- Session deletion now persists across page refreshes via localStorage blacklist — deleted sessions no longer reappear after reload
## [1.14.0] — 2026-02-12
### Added
- Collapse/expand all tool calls toggle — floating button appears when conversation has tool calls, lets you collapse or expand all at once
## [1.13.0] — 2026-02-12
### Added
- Keyboard shortcuts Alt+↑ / Alt+↓ to navigate between sessions
- Shortcut documented in the keyboard shortcuts help panel (?)
## [1.12.0] — 2026-02-12
### Added
- Export conversation as Markdown file — download button in header saves current session with formatted messages, tool calls, thinking blocks, and timestamps
## [1.11.1] — 2026-02-12
### Fixed
- **Windows horizontal scrollbar** — hide horizontal scrollbar in textarea input; add word-wrap to prevent overflow
## [1.11.0] — 2026-02-12
### Added
- **Relative timestamps in sidebar** — each session shows how recently it was active (2m, 3h, 1d)
- **Message preview in sidebar** — last message preview shown below session name
- **Recency sorting** — sessions sorted by most recently updated within pinned/unpinned groups
## [1.10.0] — 2026-02-12
### Added
- **Agent name badge** — display the agent name (e.g. "Marlbot") in the header next to the session label (`17ff52a`)
## [1.9.0] — 2026-02-12
### Added
- **Human-friendly session titles** — header and sidebar now show readable names (Main, Cron, Task + channel) instead of raw UUIDs; falls back to label or cleaned key (`52a1a7f`)
## [1.8.1] — 2026-02-12
### Fixed
- **Markdown rendering in long messages** — `autoFormatText` no longer wraps markdown prose in code fences; bold, headings, and bullet lists are now correctly rendered (`4c8faf0`)
## [1.7.0] — 2026-02-12
### Added
- **Delete session from sidebar** — trash icon on hover with confirmation dialog; calls `sessions.delete` on the gateway (`e94325b`)
## [1.6.0] — 2026-02-12
### Added
- **System event detection** — heartbeats, cron triggers, webhooks, and channel events now display as subtle inline notifications instead of full user message bubbles (`581675d`)
## [1.5.0] — 2026-02-12
### Added
- **Resizable sidebar** — drag the right edge to resize the sidebar; width persists across sessions (`fa9b10a`)
## [1.4.0] — 2026-02-12
New features and mobile fixes.
### Added
- **Session pinning** — pin important sessions to the top of the sidebar for quick access (`e24378a`)
- **Model badge** — see which AI model is handling the current session, displayed next to the token progress bar (`96f2883`, `1465ae1`)
### Fixed
- **Mobile viewport overflow** — chat messages no longer clip on left/right edges on iPhone (`8ef1b42`)
## [1.3.0] — 2026-02-12
New features improving daily usability.
### Added
- **Unread message indicators** — sessions with new messages show a visual badge in the sidebar so you never miss activity (`c0d27a7`)
- **Copy buttons on tool calls** — expanded tool call parameters and results now have one-click copy buttons (`908dbb4`)
- **Troubleshooting guide** — README now includes a troubleshooting section for common connection and build issues (`7a55940`)
### Fixed
- **CI lint errors** — resolved lint issues in Sidebar, TypingIndicator, and useGateway (`6734b54`)
## [1.2.2] — 2026-02-12
Code readability and developer experience polish.
### Added
- **Language labels on code blocks** — fenced code blocks now show the language name (e.g. "python", "bash") in a subtle label for easier identification (`ae3f683`)
- **Elapsed time on thinking indicator** — see how long the agent has been thinking with a live counter (`0c95150`)
## [1.2.1] — 2026-02-12
Small UX and documentation polish.
### Added
- **Auto-focus chat input** — input field automatically focuses when switching sessions or on connection, so you can start typing immediately (`f2038a2`)
- **Keyboard navigation for sessions** — use arrow keys to navigate the session list in the sidebar (`f55a24c`)
- **i18n contribution guide** — README now includes a section explaining how to add new languages (`f827307`)
## [1.2.0] — 2026-02-12
Polish, performance, and developer experience improvements.
### Added
- **Browser tab title** — shows the active session name in the tab title (`e53ef36`)
- **PWA support** — manifest, apple-touch-icon, and proper favicon sizes for installable webapp (`b8cbc75`)
- **Channel/type icons in session list** — Discord, Telegram, cron, and webchat sessions now show recognizable icons in the sidebar (`73d9e5f`)
- **Date separators** — visual dividers between messages from different days for easier conversation scanning (`375bd10`)
- **Screenshot in README** — added a real screenshot of the app to the README (`788909f`)
- **Loading indicator** — spinner when switching sessions (`cb882f5`)
- **Login URL validation** — inline hint when gateway URL doesn't start with ws:// or wss://, connect button disabled until valid (`dc49734`)
### Changed
- **Lazy-loaded Chat component** — reduces initial bundle size by deferring heavy markdown/syntax-highlighting imports (`b5eafde`)
### Fixed
- **Notification API guard** — no longer crashes in browsers that don't support the Notification API (`8301cba`)
- **ESLint + CI** — resolved all ESLint errors including React compiler rules; added lint step to CI pipeline (`916910f`, `29482e3`)
- **WebSocket reconnection** — exponential backoff with jitter instead of fixed-interval retry, preventing thundering herd on server restart (`f8be728`)
## [1.1.0] — 2026-02-11
A massive feature release turning PinchChat from a basic chat UI into a polished, accessible, and well-documented webchat client for OpenClaw.
### Added
- **OG card image + social meta tags** — rich previews when sharing links on Twitter/Discord/etc. (`88b6494`)
- **Retry/resend button on user messages** — resend a message if something went wrong (`5b2f3a3`)
- **Browser notifications + tab badge** — get notified of new messages even when the tab is in the background (`473d23c`)
- **PR template + security policy** — standardized PR descriptions and responsible disclosure process (`d020094`)
- **ErrorBoundary** — graceful crash recovery with a user-friendly error screen instead of a blank page (`b61a232`)
- **Keyboard shortcuts modal** — press `?` to see all available shortcuts (`ae83545`)
- **Session search filter** — filter sessions in the sidebar with `Ctrl+K` shortcut (`1779709`)
- **Emoji icons on tool call badges** — visual icons per tool type (🔍 web_search, ⚡ exec, 📖 read, etc.) (`72f7d76`)
- **Line break support** — messages now preserve single line breaks via remark-breaks (`59104b4`)
- **Copy button on assistant messages** — one-click copy of the full message text (`dd5b56e`)
- **Animated UI demo on landing page** — interactive fake chat showing tool call visualization, typing effects, and thinking indicators (`d26c498`)
- **Connection lost/reconnected banner** — visual feedback when WebSocket connection drops or recovers (`32a2166`)
- **Scroll-to-bottom button** — appears when scrolled up in chat, click to jump to latest messages (`b56c80a`)
- **Inline image display** — images render directly in chat with a click-to-expand lightbox (`762a5f2`)
- **Logo integration** — PinchChat logo in header, login screen, favicon, and OG meta tags (`97c16be`)
- **GitHub Pages landing page** — feature showcase at [marlburrow.github.io/pinchchat](https://marlburrow.github.io/pinchchat/) (`4f47732`)
- **Docker support** — Dockerfile, docker-compose.yml, CI auto-publish to `ghcr.io/marlburrow/pinchchat` (`5fd7300`)
- **Language selector** — toggle EN/FR in the header at runtime (`9b3aed4`)
- **Copy button on code blocks** — one-click copy for code snippets (`b6a989b`)
- **i18n support** — English and French UI via `VITE_LOCALE` env var (`99b7db9`)
- **Runtime login screen** — enter gateway credentials at runtime, no secrets baked into the build (`36f9480`)
- **NO_REPLY filtering** — silently hides agent NO_REPLY messages from the chat (`8834b2a`)
- **GitHub Actions CI** — lint and build checks on every push and PR (`a6b26b0`)
- **Issue templates** — bug report and feature request forms (`2d3ee47`)
- **Contributing guide** — CONTRIBUTING.md with dev setup and PR guidelines (`e34643d`)
### Changed
- **Landing page layout** — moved demo to hero section, replaced grid with alternating feature sections (`d118498`)
- **Token progress bars** — unified with subtle cyan opacity ramp, replacing the multi-color gradient (`84c8e24`)
- **Features rewrite** — pragmatic feature descriptions in README and landing page, highlighting real differentiators (`f556c8d`)
- **Architecture diagram** — replaced ASCII art with a Mermaid diagram in the README (`02d2ab3`)
- **Smart auto-scroll** — only auto-scrolls when the user is near the bottom (`3e7a596`)
- **Timestamp locale** — uses the selected i18n locale instead of hardcoded `fr-FR` (`88c393e`)
- **Vendor code-splitting** — split React and markdown dependencies into separate chunks, eliminating the 500KB bundle warning (`d7bdf3b`)
### Fixed
- **Prefers-reduced-motion** — all animations respect the user's OS motion preference (`fd66fed`)
- **ARIA accessibility** — added ARIA attributes to interactive elements for screen reader support (`78f82fd`)
- Landing page demo messages left-aligned (inherited text-align:center from hero) (`02e4bcf`)
- i18n key for 'Parameters' label in tool call expansion (`195ad62`)
- Sidebar overlay closes on Escape key + aria-hidden for screen readers (`91c22a1`)
- Corrected `index.html` lang attribute, page title, favicon path, and added SEO meta tags (`24c7d00`)
- Localized all hardcoded French strings to English with ARIA accessibility attributes (`3370916`)
- Fixed OpenClaw repo link in README (`604f902`)
### Improved
- **TypeScript strictness** — replaced `any` types with proper interfaces across gateway client, hooks, and components (`693229c`)
### Renamed
- **ClawChat → PinchChat** — full project rename across all files, configs, and docs (`d58c34f`)
## [1.0.0] — 2026-02-11
Initial release as ClawChat.
- Dark neon theme with Tailwind CSS v4
- WebSocket connection to OpenClaw gateway
- Session sidebar with token usage progress bars
- Markdown rendering with GFM and syntax highlighting
- Tool call badges with expandable JSON panels
- Thinking block display (collapsible)
- File upload with image compression and drag & drop
- Streaming response display