Code Monkey home page Code Monkey logo

open-jellycuts's Introduction

Open Jellycuts

Promotional Jellycuts Image

Jellycuts is an iOS app that allows anyone to write Siri Shortcuts in an easy to use scripting language. The language, Jelly, is based of of Swift, Python and Javascript and focused on being easy to learn and use.

Packages

This version of Jellycuts aims to use more modern Open Source packages for everything, improving upon the previous version of Jellycuts. Specifically this version includes Runestone and Tree-Sitter as the backend for the text editor and language parsing.

  • Open Jellycore
    • This package handels the actual compilation of Jellycuts into Shortcuts
  • Tree-Sitter Jelly Grammar
    • This package is a SPM distribution of a Tree-Sitter grammar for the Jelly language. This handles all of the parsing of Jelly done by both Jellycore and Runestone.

Features (Compared to closed Jellycuts)

Feature Open Jellycuts Private Jellycuts
Open Jelly Files
Edit Jelly Files
Create Jelly Files
Compile Jell Files
Error Reporting
Project Settings
Documentation
Icon Creator
Dictionary Builder ✅ (No support for nested arrays)
Jellycuts Bridge
Third-Party Object Storage ❌ (Needs support in Jellycore)
Learning Center
Changelogs
Editor Customization
App Icons
App Tint
Haptic Feedback
External Safari
Project Sort
Privacy Page
Credits Page
About Page
Contact & Bug Report
Version 1 Projects
Version 2 Projects
Add Jellycut File
Import From iCloud ❌ (New Helper & Core Support)
Import from Shortcuts ❌ (New Helper & Core Support)

Current Limitations

The following sections talk about all of the limitations that are currently holding back the Jellycuts app from having feature parity with the closed source Jellycuts version.

No support for nested arrays

The dictionaries that are created by Open Jellycuts need to be reworked so they support adding Arrays within Arrays. The datatype DictionaryHandler.JellycutsDictionary should be fully capable of supporting this however the UI fails when adding arrays as children of arrays.

New Helper & Core Support

These two features, Import from iCloud and Import from Shortcuts, need a new Jellycuts Helper shortcut to be built. They also require a shortcuts parser -> Jelly language. This is a feature that should be added into Open Jellycore and then interfaced within Open Jellycuts.

Needs support in Jellycore

Features with this flag need support to be built into Open Jellycore. The most prominent issue is that the current Open Jellycore does not support Objects. This means that any features that used objects are no longer available as there is no way to use them during compilation.

Building the App Yourself

See the Contribution Guidelines for more information on building the app.

The Gist

Cloning

To clone the repository it is critical that you use the --recursive flag. This will ensure you properly clone all of the submodules.

git clone --recursive https://github.com/ActuallyTaylor/Open-Jellycuts.git

Adding a Key Provider

After you have cloned the repository and set up signing, you will see a build error. This error is caused by the PurchaseHandler not having a provided publicKey. This code is initially commented out because the file is a secondary file to an internal file that provides the App Store validation with a public key for verifying results from the server.

All you need to do is uncomment the following line in Open-PublicKey.swift:

extension PurchaseHandler: PublicKeyProvider {
    static var publicKey: String {
        "INSERT_PUBLIC_SIGNING_KEY"
    }
}

open-jellycuts's People

Contributors

actuallytaylor avatar chrisjmendez 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

Watchers

 avatar  avatar  avatar  avatar  avatar

open-jellycuts's Issues

legacy url links to ActuallyTaylor repo instead of OpenJelly repo in Jellycuts.xcodeproj

Describe the bug

Jellycuts.xcodeproj has many legacy links github.com/ActuallyTaylor repo, likely want to change to github.com/OpenJelly for consistency of branding

To Reproduce

search or github.com/ActuallyTaylor in Jellycuts.xcodeproj

Expected behavior

A clear and concise description of what you expected to happen.

Examples

project.pbxproj:1086: repositoryURL = "https://github.com/ActuallyTaylor/HydrogenReporter";
project.pbxproj:1102: repositoryURL = "https://github.com/ActuallyTaylor/SFSymbols/";
project.xcworkspace/xcshareddata/swiftpm/Package.resolved:24: "repositoryURL": "https://github.com/ActuallyTaylor/HydrogenReporter",
project.xcworkspace/xcshareddata/swiftpm/Package.resolved:42: "repositoryURL": "https://github.com/ActuallyTaylor/SFSymbols/",

Additional context

changes may need to be made within Xcode system instead of just text edit of raw files

legacy url links to ActuallyTaylor repo instead of OpenJelly repo in CONTRIBUTING.md

Describe the bug

CONTRIBUTING.md has many URLs with refereces to Legacy "ActuallyTaylor" repo instead of "OpenJelly". Likelly want to change for consistency of branding

To Reproduce

search for "github.com/ActuallyTaylor" or "actuallytaylor.github.io" in CONTRIBUTING.md

Examples

line 32:
Open Jellycuts Code of Conduct
.

line 41:
Before you ask a question, it is best to search for existing Issues that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.

line 45:

line 69:

  • To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the bug tracker.

line 86:

  • Open an Issue. (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.)

line 107:

  • Perform a search to see if the enhancement has already been suggested. If it has, add a
    comment to the existing issue instead of opening a new one.

line 113:
Enhancement suggestions are tracked as GitHub issues.

line 133:
A git client should be able to just take the url https://github.com/ActuallyTaylor/Open-Jellycuts and properly clone all of the submodules. If you
are missing submodules we recommend that you use the command line to clone instead of a client.

