Giter Site home page Giter Site logo

cubestuffs / cubetime Goto Github PK

View Code? Open in Web Editor NEW
89.0 1.0 6.0 39.64 MB

Simple, modern speedcubing timer with many utilities, built with SwiftUI & UIKit.

Home Page: https://cubetime.app

License: GNU General Public License v3.0

Swift 99.51% C++ 0.46% Objective-C 0.03%
rubiks-cube twisty-puzzles twisty-puzzle-cubes speedcube timer speedcubing cubing-timer cubing

cubetime's Introduction

CubeTime

a speedcubing timer & utility app


Contents

  1. Overview
  2. Screenshots
  3. Features
  4. Introductory User Guide
  5. Some final stuff

Overview

Information!

  • Free (both as in libre and gratis), copylefted software (GPLv3)
  • Fully built with Swift (SwiftUI and UIKit), lightweight and modern app architecture
    • Some stats accelerated with C++
  • Simple and modern user interface
    • Beautiful dark mode that saves battery on OLED phones
    • Clean tab bar for effortless navigation

Screenshots

iOS

iPadOS

1 2 6

Features

App Features

  • Built-in system haptics, and able to be changed to your liking

  • Audio alerts in inspection

  • All the basic timing functionalities, and fully customisable:

    • Customisable hold down time
    • Inspection time
    • Customisable timer update intervals and statistics display precision
    • Draw scramble
    • Intuitive gestures for quick and easy access to actions
      • Customisable activation threshold
  • Easy to use session support

    • featuring many modes, including:
      • Standard session
      • Multiphase - for blind and other events
      • Playground sessions that support all scramble types for quick access to scrambling
      • Comp Sim
    • pinnable sessions for easy access
  • Simple card design for viewing your times

    • Searchable times, along with quick and easy to use sort and filter functionality - to sort your times by date or by speed, and filter by comment, scramble type and penalty
    • Batch select times for deletion, adding penalties, moving to a different session, or copying
    • Add comments for special solves
    • Long-press menu for easy access to solve options
  • Extensive statistics and solve analysis:

    • Visual graphs for your sessions
      • Such as time trend, time distribution and other graphs
    • All standard calculations, including best and current averages of 5, 12 and 100, session mean, median, and many more
  • Other stats and tools, including special ones for compsim, such as:

    • calculating your bpa and wpa
    • calculating time needed to secure certain averages
    • batch scramble generator
    • timer only and scramble only tool
  • iPad® support, including:

    • Keyboard shortcuts
    • Trackpad support
    • Multitasking window support
  • CloudKit® for iCloud® session and solve syncing

  • iCloud® settings syncing – so all your settings are the same across devices

Upcoming Features

You can view our Todo List for this repo for a list of all our upcoming features. You can add suggestions by opening an issue. Here's an outline of some of the major upcoming features

  • Support for bluetooth cubes
  • Support for stackmats
  • Importing sessions and solves from common timers, such as ChaoTimer and csTimer
  • Easy to use export to save your sessions
  • Algorithm Trainer and more to come...

Introductory User Guide

Timer

Press and hold until the timer turns green to start. You can change the hold time in settings. The default gestures are as follows:

  • swipe left to delete the current solve
  • swipe right to generate a new scramble
  • swipe down to add a penalty

On iPads, you can use your trackpad to two-finger swipe in the same way as your finger.

Time List

All your solves in the currently selected session will be displayed in your time list. Pressing the select button on the top right will enter selection mode, where you can batch select, delete, move or penalise solves. Pressing on the seach icon will reveal the search bar, where you can search for your times. You can also filter for scramble types, penalties and comments, along with sorting your times. Searching while in select mode will preserve your current selection.

Clicking on a solve will bring up the solve details, the time, date, event and scramble. You can add a comment if you wish by typing in the comment box. "Copy Solve" will copy the solve details to your clipboard. "Share Solve" allows you to share it to other apps or save as a file.

Stats

The default stats view shows your current and best averages of 5, 12 and 100, the number of solves in the session, session mean and your best single. Clicking on each of the stats will bring up a detail view, such as the solves in your average.

Sessions

