63 changed files with 5209 additions and 3475 deletions
@ -0,0 +1,94 @@ |
|||
name: Bug Report |
|||
description: File a bug report |
|||
title: "[Bug]: " |
|||
labels: ["bug"] |
|||
body: |
|||
- type: markdown |
|||
attributes: |
|||
value: | |
|||
Thanks for taking the time to fill out this bug report! |
|||
|
|||
- type: dropdown |
|||
id: hardware |
|||
attributes: |
|||
label: Hardware |
|||
description: What hardware are you encountering this issue on? |
|||
multiple: true |
|||
options: |
|||
- Not Applicable |
|||
- T-Beam |
|||
- T-Beam S3 |
|||
- T-Beam 0.7 |
|||
- T-Lora v1 |
|||
- T-Lora v1.3 |
|||
- T-Lora v2 1.6 |
|||
- T-Deck |
|||
- T-Echo |
|||
- T-Watch |
|||
- Rak4631 |
|||
- Rak11200 |
|||
- Rak11310 |
|||
- Heltec v1 |
|||
- Heltec v2 |
|||
- Heltec v2.1 |
|||
- Heltec V3 |
|||
- Heltec Wireless Paper |
|||
- Heltec Wireless Tracker |
|||
- Raspberry Pi Pico (W) |
|||
- Relay v1 |
|||
- Relay v2 |
|||
- DIY |
|||
- Other |
|||
validations: |
|||
required: true |
|||
|
|||
- type: dropdown |
|||
id: category |
|||
attributes: |
|||
label: Connection Type |
|||
description: How are you connecting to your device? |
|||
multiple: true |
|||
options: |
|||
- HTTP |
|||
- Bluetooth |
|||
- Serial |
|||
validations: |
|||
required: true |
|||
|
|||
- type: dropdown |
|||
id: local |
|||
attributes: |
|||
label: Local or Hosted |
|||
description: Are you using `meshtastic.local` or `client.meshtastic.org`? |
|||
multiple: true |
|||
options: |
|||
- http://meshtastic.local |
|||
- https://client.meshtastic.org |
|||
validations: |
|||
required: true |
|||
|
|||
- type: input |
|||
id: version |
|||
attributes: |
|||
label: Firmware Version |
|||
description: This can be found on the device's screen or via one of the apps. |
|||
placeholder: x.x.x.yyyyyyy |
|||
validations: |
|||
required: true |
|||
|
|||
- type: textarea |
|||
id: body |
|||
attributes: |
|||
label: Description |
|||
description: Please provide details on what steps you performed for this to happen. |
|||
validations: |
|||
required: true |
|||
|
|||
- type: textarea |
|||
id: logs |
|||
attributes: |
|||
label: Relevant console output |
|||
description: If you have any log output to help in diagnosing your bug, please provide it here. |
|||
render: Shell |
|||
validations: |
|||
required: false |
|||
@ -0,0 +1,17 @@ |
|||
name: Feature Request |
|||
description: Request a new feature |
|||
title: "[Feature Request]: " |
|||
labels: ["enhancement"] |
|||
body: |
|||
- type: markdown |
|||
attributes: |
|||
value: | |
|||
Thanks for your request this will not gurantee that we will implement it, but it will be reviewed. |
|||
|
|||
- type: textarea |
|||
id: body |
|||
attributes: |
|||
label: Description |
|||
description: Please provide details about your enhancement. |
|||
validations: |
|||
required: true |
|||
@ -1,4 +1,7 @@ |
|||
{ |
|||
"editor.defaultFormatter": "biomejs.biome", |
|||
"editor.formatOnSave": true |
|||
"editor.defaultFormatter": "biomejs.biome", |
|||
"editor.codeActionsOnSave": { |
|||
"quickfix.biome": "explicit" |
|||
}, |
|||
"editor.formatOnSave": true |
|||
} |
|||
File diff suppressed because it is too large
@ -1,6 +1,6 @@ |
|||
module.exports = { |
|||
plugins: { |
|||
tailwindcss: {}, |
|||
autoprefixer: {} |
|||
} |
|||
autoprefixer: {}, |
|||
}, |
|||
}; |
|||
|
|||
@ -0,0 +1,54 @@ |
|||
import { useAppStore } from "@app/core/stores/appStore"; |
|||
import { useDevice } from "@app/core/stores/deviceStore.js"; |
|||
import { Button } from "@components/UI/Button.js"; |
|||
import { |
|||
Dialog, |
|||
DialogContent, |
|||
DialogDescription, |
|||
DialogFooter, |
|||
DialogHeader, |
|||
DialogTitle, |
|||
} from "@components/UI/Dialog.js"; |
|||
import { Label } from "@components/UI/Label.js"; |
|||
|
|||
export interface RemoveNodeDialogProps { |
|||
open: boolean; |
|||
onOpenChange: (open: boolean) => void; |
|||
} |
|||
|
|||
export const RemoveNodeDialog = ({ |
|||
open, |
|||
onOpenChange, |
|||
}: RemoveNodeDialogProps): JSX.Element => { |
|||
const { connection, nodes, removeNode } = useDevice(); |
|||
const { nodeNumToBeRemoved } = useAppStore(); |
|||
|
|||
const onSubmit = () => { |
|||
connection?.removeNodeByNum(nodeNumToBeRemoved); |
|||
removeNode(nodeNumToBeRemoved); |
|||
onOpenChange(false); |
|||
}; |
|||
|
|||
return ( |
|||
<Dialog open={open} onOpenChange={onOpenChange}> |
|||
<DialogContent> |
|||
<DialogHeader> |
|||
<DialogTitle>Remove Node?</DialogTitle> |
|||
<DialogDescription> |
|||
Are you sure you want to remove this Node? |
|||
</DialogDescription> |
|||
</DialogHeader> |
|||
<div className="gap-4"> |
|||
<form onSubmit={onSubmit}> |
|||
<Label>{nodes.get(nodeNumToBeRemoved)?.user?.longName}</Label> |
|||
</form> |
|||
</div> |
|||
<DialogFooter> |
|||
<Button variant="destructive" onClick={() => onSubmit()}> |
|||
Remove |
|||
</Button> |
|||
</DialogFooter> |
|||
</DialogContent> |
|||
</Dialog> |
|||
); |
|||
}; |
|||
@ -0,0 +1,32 @@ |
|||
import { useDevice } from "@app/core/stores/deviceStore.js"; |
|||
import type { Protobuf } from "@meshtastic/js"; |
|||
|
|||
export interface TraceRouteProps { |
|||
from?: Protobuf.Mesh.NodeInfo; |
|||
to?: Protobuf.Mesh.NodeInfo; |
|||
route: Array<number>; |
|||
} |
|||
|
|||
export const TraceRoute = ({ |
|||
from, |
|||
to, |
|||
route, |
|||
}: TraceRouteProps): JSX.Element => { |
|||
const { nodes } = useDevice(); |
|||
|
|||
return route.length === 0 ? ( |
|||
<div className="ml-5 flex"> |
|||
<span className="ml-4 border-l-2 border-l-backgroundPrimary pl-2 text-textPrimary"> |
|||
{to?.user?.longName}↔{from?.user?.longName} |
|||
</span> |
|||
</div> |
|||
) : ( |
|||
<div className="ml-5 flex"> |
|||
<span className="ml-4 border-l-2 border-l-backgroundPrimary pl-2 text-textPrimary"> |
|||
{to?.user?.longName}↔ |
|||
{route.map((hop) => `${nodes.get(hop)?.user?.longName ?? "Unknown"}↔`)} |
|||
{from?.user?.longName} |
|||
</span> |
|||
</div> |
|||
); |
|||
}; |
|||
@ -1,5 +1 @@ |
|||
{ |
|||
"github": { |
|||
"silent": true |
|||
} |
|||
} |
|||
{ "github": { "silent": true } } |
|||
|
|||
Loading…
Reference in new issue