docs: spelling fixes

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2022-04-10 12:28:53 -04:00
parent e0eded70e8
commit 47c6245c3f
No known key found for this signature in database
GPG Key ID: 7027245FBBDDF59A
2 changed files with 79 additions and 79 deletions

View File

@ -1,8 +1,8 @@
#
This document describes Moonraker's full configuration. As this file
references configuration for both Klipper (`printer.cfg`) and Moonraker
(`moonraker.conf`), each example contains a commment indicating which
configuration file is being refrenenced. A basic
(`moonraker.conf`), each example contains a comment indicating which
configuration file is being referenced. A basic
[sample configuration](./moonraker.conf) in the `docs` directory.
## Core Components
@ -12,7 +12,7 @@ Moonraker's core components are always loaded regardless of configuration.
### `[server]`
The `[server]` section provides essential configuration for Moonraker.
This section is requrired.
This section is required.
```ini
@ -27,7 +27,7 @@ port: 7125
ssl_port: 7130
# The port to listen on for SSL (HTTPS) connections. Note that the HTTPS
# server will only be started of the certificate and key options outlined
# below are provied. The default is 7130.
# below are provided. The default is 7130.
ssl_certificate_path:
# The path to a self signed ssl certificate. The default is no path, which
# disables HTTPS.
@ -68,7 +68,7 @@ queue_gcode_uploads: False
# the `start_print` flag has been set. The default if False.
enable_object_processing: False
# When set to True gcode files will be run through a "preprocessor"
# during metdata extraction if object tags are detected. This preprocessor
# during metadata extraction if object tags are detected. This preprocessor
# replaces object tags with G-Code commands compatible with Klipper's
# "cancel object" functionality. Note that this process is file I/O intensive,
# it is not recommended for usage on low resource SBCs such as a Pi Zero.
@ -117,7 +117,7 @@ provider: systemd_dbus
back to CLI based `reboot` and `shutdown` commands. These commands require
that Moonraker be able to run `sudo` commands without a password.
Alternatively it may be possible to enable the `systemd-logind` service,
consult with your distro's documentation.
consult with your distributions's documentation.
#### Reboot / Shutdown from Klipper
@ -219,12 +219,12 @@ Moonraker announcements. If omitted defaults will be used.
subscriptions:
# A newline separated list announcement "subscriptions". Generally
# this would refer to specific clients that are registered to provide
# annoucements. All items specified here are added in addition to
# announcements. All items specified here are added in addition to
# "moonraker" and "klipper", which are always subscribed to. The default
# is no additional subscriptions.
dev_mode: False
# A developer option that fetches RSS annoucments from a local folder when
# set to True. The default behavior is for Moonraker to retrieve annoucements
# A developer option that fetches RSS announcements from a local folder when
# set to True. The default behavior is for Moonraker to retrieve announcements
# from RSS feeds generated by the "moonlight" repo on GitHub.
```
@ -363,7 +363,7 @@ confirmed_macros:
RESTART
FIRMWARE_RESTART
# Like the "macros" option, this list is added to the macros tab.
# When one of these macros is excuted the PanelDue will prompt
# When one of these macros is executed the PanelDue will prompt
# the user with a confirmation dialog. The default is to include
# RESTART and FIRMWARE_RESTART.
```
@ -652,7 +652,7 @@ off_code:
and [this Home Assistant Alert](https://alerts.home-assistant.io/#tplink.markdown)
for details.
The following options are availble for `tplink_smartplug` device types:
The following options are available for `tplink_smartplug` device types:
```ini
# moonraker.conf
@ -701,7 +701,7 @@ output_id:
```
!!! Note
This implmentation communicates with Tasmota firmware through its
This implementation communicates with Tasmota firmware through its
HTTP APIs. It is also possible to use [MQTT](#mqtt-device-configuration)
to control devices flashed with Tasmota.
@ -740,7 +740,7 @@ output_id:
```
!!! Note
This implmentation communicates with Shelly firmware through its
This implementation communicates with Shelly firmware through its
HTTP APIs. It is also possible to use [MQTT](#mqtt-device-configuration)
to control Shelly devices.
@ -802,7 +802,7 @@ device:
# The device ID of the switch to control. This parameter must be provided.
token:
# A token used for request authorization. This option accepts
# Jinja2 Templates, see the [secrets] section for details. This paramter
# Jinja2 Templates, see the [secrets] section for details. This parameter
# must be provided.
domain:
# The class of device managed by Home Assistant. Default is "switch".
@ -905,7 +905,7 @@ query_payload:
query_after_command:
# If set to True Moonraker will publish the query topic after publishing the
# command topic. This should only be necessary if the device does not publish a
# reponse to a command request to the state topic. The default is False.
# response to a command request to the state topic. The default is False.
```
!!! Note
Moonraker's MQTT client must be properly configured to add a MQTT device.
@ -914,7 +914,7 @@ query_after_command:
!!! Tip
MQTT is the most robust way of managing networked devices through
Moonraker. A well implemented MQTT device will publish all
changes in state to the `state_topic`. Moonraker recieves these changes,
changes in state to the `state_topic`. Moonraker receives these changes,
updates its internal state, and notifies connected clients. This allows
for device control outside of Moonraker. Note however that post command
actions, such as bound services, will not be run if a device is toggled
@ -934,7 +934,7 @@ command_topic: cmnd/tasmota_switch/POWER
command_payload:
{command}
# There is no need to set the retain flag for Tasmota devices. Moonraker
# will use the query topic to initalize the device. Tasmota will publish
# will use the query topic to initialize the device. Tasmota will publish
# all changes in state to the state topic.
retain_command_state: False
# To query a tasmota device we send the command topic without a payload.
@ -968,7 +968,7 @@ protocol: https
port: 443
token:
# A token used for request authorization. This option accepts
# Jinja2 Templates, see the [secrets] section for details. This paramter
# Jinja2 Templates, see the [secrets] section for details. This parameter
# must be provided.
device:
# The Device guid of the switch to control. This parameter must be provided.
@ -1110,7 +1110,7 @@ enable_packagekit: True
channel: dev
# The update channel applied to Klipper and Moonraker. May dev or
# beta. The dev channel will update to the latest commit pushed
# to the repo, whereas the beta channel will update to the lastest
# to the repo, whereas the beta channel will update to the latest
# commit tagged by Moonraker. The beta channel will see less frequent
# updates and should be more stable. Users on the beta channel will have
# more opportunity to review breaking changes before choosing to update.
@ -1118,7 +1118,7 @@ channel: dev
```
#### Extension Configuration
The update manager may be configured manage additional software, hencefore
The update manager may be configured manage additional software, henceforth
referred to as "extensions". In general terms, an extension may be defined
as a piece of software hosted on GitHub. The update manager breaks this
down into 3 basic types:
@ -1127,10 +1127,10 @@ down into 3 basic types:
zip files created for GitHub releases.
- `git_repo`: Used to manage extensions that do not fall into the "web" type.
Updates are deployed directly via git. Typical usage scenarios are to
manage extensions installed a service such as KliperScreen, repos containing
manage extensions installed a service such as KlipperScreen, repos containing
configuration, and unofficial 3rd party extensions for Klipper and Moonraker.
See the note below in reference to unofficial extensions.
- `zip`: This can be used to mananged various extensions like the `git_repo`
- `zip`: This can be used to managed various extensions like the `git_repo`
type, however its updates are deployed via zipped GitHub releases.
!!! Note
@ -1175,7 +1175,7 @@ info_tags:
# info_tags:
# desc=My Client App
# action=webcam_restart
# Front ends may use these tags to perform additonal actions or display
# Front ends may use these tags to perform additional actions or display
# information, see your extension documentation for details on configuration.
# The default is an empty list.
```
@ -1280,14 +1280,14 @@ info_tags:
# For example:
# info_tags:
# desc=Special Application
# Front ends my use these tags to perform additonal actions or display
# Front ends my use these tags to perform additional actions or display
# information, see your extension documentation for details on configuration.
# The default is an empty list.
```
### `[mqtt]`
Enables an MQTT Client. When configured most of Moonraker's APIs are availble
Enables an MQTT Client. When configured most of Moonraker's APIs are available
by publishing JSON-RPC requests to `{instance_name}/moonraker/api/request`.
Responses will be published to `{instance_name}/moonraker/api/response`. See
the [API Documentation](web_api.md#json-rpc-api-overview) for details on
@ -1335,7 +1335,7 @@ enable_moonraker_api: True
# This can be set to False if the user does not wish to allow API
# requests over MQTT. The default is True.
instance_name:
# An identifer used to create unique API topics for each instance of
# An identifier used to create unique API topics for each instance of
# Moonraker on network. This name cannot contain wildcards (+ or #).
# For example, if the instance name is set to my_printer, Moonraker
# will subscribe to the following topic for API requests:
@ -1400,7 +1400,7 @@ explanation of each parameter:
- `topic`: a valid mqtt topic
- `payload`: Defaults to an empty payload. This can be set to string, integer,
float, boolean, any json encodable object (dict or list) or None. The default
float, boolean, any json object (dict or list) or None. The default
value is None, in which no payload will be sent with the topic
- `qos`: an integer value in the range from 0 to 2. The default is the qos
set in the configuration.
@ -1497,7 +1497,7 @@ gcode:
state=False)}
[gcode_macro SET_WLED]
description: SET_LED like functionlity for WLED, applies to all active segments
description: SET_LED like functionality for WLED, applies to all active segments
gcode:
{% set strip = params.STRIP|string %}
{% set red = params.RED|default(0)|float %}
@ -1531,7 +1531,7 @@ Enables support for handling `button` events.
[button my_button]
type: gpio
# Reserved for future use. Currently the only button type availble is
# Reserved for future use. Currently the only button type available is
# 'gpio', which is the default.
pin: gpiochip0/gpio26
# The gpio pin to watch for button events. The chip is optional, if
@ -1553,7 +1553,7 @@ pin: gpiochip0/gpio26
# ~!gpiochip0/gpio26
# This parameter must be provided
min_event_time: .05
# The mimimum time (in seconds) between events to trigger a response. This is
# The minimum time (in seconds) between events to trigger a response. This is
# is used to debounce buttons. This value must be at least .01 seconds.
# The default is .05 seconds (50 milliseconds).
on_press:
@ -1573,8 +1573,8 @@ adn methods:
[API documentation](web_api.md#jinja2-template-api-calls) for details.
- `send_notification`: Emits a websocket notification. This is useful if you
wish to use buttons to notify attached clients of some action. This
method takes an optional argument that can contain any JSON encodable
type. If provided, this value will be sent as part of the payload with
method takes an optional argument that may contain any JSON object.
If provided, this value will be sent as part of the payload with
the notification.
Additionally, the following context variables are available:
@ -1585,7 +1585,7 @@ Additionally, the following context variables are available:
- `received_time`: The time the event was detected according to asyncio's
monotonic clock. Note that this is not in "unix time".
- `render_time`: The time the template was rendered (began execution)
according to asyncio's montonic clock. It is possible execution of
according to asyncio's monotonic clock. It is possible execution of
an event may be delayed well beyond the `received_time`.
- `pressed`: A boolean value to indicate if the button is currently pressed.
- `user_data`: This is a dictionary in which templates can store information
@ -1611,7 +1611,7 @@ type: gpio
pin: gpio26
on_press:
# Executes immediately after a press is detected
{% do call_method("priner.emergency_stop") %}
{% do call_method("printer.emergency_stop") %}
# Reboot Long Press Example
[button reboot]
@ -1624,7 +1624,7 @@ on_release:
{% do call_method("machine.reboot") %}
{% endif %}
# Double Click Notificaion Example
# Double Click Notification Example
[button notify_btn]
type: gpio
pin: gpio26
@ -1713,7 +1713,7 @@ The `secrets` object is added to Moonraker's Jinja2 environment as a
global, thus it is available in all templates. All options in
Moonraker's configuration that accept credentials support templates.
MQTT configuration example with secret credentaials:
MQTT configuration example with secret credentials:
```ini
[mqtt]
@ -1733,7 +1733,7 @@ enable_moonraker_api: True
unique credentials. Never leave a Moonraker client application open
unattended in an untrusted location, as it would be possible for a
malicious actor to reconfigure moonraker to send items stored in the
secrets file to themselves via `mqtt`, `notifer`, etc.
secrets file to themselves via `mqtt`, `notifier`, etc.
Home Assistant Switch Example:
@ -1766,7 +1766,7 @@ url: tgram://{bottoken}/{ChatID}
# The url for your notifier. This URL accepts Jinja2 templates, so you can use [secrets] if you want.
events: *
# The events this notifier should trigger to. '*' means all events.
# You can use multiple events, comma seperated.
# You can use multiple events, comma separated.
# Valid events:
# started
# complete
@ -1860,7 +1860,7 @@ a `dictionary` object and convert it to json:
[power my_mqtt_device]
type: mqtt
command_topic: my/mqtt/command
# Lets assume this device requres a json payload with each command.
# Lets assume this device requires a json payload with each command.
# We will use a dict to generate the payload
command_payload:
{% set my_payload = {"SOME_FIELD": ""} %}

View File

@ -11,7 +11,7 @@ Websocket, please see the Appendix at the end of this document.
Moonraker's HTTP API could best be described as "RESTish". Attempts are
made to conform to REST standards, however the dynamic nature of
Moonraker's API registration along with the desire to keep consistency
between mulitple API protocols results in an HTTP API that does not
between multiple API protocols results in an HTTP API that does not
completely adhere to the standard.
Moonraker is capable of parsing request arguments from the both the body
@ -21,7 +21,7 @@ with body arguments taking precedence over query arguments. Thus
if the same argument is supplied both in the body and in the
query string the body argument would be used. It is left up to the client
developer to decide exactly how they want to provide arguments, however
future API documention will make recommendations. As of March 1st 2021
future API documentation will make recommendations. As of March 1st 2021
this document exclusively illustrates arguments via the query string.
All successful HTTP requests will return a json encoded object in the form of:
@ -62,7 +62,7 @@ arguments. The query string with type hints might look like:
?seconds:int=120&enabled:bool=true
```
A query string that takes a `value` argument with which we want to
assing an object, `{foo: 21.5, bar: "hello"}` might look like:
pass an object, `{foo: 21.5, bar: "hello"}` might look like:
```
?value:json=%7B%22foo%22%3A21.5%2C%22bar%22%3A%22hello%22%7D
```
@ -213,7 +213,7 @@ All parameters are required. Below is an explanation of each parameter.
Returns:
The connection's unique identifer.
The connection's unique identifier.
```json
{
"connection_id": 1730367696
@ -224,7 +224,7 @@ The connection's unique identifer.
!!! Warning
This method is deprecated. Please use the
[identify endpoint](#identify-connection) to retreive the
[identify endpoint](#identify-connection) to retrieve the
Websocket's UID
HTTP request: `Not Available`
@ -239,7 +239,7 @@ JSON-RPC request (Websocket Only):
```
Returns:
The connected websocket's unique identifer.
The connected websocket's unique identifier.
```json
{
"websocket_id": 1730367696
@ -1308,7 +1308,7 @@ will return up to 30 samples, each sample with the following fields:
CPU usage of the Moonraker process.
- `memory`: Integer value representing the current amount of memory
allocated in RAM (resident set size).
- `mem_units`: A string indentifying the units of the value in the
- `mem_units`: A string identifying the units of the value in the
`memory` field. This is typically "kB", but not guaranteed.
If the system running Moonraker supports `vcgencmd` then Moonraker
@ -1718,7 +1718,7 @@ Returns: Information about the moved file or directory
#### Copy a file or directory
Copies a file or directory from one location to another. A successful copy has
the pre-requesites as a move with one exception, a copy may complete if the
the prerequisites as a move with one exception, a copy may complete if the
source file or directory is loaded by the `virtual_sdcard`. As with the move
API, the `source` and `dest` should have the root prefixed to the path.
@ -1744,7 +1744,7 @@ Returns: Information about the copied file or directory
{
"item": {
"root": "gcodes",
"path": "test4/Voron_v2_350_aferburner_Filament Cover_0.2mm_ABS.gcode"
"path": "test4/Voron_v2_350_afterburner_Filament Cover_0.2mm_ABS.gcode"
},
"action": "create_file"
}
@ -2108,7 +2108,7 @@ Returns:
A temporary token that may be added to a request's query string for access
to any API endpoint. The query string should be added in the form of:
```
?token={base32_ramdom_token}
?token={base32_random_token}
```
#### Get the Current API Key
@ -2136,12 +2136,12 @@ the API key change is applied immediately, all subsequent HTTP requests
from untrusted clients must use the new key.
### Database APIs
The following endpoints provide access to Moonraker's ldbm database. The
The following endpoints provide access to Moonraker's lmdb database. The
database is divided into `namespaces`. Each client may define its own
namespace to store information. From the client's point of view, a
namespace is an `object`. Items in the database are accessed by providing
a namespace and a key. A key may be specifed as string, where a "." is a
delimeter, to access nested fields. Alternatively the key may be specified
a namespace and a key. A key may be specified as string, where a "." is a
delimiter, to access nested fields. Alternatively the key may be specified
as an array of strings, where each string references a nested field.
This is useful for scenarios where your namespace contains keys that include
a "." character.
@ -2321,8 +2321,8 @@ deleted item.
### Job Queue APIs
The following enpoints may be used to manage Moonraker's job queue.
Note that Moonraker's Job Queue is impelemented as a FIFO queue and it may
The following endpoints may be used to manage Moonraker's job queue.
Note that Moonraker's Job Queue is implemented as a FIFO queue and it may
contain multiple references to the same job.
!!! Note
@ -2405,7 +2405,7 @@ Below is a description of the returned fields:
Adds a job, or an array of jobs, to the end of the job queue. The same
filename may be specified multiple times to queue a job that repeats.
When multiple jobs are specfied they will be enqued in the order they
When multiple jobs are specified they will be enqueued in the order they
are received.
!!! Note
@ -2414,7 +2414,7 @@ are received.
HTTP request:
```http
POST /server/job_queue/job?filenames=job1.gcode,job2.gcode,subdir/job3.gocde
POST /server/job_queue/job?filenames=job1.gcode,job2.gcode,subdir/job3.gcode
```
!!! Note
@ -2444,7 +2444,7 @@ JSON-RPC request:
"filenames": [
"job1.gcode",
"job2.gcode",
"subir/job3.gcode"
"subdir/job3.gcode"
]
},
"id": 4654
@ -2638,7 +2638,7 @@ The following endpoints are available to manage announcements. See
announcements work and recommendations for your implementation.
#### List announcements
Retreives a list of current announcements. The `include_dismissed`
Retrieves a list of current announcements. The `include_dismissed`
argument is optional and defaults to `true`. If set to `false`
dismissed entries will be omitted from the return value.
@ -3062,7 +3062,7 @@ Below is an explanation for each field:
- `busy`: set to true if an update is in progress. Moonraker will not
allow concurrent updates.
- `github_rate_limit`: the maximum number of github API requests
the user currently is allowed. An unathenticated user typically has 60
the user currently is allowed. An unauthenticated user typically has 60
requests per hour.
- `github_requests_remaining`: the number of API request the user
currently has remaining.
@ -3073,7 +3073,7 @@ The `moonraker`, `klipper` packages, along with and clients configured
as applications have the following fields:
- `configured_type`: the application type configured by the user
- `detected_type`: the applicaiton type as detected by Moonraker.
- `detected_type`: the application type as detected by Moonraker.
- `channel`: the currently configured update channel. For Moonraker
and Klipper this is set in the `[update_manager]` configuration.
For clients the channel is determined by the configured type
@ -3214,7 +3214,7 @@ If one more more `[update_manager client client_name]` sections have
been configured this endpoint can be used to install the most recently
published release of the client. If an update is requested while a
print is in progress then this request will return an error. The
`name` argument is requred, it's value should match the `client_name`
`name` argument is required, it's value should match the `client_name`
of the configured section.
HTTP request:
@ -3258,7 +3258,7 @@ Returns:
`ok` when complete
#### Recover a corrupt repo
On ocassion a git command may fail resulting in a repo in a
On occasion a git command may fail resulting in a repo in a
dirty or invalid state. When this happens it is possible
to recover. The `name` argument must specify the name of
the repo to recover, it must be of a git repo type. There are two
@ -3592,7 +3592,7 @@ POST /api/files/local
```
JSON-RPC request: Not Available
Alias for Moonrakers [file upload API](#file-upload).
Alias for Moonraker's [file upload API](#file-upload).
#### Get Job status
HTTP request:
@ -3710,7 +3710,7 @@ An object containing simulates OctoPrint Printer profile
```
### History APIs
The APIs below are avilable when the `[history]` component has been configured.
The APIs below are available when the `[history]` component has been configured.
#### Get job list
HTTP request:
@ -3743,7 +3743,7 @@ All arguments are optional. Arguments are as follows:
Returns:
An array of requsted historical jobs:
An array of requested historical jobs:
```json
{
"count": 1,
@ -3934,7 +3934,7 @@ JSON-RPC request:
}
```
Only the `topic` parameter is required. Below is an explanation for
each paramater:
each parameter:
- `topic`: The topic to publish.
- `payload`: Payload to send with the topic. May be a boolean, float,
@ -3945,7 +3945,7 @@ each paramater:
from 0 to 2. If omitted the system configured default is used.
- `retain`: If set to `true` the MQTT broker will retain the payload of this
request. Note that only the mostly recently tagged payload is retained.
When other clients first subscribe to the topic they immediately recieve the
When other clients first subscribe to the topic they immediately receive the
retained message. The default is `false`.
- `timeout`: A float value in seconds. By default requests with QoS levels of
1 or 2 will block until the Broker acknowledges confirmation. This option
@ -4271,7 +4271,7 @@ for example when a user configures a different gcode file path
in Klipper.
#### Update Manager Response
The update manager will send asyncronous messages to the client during an
The update manager will send asynchronous messages to the client during an
update:
```json
{
@ -4294,7 +4294,7 @@ The fields reported in the response are as follows:
or "client".
- The `proc_id` field contains a unique id associated with the current update
process. This id is generated for each update request.
- The `message` field contains an asyncronous message sent during the update
- The `message` field contains an asynchronous message sent during the update
process.
- The `complete` field is set to true on the final message sent during an
update, indicating that the update completed successfully. Otherwise it
@ -4469,7 +4469,7 @@ The object sent with the notification contains the following fields:
- `state_changed`: The queue state has changed
- `jobs_added`: One or more jobs were added to the queue
- `jobs_removed`: One or more jobs were removed from the queue
- `job_loaded`: A job was popped off the queue and successfull started
- `job_loaded`: A job was popped off the queue and successfully started
- `updated_queue`: If the queue itself is changed this will be a list
containing each item in the queue. If the queue has not changed this will
be `null`.
@ -4511,7 +4511,7 @@ fields:
- `received_time`: The time the event was detected according to asyncio's
monotonic clock. Note that this is not in "unix time".
- `render_time`: The time the template was rendered (began execution)
according to asyncio's montonic clock. It is possible execution of
according to asyncio's monotonic clock. It is possible execution of
an event may be delayed well beyond the `received_time`.
- `pressed`: A boolean value to indicate if the button is currently pressed.
- `aux`: This is an optional field where the button may specify any json
@ -4522,7 +4522,7 @@ fields:
#### Announcement update event
Moonraker will emit the `notify_announcement_update` notification when
a announcement entries are addded or removed:
a announcement entries are added or removed:
```json
{
@ -4619,7 +4619,7 @@ announcement that is no longer dismissed.
#### Agent Events
Moonraker will emit the `notify_agent_event` notification when it
an agent event is recevied.
an agent event is received.
```json
{
@ -4640,7 +4640,7 @@ an agent event is recevied.
}
```
When an agent connects, all connections will recieve a `connected` event
When an agent connects, all connections will receive a `connected` event
for that agent, with its identity info in the `data` field. When an agent
disconnects clients will receive a `disconnected` event with the data field
omitted. All other events are determined by the agent, where each event may
@ -4663,7 +4663,7 @@ var s = new WebSocket("ws://" + location.host + "/websocket");
ws://host:port/websocket?token={32 character base32 string}
```
The following startup sequence is recommened for clients which make use of
The following startup sequence is recommended for clients which make use of
the websocket:
1. Attempt to connect to `/websocket` until successful using a timer-like
@ -4754,7 +4754,7 @@ via polling.
If metadata extraction failed then this request will return an error.
Some metadata fields are only populated for specific slicers, and
unsupported slicers will only return the size and modifed date.
unsupported slicers will only return the size and modified date.
- There are multiple ways to calculate the ETA, this example will use
file progress, as it is possible calculate the ETA with or without
@ -4829,7 +4829,7 @@ function process_mesh(result) {
#### Converting to Unix Time
Some of Moonraker's APIs return a date represented in Unix time.
Most languanges have functionality built in to convert Unix
Most languages have functionality built in to convert Unix
time to a workable object or string. For example, in JavaScript
one might do something like the following:
```javascript
@ -4901,7 +4901,7 @@ With `dev_mode` enabled, Moonraker will look for`moonraker.xml` and
If moonraker is not installed in the home folder then substitute `~`
for the parent folder location. This folder is in a hardcoded location
to so as not to expose users to vulnerabilites associated with parsing XML.
to so as not to expose users to vulnerabilities associated with parsing XML.
It is possible to configure Moonraker to search for your own feeds:
@ -4936,7 +4936,7 @@ from moonlight's own issue tracker:
<pubDate>Tue, 22 Mar 2022 23:19:04 GMT</pubDate>
<moonlight:configHash>f2912192bf0d09cf18d8b8af22b2d3501627043e5afa3ebff0e45e4794937901</moonlight:configHash>
<item>
<title>Test annoucement 3</title>
<title>Test announcement 3</title>
<link>https://github.com/Arksine/moonlight/issues/3</link>
<description>Test Description [with a link](https://moonraker.readthedocs.io).</description>
<pubDate>Wed, 16 Mar 2022 19:33:39 GMT</pubDate>