V2.1.0 - #28
Conversation
Remove Android Capacitor references to `@aparajita` biometric/secure-storage modules and simplify biometric enrollment/authentication to a single WebAuthn- based path in the app. This unifies behavior across platforms, reduces native plugin coupling, and updates mobile-native docs to match the new biometric architecture.refactor: drop Capacitor biometric plugins for WebAuthn flow Remove Android Capacitor references to `@aparajita` biometric/secure-storage modules and simplify biometric enrollment/authentication to a single WebAuthn- based path in the app. This unifies behavior across platforms, reduces native plugin coupling, and updates mobile-native docs to match the new biometric architecture.
Include `refreshMarketData` in wallet data context/hooks and call it during manual portfolio sync so overview and notification feeds are updated together with holdings/prices. Improve IPO list sorting by parsing and comparing relevant dates: - open IPOs now prioritize earlier closing dates (then application status) - upcoming IPOs now prioritize earlier opening dates Also update sync success messaging to reflect combined portfolio + market refresh.feat(portfolio): sync market feed and refine IPO ordering Include `refreshMarketData` in wallet data context/hooks and call it during manual portfolio sync so overview and notification feeds are updated together with holdings/prices. Improve IPO list sorting by parsing and comparing relevant dates: - open IPOs now prioritize earlier closing dates (then application status) - upcoming IPOs now prioritize earlier opening dates Also update sync success messaging to reflect combined portfolio + market refresh.
Extend the add transaction modal to support a new `reinvestment` transaction type, add a computed total amount preview (`quantity × price`) with locale formatting, and allow passing a configurable `currencySymbol` (defaulting to `Rs. `). Also update modal copy to reflect reinvestments, improving transaction clarity and entry accuracy.feat(portfolio): add reinvestment type and live total preview Extend the add transaction modal to support a new `reinvestment` transaction type, add a computed total amount preview (`quantity × price`) with locale formatting, and allow passing a configurable `currencySymbol` (defaulting to `Rs. `). Also update modal copy to reflect reinvestments, improving transaction clarity and entry accuracy.
- Add `mode` prop to `StockDetailModal` to support "sold" view - Implement `formatTimeSince` utility for relative time displays - Add `soldTransactions` and `soldDetailStats` logic to modal - Update `PortfolioList` to handle switching between holding and sold detail modes - Bump manifest version to 2.0.4
Add IPO entries to overview notifications and prioritize them in the feed so users can quickly see open/upcoming offerings from the portfolio screen. Update IPO modal CTA behavior for non-automated users to open the MeroShare login page directly (and relabel action from “Setup” to “Apply Now”) to reduce friction when applying manually.feat(portfolio): surface IPO notifications and direct apply flow Add IPO entries to overview notifications and prioritize them in the feed so users can quickly see open/upcoming offerings from the portfolio screen. Update IPO modal CTA behavior for non-automated users to open the MeroShare login page directly (and relabel action from “Setup” to “Apply Now”) to reduce friction when applying manually.
Enhance dashboard header notifications with structured metadata (category, action labels, tab targets, bill-dialog triggers, and settings links) so alerts can drive users directly to relevant actions. Also add IPO-specific handling with selected IPO state and detail modal support to make investment notifications more interactive and useful.feat(dashboard): add actionable notification categories and IPO modal Enhance dashboard header notifications with structured metadata (category, action labels, tab targets, bill-dialog triggers, and settings links) so alerts can drive users directly to relevant actions. Also add IPO-specific handling with selected IPO state and detail modal support to make investment notifications more interactive and useful.
Add logic to detect missing Dropbox permissions and prompt users to reconnect when required scopes are not met. This includes: - Implementing `getMissingDropboxScopes` to compare granted scopes against required ones. - Updating `DataSettings` to handle scope-related errors and provide descriptive reconnection messages. - Adding `revokeDropboxToken` to properly invalidate sessions on disconnect. - Refactoring `clearDropboxToken` to use a prefix-based cleanup for all related localStorage keys. - Updating the authentication flow to request the necessary scopes.
Implement new dashboard capabilities including notification management and a floating calculator utility: - Add ability to dismiss live notifications in the dashboard header, persisting dismissal state to localStorage. - Implement a comprehensive floating calculator with expression evaluation, history tracking, and draggable/dockable UI. - Add `clearLiveNotificationHistory` to manage notification lifecycle based on timestamps. - Update dashboard header to filter out dismissed notifications from the active view.
Document the 2.0.4 release across `CHANGELOG.md` and `data/releases.json` to reflect the finalized build date and published highlights. - add 2.0.4 changelog entries for calculator, notifications, and Dropbox updates - bump `currentBuild` to `2026.04.30` and align release date to `2026-04-30` - revise release category/title and highlight list to match shipped UX changes chore(release): update v2.0.4 changelog and release metadata Document the 2.0.4 release across `CHANGELOG.md` and `data/releases.json` to reflect the finalized build date and published highlights. - add 2.0.4 changelog entries for calculator, notifications, and Dropbox updates - bump `currentBuild` to `2026.04.30` and align release date to `2026-04-30` - revise release category/title and highlight list to match shipped UX changes
Enhance the reliability and user feedback of the backup system by: - Implementing detailed error reporting for Dropbox API operations, including HTTP status codes and parsed error descriptions. - Adding robust network error detection for Dropbox uploads. - Introducing explicit PIN validation during the backup import process to ensure the provided PIN matches the current wallet PIN. - Adding UI error states and alert components in `DataSettings` and `BackupModal` to display specific validation and operation failures. - Improving error message clarity for common failure scenarios like missing configuration or invalid PIN formats.
Enhance the import verification modal to support transaction-level pricing, not just symbol-level defaults. This adds state and props for transaction price inputs, filters and groups buy-row transactions by symbol, and introduces expandable transaction rows with contextual metadata (date, quantity, optional flag, description). The modal layout was also widened to accommodate the richer review UI, helping users provide more accurate rates during import and reduce pricing mismatches.feat(portfolio): add per-transaction rate verification in import modal Enhance the import verification modal to support transaction-level pricing, not just symbol-level defaults. This adds state and props for transaction price inputs, filters and groups buy-row transactions by symbol, and introduces expandable transaction rows with contextual metadata (date, quantity, optional flag, description). The modal layout was also widened to accommodate the richer review UI, helping users provide more accurate rates during import and reduce pricing mismatches.
Show IPO symbols in the import verification modal instead of filtering them out, and clarify pricing UI by labeling the field as “IPO Price” with an auto-filled face value hint. Also adjust queue-building logic to always prioritize Buy entries for symbol pricing, while only adding IPO defaults when a Buy price is not already present. This preserves correct manual pricing behavior and avoids unintended overrides.fix(portfolio): include IPO entries in import price verification Show IPO symbols in the import verification modal instead of filtering them out, and clarify pricing UI by labeling the field as “IPO Price” with an auto-filled face value hint. Also adjust queue-building logic to always prioritize Buy entries for symbol pricing, while only adding IPO defaults when a Buy price is not already present. This preserves correct manual pricing behavior and avoids unintended overrides.
Replace broad `useWalletData` usage with feature-specific hooks across UI components (e.g., debt/credit, portfolio, notifications), including separating portfolio state from NEPSE market data access. This improves separation of concerns, reduces unnecessary coupling to the global wallet context, and makes data dependencies clearer and easier to maintain.refactor(hooks): split wallet context into domain data hooks Replace broad `useWalletData` usage with feature-specific hooks across UI components (e.g., debt/credit, portfolio, notifications), including separating portfolio state from NEPSE market data access. This improves separation of concerns, reduces unnecessary coupling to the global wallet context, and makes data dependencies clearer and easier to maintain.
Switch release date rendering to `formatAppDate(..., "BS")` and update budget
period calculations to be calendar-aware via `getCalendarMonthRange` and
`getCalendarSystem`.
Also refactor budget period filtering to use explicit `{start, end}` ranges,
so spending totals are constrained to the correct window (including proper
week/year boundaries and exclusive end dates). This improves consistency and
accuracy for non-Gregorian users.feat(calendar): use app calendar for dates and budget periods
Switch release date rendering to `formatAppDate(..., "BS")` and update budget
period calculations to be calendar-aware via `getCalendarMonthRange` and
`getCalendarSystem`.
Also refactor budget period filtering to use explicit `{start, end}` ranges,
so spending totals are constrained to the correct window (including proper
week/year boundaries and exclusive end dates). This improves consistency and
accuracy for non-Gregorian users.
Redesign the About settings section to make maintenance actions and help resources clearer and easier to use. - Upgraded “Check for Updates” and “Clear caches” into richer action cards with icons, status feedback, and descriptions - Added storage detail (“On-device by default”) to improve transparency about user data handling - Updated external/support link handling and refreshed icon usage for docs/help/security/dev sections - Replaced outdated organization URL (`bit-nepal.com` → `bitnepal.net`) and removed unused policy/partner link handlers to simplify the pagefeat(settings): revamp About page actions and support links Redesign the About settings section to make maintenance actions and help resources clearer and easier to use. - Upgraded “Check for Updates” and “Clear caches” into richer action cards with icons, status feedback, and descriptions - Added storage detail (“On-device by default”) to improve transparency about user data handling - Updated external/support link handling and refreshed icon usage for docs/help/security/dev sections - Replaced outdated organization URL (`bit-nepal.com` → `bitnepal.net`) and removed unused policy/partner link handlers to simplify the page
Compute next SIP cycle amounts using base installment plus remainder carryover, and use the net investable amount to decide whether a due installment can be completed. Also update the stock detail modal’s installment breakdown UI to show: - base installment investment after DPS - carryover amount (when present) - total net investment for the current cycle This ensures affordability checks and displayed SIP split values reflect actual payable/investable amounts.feat(portfolio): include SIP carryover in due installment logic Compute next SIP cycle amounts using base installment plus remainder carryover, and use the net investable amount to decide whether a due installment can be completed. Also update the stock detail modal’s installment breakdown UI to show: - base installment investment after DPS - carryover amount (when present) - total net investment for the current cycle This ensures affordability checks and displayed SIP split values reflect actual payable/investable amounts.
Move inline SIP gross/net amount, enrollment eligibility, base/remainder, and affordability logic in `stock-detail-modal` to shared utilities from `@/lib/sip`. This reduces duplicated business logic in the modal, improves consistency across SIP flows, and makes cycle amount handling (including optional carry remainder) easier to maintain.refactor(portfolio): centralize SIP calculation helpers Move inline SIP gross/net amount, enrollment eligibility, base/remainder, and affordability logic in `stock-detail-modal` to shared utilities from `@/lib/sip`. This reduces duplicated business logic in the modal, improves consistency across SIP flows, and makes cycle amount handling (including optional carry remainder) easier to maintain.
Improve the expanded dividend “all years” view to surface more actionable insights per portfolio. - Use shared `DividendPortfolioAllYearsRow` from `dividend-outlook` and remove local duplicate typing - Add richer UI blocks for top contributors (e.g., top cash stock) alongside yearly summaries - Wire in `OverviewStockSearch` import to support enhanced overview interactions This makes dividend projections easier to scan by highlighting key contributors, not just year-by-year totals.feat(portfolio): enrich all-years dividend overview cards Improve the expanded dividend “all years” view to surface more actionable insights per portfolio. - Use shared `DividendPortfolioAllYearsRow` from `dividend-outlook` and remove local duplicate typing - Add richer UI blocks for top contributors (e.g., top cash stock) alongside yearly summaries - Wire in `OverviewStockSearch` import to support enhanced overview interactions This makes dividend projections easier to scan by highlighting key contributors, not just year-by-year totals.
Introduce a new “what-if” flow in `stock-detail-modal` to estimate dividend outcomes for other stocks and unit counts without leaving the detail view. - Added local state for what-if panel visibility, symbol query, unit input, and search focus handling - Built a searchable dividend symbol catalog with normalized matching and top suggestions - Added selected-symbol resolution and matched dividend history lookup for scenario calculation - Reset all what-if states when the modal closes to prevent stale inputs between sessionsfeat(portfolio): add dividend what-if calculator in stock modal Introduce a new “what-if” flow in `stock-detail-modal` to estimate dividend outcomes for other stocks and unit counts without leaving the detail view. - Added local state for what-if panel visibility, symbol query, unit input, and search focus handling - Built a searchable dividend symbol catalog with normalized matching and top suggestions - Added selected-symbol resolution and matched dividend history lookup for scenario calculation - Reset all what-if states when the modal closes to prevent stale inputs between sessions
Enhance the add-transaction modal with stronger typing and sell-specific trade insights. Introduces a shared `TransactionDraft` type, adds portfolio context props (`portfolioItems`, `activePortfolioId`), and integrates `createNepseTradePreview` to compute sell preview details from matching holdings. Also updates modal UI state and icons to support expandable preview details, while refining stock/crypto suggestion behavior for buy vs sell flows. This improves transaction accuracy and helps users validate sell entries before submitting.feat(portfolio): add NEPSE sell preview and typed tx draft Enhance the add-transaction modal with stronger typing and sell-specific trade insights. Introduces a shared `TransactionDraft` type, adds portfolio context props (`portfolioItems`, `activePortfolioId`), and integrates `createNepseTradePreview` to compute sell preview details from matching holdings. Also updates modal UI state and icons to support expandable preview details, while refining stock/crypto suggestion behavior for buy vs sell flows. This improves transaction accuracy and helps users validate sell entries before submitting.
Simplify the add-transaction modal by removing extra header description text and disabling the date picker preview for a cleaner input flow. Redesign the trade preview card to surface key values (share amount and charges) upfront and improve the expandable details toggle styling, making settlement calculations easier to scan before submission.feat(portfolio): refine add transaction preview layout Simplify the add-transaction modal by removing extra header description text and disabling the date picker preview for a cleaner input flow. Redesign the trade preview card to surface key values (share amount and charges) upfront and improve the expandable details toggle styling, making settlement calculations easier to scan before submission.
Use onboarding state to avoid redirecting users from wallet to `/welcome` unless onboarding is actually active, preventing unnecessary navigation. Enhance the welcome page to detect existing accounts (including localStorage), show a returning-user card, and switch the primary CTA from “Start” to “Dashboard” so returning users can quickly resume from home.feat(onboarding): improve returning-user welcome routing Use onboarding state to avoid redirecting users from wallet to `/welcome` unless onboarding is actually active, preventing unnecessary navigation. Enhance the welcome page to detect existing accounts (including localStorage), show a returning-user card, and switch the primary CTA from “Start” to “Dashboard” so returning users can quickly resume from home.
Prepare the 2.1.0 release by updating version references and release notes across the project: - bump release manifest and releases data to `2.1.0` (`currentBuild` 2026.05.09) - update Android (`versionCode` 2, `versionName` 2.1.0) and iOS (`CURRENT_PROJECT_VERSION` 2, `MARKETING_VERSION` 2.1.0) app versions - add 2.1.0 entries to `CHANGELOG.md` and `README.md` with feature, improvement, and fix highlights - mark 2.0.4 as `stable` in release metadata This keeps platform builds, public docs, and release tracking aligned for the 2.1.0 rollout.chore(release): cut v2.1.0 and sync app version metadata Prepare the 2.1.0 release by updating version references and release notes across the project: - bump release manifest and releases data to `2.1.0` (`currentBuild` 2026.05.09) - update Android (`versionCode` 2, `versionName` 2.1.0) and iOS (`CURRENT_PROJECT_VERSION` 2, `MARKETING_VERSION` 2.1.0) app versions - add 2.1.0 entries to `CHANGELOG.md` and `README.md` with feature, improvement, and fix highlights - mark 2.0.4 as `stable` in release metadata This keeps platform builds, public docs, and release tracking aligned for the 2.1.0 rollout.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (8)
📝 WalkthroughWalkthroughRelease 2.1.0 introduces AD/BS calendar utilities and applies them across UI, expands portfolio (NEPSE preview, dividends, sold lots, edit flows), enhances notifications, refactors Dropbox/auth and biometric to WebAuthn, adds hooks/tests, and updates platform/version metadata. ChangesRelease 2.1.0
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
|
Align project documentation with current repository and contribution workflow by switching test commands to pnpm, updating clone URL, clarifying license text, and adding security reporting guidance. Also fix `.gitignore` to track the moved docs file path and enhance `manifest.json` with screenshot metadata to improve PWA listing completeness.chore: update docs, ignore paths, and PWA manifest metadata Align project documentation with current repository and contribution workflow by switching test commands to pnpm, updating clone URL, clarifying license text, and adding security reporting guidance. Also fix `.gitignore` to track the moved docs file path and enhance `manifest.json` with screenshot metadata to improve PWA listing completeness.
Summary by CodeRabbit
New Features
Improvements