diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d1cb5d..feaa9c3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -59,10 +59,10 @@ You also confirm that you have the right to submit the contribution under these ## Generative AI policy -You may use generative AI tools when contributing, on the condition that your setup actually supplies the model with enough context to produce sound work: relevant files, constraints, failing tests, and project conventions. Vague prompts and thin context lead to wrong or generic patches; that burden is on the contributor, not the reviewers. +You may use generative AI tools when contributing, on the condition that your setup actually supplies the model with enough context to produce sound work and your provider does not train on the code, read [Reticulum Zen](https://reticulum.network/manual/zen.html) and the [Reticulum License](https://reticulum.network/manual/license.html). Vague prompts and thin context lead to wrong or generic patches; that burden is on the contributor, not the reviewers. You must disclose AI usage in the patch message body (or commit message, if you prefer): state which tools or services you used in a material way for that change (for example, model or product name, and whether it was local or cloud). If a change was written without meaningful AI assistance, say so briefly. This is so reviewers can judge scope and provenance; it is not a substitute for your own review and testing. -We prefer models that run locally or offline when that is practical for you. +We strongly prefer models that run locally or offline when that is practical for you. Contributions must still be yours to justify and maintain. Do not submit bulk-generated changes you have not read, understood, and tested. We are not looking for unreviewed AI output or style-only churn from tools used without engineering/architectural judgment. diff --git a/meshchatx/src/backend/docs_manager.py b/meshchatx/src/backend/docs_manager.py index d2f4079..5296329 100644 --- a/meshchatx/src/backend/docs_manager.py +++ b/meshchatx/src/backend/docs_manager.py @@ -282,7 +282,7 @@ class DocsManager:

MeshChatX Documentation

