Skip to content

v0.3.5

Choose a tag to compare

@BCFCODE BCFCODE released this 20 May 16:57
· 258 commits to main since this release

๐Ÿš€ Version 0.3.5 โ€“ Leaderboard & Codewars Enhancements

Release Date: May 20, 2025
Git Tags: v0.3.3 โ†’ v0.3.5
Repository: BCFCODEwars


๐Ÿงญ Overview

v0.3.5 brings enhanced leaderboard accuracy, smarter pagination for Codewars challenges, and a leaner, cleaner codebase.

  • Introduces React Query keying utils and challenge list merging
  • Adds advanced sorting (e.g., by diamond totals, completion time)
  • Refactors and renames store and service files for clarity
  • Removes deprecated logic for untracked challenges
  • Improves UX, performance, and type safety
    No breaking changes introduced.

๐Ÿ”ข Semantic Versioning

  • 0.3.4 (Minor): Feature additions (e.g., query key generators, new sorting utilities)
  • 0.3.5 (Patch): Type fixes, pagination optimizations, store consistency improvements

๐Ÿ“’ Changelog

โœจ Added

Pagination Utilities

  • getQueryKey.ts: Generates unique keys for paginated queries (.../utils/getQueryKey.ts)
  • mergeListsAvoidingDuplicates.ts: Ensures challenge lists are merged without redundancy

Sorting Enhancements

  • sortByCompletedAtAsc/Desc: New sort utilities in dayjs.ts
  • Leaderboard now sorted by diamonds.totals.total in DatabaseService.getUsers

Store Actions

  • checkUntrackedChallengesAvailability action added to useUsersStore

๐Ÿ›  Changed

Service Naming

  • Renamed dbAPIService โ†’ DatabaseAPIService for clarity and consistency

Store Restructure

  • Store files moved from app/context/store/ โ†’ app/store/
  • Updated all PERSIST_KEYS references to new location

Pagination Logic

  • usePaginationQuery.ts: Integrated getQueryKey, reward/status logic, and user persistence
  • Disabled persistence via partialize: (state) => ({}) in usePaginationStore.ts and useUsersStore.ts

Schema & Types

  • Removed untrackedChallengesAvailable from CodeChallengesSchema and CodewarsUser types

Date Formatting

  • Enhanced relative time UX in dayjs (e.g., "Recently Solved", "3 minutes ago")

Reducer Cleanup

  • Commented out unused actions in currentUserReducer

UI Simplification

  • Removed hover logic in UsersTable
  • Cleaned up CollapseBoundary.tsx for leaner collapse behavior

๐Ÿ—‘ Removed

Deprecated Files

  • usePagination.ts, useUpdateListDiff.ts, addTrackedFlags.ts, syncCurrentWithAllUsers.ts, etc.

Unused Logic

  • Removed saveNewGoogleUser, saveNewCodewarsUser, and other obsolete functions
  • Commented out initializeCodeChallengesList logic and similar untracked features

๐Ÿ› Fixed

  • Type Safety: Added QueryKey type to usePaginationQuery.ts
  • Collapse Logic: CollapseBoundary.tsx now uses isCollapsed state reliably
  • Store Consistency: Ensured accurate tracking of untracked challenges
  • OpenButton Formatting: Streamlined conditional rendering logic

๐Ÿ›  Upgrade Instructions

# Pull the release tag
git fetch origin
git checkout v0.3.5

# Install dependencies
npm install

After install:

  1. Clear local storage:

    localStorage.clear();

    (Removes outdated keys like zustand:users and zustand:codewars-table-pagination-query)

  2. Update DB schema:

    • Remove untrackedChallengesAvailable from backend types/models
  3. Test critical features:

    • Leaderboard sorting by diamonds
    • Pagination and merging of Codewars challenges
    • Collapse/expand functionality in leaderboard
  4. Run tests:

    npm test

โš  Known Issues

  • Persistence Disabled: State is no longer saved to localStorage; some data will refetch on reload
  • Commented Code: Deprecated logic like useInitializeList.ts is retained for possible future reactivation ([Issue #TBD])

๐Ÿงน Deprecation Notices

  • app/context/store/ is now obsolete. Use app/store/ going forward.
  • Untracked challenges support is officially removed. Future features should follow the new tracked-only design.

๐Ÿ‘ฅ Contributors


๐Ÿ’ฌ Feedback

Please report issues or feature suggestions via
๐Ÿ“ฎ GitHub Issues or โœ‰๏ธ BCFCODE@gmail.com