Giter Site home page Giter Site logo

michaeljberk / splitter Goto Github PK

View Code? Open in Web Editor NEW
40.0 2.0 6.0 94.39 MB

A speedrunning timer for macOS

Home Page: https://mberk.com/splitter

Ruby 0.11% Swift 96.10% Objective-C 0.11% HTML 0.05% C++ 3.18% Shell 0.07% LSL 0.39%
swift macos speedrun livesplit speedrunning timer speedrun-timer speedrun-tool

splitter's Introduction

Splitter

Splitter

A native Speedrunning timer for macOS

FAQ

Tips

Tip Jar

Download

Stable

The latest stable release of Splitter is available on the Mac App Store:

Download Latest Stable Release

Beta Testing

If you're a "thrill seeker", want to help test the next version of Splitter, or just like living on the edge, you can try out the latest beta release, which is based on the dev branch

(https://github.com/MichaelJBerk/Splitter/releases)

Discussion

You can suggest features, report issues, and contribute to the overall discussion about Splitter on the official Discord Server.

Supported Formats

Info about Splitter's native file format

In addition to the Splitter-native .split format, the app can edit and save the following: - LiveSplit (.lss) - Splits.io (.json)

Note that some features (such as appearance and color settings) are only saved to a .split file. As such, if you don't want to have to set them every time you open the file, it's recommended to save the file as .split (by clicking "File" -> "Save as..." in the menubar). If you need to need to share it with someone who isn't using Splitter, just open the .split file, and save it in whatever other format works best.

Building Splitter

If you want to build Splitter yourself:

  • Install CocoaPods if you don't already have it installed
  • Clone this repo
  • run pod install in the project's root directory
    • You'll be prompted to set the secret and client keys for Splits.io, but you can press the Return key to leave them blank. See cocoapods-keys for more info.
  • Open Splitter.xcworkspace in Xcode

Acknowledgements

LiveSplit Core

Splits.io

Files by John Sundell

MASShortcut by Vadim Shpakovski

Preferences by Sindre Sorhus

Sparkle by Sparkle Project

Cocoapods

splitter's People

Contributors

michaeljberk 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

Watchers

 avatar  avatar

splitter's Issues

Redo Current and Best Splits

Try to emulate LiveSplit’s default behavior:

  • The “current split” column displays your most recent attempt at the segment.
  • “Diff” compares current with the most recent prior to it. There will be an option to compare it to your PB instead, and you can set it as the default, if you’d like
  • “Best” automatically updates with the current time, if it’s the best.

Additionally, as a result of all this, existing .split files won’t work with the new version.

Download splits from splits.io

Users can search for a game on splits.io, and choose a category for their run using a native UI. Splitter will then download the file, set all times to zero, and present it to the user

  • After downloading the file, Splitter imports the data into a new .split file, instead of just opening the file that was downloaded. This allows the user to have access to all of Splitter's features without having to export the file first.

  • Add support to Splits.io for filtering categories so that only categories with at least one run will appear.

  • Add UI for downloading from splits.io

Colors are incorrect when opening LiveSplit and Splits.io files

When opening LiveSplit or Splits.io files, the background colors don't appear as the defaults - the Scroller background is different from the table background, and the header is somewhat transparent
(the window on the left is the correct appearance)
Screen Shot 2020-07-15 at 4 43 16 PM

Fix SIGILL in Splitter.SplitterDoc.saveSplitFile(to: Foundation.URL, ofType: Swift.String, for: __C.NSSaveOperationType, delegate: Any?, didSave: ObjectiveC.Selector?, contextInfo: Swift.UnsafeMutableRawPointer?) -> () (SplitterDoc.swift:183)

Version 2.1(124)

Stacktrace

Splitter.SplitterDoc.saveSplitFile(to: Foundation.URL, ofType: Swift.String, for: __C.NSSaveOperationType, delegate: Any?, didSave: ObjectiveC.Selector?, contextInfo: Swift.UnsafeMutableRawPointer?) -> () (SplitterDoc.swift:183);Splitter

@objc Splitter.Document.save(to: Foundation.URL, ofType: Swift.String, for: __C.NSSaveOperationType, delegate: Any?, didSave: ObjectiveC.Selector?, contextInfo: Swift.UnsafeMutableRawPointer?) -> () (SplitterDoc.swift:242);Splitter

main (AppDelegate.swift:28);Splitter

Reason

SIGILL

Link to App Center

Usage of livesplit-core

Hey, I just found your new timer on Reddit and it looks pretty cool. And I found the GitHub repository for it as well and it looks like you are making use of livesplit-core, which is pretty neat. However you only seem to be using it for LiveSplit split files. However it can actually parse pretty much every split file format that we are aware of, so you don't actually need to implement any others yourself (such as the splits.io exchange format). Though you totally can, as especially for the splits.io exchange format we don't extract all the information it can have. Additionally I'm wondering if you are planning on using livesplit-core for other parts of the timer as we can do all the timing and implement all the LiveSplit components for easy consumption for any kind of frontend.

Remove legacy "hide Best Column" setting

It has been replaced with the new functionality that lets you hide any column.

  • Remove from source code
  • Remove from appearance file
  • Remove from menu bar
  • Remove from defaults

Fixup hotkeys

Use new dependencies for hotkeys, instead of the current implementation

Add help to individual keyboard shortcuts

On each shortcut, have a help button that explains exactly what it's supposed to do.

This can help ease confusion with commands such as Reset Run, which both resets the run, and sets the "current time" to zero.

Update .Split format

.Split (or specifically, runInfo.json) should adopt the new data being stored for segments

Override default shortcut

If a hotkey is set to a default shortcut (i.e. shift-cmd-s), after quitting the app and opening it again, the hotkey will not work

Fix SIGILL in function signature specialization <Arg[0] = Owned To Guaranteed> of Splitter.TimeSplit.init(timeString: Swift.String) -> Splitter.TimeSplit (TimeSplit.swift:82)

Version 2.1(124)

Stacktrace

function signature specialization <Arg[0] = Owned To Guaranteed> of Splitter.TimeSplit.init(timeString: Swift.String) -> Splitter.TimeSplit (TimeSplit.swift:82);Splitter

function signature specialization <Arg[1] = Dead> of Splitter.ViewController.control(_: __C.NSControl, textShouldEndEditing: __C.NSText) -> Swift.Bool (:0);Splitter

@objc Splitter.ViewController.control(_: __C.NSControl, textShouldEndEditing: __C.NSText) -> Swift.Bool (:0);Splitter

main (AppDelegate.swift:28);Splitter

Reason

SIGILL

Link to App Center

Fix SIGILL in function signature specialization <Arg[0] = Owned To Guaranteed> of Splitter.TimeSplit.init(timeString: Swift.String) -> Splitter.TimeSplit (TimeSplit.swift:82)

Version 2.0(122)

Stacktrace

function signature specialization <Arg[0] = Owned To Guaranteed> of Splitter.TimeSplit.init(timeString: Swift.String) -> Splitter.TimeSplit (TimeSplit.swift:82);Splitter

function signature specialization <Arg[1] = Dead> of Splitter.ViewController.control(_: __C.NSControl, textShouldEndEditing: __C.NSText) -> Swift.Bool (:0);Splitter

@objc Splitter.ViewController.control(_: __C.NSControl, textShouldEndEditing: __C.NSText) -> Swift.Bool (:0);Splitter

main (AppDelegate.swift:28);Splitter

Reason

SIGILL

Link to App Center

Fix SIGILL in Splitter.ViewController.UpdateTimer() -> () (Timer Functions.swift:151)

Version 2.0(122)

Stacktrace

Splitter.ViewController.UpdateTimer() -> () (Timer Functions.swift:151);Splitter

@objc Splitter.ViewController.UpdateTimer() -> () (:0);Splitter

Splitter.ViewController.stopTimer() -> () (Timer Functions.swift:130);Splitter

closure #6 () -> () in Splitter.AppDelegate.keybindAction(keybind: Splitter.KeybindTitle) -> () -> ()? (Splits.swift:126);Splitter

Splitter.AppDelegate.setKeyMonitor(event: __C.NSEvent) -> () (AppDelegate.swift:79);Splitter

closure #1 (__C.NSEvent) -> () in Splitter.AppDelegate.MAStoStandardHotkeys() -> () (AppDelegate.swift:88);Splitter

reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed __C.NSEvent) -> () to @escaping @callee_unowned @convention(block) (@unowned __C.NSEvent) -> () (:0);Splitter

main (AppDelegate.swift:28);Splitter

Reason

SIGILL

Link to App Center

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.