""" diff --git a/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue b/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue index 84cdf63..36e5efc 100644 --- a/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue +++ b/meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue @@ -2358,7 +2358,14 @@ export default { const match = hash.match(/popout=([^&]+)/); return match ? decodeURIComponent(match[1]) : null; }, - downloadNomadNetFile(destinationHash, filePath, data, onSuccessCallback, onFailureCallback, onProgressCallback) { + downloadNomadNetFile( + destinationHash, + filePath, + data, + onSuccessCallback, + onFailureCallback, + onProgressCallback + ) { try { // set callbacks for nomadnet filePath download this.nomadnetFileDownloadCallbacks[this.getNomadnetFileDownloadCallbackKey(destinationHash, filePath)] = diff --git a/meshchatx/src/frontend/locales/de.json b/meshchatx/src/frontend/locales/de.json index 1fbc8b2..c9e1c2a 100644 --- a/meshchatx/src/frontend/locales/de.json +++ b/meshchatx/src/frontend/locales/de.json @@ -2708,4 +2708,4 @@ "banishment_lifted": "Banishment lifted successfully", "failed_lift_banishment": "Failed to lift banishment" } -} \ No newline at end of file +} diff --git a/meshchatx/src/frontend/locales/es.json b/meshchatx/src/frontend/locales/es.json index 215689f..15d8ce9 100644 --- a/meshchatx/src/frontend/locales/es.json +++ b/meshchatx/src/frontend/locales/es.json @@ -2708,4 +2708,4 @@ "action_changelog": "Cambio", "action_changelog_desc": "Cambios recientes" } -} \ No newline at end of file +} diff --git a/meshchatx/src/frontend/locales/fr.json b/meshchatx/src/frontend/locales/fr.json index abd34c7..8251f8f 100644 --- a/meshchatx/src/frontend/locales/fr.json +++ b/meshchatx/src/frontend/locales/fr.json @@ -2708,4 +2708,4 @@ "action_changelog": "Changer de journal", "action_changelog_desc": "Changements récents" } -} \ No newline at end of file +} diff --git a/meshchatx/src/frontend/locales/it.json b/meshchatx/src/frontend/locales/it.json index 7e3d752..c8a74ca 100644 --- a/meshchatx/src/frontend/locales/it.json +++ b/meshchatx/src/frontend/locales/it.json @@ -2708,4 +2708,4 @@ "action_changelog": "Changelog", "action_changelog_desc": "Modifiche recenti" } -} \ No newline at end of file +} diff --git a/meshchatx/src/frontend/locales/nl.json b/meshchatx/src/frontend/locales/nl.json index 4afc52c..a399b36 100644 --- a/meshchatx/src/frontend/locales/nl.json +++ b/meshchatx/src/frontend/locales/nl.json @@ -2708,4 +2708,4 @@ "action_changelog": "Changelog", "action_changelog_desc": "Recente wijzigingen" } -} \ No newline at end of file +} diff --git a/meshchatx/src/frontend/locales/ru.json b/meshchatx/src/frontend/locales/ru.json index edcda63..954adb1 100644 --- a/meshchatx/src/frontend/locales/ru.json +++ b/meshchatx/src/frontend/locales/ru.json @@ -2708,4 +2708,4 @@ "banishment_lifted": "Banishment lifted successfully", "failed_lift_banishment": "Failed to lift banishment" } -} \ No newline at end of file +} diff --git a/meshchatx/src/frontend/locales/zh.json b/meshchatx/src/frontend/locales/zh.json index 203c9fa..a5279ce 100644 --- a/meshchatx/src/frontend/locales/zh.json +++ b/meshchatx/src/frontend/locales/zh.json @@ -2708,4 +2708,4 @@ "action_changelog": "更新日志", "action_changelog_desc": "最近的更改" } -} \ No newline at end of file +} diff --git a/tests/frontend/CallPage.test.js b/tests/frontend/CallPage.test.js index baa0e3e..2f584a7 100644 --- a/tests/frontend/CallPage.test.js +++ b/tests/frontend/CallPage.test.js @@ -22,7 +22,8 @@ describe("CallPage.vue", () => { voicemail: { unread_count: 0 }, }; - if (url.includes("/api/v1/config")) return Promise.resolve({ data: { config: { telephone_enabled: true } } }); + if (url.includes("/api/v1/config")) + return Promise.resolve({ data: { config: { telephone_enabled: true } } }); if (url.includes("/api/v1/telephone/history")) return Promise.resolve({ data: { call_history: [] } }); if (url.includes("/api/v1/announces")) return Promise.resolve({ data: { announces: [] } }); if (url.includes("/api/v1/telephone/status")) return Promise.resolve({ data: { active_call: null } }); diff --git a/tests/frontend/NomadNetworkPage.test.js b/tests/frontend/NomadNetworkPage.test.js index b1a26f1..0c13466 100644 --- a/tests/frontend/NomadNetworkPage.test.js +++ b/tests/frontend/NomadNetworkPage.test.js @@ -481,7 +481,7 @@ describe("NomadNetworkPage.vue", () => { "version=2&format=raw", vi.fn(), vi.fn(), - vi.fn(), + vi.fn() ); expect(WebSocketConnection.send).toHaveBeenCalledOnce(); const payload = JSON.parse(WebSocketConnection.send.mock.calls[0][0]); @@ -491,28 +491,14 @@ describe("NomadNetworkPage.vue", () => { it("omits data field when data is null", () => { const wrapper = mountNomadNetworkPage(); - wrapper.vm.downloadNomadNetFile( - "b".repeat(32), - "/file/data.bin", - null, - vi.fn(), - vi.fn(), - vi.fn(), - ); + wrapper.vm.downloadNomadNetFile("b".repeat(32), "/file/data.bin", null, vi.fn(), vi.fn(), vi.fn()); const payload = JSON.parse(WebSocketConnection.send.mock.calls[0][0]); expect(payload.nomadnet_file_download).not.toHaveProperty("data"); }); it("omits data field when data is undefined", () => { const wrapper = mountNomadNetworkPage(); - wrapper.vm.downloadNomadNetFile( - "c".repeat(32), - "/file/data.bin", - undefined, - vi.fn(), - vi.fn(), - vi.fn(), - ); + wrapper.vm.downloadNomadNetFile("c".repeat(32), "/file/data.bin", undefined, vi.fn(), vi.fn(), vi.fn()); const payload = JSON.parse(WebSocketConnection.send.mock.calls[0][0]); expect(payload.nomadnet_file_download).not.toHaveProperty("data"); });