bryanlundberg / nexustimer Goto Github PK
View Code? Open in Web Editor NEWNexus Timer is a powerful unopinionated, minimalist training tool for SpeedCubing.
Home Page: https://nexustimer.pro
License: GNU General Public License v3.0
Nexus Timer is a powerful unopinionated, minimalist training tool for SpeedCubing.
Home Page: https://nexustimer.pro
License: GNU General Public License v3.0
On large screens, the settings can currently only be toggled using the dedicated button. How about enhancing user experience by allowing closure of the settings when clicking anywhere outside the settings interface
Currently, there is an issue with the timer. When a user stop the time and continues pressing the spacebar, the timer sets ready unintentionally for the next solve.
The expected behavior should be release the spacebar before proceeding to the next solve.
The "Best" statistic is not accurately reflecting the lowest time; it should consistently display the lowest recorded time.
If you search a cube in cubes section with 0 coincidences and the go to metrics page, state of cube is empty.
If you've chosen the "X" cube and decide to delete it, it remains selected on the Timer page. It should be reset to a null state until you select a new cube just in case you deleted the selected cube.
Enhance the timer with an optional 15-second cube inspection countdown, along with a +2 penalty for exceeding the inspection time, offering users a more realistic and competitive practice environment.
currently users are unaware why aren't they able to add cube after selecting cube type
Users dont have access to start / stop the timer from mobile devices.
Create a confirmation modal that informs users of the number of solves to be deleted when they confirm the cube deletion. This action could potentially impact their personal best times.
Adding error handling for situations when the input file contains incorrect data. For now, a simple user alert should be sufficient and return the function before replace the localStorage.
Our project contains too much spaghetti code, which hinders the full potential of Next.js and server components because we use the "use client" tag too early in pages due to the use of useState and useEffect. We need to improve organization and reduce components to its smallest size. Here's how to do it:
You can create a folder if you think can improve organization of the component.
If you are concerned about prop drilling, consider using Zustand to create a global state. It can help simplify data sharing across components. #72
The timer should not accept negative values, as dates can not be negative.
We got a new function for formatting time in a nice way. As a result, we need update all existing components to utilize this function before rendering.
This proposal is open to adjustments and improvements in various aspects such as sizes, colors, transitions, hover effects, section variations, and overall design to achieve the best possible results.
Main Timer should be calculated by overall session-category, and not session-cube.
In the file src/app/translations, at line 1212, the definition is mixed with English.
The Megaminx option is not in the current category list and is an official WCA category
We need to hide the navigation bar during the solving process, as it has been broken since the recent project restructuring.
Default color: neutral-400
Active tab: neutral-100
remove bg's
The Modal for editing a cube:
Changing the category from, for example, a 2x2 cube to a 7x7 cube can lead to skewed statistics. It's important to note that solves on a 2x2 cube are typically faster than those on a 7x7 cube. Therefore, altering the category may result in inaccurate best times, averages, and other statistical data.
This is not a bug; it's a deliberate design choice to ensure the integrity of your solving data.
File: importDataFromFile.ts has everything needed to handle error using import feature.
Now, it is necessary to finish it, there is a function inside isValidCubesData()
, which should return 'true' or 'false' based on whether all the data in the imported .txt file complies with our designated data structure.
The timer displays quick action buttons in manual mode, regardless of whether the feature is active or disabled.
Manual mode is an addition, allowing users the flexibility to run their sessions using external timers, such as a stackmat.
Need an input component
Logic saving times
Input Test Cases:
Entering "50" should convert to "0.50."
Entering "95" should convert to "0.95."
Entering "500" should convert to "5.00."
Entering "950" should convert to "9.50."
Entering "6138" should convert to "1:01.38."
Entering "5000" should convert to "50.00."
Entering "9500" should convert to "1:35.00."
Entering "135000" should convert to "1:35:00."
Entering "34292" should convert to "3:42.92."
Entering "69344" should convert to "7:33.44."
By implementing this change, we aim to ensure that users, including those with accessibility needs, can easily and accurately input times in the desired format.
We need to verify in the lightweight-charts
documentation if it's possible to pass a custom formatting function as a parameter.
We need to enhance the user experience by adding a feature in the menu settings that facilitates the export and import of user data. This feature will be especially valuable until we implement backend solutions for data management.
We currently lack the ability to zoom in and out on lineal graphs within our application. Ubication: (Metrics/Category)
Need an algorithms to generate SQ-1 and Megaminx scrambles
Expected output:
SQ1 -> (-5,0)/ (0,3)/ (3,0)/ (2,-4)/ (-2,-5)/ (5,-1)/ (-2,0)/ (0,-3)/ (0,-2)/ (6,0)/ (0,-1)/ (0,-5)/ (2,-2)/
Megaminx ->
R++ D-- R-- D++ R-- D++ R++ D-- R-- D-- U'
R++ D-- R-- D-- R++ D-- R-- D-- R++ D++ U
R++ D-- R-- D-- R-- D-- R++ D-- R-- D++ U
R++ D++ R++ D++ R++ D++ R-- D-- R++ D-- U'
R-- D++ R++ D-- R++ D-- R++ D++ R++ D-- U'
R++ D++ R-- D-- R++ D-- R-- D-- R++ D-- U'
R-- D++ R++ D++ R++ D++ R++ D-- R-- D++ U
UX can be improved by hiding all on-screen distractions, leaving only the running time visible.
Currently .. prop drilling is messy
Issue: The timer starts when you tap the buttons, contrary to the expected behavior.
To recreate the problem:
In timer settings:
A potential solution would be to assign an ID or reference to the quick action buttons component container. Then, in the timer logic, ensure that you are not tapping that element to avoid unintended timer activation.
Allows users to customize the look and feel of their digital experience by selecting from a variety of pre-designed themes or creating their own unique themes, enhancing personalization and user engagement.
Need a function to convert time and improve user readability for big cubes example 93.03s to 1:33.03
This issue is dedicated to improving language translations for our project. We need to either add new translations for missing languages or fix existing translations that may have errors or inconsistencies.
Its important for me reach a closer meaning but related to the thematic if that involve the use of other words
Since dependent bot updated from 13.4.19 to 13.5.5 throwing an error at dev mode and at build
✓ Compiled /stats/page in 2.9s (1957 modules)
⨯ TypeError: responseHeaders.getSetCookie is not a function
at new ResponseCookies (webpack-internal:///(app-metadata-route)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js:213:47)
at new NextResponse (webpack-internal:///(app-metadata-route)/./node_modules/next/dist/server/web/spec-extension/response.js:40:22)
at GET (webpack-internal:///(app-metadata-route)/./node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?page=%2Ffavicon.ico%2Froute&isDynamic=0!./src/app/favicon.ico?__next_metadata_route__:15:10)
at C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:62505
at C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\lib\trace\tracer.js:121:36
at NoopContextManager.with (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\@opentelemetry\api\index.js:1:7057)
at ContextAPI.with (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\@opentelemetry\api\index.js:1:516)
at NoopTracer.startActiveSpan (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\@opentelemetry\api\index.js:1:18086)
at ProxyTracer.startActiveSpan (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\@opentelemetry\api\index.js:1:18847)
at C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\lib\trace\tracer.js:110:107
at NoopContextManager.with (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\@opentelemetry\api\index.js:1:7057)
at ContextAPI.with (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\@opentelemetry\api\index.js:1:516)
at NextTracerImpl.trace (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\lib\trace\tracer.js:110:32)
at C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:56147
at AsyncLocalStorage.run (node:async_hooks:330:14)
at Object.wrap (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:37057)
at C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:53934
at AsyncLocalStorage.run (node:async_hooks:330:14)
at Object.wrap (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:36635)
at C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:53896
at AsyncLocalStorage.run (node:async_hooks:330:14)
at eD.execute (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:53870)
at eD.handle (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:63748)
at doRender (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:1217:56)
at cacheEntry.responseCache.get.incrementalCache.incrementalCache (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:1446:34)
at ResponseCache.get (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\response-cache\index.js:53:26)
at DevServer.renderToResponseWithComponentsImpl (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:1361:53)
at C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:903:121
at NextTracerImpl.trace (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\lib\trace\tracer.js:94:20)
at DevServer.renderToResponseWithComponents (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:903:41)
at DevServer.renderPageComponent (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:1600:35)
at async DevServer.renderToResponseImpl (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:1638:32)
at async DevServer.pipeImpl (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:826:25)
at async DevServer.handleCatchallRenderRequest (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\next-server.js:623:13)
at async DevServer.handleRequestImpl (C:\Users\bryan\Documents\workspace\NexusTimer\node_modules\next\dist\server\base-server.js:728:17)
Solution lower down nextjs to v13.5.1, there is not happening
We are looking to design and create a toast component that integrates with our current style and enhances it.
Mobile position:
Tablet or desktop computer with reasonable width dimensions:
Here are the revised points:
Best design wins, we have time until create the triggers.
Currently icons are type outline. I would like get a better effect switching to type solid when we are in the current page.
I facilitate the searching of the icons, their names are:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.