lihongjun

lihongjun прихваћује захтев за спајање jack/PPT#2

english-speaking-v1

пре 14 часа

lihongjun затвара захтев за спајање jack/PPT#2

english-speaking-v1

пре 14 часа

lihongjun шаље захтев за спајање jack/PPT#2

english-speaking-v1

пре 14 часа

lihongjun извршује push на feat/english-speaking-v1 у jack/PPT

  • fdd280c6f8 feat: add English-speaking feature;
  • 7a85e46140 Merge branch 'beta' of https://git.cocorobo.cn/jack/PPT into beta
  • f7fea62dc8 update
  • 2ce3c9542f refactor(CreateCourseDialog): 重新排列课程创建选项并优化代码格式 调整选项卡片顺序,将空白创建选项设为可用状态,优化文件上传处理函数的格式
  • 634fdb5cab Merge branch 'beta' of https://git.cocorobo.cn/jack/PPT into beta

пре 14 часа

lihongjun створи нову филијалy feat/english-speaking-v1 at jack/PPT

пре 14 часа

lihongjun извршује push на feat/english-speaking-2026-0507-for-merge у jack/PPT

  • 70f86bd9a4 feat(speaking): allow teacher mode to fire recordSpeakingStart too Drops the props.type === '2' guard on the recordSpeakingStart provider so both teacher (type=1) and student (type=2) clients write a record on fresh "开始对话" click. Teacher mode is useful for self-testing the tool while authoring; the courseid/userid checks remain. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 1ecc645de2 feat(speaking): record start work entry on fresh "开始对话" click Injects recordSpeakingStart and fires it once inside startDialogue(), right after the existing notifySpeakingProgress('active', ...) broadcast. The resume path (loadLatestStudentSession) and completion path (handleDialogueComplete) deliberately do NOT call it — idempotency is enforced purely at the call site. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • f933414469 feat(speaking): provide recordSpeakingStart for course-work entry Adds a provider that posts addCourseWorks_workPage once with content=sessionId, atool='77', type='21' for the student client only. Failure is logged and swallowed; the dialogue is not blocked. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • d14729cfb4 docs(speaking): record-start course-work entry impl plan Implementation plan for the spec at docs/superpowers/specs/2026-05-08-speaking-record-start-work-design.md. Three tasks: (1) provide recordSpeakingStart in Student/index.vue, (2) inject + call from startDialogue() only in TopicDiscussionPreview, (3) manual verification of fresh-start / resume / teacher / 500 paths. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 8300b3b6f7 docs(speaking): record-start course-work entry design Spec for calling addCourseWorks_workPage once with content=sessionId right after a fresh "开始对话" click, so the teacher dashboard sees the student has begun the slide. Resume / completion / teacher mode do not fire. Failure is fire-and-forget; idempotency is enforced purely by the fresh-start-only call site. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • Поређење ових 5 комита »

пре 14 часа

lihongjun извршује push на feat/english-speaking-2026-0507-for-merge у jack/PPT

  • 187787aae8 refactor(speaking): drop dead state-finalizing layer in DialogueChatView The control-zone finalizing strip is now unreachable — root-level v-if on reportFetchInflight replaces the entire view first. Remove the 'finalizing' literal from the state union and delete the dead DOM. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 0f9b72fc75 feat(speaking): full-view finalizing loading in DialogueChatView Replace the entire chat view with a centered loading screen while the report is being fetched, keyed off reportFetchInflight. Shows live stats (rounds / sentence count / accumulated student-audio duration) read straight from engine state — no fake progress phases. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 846beb0160 docs(speaking): finalizing fullscreen loading impl plan Three-task plan for the design committed in dc64bb0: 1. Add finalizing screen (computed + template + styles). 2. Drop dead state-finalizing layer in control zone. 3. Manual verification of three completion paths. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 5694079a45 docs(speaking): finalizing fullscreen loading design Unify finalizing UX across three completion paths (auto / countdown / manual exit) by replacing the chat view with a centered loading screen keyed off reportFetchInflight, fixing the manual-exit gap where users saw no feedback while the report was being fetched.
  • 5ac3145eb5 refactor(speaking): drop AI voice-bar from DetailedReport After removing the AI play button and duration in Task 7, the AI card's voice-bar contained only a decorative waveform — orphaned content that adds no information. Gate the entire voice-bar on student role and drop the now-dead role-conditional classes (bar-ai/cw-ai/cd-ai branches). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

пре 17 часа

lihongjun створи нову филијалy feat/english-speaking-2026-0507-for-merge at jack/PPT