Create a new session by clicking the "New Session" button. You can select from different types of sessions:

  1. Standard Session: is a normal session where the scramble is fixed to the session event
  2. Multiphase: times many phases during your solve, useful in blind or analysing your solve breakdown
  3. Playground: session with no fixed scramble type, you can change the scramble within the session
  4. Comp Sim: non-rolling session that records solves in averages of x, instead of a big session. Simulates competitions

Pinning a session will make the session bigger and stickied at the top of sessions, and you can pin a session when creating or by long pressing on a session to access the menu. Deleting a session will delete all your solves in that session, so be careful!

Settings

You can customise almost all settings in the app and the appearance and themes.

Tools

You can access the tools menu through settings on iPhone (or split view iPad) and through the menu icon on large iPad modes. CubeTime has basic timer and scramble only modes, along with a batch scramble generator and average calculator.

Some final stuff

As we are using the official TNoodle scrambler library, please see our transpiled tnoodle-lib-objc repo for more information.

iPad and App Store are trademarks of Apple Inc., registered in the U.S. and other countries.

cubetime's People

Contributors

pdtxie avatar vitalii-balash avatar vitaliibalash avatar xbjfk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

cubetime's Issues

Previous Time

After deleting a time, it reverts back to a 0.00 or 0.000, I think it'd make more sense to show the time prior to the one deleted for an easier time mass deleting right from the timer screen :) I don't have much expired in coding though, so this may be too hard to implement. If so, my bad.

No average time showing

When restarting the app, I cannot view my averages on the timer screen until I finish a solve.

Customizable gestures

  • general settings
  • gradient setting
  • fix color settings
  • customize gestures
  • iPad keybinds
  • app icon
  • statistics display mode 2dp/3dp
  • update interval time

Allow deleting of current session

currently deleting the current session means no session will be set causing crashes on restart or a crash when changing tabs.
record the time each session was last accessed and use this to change session when the current one is deleted

