WeChat webview can desync route query from route props; use useRoute for course_id and log API failures to console. Watch course_id to refetch when query changes.
Made-with: Cursor
Sanitize course section resources payloads across list and id queries to avoid runtime filter/some failures from malformed resource shapes, with CourseSectionResourceDebug diagnostics.
Made-with: Cursor
Normalize paged and list responses for course section APIs to prevent runtime errors on infinite scroll and emit CourseSectionPayloadDebug diagnostics for malformed payloads.
Made-with: Cursor
Prevent runtime filter crashes in /clazz by normalizing API payloads to arrays and emitting ClazzPayloadDebug diagnostics when response shape is unexpected.
Made-with: Cursor
Normalize find_all_courses response to an array and add page-level array fallback to prevent filter runtime errors when response payload is malformed.
Made-with: Cursor
Parse current_org_id/current_org_role_keys from subject payload when tokens are encoded under claims.sub, so org switch context is correctly detected.
Made-with: Cursor
Record before/after jwt org context decode details for org switch into console and localStorage, and surface actionable debug dialog when returned token lacks org context.
Made-with: Cursor
Validate current_org_id from switch token before accepting it, align auth/sudo tokens, and force full navigation to home after switch to avoid staying on org-select state.
Made-with: Cursor
After org switch, sync sudo token and navigate to home immediately instead of awaiting read() chain, preventing org select page from stalling.
Made-with: Cursor
Add base64 padding before atob when parsing token payload so current_org_id extraction no longer fails intermittently and loops users back to org select.
Made-with: Cursor
After org switch, set HtySudoerToken to the refreshed Authorization token so ws endpoints receive current_org_id instead of a sudo2 token without org context.
Made-with: Cursor
Regenerate HtySudoerToken after switching organization so ws endpoints that read org context from sudo token no longer fail with current_org_id required.
Made-with: Cursor
Ensure authenticated users without current_org_id are redirected or auto-switched before entering business routes, preventing global 500 errors after multi-organization rollout.
Made-with: Cursor
Introduce organization selection/homepage flows, show current organization on profile pages, and scope displayed roles to the active organization context while preserving system-wide behavior.
Made-with: Cursor
Logged-in users on music-room.moicen.com saw a blank center because iframe
targeted huiwings.cn (cross-origin / no session). Redirect to /student/home,
/teacher/home, /admin/teachers, /tester, or supervisor path on same origin.
Made-with: Cursor
- Sanitize page_path before router.push (H5) to prevent cross-user login via shared link
- onShareAppMessage: remove unionid/openid/status and related query keys from shared path
- main.ts: fix login(to.query.toString()) bug; when already logged in, strip foreign unionid from URL instead of logout
Made-with: Cursor
Align frontend wording with final domain terms (course system/course/lesson block), keep PickTargets backward compatible with backend values, and fix related import paths.
Made-with: Cursor
Align frontend types, stores, pages, and routes to the renamed course/course_section/course_group domain fields for backend compatibility.
Made-with: Cursor
Remove local deployment credential files and private weapp config from tracking, and add explicit ignore rules to prevent re-adding them.
Made-with: Cursor
Add the current frontend codebase with a baseline .gitignore and update piano-specific UI terms to teaching-oriented terms for the current product context.
Made-with: Cursor