feat: add privacy mode, thinking levels, PWA support, and i18n

- Add privacy mode to hide IP and user preferences from AI requests
- Add model thinking levels (low/medium/high) for context analysis depth
- Add PWA support with service worker, manifest, and app icons
- Add SettingsPanel for user preferences (theme, background, language)
- Add i18n translations for en/zh/ja/ko/de/fr
- Add Pinia store for centralized settings management
- Update backend to support user preferences and thinking levels
- Update config to use absolute API URLs
This commit is contained in:
2026-02-19 10:22:27 +08:00
parent d2b64ad5d6
commit aa6133e3ed
24 changed files with 1291 additions and 222 deletions
+29 -3
View File
@@ -29,20 +29,46 @@ def prepare_prompt_context(prefix: str, suffix: str) -> Tuple[str, str]:
return _prepare_context(prefix, suffix)
def build_prompt(prefix: str, suffix: str, language_id: str = "markdown", location: str = "") -> str:
def build_prompt(
prefix: str,
suffix: str,
language_id: str = "markdown",
location: str = "",
thinking_level: str = "low",
preferences: object = None
) -> str:
safe_language_id = _sanitize_language_id(language_id)
recent_prefix, recent_suffix = _prepare_context(prefix, suffix)
current_time = _get_current_datetime()
location_info = f"\nUser location: {location}" if location else ""
thinking_instruction = ""
if thinking_level == "medium":
thinking_instruction = "\n- Briefly analyze the context before suggesting."
elif thinking_level == "high":
thinking_instruction = "\n- Deeply analyze the context, structure, and intent before suggesting. Think step-by-step."
prompt = f"""Current time: {current_time}{location_info}
pref_info = []
if preferences:
if preferences.language and preferences.language != 'auto':
pref_info.append(f"Preferred language: {preferences.language}")
if preferences.currency and preferences.currency != 'auto':
pref_info.append(f"Preferred currency: {preferences.currency}")
if preferences.timezone and preferences.timezone != 'auto':
pref_info.append(f"User timezone: {preferences.timezone}")
preferences_instruction = "\n".join(pref_info)
if preferences_instruction:
preferences_instruction = f"\nUser Preferences:\n{preferences_instruction}"
prompt = f"""Current time: {current_time}{location_info}{preferences_instruction}
You are an inline completion engine for a {safe_language_id} editor with ghost-text suggestions.
Your job:
- Return ONLY the text that should be inserted at the cursor between PREFIX and SUFFIX.
- Prefer a meaningful, non-empty insertion with moderate length.
- Avoid overly short outputs with little information value.
- Avoid overly short outputs with little information value.{thinking_instruction}
Important context:
- PREFIX may contain OCR metadata inline after images, e.g. ![alt](url) <OCR:description>.