Repository navigation
v0.3.5
๐ 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 indayjs.ts- Leaderboard now sorted by
diamonds.totals.totalinDatabaseService.getUsers
Store Actions
checkUntrackedChallengesAvailabilityaction added touseUsersStore
๐ Changed
Service Naming
- Renamed
dbAPIServiceโDatabaseAPIServicefor clarity and consistency
Store Restructure
- Store files moved from
app/context/store/โapp/store/ - Updated all
PERSIST_KEYSreferences to new location
Pagination Logic
usePaginationQuery.ts: IntegratedgetQueryKey, reward/status logic, and user persistence- Disabled persistence via
partialize: (state) => ({})inusePaginationStore.tsanduseUsersStore.ts
Schema & Types
- Removed
untrackedChallengesAvailablefromCodeChallengesSchemaandCodewarsUsertypes
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.tsxfor 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
initializeCodeChallengesListlogic and similar untracked features
๐ Fixed
- Type Safety: Added
QueryKeytype tousePaginationQuery.ts - Collapse Logic:
CollapseBoundary.tsxnow usesisCollapsedstate 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 installAfter install:
-
Clear local storage:
localStorage.clear();
(Removes outdated keys like
zustand:usersandzustand:codewars-table-pagination-query) -
Update DB schema:
- Remove
untrackedChallengesAvailablefrom backend types/models
- Remove
-
Test critical features:
- Leaderboard sorting by
diamonds - Pagination and merging of Codewars challenges
- Collapse/expand functionality in leaderboard
- Leaderboard sorting by
-
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.tsis retained for possible future reactivation ([Issue #TBD])
๐งน Deprecation Notices
app/context/store/is now obsolete. Useapp/store/going forward.- Untracked challenges support is officially removed. Future features should follow the new tracked-only design.
๐ฅ Contributors
- Developers: Morteza Bakhshandeh @BCFCODE
- QA: QA Team Members
๐ฌ Feedback
Please report issues or feature suggestions via
๐ฎ GitHub Issues or โ๏ธ BCFCODE@gmail.com