All Versions
13
Latest Version
Avg Release Cycle
122 days
Latest Release
1486 days ago

Changelog History
Page 1

  • v4.2.0 Changes

    May 22, 2022

    ๐ŸŽ This version adds macOS support and improves dev environments.

    What's Changed

    ๐Ÿ†• New Contributors

    Full Changelog : 4.1.0...4.2.0

  • v4.1.0 Changes

    December 02, 2021

    What's Changed

    • โšก๏ธ Update README.md by @0x0c in #40
    • Conceal some models by @giginet in #42
    • โœ‚ Remove UserInfo from unnecessary methods by @giginet in #41

    ๐Ÿ†• New Contributors

    • @0x0c made their first contribution in #40

    Full Changelog : 4.0.1...4.1.0

  • v4.0.1 Changes

    November 24, 2021

    What's Changed

    • ๐Ÿ›  Fix universal link parser by @giginet in #39

    Full Changelog : 4.0.0...4.0.1

  • v4.0.0 Changes

    November 20, 2021

    Crossroad 4.0.0

    ๐Ÿš€ This release includes breaking API changes. Please read README.

    ๐Ÿ†“ If you have any problems migrating to this version. Feel free to create an issue ๐Ÿ˜„

  • v3.2.0

    February 16, 2020
  • v3.1.0 Changes

    January 16, 2020

    โž• Add tvOS Support #25
    Thanks @mdyson !

  • v3.0.0 Changes

    August 08, 2019

    Crossroad 3.0.0 includes dramatically changes.

    Careful treating URL in its RFC #18

    According to the URL RFC, URL schemes and hosts must be case-insensitive.
    However, other path components must be case-sensitive.

    Crossroad now treats case-insensitive URL.

    router = DefaultRouter(scheme: "pokedex") router.register([("/pokemons", { context inlet type: Type? = context[parameter: "type"] presentPokedexListViewController(for: type) return true }), // ...])let canRespond25 = router.responds(to: URL(string: "POKEDEX://POKEMONS")!) // Accept!!!
    

    ๐Ÿ‘Œ Support subscript #22

    You can get arguments and parameters via [].

    let pokemonID: Int = context[argument: "pokemonID"]let query: String = context[parameter: "query"]
    

    ๐Ÿ‘ More Support relative path #17

    I recommend to use relative path for routing patterns especially for Universal Links. It should be readable.

    router = DefaultRouter(url: URL(string: "https://my-awesome-pokedex.com")!) router.register([("/pokemons", { context inlet type: Type? = context[parameter: "type"] presentPokedexListViewController(for: type) return true }), // ...])
    

    ๐Ÿ“œ Introduce URLParser #16

    ๐Ÿ“œ In some use cases (such a complex applications), you need to use separated URL parser.
    ๐Ÿ“œ Now, Crossroad 3 provides URLParser to make Context.

    let parser = URLParser\<Void\>()let context = parser.parse(URL(string: "pokedex:/pokemons/25")!, in: URLPattern("pokedex://pokemons/:id")))
    

    ๐Ÿ“‡ Rename Extractable to Parsable #19

    Now rename Extractable to Parsable. You have to use constractors instead of the static methods.

    Before

    public protocol Extractable { static func extract(from: String) -\> Self?}
    

    After

    public protocol Parsable { init?(from: String) }
    
  • v2.0.0

    April 12, 2019