Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
Signed-off-by: Pedro Lamas <[email protected]>
  • Loading branch information
pedrolamas committed Nov 14, 2023
2 parents 13d586d + 8271b56 commit fac121f
Show file tree
Hide file tree
Showing 38 changed files with 525 additions and 428 deletions.
132 changes: 132 additions & 0 deletions .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20

- name: Install dependencies
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- name: Install node
uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20

- name: Install deps
run: npm ci --no-optional
Expand Down
2 changes: 1 addition & 1 deletion .node-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18.12.0
20.9.0
95 changes: 44 additions & 51 deletions docs/features/cameras.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,67 +9,60 @@ permalink: /features/cameras
# Cameras
{: .no_toc }

---
## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

Fluidd (and FluiddPI) has built in support for web cameras and allows configuring
your cameras from the same place as your other configuration files.
---

To get started, open the `webcam.txt` config file in Fluidd's configuration editor.
Instructions on how to get started as well as option references are included in this file.
Fluidd offers robust support for displaying camera streams, providing users
with real-time monitoring capabilities for their 3D printing projects.

You can add up to four cameras to display on your dashboard.
The current supported types are:

Currently supported types are:
- **MJPEG Stream**
- Traditional mjpegstream/ustreamer service.
- Pushes images to Fluidd at the configured resolution and FPS.
- Requires substantial bandwidth and may encounter issues with unstable
network connections.

- MJPEG Stream
This is the traditional mjpegstream/ustreamer service. The service pushes images to
fluidd at the configured resolution and FPS you have setup. This requires
a lot of bandwidth, and can cause issues with unstable network connections.
- **MJPEG Adaptive**
- Pulls images from the mjpegstream/ustreamer service using the snapshot URL.
- Allows setting a target FPS, enabling your browser to maintain the intended
frame rate.
- A more reliable approach in certain scenarios.

