Skip to content

Commit fce6d3c

Browse files
committed
Add privacy policy and improve voice input UI with hover state for recording button
1 parent 65a2f6a commit fce6d3c

3 files changed

Lines changed: 25 additions & 4 deletions

File tree

‎PRIVACY.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Privacy Policy
2+
3+
Code Web Chat is **privacy-first**. We adhere to a **strict zero telemetry policy**.
4+
5+
**No Data Collection** \
6+
The extension does not collect, store, or transmit any telemetry data.
7+
8+
**Local Operation** \
9+
All operations are performed locally on your machine.
10+
11+
**Direct Communication** \
12+
Prompts are sent directly from your browser to the chatbots or from your editor to the model providers you configure.

‎README.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ Code Web Chat is a free and open-source (FOSS), independent AI coding toolkit fo
1818
- Chatbots—_[Gemini](https://gemini.google.com/app), [ChatGPT](https://chatgpt.com/), [Claude](https://claude.ai/), [Grok](https://grok.com/), [DeepSeek](https://chat.deepseek.com/), etc._
1919
- APIs—_[Google](https://aistudio.google.com/api-keys), [OpenAI](https://platform.openai.com/api-keys), [OpenRouter](https://openrouter.ai/settings/keys), [local Ollama](https://ollama.com/search), etc._
2020

21-
✅ **Apply responses**—multi-file edits with unlimited undo \
22-
✅ **Fully-featured**—code at cursor, commit messages \
23-
🌱 **Sustainable**—[context caching](https://ai.google.dev/gemini-api/docs/caching) across tasks \
21+
✅ **Apply responses**—multi-file edits integration with rollback \
22+
🌱 **Sustainable**—optimized [context caching](https://ai.google.dev/gemini-api/docs/caching) across tasks \
23+
🤙 **Fully-featured**—code at cursor, commit messages \
2424
✋ **Privacy-first**—strict zero telemetry policy
2525

2626
<p>

‎packages/ui/src/components/editor/panel/PromptField/PromptField.tsx‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export const PromptField: React.FC<PromptFieldProps> = (props) => {
8585
useState(false)
8686
const [hovered_edit_format, set_hovered_edit_format] =
8787
useState<EditFormat | null>(null)
88+
const [is_recording_hovered, set_is_recording_hovered] = useState(false)
8889
const [prune_instructions, set_prune_instructions] = useState(
8990
props.prune_context_instructions_prefix
9091
)
@@ -99,6 +100,10 @@ export const PromptField: React.FC<PromptFieldProps> = (props) => {
99100
}
100101
}, [props.value])
101102

103+
useEffect(() => {
104+
set_is_recording_hovered(false)
105+
}, [props.is_recording])
106+
102107
const toggle_invocation_dropdown = useCallback(() => {
103108
set_is_invocation_dropdown_open((prev) => !prev)
104109
}, [])
@@ -575,12 +580,16 @@ export const PromptField: React.FC<PromptFieldProps> = (props) => {
575580
styles['footer__right__submit__button--submit'],
576581
styles['footer__right__submit__button--recording'],
577582
'codicon',
578-
'codicon-mic-filled'
583+
is_recording_hovered
584+
? 'codicon-debug-stop'
585+
: 'codicon-mic-filled'
579586
)}
580587
onClick={(e) => {
581588
e.stopPropagation()
582589
props.on_recording_finished()
583590
}}
591+
onMouseEnter={() => set_is_recording_hovered(true)}
592+
onMouseLeave={() => set_is_recording_hovered(false)}
584593
title={`Exit voice input ${
585594
is_mac ? '(⇧⌘Space)' : '(Ctrl+Shift+Space)'
586595
}`}

0 commit comments

Comments
 (0)