Skip to content

Deploy to PROD 6/2/26#2154

Open
Mephistic wants to merge 58 commits into
prodfrom
main
Open

Deploy to PROD 6/2/26#2154
Mephistic wants to merge 58 commits into
prodfrom
main

Conversation

@Mephistic
Copy link
Copy Markdown
Collaborator

Changelog

  • Fix Loading State in Newsfeed
  • Phone Verification Frontend (hidden behind flag)
  • Legislator Profile Page skeleton (also hidden behind flag)
  • Homepage / Browse Page redesigns (+ fixes to revert the Testimony Callout section on the homepage and the multi-column Browse pages to single column)
  • Vector Embedding Firebase Functions to support the new MCP Server

mertbagt and others added 30 commits April 5, 2026 15:17
* Spruced up phone verification modals

* Additional tweak to phone verification modal

* Updated verify section of profile page to show both email and phone verification

* Added verify account section to edit profile page and refactored

* used feature flag to show new or legacy verify account section appropriately on profile page

* fixed formatting

* minor style adjustment
…d, we mainly need to know when it starts and when it ends (#2111)
* Merge pull request #51 from hyphacoop/visual-system-refinement

Refine MAPLE visual system and shared surfaces

* Apply visual tokens to search pages and shared components

* Fix bill search typecheck

* Format search and hearing components

* Align ballot question browse search controls

* Merge pull request #55 from hyphacoop/ballot-questions-2024-fix

Ballot question 2024 data

* Merge pull request #56 from hyphacoop/fix-sync-script-validation

Skip stale-doc validation in ballot question sync

* Merge pull request #57 from hyphacoop/fix-bq-search-responsiveness

Fix ballot question search responsiveness for medium and mobile

* Merge pull request #61 from hyphacoop/fix/ballot-question-count-scope

Fix ballot question bill count scope

* Merge pull request #60 from hyphacoop/docs/ballot-questions-field-descriptions

docs: add ballot question field reference

* Merge pull request #58 from hyphacoop/homepage-redesign

Homepage refresh and design polish

* Merge pull request #59 from hyphacoop/ballot-question-alert-flag

Add ballot question alert flag

* Merge pull request #63 from hyphacoop/fix/ballot-question-notification-test

Fix ballot question notification test statuses

* Make ballot question frontend strings translatable

* Remove unused homepage assets

* Update ballot question i18n tests

* Fix referendum title i18n namespace

* Reorganize ballot question i18n into dedicated namespace

* Migrate remaining components to ballotquestions namespace

* Update 24-firearms-referendum.yaml

* Add ballotquestions namespace to serverSideTranslations

* Fix formatting

---------

Co-authored-by: vincent <vincentcharlebois@gmail.com>
…timony (#2119)

* fixing bug on testimony detail page so users must verify email before submitting testimony

* added redirect from submit testimony page to profile page for users that are not email verified
* allow date to be nullable on billHistory items

* formatting
* initial page

* header and stat blocks

* bottom columns placement

* Sidebar folder

* set up tabs

* tab title colors

* fill in stat blocks

* minor cleanup

* cleanup 2

* feature flags

* cleanup page

* remove user from page

* update translations

* cleanup

* cleanup2
* Mocking out real firebase calls for YourLegislators component so Storybook doesn't make real API calls

* Adding firebase mocks to prevent erroneous calls to a real Firebase instance from the Storybook server - includes a default state for auth calls and a note in the README about when to override
nesanders and others added 22 commits May 26, 2026 21:50
…s-flag

Remove showLLMFeatures feature flag
… search

- createVectorIndexer.ts: write FieldValue.vector(embedding) instead of
  plain number[]; plain arrays are invisible to the vector index
- backfill-embeddings.ts: same fix; update skip logic to detect real
  VectorValues (toArray()) vs plain arrays so existing plain-array docs
  are regenerated rather than silently skipped
- migrate-embeddings-to-vector.ts: new one-time migration script that
  re-wraps the 8,762 existing plain-array embeddings as VectorValue in
  place (no Vertex AI calls); already run against digital-testimony-dev
- mcp-server: upgrade firebase-admin 11→13 (bundles @google-cloud/
  firestore 7.11.6) so findNearest() is available at runtime

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace raw doc.data() spread with shapeBill/shapeBallotQuestion helpers
  that strip DocumentText, Cosponsors[], CommitteeRecommendations[],
  RollCalls[], Attachments[], full history[], and BillHistory URL
- Add relevanceScore (1 - cosine distance) via distanceResultField
- Add includeFullText param (default false) to opt into DocumentText
- Add legislationType filter to exclude committee study orders
- Expose both summary and pinslip as separate fields
- Deduplicate and sort by relevanceScore in search_policies
- Update tool descriptions to document new params

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add shapeTestimony() helper mirroring shapeBill/shapeBallotQuestion
- Converts raw distance field to relevanceScore, strips vector_embedding
- Returns 300-char contentPreview by default; full content with includeFullText
- Add includeFullText param to TestimonySearchSchema
- Update tool description to document new behaviour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New index-http.ts: Express server using StreamableHTTPServerTransport
  in stateless mode (fresh server+transport per POST /mcp request)
- hybridAuthMiddleware wired in before MCP handler
- DISABLE_AUTH=true env var bypasses auth for local dev
- GET /health endpoint (no auth) for liveness checks
- GET /mcp returns 405 with explanation (stateless, POST only)
- HOST/PORT configurable via env; HOST=0.0.0.0 for Cloud Run
- Existing stdio index.ts untouched
- Added start:http and dev:http npm scripts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Lets a signed-in user get their Firebase ID token for testing the local
MCP HTTP server. Shows token in a copyable textarea, displays expiry,
and includes the exact curl command to use against localhost:3001.
Not linked from any nav — visit /dev/token directly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nt key docs

- Replace curl snippet with Claude Code .mcp.json config example
- Add expiry callout and refresh instructions
- Add agent key explanation for persistent integrations
- Add subheading and info box styles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Exclude mcp-server/ from root tsconfig.json — it is a self-contained
  package with its own tsconfig and zod version; the root tsc was
  resolving zod@3.20.2 from root node_modules rather than the package-
  local 3.25+, causing incompatibility with @modelcontextprotocol/sdk 1.29
- Cast (FieldValue as any).vector() in backfill-embeddings.ts and
  migrate-embeddings-to-vector.ts — @google-cloud/firestore@5.0.2 does
  not include type definitions for FieldValue.vector() (added in v7.x),
  though the method exists at runtime in firebase-admin@12

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove unnecessary GOOGLE_APPLICATION_CREDENTIALS secret from
  createVectorIndexer runWith() — ADC is automatic on GCP (comment #1)
- Remove insecure query-param token fallback from hybridAuthMiddleware;
  only accept Authorization: Bearer header (comment #4)
- Export shapeBill/shapeTestimony/shapeBallotQuestion for testability
- Add jest test suite for mcp-server following functions/ conventions:
  - mcp-server/jest.config.js (ts-jest preset, firebase-admin moduleNameMapper)
  - mcp-server/tools.test.ts (18 tests covering all three shape helpers:
    field inclusion/exclusion, relevanceScore computation, full-text flag,
    missing-field defaults, latestAction)
  - mcp-server/auth.test.ts (9 tests: missing header, no Bearer prefix,
    valid Firebase token, active/inactive agent keys, unknown token,
    query-param fallback rejected)
  - Add jest/ts-jest/@types/jest devDependencies to mcp-server/package.json

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

tools.ts:
- search_bills / search_policies: add topic, committee, primarySponsor
  post-filters; fetch 4× candidate set when filters active
- search_testimony: add authorDisplayName filter gated on public===true
  so private-profile users cannot be searched by name
- shapeBill: expose currentCommittee {id, name}
- shapeTestimony: remove public flag from output; anonymize authorDisplayName
  and authorRole for private-profile users (content remains — it is public
  legislative record per Firestore rules)
- Add list_topics (static TOPICS_BY_CATEGORY taxonomy), list_committees,
  list_sponsors tools with optional court filter
- Document pagination limitation in limit parameter description
- Inline TOPICS_BY_CATEGORY constant (mirrors functions/src/bills/types.ts)

tools.test.ts:
- Add tests for currentCommittee exposure in shapeBill
- Add tests for privacy anonymization in shapeTestimony:
  public flag absent from output, author masked when public===false,
  content preserved for private-profile testimony

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

- Add court parameter to search_bills, search_testimony, search_policies,
  list_committees, list_sponsors; defaults to CURRENT_COURT (194)
- CURRENT_COURT read from CURRENT_COURT env var with 194 fallback; source
  of truth is functions/src/shared/constants.ts → currentGeneralCourt
- Bills scoped by court via collection path (generalCourts/{court}/bills)
  — a true pre-filter using the existing COLLECTION_GROUP vector index,
  no new composite index required
- Testimony uses court as pre-filter (court + vector composite index added
  to firestore.indexes.json) for general search; falls back to post-filter
  when combined with billId/ballotQuestionId/authorDisplayName filters
  to avoid proliferating composite indexes
- Ballot questions not filtered by court (organised by electionYear, not GC)
- Remove dedup logic from search_policies — bills (H1234) and ballot
  questions (25-12) have structurally distinct IDs, no overlap possible;
  add comment explaining this
- Update search_policies description to remove 'deduplicated'
- Document CURRENT_COURT in .env.example
- Add court + vector composite index for publishedTestimony to
  firestore.indexes.json

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add authorDisplayName + public + vector_embedding composite index for
the author display name filter path in search_testimony. The court,
billId, and ballotQuestionId composite indexes were already present.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
search_bills queries collection("generalCourts/{court}/bills") directly,
which requires COLLECTION scope. The existing COLLECTION_GROUP index does
not satisfy direct collection queries.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MAPLE MCP server creation for RAG workflows
* Restore TestimonyCalloutSection to homepage

* fix(prettier): Run prettier

---------

Co-authored-by: Danchen <37356721+HDC432@users.noreply.github.com>
* color correction

* color correction
- Extract embedded text from bill PDFs when DocumentText is missing
- Add backfill tooling and documentation for repairing existing bills

Co-authored-by: Mephistic <deathbyfiresermon@gmail.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 2, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
maple-dev Ready Ready Preview, Comment Jun 2, 2026 11:35pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
maple-prod Ignored Ignored Jun 2, 2026 11:35pm

Request Review

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.

10 participants