- MJPEG Adaptive
This will PULL images from the mjpegstream/ustreamer service, using the snapshot URL.
You can set a target FPS, and your browser will try to keep up with the
intended target. This can be a more reliable approach for some.
- **HLS Stream**
- Loads an HLS (HTTP Live Streaming) video stream via [HLS.js](https://hlsjs.video-dev.org/).
- Utilizes HTML5 video and MediaSource Extensions for playback, requiring a
modern browser.

- HLS Stream
This will load an HLS (HTTP Live Streaming) video stream via [HLS.js](https://hlsjs.video-dev.org/).
It relies on HTML5 video and MediaSource Extensions for playback, so you will
need a modern browser that supports it.
- **WebRTC (camera-streamer)**
- A highly bandwidth-efficient stream type.
- **IMPORTANT:** Currently only available on Raspberry devices.

- IP Camera
This is an experimental option. Effectively, it swaps out the `<img>` tag
for a `<video>` tag. You should only use this if you can provide a URL
that supports native HTML5 video tags.
- **IP Camera**
- Experimental option replacing the `<img>` tag with a `<video>` tag.
- Use only if your provided URL supports native HTML5 video tags.

- HTTP Page
Loads a website and displays it in place of the camera feed.
This lets you embed any web video feed not supported by the methods mentioned above.
- **HTTP Page**
- Loads a website, displaying it in place of the camera feed.
- Allows embedding any web video feed not supported by the aforementioned
methods.

Head on over to the UI Settings page to define your cameras.
Visit the UI Settings page to define and configure your cameras.

![screenshot](/assets/images/camera_settings.png)

# Setting up multiple cameras on FluiddPi

Up to four cameras are supported by the stock configuration.
In order to make them work, you need to

1. Copy the `webcam.txt` configuration file into a new one
matching the `webcam*.txt` wildcard.
Make sure each configuration file points to a different camera.
For example, one configuration file might have `camera="usb"` and
the other one `camera="auto"`.
Make any other adjustments if needed.
3. Make sure each configuration file has a different port settings.
By default `mjpg_streamer` will listen on port `8080`.
Up to four cameras are supported by the default nginx configuration,
from port `8080` to `8083`. Configure it by setting up
the `camera_http_options` parameter.
Example: `camera_http_options="-n -p 8081"`
4. Restart webcamd either via the tools drawer in the top right of the UI
or via SSH: `sudo systemctl restart webcamd`.
Alternatively, you could restart your device.
6. Add a new camera in the fluidd web interface.
Camera URL should be `webcam1/?action=stream` for the streamer on port 8081;
`webcam2/?action=stream` for port 8082;
`webcam3/?action=stream` for port 8083.
## Crowsnest support

For optimal performance and feature-rich streaming, we recommend using
**Crowsnest** as your preferred streamer in conjunction with Fluidd.

Crowsnest seamlessly integrates with Fluidd, offering extensive configuration
options tailored for a wide range of devices.

Please check the [Crowsnest documentation](https://crowsnest.mainsail.xyz/) for
more information.
47 changes: 27 additions & 20 deletions docs/features/console.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,32 @@ permalink: /features/console

---

Fluidd's console has a bunch of hidden features;

1. Hit the ↑ up and ↓ down arrow keys to scroll through your console history.
This history is saved across sessions!

2. The console has autocomplete, built in! Start typing, and hit the TAB key
to retrieve a list of available commands.

3. Known commands in the console are clickable! Try clicking a command, and
you'll see it appear in the console entry text area.

4. Want to know a full list of klipper commands? Type `help` and hit return!

5. You can filter the console output the way you'd like!
Head on over to the console settings tab to configure custom filters.
Currently, the following types of filters are supported:
* `contains` - Hides messages that contain the given string (case insensitive)
* `starts with` - Hides messages that start with the given string (case insensitive)
* `expression` - Hides messages that match the given [regular expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
(e.g. `probe at [\d\.,]+ is z=[01]\.\d+`) (case sensitive)
Fluidd's console comes with these some sophisticated features:

- **Effortless History Navigation**
- Scroll through your console history using the <kbd>&uarr;</kbd> and
<kbd>&darr;</kbd> keys.
- Benefit from intelligent history preservation across sessions for a
seamless workflow.

- **Intelligent Autocomplete Functionality**
- Harness the power of built-in autocomplete by initiating a command and
using the <kbd>Tab</kbd> key.

- **Clickable Commands**
- Click any known command, and watch it populate the console text entry area.

- **Klipper Commands Listing**
- Gain insights into Klipper commands with ease by typing `help` and hitting
return to access an extensive list of available commands.

- **Tailored Console Output**
- Visit the Console Settings to configure custom filters, including:
- `contains`: Hides messages containing the specified string (case
insensitive).
- `starts with`: Hides messages that commence with the given string (case
insensitive).
- `expression` - Filters messages matching the provided [regular expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
(e.g. `probe at [\d\.,]+ is z=[01]\.\d+`) (case sensitive)

![screenshot](/assets/images/console.png)
37 changes: 27 additions & 10 deletions docs/features/print_history.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,36 @@ permalink: /features/print_history

---

Fluidd supports Moonrakers Print History component. This allows you to
view print history, but more importantly - lets you sort your jobs by last
print date, filter jobs you've already printed and view printer statistics
over time - like total print time, total filament used.
Fluidd seamlessly integrates with Moonraker's Print History component,
providing you with comprehensive insights into your 3D prints.

Secondarily, being able to re-print failed or cancelled jobs also comes with
this feature.
Here's what you can achieve with this feature:

For the moment, Fluidd loads the last 50 prints from history. The limit is
10,000 history items - however, loading this up front may cause a performance
hit and is likely unecessary.
- **Effortless Viewing**
Review your print history effortlessly, gaining quick access to a
chronological list of your past prints.

Feedback is welcome on the current state of this feature!
- **Smart Sorting**
Easily sort your print jobs by their last print date, enabling efficient
organization and retrieval of relevant information.

- **Advanced Filtering**
Filter jobs you've already printed, streamlining your view to focus on
the prints that matter most to you.

- **Printer Statistics**
Gain valuable insights into printer performance over time. Track metrics
such as total print time and filament usage to optimize your printing
workflow.

- **Re-Print Capability**
In case of failed or cancelled jobs, utilize the re-print feature seamlessly
integrated into this component.

Fluidd is designed to balance functionality and performance for an optimal user
experience, and for that reason, it will only load the last 50 prints from the
history. While the limit extends to 10,000 history items, preloading this
extensive history may lead to unnecessary performance impacts.

![screenshot](/assets/images/print_history.png)
![screenshot](/assets/images/print_stats.png)
Expand Down
5 changes: 3 additions & 2 deletions docs/features/updates.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ permalink: /features/updates

---

Fluidd supports automated updates by way of Moonraker. Please see the moonraker
[configuration docs](/configuration/moonraker) for further information.
Fluidd facilitates seamless automated updates through Moonraker. For detailed
information on configuring automatic updates, please refer to the
[Moonraker configuration documentation](/configuration/moonraker).

![screenshot](/assets/images/updates.png)
Loading

0 comments on commit fac121f

Please sign in to comment.