VirtualKimi commited on
Commit
4f6c6df
·
verified ·
1 Parent(s): a897c58

Upload 2 files

Browse files
Files changed (2) hide show
  1. CHANGELOG.md +22 -0
  2. index.html +21 -10
CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
  # Virtual Kimi Changelog
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  ## [1.0.4] - 2025-08-09 - "Emotion & Context Logic Upgrade"
4
 
5
  ### Added
 
1
  # Virtual Kimi Changelog
2
 
3
+ ## [1.0.5] - 2025-08-12
4
+
5
+ ### Security & UX
6
+
7
+ - Removed all browser/extension password save and autofill prompts for API key and all text fields (no type="password", no name, all autofill-blocking attributes, CSS masking only).
8
+ - Global autofill prevention for all text/textarea fields, including dynamically added ones.
9
+ - Provider selection: Base URL is readonly for OpenRouter, OpenAI, Groq, Together, DeepSeek; editable only for Custom and Ollama.
10
+ - Model ID is auto-synced and readonly for OpenRouter; editable for others. Selection is persistent and always reflected in the UI.
11
+ - Robust preference persistence and UI sync for provider, base URL, and model.
12
+
13
+ ### Provider & LLM Model Handling
14
+
15
+ - Base URL is now readonly for OpenRouter, OpenAI, Groq, Together, DeepSeek (canonical, not user-editable). Editable only for Custom OpenAI-compatible and Ollama.
16
+ - Model ID is auto-synced and readonly for OpenRouter; editable for others. Selection is persistent and always reflected in the UI.
17
+ - Robust preference persistence and UI sync for provider, base URL, and model.
18
+ - Fixed Model ID sync when changing OpenRouter model (immediate update, persistence, readonly).
19
+
20
+ ### Misc
21
+
22
+ - No text field in the app can be autofilled or saved by browser or extension.
23
+ - Improved UI robustness when switching provider or model.
24
+
25
  ## [1.0.4] - 2025-08-09 - "Emotion & Context Logic Upgrade"
26
 
27
  ### Added
index.html CHANGED
@@ -111,7 +111,8 @@
111
  </div>
112
  <div class="chat-input-container">
113
  <input type="text" id="chat-input" data-i18n-placeholder="write_something"
114
- placeholder="Write me something, my love..." />
 
115
  <button id="send-button">
116
  <i class="fas fa-paper-plane"></i>
117
  </button>
@@ -374,7 +375,10 @@
374
  <label class="config-label" for="llm-base-url">Base URL</label>
375
  <div class="config-control">
376
  <input type="text" class="kimi-input" id="llm-base-url"
377
- placeholder="https://api.openai.com/v1/chat/completions" autocomplete="off" />
 
 
 
378
  </div>
379
  </div>
380
 
@@ -382,7 +386,10 @@
382
  <label class="config-label" for="llm-model-id">Model ID</label>
383
  <div class="config-control">
384
  <input type="text" class="kimi-input" id="llm-model-id"
385
- placeholder="gpt-4o-mini | llama-3.1-8b-instruct | ..." autocomplete="off" />
 
 
 
386
  </div>
387
  </div>
388
 
@@ -399,11 +406,12 @@
399
  title="Green = API key saved for current provider. Grey = no key saved."></span>
400
  </div>
401
  <div class="config-control">
402
- <input type="password" class="kimi-input" id="openrouter-api-key"
403
- name="openrouter_api_key" placeholder="sk-or-v1-..." autocomplete="new-password"
404
- autocapitalize="none" autocorrect="off" spellcheck="false" inputmode="text"
405
- aria-autocomplete="none" data-lpignore="true" data-1p-ignore="true"
406
- data-bwignore="true" />
 
407
  <button class="kimi-button" id="toggle-api-key" type="button" aria-pressed="false"
408
  aria-label="Show API key">
409
  <i class="fas fa-eye"></i>
@@ -617,7 +625,9 @@
617
  <option value="important">Important Events</option>
618
  </select>
619
  <input type="text" class="kimi-input" id="memory-content"
