Expand formatSymbolForTradingView to map 40+ Finnhub exchange suffixes
to their TradingView prefix equivalents. Previously only .SS, .SZ, and
.HK were handled, causing international symbols like 2330.TW to fail
on the stock details page.
Add comprehensive test suite for utility functions including
formatSymbolForTradingView, formatMarketCapValue, formatChangePercent,
getChangeColorClass, and calculateNewsDistribution.
Closes#24
Introduce a configurable AI provider system (lib/ai-provider.ts) that
supports Gemini (default), MiniMax, and Siray.ai with automatic
fallback. The AI_PROVIDER env var selects the primary provider, and
on failure the system falls back to a secondary provider automatically.
- MiniMax M2.7 via OpenAI-compatible API (api.minimax.io/v1)
- Provider abstraction replaces hardcoded Gemini + Siray fallback
- 24 unit tests + 3 integration tests (vitest)
## Vercel Web Analytics Implementation for OpenStock
Successfully implemented Vercel Web Analytics for the OpenStock Next.js project.
### Changes Made
1. **Package Installation**
- Installed `@vercel/analytics` (v1.6.1) using npm package manager
- Updated package.json and package-lock.json with the new dependency
2. **App Router Configuration**
- Identified the project uses Next.js App Router (app directory structure)
- Added import statement: `import { Analytics } from "@vercel/analytics/next"`
- Placed `<Analytics />` component in the root layout file (app/layout.tsx)
- Component is positioned inside the `<body>` tag, after the Toaster component
### Files Modified
- **app/layout.tsx**
- Added Analytics import at the top with other imports
- Added `<Analytics />` component within the body, maintaining existing code structure
- All existing functionality (Toaster, metadata, fonts, styling) preserved
- **package.json**
- Added `@vercel/analytics: ^1.6.1` to dependencies
- **package-lock.json**
- Updated with new dependency and all related package information
### Verification Steps Completed
✓ Explored project structure and confirmed App Router usage
✓ Installed @vercel/analytics package successfully
✓ Added Analytics component to root layout file
✓ Verified no linting errors (eslint passed without issues)
✓ TypeScript syntax is correct for the modifications
✓ Existing code structure preserved with minimal, focused changes
### Implementation Notes
- The project uses Next.js 15.5.7 with Turbopack
- The Analytics component is properly positioned in the body tag after all children
- No breaking changes introduced; all existing components and functionality remain unchanged
- The implementation follows Next.js App Router best practices as specified in the @vercel/analytics documentation
- The package is production-ready and will automatically collect analytics data when deployed to Vercel
### Dependencies Added
- @vercel/analytics@^1.6.1 (701 packages total installed during setup)
The implementation is complete and ready for deployment. Analytics will be automatically collected when the application is deployed to Vercel.
Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Updated dependencies to fix Next.js CVE vulnerabilities.
The fix-react2shell-next tool automatically updated the following packages to their secure versions:
- next
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
All package.json files have been scanned and vulnerable versions have been patched to the correct fixed versions based on the official React advisory.
Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>