Commit Graph

47 Commits

Author SHA1 Message Date
Nicolas Varrot
ad7d149f88 fix: hide horizontal scrollbar on textarea for Windows compatibility
Add overflow-x: hidden and word-break styles to textarea to prevent
ugly horizontal scrollbar on Windows. Also hide the horizontal webkit
scrollbar track entirely.
2026-02-12 18:15:08 +00:00
Nicolas Varrot
cecfa3e010 style: custom webkit scrollbar styling for macOS/Chrome
Add ::-webkit-scrollbar rules matching the dark theme. Textarea gets
an even thinner 4px scrollbar. Fixes ugly default scrollbar on macOS.

Closes feedback #36.
2026-02-12 18:05:15 +00:00
Nicolas Varrot
7d9c4098f2 docs: mark feedback #33 as done 2026-02-12 17:46:13 +00:00
Nicolas Varrot
17ff52aaaf feat: display agent name badge in header next to session label
Shows the agentId (e.g. 'main') with a bot icon in the header subtitle,
making it clear which agent is handling the current conversation.
Useful for multi-agent setups.
2026-02-12 17:45:38 +00:00
Nicolas Varrot
79b516bf9d docs: release v1.8.1 — fix markdown rendering in long messages 2026-02-12 17:26:56 +00:00
Nicolas Varrot
ce05315868 docs: release v1.8.0 — per-session input drafts 2026-02-12 17:15:54 +00:00
Nicolas Varrot
03eb9e6de2 feat: per-session input drafts preserved on session switch 2026-02-12 17:15:26 +00:00
Nicolas Varrot
e9679091e7 docs: release v1.7.0 — delete session from sidebar 2026-02-12 16:57:46 +00:00
Nicolas Varrot
e94325b38a feat: delete session from sidebar with confirmation dialog 2026-02-12 16:57:18 +00:00
Nicolas Varrot
94df362001 docs: mark feedback #34 as done 2026-02-12 16:49:55 +00:00
Nicolas Varrot
a17fbf134a docs: release v1.5.0 — resizable sidebar 2026-02-12 15:47:09 +00:00
Nicolas Varrot
fa9b10ac97 feat: resizable sidebar with drag handle and persisted width 2026-02-12 15:46:39 +00:00
Nicolas Varrot
15f8060beb docs: mark feedback #27 as done 2026-02-12 14:44:55 +00:00
Nicolas Varrot
06b2b1cbcf docs: mark feedback #26 as done 2026-02-12 12:42:28 +00:00
Nicolas Varrot
7df30d87ee docs: mark feedback #25 as done 2026-02-12 12:25:28 +00:00
Nicolas Varrot
1465ae1887 style: move model badge from header to token progress bar area 2026-02-12 12:25:17 +00:00
Nicolas Varrot
8640585426 docs: mark feedback #24 as done 2026-02-12 12:06:21 +00:00
Nicolas Varrot
96f28836cd feat: display model name badge in header for active session
Shows the model (e.g. claude-opus-4-6) as a subtle chip next to the
session label in the header. Hovering reveals agent ID if available.
Model and agentId are now extracted from sessions.list response.
2026-02-12 12:06:12 +00:00
Nicolas Varrot
1c4700d142 docs: mark feedback #23 as done 2026-02-12 02:46:00 +00:00
Nicolas Varrot
2a7f3d9c88 docs: mark feedback #22 as done 2026-02-12 01:42:54 +00:00
Nicolas Varrot
29482e377a fix: resolve ESLint errors for React compiler rules
- Chat.tsx: replace mutable variable in render IIFE with useMemo+reduce
  to satisfy react-hooks/immutability rule
- ConnectionBanner.tsx: move setState calls into a useCallback to avoid
  synchronous setState in effect body (react-hooks/set-state-in-effect)
- useGateway.ts: suppress set-state-in-effect for legitimate mount init
2026-02-12 01:42:40 +00:00
Nicolas Varrot
c3824dd29f docs: mark feedback item #15 as done 2026-02-11 20:25:39 +00:00
Nicolas Varrot
72f7d76cc4 feat: add emoji icons to tool call badges
Replace Lucide icons with emojis on tool call badges for better visual
identification:  exec, 🔍 web_search, 📖 read, ✏️ write/edit,
🧠 memory,  cron, 🚀 sessions_spawn, and more.

Also reduces bundle by removing unused Lucide icon imports from ToolCall.

Closes feedback item #15.
2026-02-11 20:25:31 +00:00
Nicolas Varrot
538fb3a7bd docs: mark feedback item #14 as done 2026-02-11 20:15:41 +00:00
Nicolas Varrot
38d7aab6da docs: mark feedback item #13 as done 2026-02-11 20:07:23 +00:00
Nicolas Varrot
cbee0efcee docs: mark feedback item #12 as done 2026-02-11 19:17:03 +00:00
Nicolas Varrot
d26c4988f2 feat(landing): add animated fake UI demo with tool call visualization
Replaces the screenshot placeholder with a live animated demo showing:
- Sidebar with fake sessions and token usage bars
- User typing animation with cursor
- Thinking indicator with animated dots
- Colored tool call badges (web_search, exec)
- Expandable tool results with parameters
- Formatted assistant response with markdown
- Auto-looping animation

All pure CSS/JS, no dependencies. Matches the app's dark theme and color scheme.

Closes feedback item #12
2026-02-11 19:16:52 +00:00
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
04e1f3b778 docs: mark Mermaid diagram feedback item #10 as done 2026-02-11 17:45:26 +00:00
Nicolas Varrot
09ae82df6c docs: mark GitHub Pages feedback item #9 as done 2026-02-11 17:36:30 +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
3b7953b72e docs: mark i18n feedback as done 2026-02-11 13:19:29 +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
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