line 156:

  • If you had any issues throughout this process open an Issue and one of the maintainers will help you get everything resolved!

line 159:
Currently Open-Jellycuts does not have any documentation. If you want to create some, Awesome! Currently the sister project Open Jellycore uses the DocC documentation generation tool. Setting up DocC is fairly straightforward, the main part of documentation comes from adding documentation comments above all classes, structs and functions throughout the app.

Changelogs

The original app supported a change log that would inform the user about what has changed between versions of the Jelly language. This should be standardized to match up with Open-Jellycore and possibly and online component.

legacy url links to ActuallyTaylor repo instead of OpenJelly repo in .gitmodules

Describe the bug

.gitmodules has URLs that link to legacy ActuallyTaylor repo instead of OpenJelly, likely want to change for consitent branding

To Reproduce

search for github.com/ActuallyTaylor in .gitmodules

Examples

./Open-Jellycuts/.gitmodules:3: url = https://github.com/ActuallyTaylor/tree-sitter-jelly
./Open-Jellycuts/.gitmodules:6: url = https://github.com/ActuallyTaylor/Open-Jellycore
./Open-Jellycuts/.gitmodules:9: url = https://github.com/ActuallyTaylor/Swift-Themes

Third-Party Object Storage

Third party Object Storage was a feature in the original Jellycuts app that allowed users to import objects from the Shortcuts app into Jellycuts. This feature was really finicky and difficult to use. This feature is going to require a full rewrite from the original version of Jellycuts and will also need support added in Open Jellycore.

legacy url links to ActuallyTaylor repo instead of OpenJelly repo in Shared/Constants.swift

Describe the bug

Shared/Constants.swift has many legacy URLs to github.com/ActuallyTaylor that likely should be changed to github.com/OpenJelly

To Reproduce

search or github.com/ActuallyTaylor in Shared/Constants.swift

Examples

24: static let jellycutsGithubPage: URL = URL(string: "https://github.com/ActuallyTaylor/Open-Jellycuts")!
28: static let bugReport: URL = URL(string: "https://github.com/ActuallyTaylor/Open-Jellycuts/issues")!
31: static let hydrogenReporter = URL(string: "https://github.com/ActuallyTaylor/HydrogenReporter")!
33: static let treeSitter = URL(string: "https://github.com/ActuallyTaylor/tree-sitter-spm")!
34: static let runestone = URL(string: "https://github.com/ActuallyTaylor/Runestone")!
35: static let treeSitterJelly = URL(string: "https://github.com/ActuallyTaylor/tree-sitter-jelly")!
36: static let openJellycore = URL(string: "https://github.com/ActuallyTaylor/Open-Jellycore")!

Dictionaries fail to correctly parse

The following Jelly code results in a compilation error that complains about the missing a parameter named PLACEHOLDER.

import Shortcuts
#Color: green, #Icon: shortcuts

//This is a test

dictionary(json:{"gumdrop":"blue","apple":"red"}) >> JSO

valueFor(key: "apple", dictionary: JSO) >> dictVal

quicklook(input: dictVal)

IMG_9926

Transcription:

Missing parameter name: PLACEHOLDER in Dictionary.
- Jelly no longer supports unnamed parameters. You need to include the parameter name - (PLACEHOLDER:) in the function: (Dictionary)
Missing parameter name: PLACEHOLDER in Dictionary.
- Jelly no longer supports unnamed parameters. You need to include the parameter name - (PLACEHOLDER:) in the function: (Dictionary)
Missing parameter name: PLACEHOLDER in Dictionary.
- Jelly no longer supports unnamed parameters. You need to include the parameter name - (PLACEHOLDER:)
- Jelly no longer supports unnamed parameters. You need to include the parameter name - (PLACEHOLDER:) in the function: (Dictionary)
Missing parameter name: PLACEHOLDER in Dictionary.
- Jelly no longer supports unnamed parameters. You need to include the parameter name - (PLACEHOLDER:)

Learning Center

The original Jellycuts app included a page named the Learning Center. This page offered support within the app on basic use. The documentation that was provided is as follows:

  1. Tool Documentation (Documentation, Icon Creator, Dictionary Builder, Jellycuts Bridge)
  2. Learn Jellycuts (Import Statements, Definitions, Functions, Variables)
  3. Code Editor (Exporting, Building, Testing)

Project Settings

There is currently no support for Project Settings. In the original Jellycuts app users were able to edit settings for their projects such as:

  1. Client Version
  2. Use functions from any version of Shortcuts
  3. Share sheet items (Bool)
  4. Show in Sleep Mode (Bool)
  5. Show in Menu Bar (Bool)
  6. Show in Quick Actions (Bool)
  7. Receive On Screen Context (Bool)

These project settings should be added back. They may require adding support within Open Jellycore but that can be assessed when needed.

Dictionary Builder Nested Array Support

The dictionaries that are created by Open Jellycuts need to be reworked so they support adding Arrays within Arrays. The datatype DictionaryHandler.JellycutsDictionary should be fully capable of supporting this however the UI fails when adding arrays as children of arrays.

Import From iCloud & Import from Shortcuts

At first glance both of these issues should not be combined, however they are more or less exactly the same problem. Both require creating a parsing engine for Shortcuts plists to convert them into Jelly scripts. This request will require changes within Open Jellycore.

The only difference between import from iCloud and import from Shortcuts is where the Plist originates from. When importing from iCloud it needs to be downloaded from the shortcuts iCloud API. When it is being imported from shortcuts it needs to be provided through the Shortcuts Intents API and a helper shortcut that needs to be written.

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.