Spaces:
Runtime error
Runtime error
Commit History
-
Wave 15: Language learn, code snippets, vision AI, music playlist/lyrics - 100+ routes shipped
Đào Minh Tú +1: Copilot- app/learn: language quiz, grammar lessons, AI hints (5 languages) - app/translate-advanced: doc translation, terminology memory, history - app/snippets: code snippet manager with CRUD + localStorage - app/code-run: JavaScript executor with 5-second timeout, console capture - app/vision: image describe, OCR, object tagging, emotion detection - app/playlist: AI playlist generator with DJ notes - app/lyrics: lyrics search + AI analysis Wave 15 final: 100 routes total, all features polished Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>35b2f5a -
feat(wave-13): hub w12 update, cmd palette mount, auto-title/memory hooks, PDF-RAG, audio transcribe, calendar scheduler (13 features)
Đào Minh Tú +1: CopilotCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>5b2fda8
-
feat(wave4): 8 features — slash cmds, search, qr-share, /help, image gen, code sandbox, debate, cost tracker
Đào Minh Tú +1: CopilotSolo: - /search page + chat-search-dialog with Ctrl+K UX - /help page with slash command reference - lib/slash-commands.ts: /help /clear /summarize /translate /code /explain /rewrite - lib/auto-title.ts: AI-regen session title via Groq after 4 turns (module ready) - components/qr-share-dialog.tsx: QR code via qrserver.com Agents: - image-gen: /api/image + Pollinations.ai + composer btn + chat.appendImageMessage - code-sandbox: ▶ Chạy button on code blocks (JS/Python via Pyodide CDN, HTML/CSS srcdoc) - debate: /debate page, side-by-side 2 models + synthesizer - cost-tracker: lib/cost-estimator.ts pricing table, /stats card, usage log ring buffer Build ✓ 26 routes, TS clean Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>19a950f -
feat: 10+ features — voice/dragdrop/shortcuts, Ollama+RAG citations, workflows+scheduled, share password+TTL, auto-memory, export-md
Đào Minh Tú +1: CopilotUX: - Voice input (vi-VN webkitSpeechRecognition) + drag-drop upload + ?-shortcuts dialog - Composer revamp with mic button and dropzone overlay AI superpowers: - Ollama local provider + /api/ollama/models discovery - RAG with <Citations> render under assistant messages - Auto-memory fact extraction (Groq llama-3.1-8b, debounced 5s) module - /workflows builder with {{prev}} substitution - /scheduled chats page Collaboration: - Share API: SHA-256 password gate (Web Crypto) + custom TTL 1-90d - ShareView client component with password form - Markdown export with YAML frontmatter Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>70e3124
-
feat(prompt): explicit tool-use rules for news/URL/YouTube/SQL queries
Đào Minh Tú +1: CopilotExpanded system prompt in both /api/chat and /api/chat-sse to spell out when to call each tool. Helps models that previously skipped tool use for news queries ('AI tin tức tuần này') and instead hallucinated answers. New rules cover: news/'mới nhất'/'hôm nay' -> webSearch; URL paste -> fetchUrl; YouTube link -> youtubeTranscript; timezone query -> currentTime; table data -> runSql; charts -> chartGen. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>c77cfaa -
fix(mistral): use official @ai-sdk/mistral provider for tool calling
Đào Minh Tú +1: CopilotMistral's API rejects tools sent via createOpenAI(baseURL=mistral) with 'Expected function type' because their function-calling shape differs slightly from the OpenAI-compat default. Switch to @ai-sdk/mistral v1.2.8 which handles the wire format correctly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>d50829b -
fix(tools): currentTime accepts timezone+locale, fixes Gemini null-args bug
Đào Minh Tú +1: CopilotGemini and some models emit 'arguments: null' when tool schema is empty z.object({}). AI SDK Zod validator then rejects null with 'Expected object, received null'. Adding optional fields makes the schema non-empty AND lets the model directly query Tokyo/NY time without manual offset math. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>291fa79 -
feat(providers): add OpenRouter + Cerebras + Mistral free providers
Đào Minh Tú +1: Copilot- 3 new OpenAI-compatible providers wired (createOpenAI + custom baseURL) - OpenRouter: 50+ free models behind one key (:free suffix) - Cerebras: ultra-fast inference (>2000 t/s), 14400 RPD free - Mistral La Plateforme: free tier 1 RPS / 1B tokens/month - New /api/{openrouter,cerebras,mistral}/models discovery routes - Rate-limit table extended; OpenRouter (epoch ms) + Cerebras header parsers - API keys dialog + .env.local.example updated - usage-tracker fingerprint resolution extended for new providers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>3204b1b -
fix(google): disable thinking when tools enabled to avoid thought_signature error
Đào Minh Tú +1: CopilotGemini 2.5 thinking-mode models require a thought_signature on every echoed function call in subsequent turns. AI SDK can't preserve that across multi-step tool calls second step fails with: 'Function call is missing a thought_signature in functionCall parts.' Affects generateImage, webSearch, calculator, etc. on Google models. Fix: pass providerOptions.google.thinkingConfig = {thinkingBudget:0, includeThoughts:false} when tools are enabled. For Gemini Flash this disables thinking entirely; for Pro it falls back to non-thinking branch both bypass the signature requirement. Pure text-gen (no tools) keeps thinking enabled. Applied to /api/chat and /api/chat-sse. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>64ca3d6 -
feat: real provider rate-limit data via response headers
Đào Minh Tú +1: Copilot- Parse x-ratelimit-* from Groq + GitHub response.headers in onFinish - Cache RateLimitInfo in Upstash keyed by SHA-256(api_key) (cross-device) - /api/usage returns real {remaining, limit, resetSeconds} per model - ModelPicker shows REAL number from provider when available (sky badge + dot) falls back to local estimate for Google Gemini (no headers) - Refresh on dropdown open with in-flight dedupe - Hover tooltip clarifies data source (provider/local) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1f07029 -
fix(generateImage): pre-warm Pollinations cache + better instructions
Đào Minh Tú +1: CopilotBug: 'Có lỗi khi gọi AI: Load failed' after generateImage succeeded. Pollinations.ai renders images on-demand first GET to a fresh URL takes 1530s. The tool was returning the URL instantly, the model replied with markdown, the browser <img src=...> kicked off the actual render, and on iOS Safari that long-poll combined with the streaming SSE connection sometimes triggered 'Load failed' (generic fetch abort). Two fixes: 1. Pre-warm: tool now does a GET to the URL with a 12s timeout, drains up to 1MB of the response body so Pollinations finishes rendering server-side and caches the result. By the time the model finishes its reply and the user's browser fetches the URL, it's a CDN hit. - On HTTP error tool returns { error } (model retries / explains) - On timeout/network error returns URL anyway with a 'warning' field (URL still works, image will eventually render) 2. Description hint: model now told to reply with the markdown field exactly as-is and NOT call …648c489
-
feat(cloud-sync): GitHub OAuth + Upstash Redis cross-device sync (LWW)
Đào Minh Tú- /api/auth/[...nextauth] (NextAuth GitHub provider, JWT session) - /api/sync GET/PUT with scope param (sessions/settings/collections) - lib/sync-keys.ts allowlist of localStorage keys per scope - hooks/use-cloud-sync: patch setItem to detect mutations + debounced 3s push + initial pull + pull on focus/visibility - components/cloud-sync-button: sign in/out + status + manual pull/push - Sidebar footer integration - README + .env.local.example updated with setup stepse58a028 -
feat(model-picker): live discovery for Groq + GitHub Models (parallel to Google) — 'Quét live model' button per provider
Đào Minh Tú0ea3919 -
fix(tools+models): repair UTF-8 mojibake in tool descriptions; trim model list to verified-working set; filter non-chat models from Google live discovery
Đào Minh Tú671888a -
feat(google/models): return all chat-capable models, remove name filter
Đào Minh Tú6e68e7c -
feat(google): expand model list w/ Gemma-3 + live discovery /api/google/models
Đào Minh Tú521a523 -
feat(wave10): A/B compare + diff view + self-critique + z-index hierarchy fix
Đào Minh Tú500cd91 -
feat(server): smart context compaction when near limit
Đào Minh Tú +1: CopilotCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>f9b0358 -
feat(router): add auto model router based on prompt heuristics
Đào Minh Tú +1: CopilotCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>833e205 -
feat(phase1-wave5): SSE streaming + share-link + BYOK + analytics + branching + a11y + nav-bar fix
Đào Minh Tú +1: Copilot- True SSE endpoint /api/chat-sse (text/event-stream, OpenAI-compatible) - useSseChat hook + /sse-test demo page (reference: Code/docs/js/ai-agent.js) - Public share link /share/[id] + sidebar menu - BYOK dialog (Key icon header) + per-request key override in route - Analytics dashboard /stats (events, top models, tool usage donut) - Branching: edit user message fork session (parentId/branches) - Accessibility pass (aria-label on 8 dialog/UI primitives) - Fix nav bar overflow when persona label is long - Fix webSearch DDG HTML scrape (HTML body POST) actual results now Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>9343c92 -
feat(phase1-wave4): voice + tool-toggle + prompt-library + error-log + fix webSearch DDG
Đào Minh Tú +1: Copilot- Voice STT (Mic, vi-VN) in composer + TTS (Volume2) in messages - Per-session tool toggle dialog from sidebar - Prompt library CRUD + /prompts slash command + Library header button - Error replay log dialog + Bug header button + onError capture - FIX: webSearch DDG instant-answer API replaced by HTML scrape (always returns results now) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>daaf946 -
feat(phase1): theme toggle + slash commands + continue button + 4 new tools
Copilot +1: Copilot- theme-toggle: next-themes provider, system/light/dark via sidebar footer - slash-commands: /code /explain /translate /summarize /image /search popover in composer - stop-continue: client heuristic detects truncated answer, 'Tiếp tục' button appends nudge - tools: weather (Open-Meteo), wikipedia, fetchUrl, generateImage (Pollinations) - webSearch upgraded: Brave Search API w/ DDG fallback (BRAVE_SEARCH_API_KEY) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>3e306e5 -
fix(chat): surface real stream errors instead of generic mask
Tan0c11957 -
feat: rebuild UI with Next.js 15 + shadcn/ui + Vercel AI SDK
Tan +1: Copilot- Beautiful chat interface using shadcn/ui (New York style, dark mode) - Multi-provider switcher: Gemini, Groq, GitHub Models - Streaming responses with tool-call badges via Vercel AI SDK - Edge runtime API route at /api/chat - Tools: webSearch (DuckDuckGo), calculator (safe parser), currentTime - Move Python/Gradio version to python/ subfolder - Vercel deploy config + updated CI for both Node and Python - Updated README with one-click Vercel deploy button Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>77ce963