mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-04-20 22:13:48 +00:00
Updated PR and Added snackbar Translations
This commit is contained in:
parent
81a423d096
commit
332bb5ef3a
21 changed files with 204 additions and 13 deletions
48
.local-agent/AGENTS.local.md
Normal file
48
.local-agent/AGENTS.local.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Local Agent Operating Rules (Untracked)
|
||||
|
||||
This file is NOT version-controlled.
|
||||
It overrides default agent behavior for this workstation only.
|
||||
|
||||
---
|
||||
|
||||
## Core Behavior
|
||||
|
||||
- Always search the codebase before editing.
|
||||
- Produce a short plan before modifying BLE or protocol logic.
|
||||
- Never modify BLE frame structure or command codes without explicit approval.
|
||||
- After editing connector code, re-check command/response mappings.
|
||||
- Never perform destructive operations (delete files, mass refactor) without confirmation.
|
||||
|
||||
---
|
||||
|
||||
## Protocol Discipline
|
||||
|
||||
- maxFrameSize must remain 172 unless explicitly instructed.
|
||||
- Identity hash size is 1 byte (PATH_HASH_SIZE).
|
||||
- Companion radio formats must not change silently.
|
||||
- Command codes and response codes must remain backward-compatible.
|
||||
|
||||
---
|
||||
|
||||
## Coding Discipline
|
||||
|
||||
- Keep modifications minimal.
|
||||
- Prefer refactoring over rewriting.
|
||||
- Follow existing Flutter patterns (StatelessWidget + Consumer).
|
||||
- Avoid premature abstraction.
|
||||
- Explain what changed and why.
|
||||
|
||||
---
|
||||
|
||||
## Learning Mode
|
||||
|
||||
When discovering:
|
||||
- a working build command
|
||||
- a protocol quirk
|
||||
- a confirmed packet layout rule
|
||||
|
||||
Append a concise bullet to:
|
||||
|
||||
.local-agent/memory.local.md
|
||||
|
||||
Keep memory under 15 bullets max.
|
||||
6
.local-agent/memory.local.md
Normal file
6
.local-agent/memory.local.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
\# Local Learned Patterns (Machine-Specific)
|
||||
|
||||
(empty)
|
||||
|
||||
|
||||
|
||||
|
|
@ -363,6 +363,14 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"channels_channelDeleteFailed": "Failed to delete channel \"{name}\"",
|
||||
"@channels_channelDeleteFailed": {
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"channels_channelDeleted": "Channel \"{name}\" deleted",
|
||||
"@channels_channelDeleted": {
|
||||
"placeholders": {
|
||||
|
|
|
|||
|
|
@ -1570,6 +1570,12 @@ abstract class AppLocalizations {
|
|||
/// **'Delete \"{name}\"? This cannot be undone.'**
|
||||
String channels_deleteChannelConfirm(String name);
|
||||
|
||||
/// No description provided for @channels_channelDeleteFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to delete channel \"{name}\"'**
|
||||
String channels_channelDeleteFailed(String name);
|
||||
|
||||
/// No description provided for @channels_channelDeleted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -812,6 +812,11 @@ class AppLocalizationsBg extends AppLocalizations {
|
|||
return 'Изтрий \"$name\"? Това не може да бъде отменено.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Каналът \"$name\" е изтрит';
|
||||
|
|
|
|||
|
|
@ -809,6 +809,11 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
return 'Löschen von \"$name\"? Dies kann nicht rückgängig gemacht werden.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Kanal \"$name\" gelöscht';
|
||||
|
|
|
|||
|
|
@ -801,6 +801,11 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
return 'Delete \"$name\"? This cannot be undone.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Channel \"$name\" deleted';
|
||||
|
|
|
|||
|
|
@ -810,6 +810,11 @@ class AppLocalizationsEs extends AppLocalizations {
|
|||
return 'Eliminar \"$name\"? Esto no se puede deshacer.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Canal \"$name\" eliminado';
|
||||
|
|
|
|||
|
|
@ -812,6 +812,11 @@ class AppLocalizationsFr extends AppLocalizations {
|
|||
return 'Supprimer $name? Cela ne peut pas être annulé.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Le canal \"$name\" a été supprimé';
|
||||
|
|
|
|||
|
|
@ -808,6 +808,11 @@ class AppLocalizationsIt extends AppLocalizations {
|
|||
return 'Eliminare \"$name\"? Non può essere annullato.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Canale \"$name\" eliminato';
|
||||
|
|
|
|||
|
|
@ -806,6 +806,11 @@ class AppLocalizationsNl extends AppLocalizations {
|
|||
return 'Verwijderen \"$name\"? Dit kan niet worden teruggedraaid.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Kanaal \"$name\" verwijderd';
|
||||
|
|
|
|||
|
|
@ -811,6 +811,11 @@ class AppLocalizationsPl extends AppLocalizations {
|
|||
return 'Usuń \"$name\"? Nie można tego cofnąć.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Kanał \"$name\" usunięto';
|
||||
|
|
|
|||
|
|
@ -811,6 +811,11 @@ class AppLocalizationsPt extends AppLocalizations {
|
|||
return 'Excluir \"$name\"? Não pode ser desfeito.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Canal \"$name\" excluído';
|
||||
|
|
|
|||
|
|
@ -809,6 +809,11 @@ class AppLocalizationsRu extends AppLocalizations {
|
|||
return 'Удалить \"$name\"? Это действие нельзя отменить.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Канал \"$name\" удалён';
|
||||
|
|
|
|||
|
|
@ -806,6 +806,11 @@ class AppLocalizationsSk extends AppLocalizations {
|
|||
return 'Odstrániť \"$name\"? To sa nedá zrušiť.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Kanál \"$name\" bol odstránený';
|
||||
|
|
|
|||
|
|
@ -804,6 +804,11 @@ class AppLocalizationsSl extends AppLocalizations {
|
|||
return 'Izbrišem \"$name\"? To se ne da povrniti.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Kanal \"$name\" izbrisan.';
|
||||
|
|
|
|||
|
|
@ -800,6 +800,11 @@ class AppLocalizationsSv extends AppLocalizations {
|
|||
return 'Radera \"$name\"? Detta kan inte ångras.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Kanalen \"$name\" raderad';
|
||||
|
|
|
|||
|
|
@ -807,6 +807,11 @@ class AppLocalizationsUk extends AppLocalizations {
|
|||
return 'Видалити $name? Це не можна скасувати.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return 'Канал «$name» видалено';
|
||||
|
|
|
|||
|
|
@ -769,6 +769,11 @@ class AppLocalizationsZh extends AppLocalizations {
|
|||
return 'Delete \"$name\"? This cannot be undone.';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleteFailed(String name) {
|
||||
return 'Failed to delete channel \"$name\"';
|
||||
}
|
||||
|
||||
@override
|
||||
String channels_channelDeleted(String name) {
|
||||
return '删除频道 \"$name\"';
|
||||
|
|
|
|||
|
|
@ -1524,18 +1524,14 @@ class _ChannelsScreenState extends State<ChannelsScreen>
|
|||
try {
|
||||
await connector.deleteChannel(channel.index);
|
||||
|
||||
channelMessageStore.clearChannelMessages(
|
||||
channel.index,
|
||||
);
|
||||
channelMessageStore.clearChannelMessages(channel.index);
|
||||
|
||||
if (!context.mounted) return;
|
||||
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(
|
||||
context.l10n.channels_channelDeleted(
|
||||
channel.name,
|
||||
),
|
||||
context.l10n.channels_channelDeleted(channel.name),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
@ -1545,17 +1541,13 @@ class _ChannelsScreenState extends State<ChannelsScreen>
|
|||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(
|
||||
context.l10n.channels_channelDeleteFailed(
|
||||
channel.name,
|
||||
),
|
||||
context.l10n.channels_channelDeleteFailed(channel.name),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Preserve existing logging (if it was there)
|
||||
debugPrint(
|
||||
'Failed to delete channel: $e\n$st',
|
||||
);
|
||||
debugPrint('Failed to delete channel: $e\n$st');
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
|
|
|
|||
|
|
@ -1 +1,57 @@
|
|||
{}
|
||||
{
|
||||
"bg": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"de": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"es": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"fr": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"it": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"nl": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"pl": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"pt": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"ru": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"sk": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"sl": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"sv": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"uk": [
|
||||
"channels_channelDeleteFailed"
|
||||
],
|
||||
|
||||
"zh": [
|
||||
"channels_channelDeleteFailed"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue