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.defaultFormatter": "biomejs.biome", |
||||
|
"editor.codeActionsOnSave": { |
||||
|
"quickfix.biome": "explicit" |
||||
|
}, |
||||
"editor.formatOnSave": true |
"editor.formatOnSave": true |
||||
} |
} |
||||
File diff suppressed because it is too large
@ -1,6 +1,6 @@ |
|||||
module.exports = { |
module.exports = { |
||||
plugins: { |
plugins: { |
||||
tailwindcss: {}, |
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