пре 17 часа

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

  • 3d30748f0b Merge branch 'beta' into feat/english-speaking-for-merge # Conflicts: # src/views/Student/index.vue # src/views/lang/cn.json # src/views/lang/en.json # src/views/lang/hk.json
  • b1eaaf54f8 feat(speaking): broadcast session_updated on chat start/complete
  • 953fbbacd2 feat(speaking): handle speaking_session_updated socket message
  • eca405316d style(speaking): fix lint double-space in notifySpeakingProgress comment
  • 0506c3375a feat(speaking): branch render to SpeakingClassPanel for toolType=77
  • Поређење ових 33 комита »

пре 1 дан

lihongjun затвара захтев за спајање jack/PPT#1

for-test

пре 1 дан

lihongjun шаље захтев за спајање jack/PPT#1

for-test

пре 1 дан

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

  • 48339fd0c5 feat(speaking): show real total duration in overall report Read totalDurationSeconds from the report response instead of hardcoding 0, so the completion header reflects the actual session length. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 900f1ae661 调整宽度, 删除统计数据
  • a63bc12d04 编辑区缩放
  • ce59d09987 chore(speaking): rename default AI from Tom to Amy Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 34423451c1 feat(speaking): create new slide when adding tool from recommend card Match the existing addContent flow in CollapsibleToolbar (createSlide → insertContent), so clicking a recommend card or the manual-create button always lands the speaking tool on a fresh slide instead of erroring when the current slide already has a frame. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • Поређење ових 5 комита »

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

  • 83417e436c feat(speaking): auto-open config panel after creating from card and clear default topic placeholders - Layer2Speaking: trigger openConfigSignal after createFrameElement so left-side config opens immediately - DialogueChatView/TopicDiscussionPreview: drop hardcoded default topic and decorative emoji placeholders Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

  • 074513fe6d feat(speaking): blank manual-create config and require topic before start - add EMPTY_CONFIG + resetConfigEmpty so manual creation gets a blank slate (empty topic / vocabulary / sentences; rounds=60, duration=1) - Layer2Speaking manual branch uses resetConfigEmpty - TopicDiscussionPreview disables 开始对话 and shows "至少设置topic" when topic is empty - comment out the AI生成 entry in CreationModeSwitch (kept for later re-enable) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

  • cf2e17c2b9 feat(speaking): make WS-to-HTTP fallback retry-only and tidy chat timing - Add VITE_SPEAKING_TRANSPORT config (default 'websocket'); HTTP path still reachable for debugging or as opt-in - Remove WS auto-fallback to /speak: WS errors now surface to user via student message error state. Clicking the existing 'retry' button calls retryMessage → sendStudentMessage → /speak (HTTP on retry only) - SSE 'error' event support: parseSSEStream yields it, sendStudentMessage marks studentMsg as error and removes ai placeholder - Defer aiMsg push until transcript arrives so AI typing-bubble doesn't precede student row; add student-side typing-bubble for STT loading - Drop the orphan AI-typing floater + hasLoadingPlaceholder computed - Style finish-btn:disabled gray so it visibly disables during 'starting' - Update test-dialogue-stream-fallback to assert no auto-fallback + manual retry hits /speak with original turnId Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

пре 1 недеља

lihongjun извршује push на feat/english-speaking-for-merge у jack/PPT

  • 055483e0da update
  • 130b71f3b4 抽取后端ip
  • 3f7302689d feat(speaking): wire view to new engine API; add starting/finalizing/recovery UI Tasks 16-19 combined: - isStarting/reportFetchInflight refs + state computed adds 'starting' and 'finalizing' values - handleStartRecording uses AbortController to cancel mic acquisition; handleCancelRecording is now a no-op on the message list (engine abort() doesn't push placeholders); handleFinishRecording calls streamCtl.commit(blob) instead of the removed attachStudentBlob/finish - New state-starting + state-finalizing layers in state-stack - Error card buttons render from message.recovery: 重试 + 重录 + 返回重开 - Removed leftover unrecoverable references and old retry helpers Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
  • 92faa6fbe2 feat(speaking): startRecording accepts AbortSignal for cancel during mic acquisition Two abort checkpoints: before getUserMedia (cheap pre-flight) and after (the realistic cancel point — user clicks cancel while the permission prompt is open). The post-getUserMedia abort releases the just-acquired track.
  • ea0e67bcf9 feat(speaking): extract _runGreeting; retry reuses turnId for idempotency Public generateGreeting() allocates a fresh UUID per fresh attempt. retryGreeting() reuses the failed greeting's turnId so the backend's idempotency lookup hits and the user doesn't get charged for two LLM calls when the first greeting succeeded server-side but the response was lost in transit.

пре 1 недеља