additional:

  • allow deleting of current comp sim average (causes many bugs: averages displayed as 'Loading...", ghost containers?)

Onboarding page

  • point out gestures to user
  • explain concept and types of sessionss
  • ask for WCA ID for stats (moved to #1)

compsim session stats:

  • bpa, wpa
  • time needed for target
  • median
    • median calculation
    • show on graph
  • mean of 10 averages

AND:

  • make the time trend/distribution graphs based off AVERAGES

Blind support

  • add spins to end of scramble
  • show times alongside DNFs
  • stats calculation should show fastest group of solves even when DNF
  • autodisable inspection
  • mo3 instead of ao5 (#89)
  • multiblind support as mentioned (#173)

BUG: 7x7 oom crash

high priority issue

  • 7x7 seems to be using OVER A 1.3Gb OF RAM???????????????????
    • tnoodle itself uses <100Mb

possible solutions:

  • check optimisation in j2objc
  • rewrite in c++/swift

Preliminary iPadOS support

  • Implement horizontal iphone design alongside
  • floating panel support with timelistview and sessionsview
  • keyboard support - shortcuts and space to time
  • multitask window support -> different designs - responsive
  • trackpad gesutres
  • full entry mode
  • gestures (incl. swiping too, both ipad and iOS)
    • customizable
  • keyboard shortcuts
    • customizable
    • fix when time list is displayed
  • macOS support
    (#82)

Timer Inspection Issue

I have an issue for the timer. Whenever I stop the timer it starts inspection again and I can’t stop it. I would really like it if you add a button that stops inspection.

Wake lock not active in multiphase

In multiphase session the screen turns off while solving the cube (I’m very slow, F2L take more than 1m)

Steps to reproduce the behavior:

  1. Create a multiphase session
  2. Start the timer
  3. Wait the system screen timeout
  4. The screen turn off and the device locks

Expected behavior
Screen should remain active

  • Device: iPhone8
  • OS: iOS15.3
  • App version 1.1

Transfer solves between sessions

Discussed in #38

  • needs to be same scramble type (but also anyType <-> playground)
  • compsim not transferrable to other types - but can between comp sim?? transfer groups maybe?
  • check multiphase : must be same number of phases

Idea/Suggestion: Ability to move solves between sessions

Firstly I’d like to add todays update with the scramble graphic and screen timeout block during solves are great additions! 👍🏾

Whilst using the app today I did a couple of solves and realised I was in wrong session (I have multiple sessions for different cubes). I’d like to be able to move a solve from 1 session to another, not just the ability to delete solves

cheers Wardeneo

Subset scrambles

Discussed in #51

Originally posted by JacksonMan9000 May 2, 2022
I think it would be a great idea to add in different subsets of scrambles such as the ones you would find on cstimer. It would be great to have 2 gen scrambles so that we could practice f2l and look ahead. Also, it would be cool if there were a scramble type that set up pll or oll so you could practice those times.

Show both scramble sequence and cube image on the pop up window

Currently, click on scramble sequence and image will show a pop up window with the seq and image, respectively.

I would recommend to show both the seq and the image in the same pop up window.

Also, we could enlarge the font size of seq characters in the pop up window.

Import/Export

  • cstimer
    • use api - post to https://cstimer.net/userdata.php with id= returns lzstring compressed json data (id is alphanumeric only)
    • use gdrive + wca oath for importing of cstimer solves
    • possibly sync seamlessly so cstimer can be used alongside, synced.
  • chaotimer
    • use a desktop companion app with libimobiledevice to get data
  • twisty timer
    • oath google drive
    • import "for backup" (with sessions) and not "for other timers"
  • tell users to file a github issue if a timer is not listed

Idea/Suggestion: Display the Session Name At Top of app

Another suggestion for future update would be to display the session name in top of app - so instead of just saying “standard session” it would display session name instead.

or better still it could display both session type and name?

as always great work, love the app

cheers Wardeneo

8EFB2A57-7B52-427F-907B-2ADFA993A317

time trend for ao5/ao12

current time trend shows for individual solve. yet ao5/ao12 are better metrics on the trend as they are not subject to one extra good/bad solve.

therefore, it would be much useful to show the trend of ao5 and/or ao12.

Stats

  • number of solves
  • best avg of 5, 12, 100
  • current average of 5, 12, 100
  • time history graph
  • time trend graph - adjustable number of columns
  • median
  • median on time distribution graph
  • account for +2s, DNFs
  • worst solve
  • best/worst possible average
  • time needed to get average with 4 solves
  • make stats multithreaded/async
  • avg, mean of avg, mean
  • PB history, list + search
  • standard deviation
  • total time spent solving
  • global stats - favourite event/session, github commit like history
  • graph of inspection time
  • WCA integration - past PBs, show NR/CR/WR placing, import dataset for calculation - api spec here
    • ask for wca ID in onboarding

accessibility improvements

  • increase the interactable area for drop downs
  • make comments on solve more intuitive (a text showing)
  • large font size toggle
  • disable graph glow setting
  • and a break every second line for 7x7 scrambles
  • change session scrambles in edit and playground edit

alg trainer with algorithm library

  • algorithm library
  • mode to train certain scrambles
  • mark certain algs as learnt, unlearnt, nearly there, etc
  • flashcards??? show draw scramble, and then can 'flip' to see the alg for that case

CRITICAL - multitouch stopwatchmanager bugs

  • timer start:

    • using one finger to start, then adding touch with another causes timer to be green and not to start
  • timer stop:

    • using one finger to stop and then adding touch with another causes timer to stay red and requires an additional touch to reset back to default state
  • timer stop:

    • using two (or more fingers) to stop will NOT stop the timer, when it should

Other session types/timer functions

  • playground session
    • create this as default session
    • puzzle/event selector in stats, timer, and time list view
  • comp sim mode
    • 5 solves at a time
    • gives you ALL the stats about an ao5: bpa, wpa, time needed for x, time needed to secure x, median, avg, best time worst time, mean
    • in the time list, instead of having individual solves, you have each average displayed, and you can click on them to see the times involved, with the best solve highlighted and in brackets and whatever
    • non rolling session
    • stats and graphs based off of averages
    • target
    • ability to delete current comp sim average with gesture or something
  • alg trainer (make new issue)
  • multiphase
    • ability to create from new session
    • ^ from timer view
    • stats shows phases
    • #73

Red Timer

When cancelling a manual input time, (pressing outside when in the menu) the time becomes red.

Create custom scrambler

  • cross platform, native and fast (C/C++/Rust)
    • SIMD
  • heavily unit tested
  • draw scramble
  • custom scramble format specifier
  • algs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.