Commit Graph

388 Commits

Author SHA1 Message Date
Nicolas Varrot
569dbc6d4d docs: mark feedback item #11 as done 2026-02-11 18:25:42 +00:00
Nicolas Varrot
f556c8db8e docs: rewrite features for README and landing page
Reorder and rewrite feature descriptions to highlight what actually
differentiates PinchChat: tool call visualization, GPT-like interface,
multi-session navigation. Remove generic features (markdown, file upload,
dark theme) that don't sell the product. Pragmatic tone, no fluff.
2026-02-11 18:25:32 +00:00
Nicolas Varrot
71c6491f69 docs: add CHANGELOG.md and link from README 2026-02-11 18:15:57 +00:00
Nicolas Varrot
b56c80a454 feat: add scroll-to-bottom button when scrolled up in chat
Floating button appears when user scrolls away from the bottom of the
conversation, making it easy to jump back to the latest messages.
Includes i18n labels (EN/FR) and smooth scroll animation.
2026-02-11 17:56:09 +00:00
Nicolas Varrot
04e1f3b778 docs: mark Mermaid diagram feedback item #10 as done 2026-02-11 17:45:26 +00:00
Nicolas Varrot
02d2ab3bf7 docs: replace ASCII architecture diagram with Mermaid 2026-02-11 17:45:15 +00:00
Nicolas Varrot
09ae82df6c docs: mark GitHub Pages feedback item #9 as done 2026-02-11 17:36:30 +00:00
Nicolas Varrot
4f47732fa0 docs: add GitHub Pages landing page with features showcase 2026-02-11 17:36:04 +00:00
Nicolas Varrot
ee5d870f06 docs: mark image display feedback item #7 as done 2026-02-11 17:18:19 +00:00
Nicolas Varrot
762a5f2026 feat: inline image display with lightbox
- Add image block type for base64 and URL images
- Parse image/image_url blocks from gateway history
- Render images inline in chat messages (rounded, dark-themed)
- Click-to-zoom lightbox with Escape to close
- Markdown images also use the lightbox component
- Detect base64 images in tool results (e.g. Read tool on image files)
- Support png, jpg, gif, webp formats
2026-02-11 17:18:10 +00:00
Nicolas Varrot
375302a27b docs: mark logo feedback item #8 as done 2026-02-11 16:47:09 +00:00
Nicolas Varrot
97c16be399 feat: integrate PinchChat logo throughout the app
- Use logo.png as favicon (replaces emoji SVG)
- Show logo in header next to title
- Show larger logo on login screen
- Add OG image meta tag
- Add centered logo in README
- Closes feedback item #8
2026-02-11 16:47:02 +00:00
Nicolas Varrot
af7d9280fb docs: add new feedback items #7-#9 and logo asset 2026-02-11 16:45:51 +00:00
Nicolas Varrot
e2c46cfd41 docs: mark Docker feedback as done 2026-02-11 16:31:43 +00:00
Nicolas Varrot
5fd73001f7 feat: add Docker support with Dockerfile, compose, CI, and oneliner install
- Multi-stage Dockerfile (node build + nginx:alpine serve)
- nginx.conf with SPA fallback, gzip, asset caching
- docker-compose.yml for easy deployment
- GitHub Actions workflow to build & push to ghcr.io on every push
- .dockerignore to keep image lean
- Updated README with Docker-first quick start and badge
2026-02-11 16:31:33 +00:00
Nicolas Varrot
42857da83d docs: mark language selector feedback as done 2026-02-11 16:18:37 +00:00
Nicolas Varrot
9b3aed4adc feat: add runtime language selector in header (EN/FR toggle)
- Add LanguageSelector component with globe icon + cycle button
- Refactor i18n to support reactive locale switching via useSyncExternalStore
- Locale priority: localStorage > VITE_LOCALE > navigator.language > 'en'
- All components now use useT() hook for reactive re-rendering on locale change
- Persists choice to localStorage (key: pinchchat-locale)
- No page reload needed — instant switch
2026-02-11 16:18:22 +00:00
Nicolas Varrot
b6a989bb51 feat: add copy button on code blocks
Hover over any fenced code block to reveal a floating copy-to-clipboard
button (top-right corner). Provides visual feedback (checkmark) on success.
Uses a custom ReactMarkdown <pre> component wrapper.
2026-02-11 15:46:49 +00:00
Nicolas Varrot
8af812807a docs: add architecture diagram and component overview to README 2026-02-11 15:17:10 +00:00
Nicolas Varrot
3e7a5969e0 fix: smart auto-scroll — only scroll to bottom when user is near bottom
Previously, every message update forced a scroll to bottom, which was
disruptive when reading older messages in the history. Now the chat only
auto-scrolls if the user is within 150px of the bottom, or if they just
sent a message. This preserves scroll position when browsing history
while still following new streaming content.
2026-02-11 14:47:11 +00:00
Nicolas Varrot
88c393ed50 fix: use i18n locale for timestamp formatting instead of hardcoded fr-FR 2026-02-11 14:31:32 +00:00
Nicolas Varrot
2d3ee47854 docs: add GitHub issue templates (bug report + feature request) 2026-02-11 14:16:26 +00:00
Nicolas Varrot
53599613ee docs: update README for runtime login and i18n features 2026-02-11 13:46:21 +00:00
Nicolas Varrot
3b7953b72e docs: mark i18n feedback as done 2026-02-11 13:19:29 +00:00
Nicolas Varrot
99b7db9793 feat: add i18n support with VITE_LOCALE env var (en/fr)
- Lightweight i18n system in src/lib/i18n.ts (no external deps)
- All UI strings extracted to translation keys
- English (default) and French locales included
- Set VITE_LOCALE=fr in .env for French UI
- Fallback to English for unknown locales
2026-02-11 13:19:20 +00:00
Nicolas Varrot
8132ddb59f docs: mark login screen feedback as done 2026-02-11 12:49:06 +00:00
Nicolas Varrot
36f948027b feat: runtime login screen — remove token from build
- Add LoginScreen component with Gateway URL + Token fields
- Store credentials in localStorage (not in bundle)
- Auto-reconnect with stored credentials on reload
- Add logout button (LogOut icon) in Header
- Remove VITE_GATEWAY_TOKEN from .env.example
- VITE_GATEWAY_WS_URL now only pre-fills the URL field
- Dark neon theme consistent with rest of app