620
- placeholder="e.g., I love classical music..." style="margin-bottom: 8px;" />
 
 
621
  <button class="kimi-button" id="add-memory">
622
  <i class="fas fa-plus"></i> <span data-i18n="add">Add</span>
623
  </button>
@@ -716,7 +726,8 @@
716
  <div class="memory-filters">
717
  <div class="memory-search-container">
718
  <input type="text" class="kimi-input" id="memory-search"
719
- placeholder="Search memories..." />
 
720
  <i class="fas fa-search memory-search-icon"></i>
721
  </div>
722
  <select class="kimi-select" id="memory-filter-category">
 
111
  </div>
112
  <div class="chat-input-container">
113
  <input type="text" id="chat-input" data-i18n-placeholder="write_something"
114
+ placeholder="Write me something, my love..." autocomplete="off" autocorrect="off"
115
+ autocapitalize="none" spellcheck="false" data-form-type="other" />
116
  <button id="send-button">
117
  <i class="fas fa-paper-plane"></i>
118
  </button>
 
375
  <label class="config-label" for="llm-base-url">Base URL</label>
376
  <div class="config-control">
377
  <input type="text" class="kimi-input" id="llm-base-url"
378
+ placeholder="https://api.openai.com/v1/chat/completions" autocomplete="new-password"
379
+ aria-autocomplete="none" autocapitalize="none" autocorrect="off" spellcheck="false"
380
+ inputmode="url" data-lpignore="true" data-1p-ignore="true" data-bwignore="true"
381
+ data-form-type="other" />
382
  </div>
383
  </div>
384
 
 
386
  <label class="config-label" for="llm-model-id">Model ID</label>
387
  <div class="config-control">
388
  <input type="text" class="kimi-input" id="llm-model-id"
389
+ placeholder="gpt-4o-mini | llama-3.1-8b-instruct | ..." autocomplete="new-password"
390
+ aria-autocomplete="none" autocapitalize="none" autocorrect="off" spellcheck="false"
391
+ inputmode="text" data-lpignore="true" data-1p-ignore="true" data-bwignore="true"
392
+ data-form-type="other" />
393
  </div>
394
  </div>
395
 
 
406
  title="Green = API key saved for current provider. Grey = no key saved."></span>
407
  </div>
408
  <div class="config-control">
409
+ <input type="text" class="kimi-input masked" id="openrouter-api-key"
410
+ placeholder="sk-or-v1-..." autocomplete="new-password" autocapitalize="none"
411
+ autocorrect="off" spellcheck="false" inputmode="text" aria-autocomplete="none"
412
+ data-lpignore="true" data-1p-ignore="true" data-bwignore="true"
413
+ data-form-type="other" readonly
414
+ onfocus="this.removeAttribute('readonly'); this.setAttribute('autocomplete','new-password'); this.removeAttribute('name'); this.setAttribute('data-lpignore','true'); this.setAttribute('data-1p-ignore','true'); this.setAttribute('data-bwignore','true'); this.setAttribute('data-form-type','other');" />
415
  <button class="kimi-button" id="toggle-api-key" type="button" aria-pressed="false"
416
  aria-label="Show API key">
417
  <i class="fas fa-eye"></i>
 
625
  <option value="important">Important Events</option>
626
  </select>
627
  <input type="text" class="kimi-input" id="memory-content"
628
+ placeholder="e.g., I love classical music..." style="margin-bottom: 8px;"
629
+ autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false"
630
+ data-form-type="other" />
631
  <button class="kimi-button" id="add-memory">
632
  <i class="fas fa-plus"></i> <span data-i18n="add">Add</span>
633
  </button>
 
726
  <div class="memory-filters">
727
  <div class="memory-search-container">
728
  <input type="text" class="kimi-input" id="memory-search"
729
+ placeholder="Search memories..." autocomplete="off" autocorrect="off"
730
+ autocapitalize="none" spellcheck="false" data-form-type="other" />
731
  <i class="fas fa-search memory-search-icon"></i>
732
  </div>
733
  <select class="kimi-select" id="memory-filter-category">