Skip to content

feat: Firebase AI chat, filing status from profile, jobs UI, CI/CD fixes#44

Merged
chenyuan99 merged 5 commits into
mainfrom
feat/filing-status-from-profile
May 24, 2026
Merged

feat: Firebase AI chat, filing status from profile, jobs UI, CI/CD fixes#44
chenyuan99 merged 5 commits into
mainfrom
feat/filing-status-from-profile

Conversation

@chenyuan99

Copy link
Copy Markdown
Owner

Summary

  • Firebase App Check + reCAPTCHA Enterprise — wired up ReCaptchaEnterpriseProvider with debug token support for dev; added server-side assessment utility in functions/src/recaptcha.ts
  • AI Tax Assistant chat — replaced the non-functional Chat shell with a full Gemini-powered multi-turn chat using Firebase AI Logic (gemini-2.5-flash), streaming responses, Enter-to-send, sign-in guard
  • Filing status from profileDashboard.tsx now fetches filingStatus from userProfiles/{uid} on mount and passes it to runAccountant; shows a yellow warning banner with a profile link when the field is missing (closes Wire filing status from user profile instead of hardcoded 'single' #41)
  • Jobs page — removed hardcoded sampleJobs array, replaced plain-text status with colored badge pills (gray/blue/green/red), fixed broken empty-state and the unhandled Reviewing status
  • CI/CD pipeline fixes — consolidated to a single deploy workflow (firebase-deploy.yml); removed race condition between frontend.yml and firebase-deploy.yml; fixed broken backend.yml deploy job; bumped all actions to v4/v5; added VITE_RECAPTCHA_ENTERPRISE_SITE_KEY to build env
  • Cleanup — removed unused frontend/netlify.toml

Test plan

  • App Check debug token flow works in dev (token logged to console, registered in Firebase Console)
  • Chat opens, streams a Gemini response, respects system prompt (professional advice disclaimer present)
  • Dashboard shows yellow banner when profile has no filing status; banner disappears after saving one in Profile
  • AI Accountant receives the correct filing status from profile
  • Jobs page shows real Firestore jobs with correct colored badges; empty state shows when no jobs exist
  • Push to main triggers only firebase-deploy.yml; push to feat/** triggers only frontend.yml CI
  • GitHub secrets required: VITE_FIREBASE_API_KEY, VITE_RECAPTCHA_ENTERPRISE_SITE_KEY, FIREBASE_SERVICE_ACCOUNT, GOOGLE_GENAI_API_KEY

🤖 Generated with Claude Code

chenyuan99 and others added 5 commits May 24, 2026 16:36
- Add geminiModel export to firebase.ts using getAI + GoogleAIBackend +
  gemini-2.5-flash; add FIREBASE_APPCHECK_DEBUG_TOKEN flag for dev so
  App Check works without reCAPTCHA in local/headless environments
- Rewrite Chat.tsx: startChat() session with tax-focused system prompt,
  sendMessageStream() for token-by-token streaming, Enter-to-send,
  loading spinner, multi-turn history, signed-out guard
- Fix systemInstruction format: wrap as { parts: [{ text }] } — the
  Firebase AI SDK does not auto-wrap plain strings for this field

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…gle'

Fetches filingStatus from userProfiles/{uid} on Dashboard mount and passes
it to runAccountant. Shows a yellow warning banner with a profile link when
the field is missing, falling back to 'single'.

Closes #41

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- firebase-deploy.yml: add path filters, VITE_RECAPTCHA_ENTERPRISE_SITE_KEY,
  google-github-actions/auth for SA auth, multi-path npm caching, npx
  firebase-tools (no global install), remove --debug noise
- frontend.yml: drop deploy job (race condition with firebase-deploy.yml),
  bump all actions to v4, CI-only on PRs and feat/fix branches
- backend.yml: drop broken deploy job (was targeting wrong functions dir),
  fix GOOGLE_APPLICATION_CREDENTIALS misuse, bump actions to v4/v5,
  CI-only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Deployment target is Firebase Hosting; Netlify is no longer used.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaced hardcoded sampleJobs array with real Firestore data only.
Added colored status badge pills (pending/processing/completed/failed)
alongside icons. Fixed broken empty-state check and dead Reviewing
status that had no icon. Also updated the details modal to use badges.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@chenyuan99 chenyuan99 merged commit 13c6745 into main May 24, 2026
3 of 6 checks passed
@chenyuan99 chenyuan99 deleted the feat/filing-status-from-profile branch May 24, 2026 21:36
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
3 Security Hotspots

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Wire filing status from user profile instead of hardcoded 'single'

1 participant