Closes feedback item #4
2026-02-11 12:48:58 +00:00
Nicolas Varrot
a01bae8c1c docs: mark NO_REPLY feedback as done 2026-02-11 12:31:18 +00:00
Nicolas Varrot
8834b2ac36 fix: filter out NO_REPLY messages from chat display
NO_REPLY is an internal agent response that should not be visible
to users. Messages with content exactly matching 'NO_REPLY' are
now hidden from the chat view.
2026-02-11 12:31:07 +00:00
Nicolas Varrot
3370916931 fix: localize UI to English and add ARIA accessibility attributes
- Replace all French UI strings with English (Connected, Thinking, Result, Send, etc.)
- Add role="log" + aria-live="polite" to chat message area
- Add role="form" + aria-label to message input area
- Add aria-label to sidebar toggle, attach file, send, and textarea
- Add role="banner" to header, role="navigation" to sidebar
- Add role="application" to app root
2026-02-11 12:17:54 +00:00
Nicolas Varrot
24c7d00c23 fix: correct index.html lang, title, favicon and add meta tags for SEO
- Change lang='fr' to lang='en' (open-source project default)
- Change title from 'Marlbot Chat' to 'PinchChat'
- Change favicon emoji from 🤖 to 🦞 (project mascot)
- Add meta description, theme-color, and Open Graph tags
2026-02-11 11:46:29 +00:00
Nicolas Varrot
ed1177eff0 docs: update FEEDBACK.md with commit hash 2026-02-11 11:16:38 +00:00
Nicolas Varrot
d58c34fbd7 feat: rename ClawChat → PinchChat across entire project
- Update package.json name and repo URL
- Update README.md, CONTRIBUTING.md branding and links
- Update UI components (Header, Chat) display names
- Update gateway user-agent string
- Rename GitHub repo via API
- Mark FEEDBACK.md item #1 as done
2026-02-11 11:16:19 +00:00
Nicolas Varrot
e34643d122 docs: add CONTRIBUTING.md with dev setup and PR guidelines 2026-02-11 10:20:24 +00:00
Nicolas Varrot
a6b26b0b0d ci: add GitHub Actions CI workflow + README badges
- CI runs build + type check on Node 18/20/22 for push & PRs
- Add CI status, license, and Node.js version badges to README
- Replace placeholder screenshot with contribution note
2026-02-11 09:50:47 +00:00
Nicolas Varrot
d7bdf3b9d7 perf: code-split vendor chunks to eliminate 500kB bundle warning
Split the single 713kB JS bundle into separate chunks:
- react-vendor: React core (~192kB)
- markdown: react-markdown + remark/rehype + highlight.js (~476kB)
- icons: lucide-react (~6kB)
- ui: Radix UI components
- index: app code (~37kB)

Improves caching (vendor chunks change less often) and eliminates
the Vite chunk size warning.
2026-02-11 09:21:08 +00:00
Nicolas Varrot
604f90257b fix: correct OpenClaw repo link in README 2026-02-11 00:49:25 +00:00
Nicolas Varrot
1f8ff9ae0a Initial commit — ClawChat v1.0.0 2026-02-11 00:48:43 +00:00