Skip to content

Commit

Permalink
Automate Public Beta changes (#255)
Browse files Browse the repository at this point in the history
* Update README.md

* change to main server

* Update important-caveats.md

* Update getting-started.md

* Update for-automate-composers.md

* Update viewing-results.md

* Update viewing-results.md

* Update for-automate-composers.md

* Create for-automate-users.md

Reflects the simplification of language

* Update config.js

* Delete automate/for-automate-composers.md

* Update for-function-authors.md

* Update create-automation.md

* Update update-automation.md

* Update config.js

* Create public-functions

* Create public-functions.md

* Delete automate/public-functions

* Update public-functions.md

* Update public-functions.md

* Update public-functions.md

* Update public-functions.md

* Update for-function-authors.md

* Update create-function.md

* Update function-testing.md

* Update documenting.md

* Update release-function-version.md

* Update release-function-version.md

* Update demos.md

* Update demos.md

* Update feedback.md

* Update roadmap.md

* Update roadmap.md

* Update troubleshooting.md

* Update known-issues.md

* Update frequently-asked-questions.md

* Update config.js

* Update public-functions.md

* Update viewing-results.md

* Update release-function-version.md

* Update troubleshooting.md
  • Loading branch information
jsdbroughton authored Dec 2, 2024
1 parent 044ddef commit 5b0b9f0
Show file tree
Hide file tree
Showing 21 changed files with 654 additions and 474 deletions.
10 changes: 5 additions & 5 deletions .vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -261,22 +261,22 @@ module.exports = {
title: 'Core Functionalities',
collapsable: true,
children: [
'for-automate-composers',
'viewing-results',
'for-automate-users',
'for-function-authors',
],
},
],
},
{
title: 'Working with Automations',
title: 'Automations',
collapsable: false,
children: ['create-automation', 'update-automation'],
children: ['create-automation', 'update-automation', 'viewing-results'],
},
{
title: 'Developing Functions',
title: 'Functions',
collapsable: false,
children: [
'public-functions',
'create-function',
'making-your-function',
'function-testing',
Expand Down
15 changes: 10 additions & 5 deletions automate/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
# Speckle Automate Beta
::: tip 🚧 NOTE
Speckle Automate is in an accessible beta phase and restricted to the Speckle development server. These docs are a work in progress and are updated regularly.
# Speckle Automate Public Beta

::: tip 🚧 NOTE
Speckle Automate has entered the public beta phase and is now available on the Speckle production server: [app.speckle.systems](https://app.speckle.systems). These docs are a work in progress and are updated regularly to reflect the latest features and improvements.
:::

This documentation is designed to assist Speckle Automate users in creating and managing automation. As a Speckle user, you can now act as an **Automator**, leveraging public functions and creating custom workflows to streamline tasks and enhance productivity.

This mini documentation is designed to assist beta testers of Speckle Automate, focusing on the **Function Author** and **Automation Composer** personas. Your feedback is essential in refining these roles within the platform, enhancing functionality, and ensuring a user-friendly experience.
### Key Highlights:
- **Public Functions**: Available to all users on [app.speckle.systems](https://app.speckle.systems).
- **Private Functions**: Creatable and manageable within Workspaces.
- **Unified Hosting**: All data, functions, and automations are hosted on the main Speckle server.
- **Collaboration**: Workspace members can use public and private functions to create automations collaboratively.

We will continuously improve these documentation details as things develop; there may be occasions when development outpaces the documentation. If you have any questions, please reach out to us on the [Speckle Community Forum: Automate](https://speckle.community/c/making-speckle/insiders-automate/27).
We are continuously improving the documentation. As Speckle Automate evolves, there may be occasions when development temporarily outpaces the documentation. If you have any questions, please contact us on the [Speckle Community Forum: Automate](https://speckle.community/c/making-speckle/insiders-automate/27).
82 changes: 35 additions & 47 deletions automate/create-automation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,54 +2,42 @@

## **What is an Automation?**

- Automations allow you to achieve a wide variety of tasks.
- Automations are what apply a function to a Speckle model.
- Automations are used to configure a function to suit your particular requirements.
- Automations allow you to perform a wide variety of tasks efficiently.
- Automations apply a function to a Speckle model.
- Automations enable you to configure a function to meet your specific requirements.

For example, a function may render a photograph-quality image of any given model. An automation allows you to specify the camera position, lighting, and other settings to achieve the desired result, and then command the function to render an image of your particular Speckle model.
For example, a function might render a photograph-quality image of a model. Automation allows you to specify parameters such as the camera position, lighting, and other settings to customise the output for your particular Speckle model.

## **Creating an Automation**

Automations are created from two contexts:

1. 1. In the context of a project, found under the Automations tab.

![the automations tab](./img/automations-tab.png)

2. From the functions library

![alt text](./img/function-library-card.png)


The resulting modal dialog will present you with four or five prompt screens:

1. If you started from an automations list, **select a function to use** and click Next.

![create automation](./img/create-automation.png)

![selected function](./img/selected-function.png)

2. If you start from the Functions library or a Function page, you will go directly to step 3.
3. If the function has defined inputs to configure it, **set parameters** now.

![parameter configuration](./img/configuration.png)

4. **Add Automation Details**
1. If you started the automation from the project page, this is already selected for you; otherwise, you will need to choose which Speckle project and model will trigger your automation.

![set parameters](./img/set-parameters.png)

2. **Choose a Speckle Model from the current project**

![choose a model](./img/choose-model.png)

3. **Name your automation**. This is for your reference; ideally, make it meaningful, but it doesn’t need to be unique.

![alt text](./img/automation-name.png)


5. Create your Automation

![create!](./img/create-button.png)

6. **Success**! 🥳 You can now view your automation.
Automations are created from the **Automations** tab within a project.

![the automations tab](./img/automations-tab.png)

::: tip 💡 **Function Availability**
The library view includes both public functions and any private functions created for the Workspace if the project is a Workspace project created for your team. This ensures all team-specific and public resources are accessible during automation setup.
:::

### Steps to Create an Automation

1. **Select a Function**
- Choose a function from the list in the Automations tab and click **Next**.
![create automation](./img/create-automation.png)
![selected function](./img/selected-function.png)

2. **Set Parameters**
- If the function has defined inputs, configure them now.
![parameter configuration](./img/configuration.png)

3. **Add Automation Details**
- **Choose a Speckle Model**: Select a model from the current project that will trigger your automation.
![choose a model](./img/choose-model.png)
- **Name Your Automation**: Provide a meaningful name for reference (uniqueness is not required).
![alt text](./img/automation-name.png)

4. **Create Your Automation**
- Click **Create** to finalise the setup.
![create!](./img/create-button.png)

5. **Success!** 🥳
- Your automation is now ready to view and manage.
121 changes: 64 additions & 57 deletions automate/create-function.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,69 @@
# Creating Functions

If you have your verified account on latest.speckle.systems, navigate to [latest.speckle.systems/functions](https://latest.speckle.systems/functions).

You will now see above the Functions Library. In the top right, there is a new function button:
If you have a verified account on [app.speckle.systems](https://app.speckle.systems), navigate to [app.speckle.systems/functions](https://app.speckle.systems/functions).

You will see the Functions Library. In the top right, there is a **New Function** button:
![new function button](./img/new-function-button.png)

This will launch the function creation wizard

1. **Authorise GitHub:** Required only the first time.

![authorise github](./img/authorise-github.png)

::: tip 💡 Authorized OAuth Apps
You will find Speckle Automate in your Github account Authorized OAuth Apps. Access can be revoked at any time, but will be necessary to publish new functions.

![alt text](./img/authorised-applications.png)

:::

2. **Choose a template**: We are launching with Python and C# templates. These reflect our best-supported Speckle SDKs, **speckle-sharp** and **specklepy**. Each of our main SDKs includes the Automate SDK for that language.
3. **Define your function.** (Some of these details can be edited later)
1. **Choose an avatar/logo/icon** [optional]: This will be displayed in the functions list
2. **Choose a Name** [required]: This doesn’t need to be unique, but all functions will be a single list during the beta stages. The search filter will use the function name alone; it could be helpful if it identifies you as an author/company and the name/function intent. *e.g. SolarFarmLayout by Solarcorp*
3. **Add a description** [required]: This will be the short description used in the function list. The description supports basic Markdown if you wish to add markup.
4. **Identify source application data supported** [optional]: This may be helpful when defining Automations
5. **Add Tags** [optional]: A list of terms to categorise your function further. Multi-word tags should use _ or - characters. *e.g. Solar_Panels*
6. **~~Select a Github Organization** [optional]: This is only relevant if you want to publish as an organization and are a member of one.~~
7. **Click Next**: All being well, the wizard will create your function project on GitHub.

::: tip 🧙‍♂️ Wizard Actions
You will see that the wizard handles a lot of scaffolding for you. You can navigate to GitHub and see that the template project has been cloned under your repositories:

![alt text](./img/repo-title.png)

A GitHub action has been created for you; the specification for it is defined in `.github/workflows/**main.yml**`

![alt text](./img/build-and-deploy.png)

It also has injected two environmental variables as repository secrets for the interaction with the Automate API `SPECKLE_FUNCTION_ID` and `SPECKLE_FUNCTION_TOKEN`:

![alt text](./img/repo-secrets.png)


:::

::: tip 💡 Note
Choose whatever Project restrictions you wish, but it must be Public for now.
:::

</aside>
4. Your function has been created! 🥳 At this point, the template can be edited and amended to suit your own business logic.

![alt text](./img/function-created.png)

5. You can follow the links provided to:
1. **Open the repo:** this is a link to the project on GitHub
2. **Open in codespace:** You can get coding immediately in a virtual machine operating in a container at GitHub. Remember that any changes you make must be pushed to your project.
3. **Go to function**: This will navigate you to your functions page within Speckle Automate.
6. Your function will only appear in the [functions list](https://automate.speckle.dev/functions) once a first Release has been made.
This launches the function creation wizard.

---

## Steps to Create a Function

1. **Authorise GitHub**
Required only the first time.
![authorise github](./img/authorise-github.png)

::: tip 💡 **Authorized OAuth Apps**
Speckle Automate will appear under your GitHub account's Authorized OAuth Apps. Access can be revoked at any time but will be necessary to publish new functions.
![authorised applications](./img/authorised-applications.png)
:::

2. **Choose a Template**
We currently offer Python and C# templates, reflecting our best-supported SDKs (**specklepy** and **speckle-sharp**). Each includes the Automate SDK for its respective language.

3. **Define Your Function**
Some details can be edited later:
- **Avatar/Logo/Icon** [optional]: Displayed in the functions list.
- **Name** [required]: Does not need to be unique. Use a descriptive name to help identify the function and its purpose, e.g., `SolarFarmLayout by SolarCorp`.
- **Description** [required]: A short Markdown-supported description used in the functions list.
- **Source Application Data Supported** [optional]: Indicate which source applications your function is designed for.
- **Tags** [optional]: You can further categorise your function with single or multi-word tags, e.g., `Solar_Panels`.
- **Click Next**: The wizard will create your function project on GitHub.

::: tip 🧙‍♂️ **Wizard Actions**
The wizard handles scaffolding for you:
- Clones the template project into your repositories.
![repo-title](./img/repo-title.png)
- Creates a GitHub action (`.github/workflows/main.yml`) for build and deployment.
![build-and-deploy](./img/build-and-deploy.png)
- Injects API interaction environment variables (`SPECKLE_FUNCTION_ID` and `SPECKLE_FUNCTION_TOKEN`).
![repo-secrets](./img/repo-secrets.png)
:::

4. **Repository Management**
The function wizard creates a GitHub repository under your account.
- **Public vs Private**: Whether to keep this repository public or private depends on your team's open-source or source-available development approach. Speckle Automate supports both public and private repositories.
- **Personal or Organisational Accounts**: Depending on your setup and collaboration needs, you can publish functions from either your personal GitHub account or an organisation's account.

::: tip 💡 **Important**
Carefully manage repository access based on your team's workflows and requirements.
:::

5. **Finalise Your Function**
Once created, the function template can be edited and tailored to your business logic.
![function-created](./img/function-created.png)

6. **Next Steps**
From the success page, you can:
- **Open the Repository**: View the project on GitHub.
- **Open in Codespace**: Start coding immediately in a virtual environment. Remember to push changes back to GitHub.
- **Go to Function**: Navigate to your function’s page within Speckle Automate.

7. **Make a Release**
After making the first release on GitHub, your function will only appear in the Functions Library.

---

With these steps, your function is ready for further development, automation, and collaboration!
23 changes: 18 additions & 5 deletions automate/demos.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,27 @@
### SpeckleCon 2023 Announcement
[Introducing Speckle Automate 🤖 - SpeckleCon 2023](https://youtu.be/6_rXXGpnfb4)

### Our mission for Automate blog post
### Our Mission for Automate Blog Post
[Automate with Speckle](https://speckle.systems/blog/automate-with-speckle/)

### Function Demonstrations from SpeckleCon 2023

[Speckle Automate DEMOS 🔥 - SpeckleCon 2023](https://youtu.be/BuyUvIVUO2g)

### Demo functions for use in Automate
All our demo functions are listed as featured functions in the functions library. Most have been updated with the changes to the SDKs behind the scenes since SpeckleCo but we're working on this and also adding new functions all the time.
## Public Functions: Fully Functional Demonstrations

Public functions in the Speckle Automate Functions Library are designed to serve as both fully functional solutions and practical demonstrations of how Speckle Automate can be used effectively. They are:

- Ready-to-use in real-world workflows.
- Examples of how to structure functions using Speckle SDKs.
- Starting points for creating custom functions tailored to specific needs.

These functions reflect Speckle Automate's flexibility and power, offering users immediate value and insights into best practices.

## Demo Functions for Use in Automate

Speckle-authored demo functions are continually updated to reflect changes to the SDKs and expand functionality. While not all demo functions are available in the Functions Library, all Speckle-authored functions are published to GitHub alongside our open-source repositories.

These functions are typically namespaced under `speckle-automate-*` to facilitate discovery and reuse.

[All Functions - Speckle Automate](https://latest.speckle.systems/functions)
Explore the latest Automate functions here:
[All Functions - Speckle Automate](https://app.speckle.systems/functions)
30 changes: 23 additions & 7 deletions automate/documenting.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,26 @@
# Documenting your function
Your function’s `README.md` will be published to its dedicated Automate page. This is your opportunity to communicate the key functionality, limitations, and detailed instructions for the function’s inputs to automation composers.
# Documenting Your Function

Later, this will be your opportunity to market why your function is the go-to solution for quality control, solar farm layouts, or Pokemon detection for Speckle. It is also a great way to seek collaborators.
Your function’s `README.md` will be published to its dedicated Automate page. This is your opportunity to communicate the key functionality, limitations, and detailed instructions for the function’s inputs to your team and organisation.

You can choose how detailed you would want to document the functional logic, so long as it is abundantly clear what it results in given what source data.
Speckle Automate’s function listing will display with full Markdown support, including relevant imagery, etc.
Clear documentation is critical for:

![Example of the Readme as displayed in a function listing.](./img/readme.png)
Example of the Readme as displayed in a function listing.
- Helping your team and collaborators understand how to use the function effectively.
- Ensuring consistency and transparency when sharing functions within a Workspace.
- Providing detailed instructions that reduce confusion and the need for additional support.

## Key Points for Documentation

- **Clarity and Precision**: Ensure it is abundantly clear what your function produces given specific source data and input parameters.
- **Detail as Needed**: Provide enough detail about the function’s purpose, logic, and limitations to enable your team to use it effectively.
- **Markdown Support**: Speckle Automate’s function listing supports full Markdown, allowing you to include relevant imagery, links, and formatting for a professional and functional presentation.

### Example

Below is an example of how a well-documented `README.md` might appear on a function listing:

![Example of the Readme as displayed in a function listing.](./img/readme.png)
*Example of the README as displayed in a function listing.*

---

Clear and thorough documentation ensures your function is easy to understand, use, and maintain—ultimately benefiting your team and organisation. Take the time to make it count!
Loading

0 comments on commit 5b0b9f0

Please sign in to comment.