> Tá athbhreithniú teanga ar an aistriúchán seo ar siúl. Má tá sliocht doiléir, féach ar an [mbuntéacs Béarla](https://www.sm.ch-j.eu/docs/i18n/en/remote-editor-latency.md). # Cianshábháil eagarthóir agus monatóireacht folaigh ## Cúiseanna forúsáideoir Uasluchtaigh an t-eagarthóir roimhe seo a chomhad oibre isteach i máthairchomhadlann na sprice, agus ní féidir é a scríobh go minic ag an gceann SSH Cuntas faoi `/etc` nó `/var`. SFTP athainmniú sholáthair aon chosán sudo údaraithe, seiceáil coimhlinte bunlíne, fíorú meiteashonraí slándála nó semantics forscríobh iontaofa. A láimhseálaí earráid scriosadh an chóip shealadach, a bhaint ábhar a ghnóthú fiú nuair a bhí críochnaithe éiginnte. Stádas an tseisiúin nochta roimhe seo ach staid an cheangail. Ní raibh aon ICMP ná fíordheimhnithe SSH tomhas freagartha bheathú an táscaire críochfoirt. ## Sábháil an prótacal 1. A seasta SSH cúntóir osclaíonn rialta, comhad aon- nasc ag baint úsáide as tuairisceoir-gaol oibríochtaí agus `O_NOFOLLOW` le gach comhpháirt conaire. Gabhann sé an t-ábhar, SHA-256 hash, gléas / inode, UID, GID, giotán cead iomlán, nanasecond modhnú / athrú amanna agus gach tréithe inléite leathnaithe. verifies Croí an hash agus decodes dian UTF-8, a chaomhnú BOM. Faigheann gach cáipéis teimhneach `editId`, raon feidhme a breiseán, seisiún teirminéil agus féiniúlacht freastalaí. 2. Réitíonn oibríocht ullmhúcháin gan údarú an chuntais fíordheimhnithe baile trí `pwd.getpwuid(os.getuid())`, cruthaíonn `$HOME/ch-j-sm/` leis an modh `0700` agus cruthaíonn sé príobháideach, iris aisghabháil eisiach. Diúltaítear baile, spás oibre nascleanúna, nó spás oibre atá ar úinéireacht ag cuntas eile. 3. Bun- uasluchtú i bhfolach, randamach 128- giotán `.tmp` comhad oibre trí SFTP le cruthú eisiach (`wx`), modh `0600` agus teorainn ama seasca dara cainéal / uaslódála. Tá an sprioc, bonnlíne bunaidh agus obair ionchais hash; tá sé aon dintiúir. 4. **One SSH exec fheidhmíonn an críochnú iomlán**, optionally tríd an seiceadóir sudo atá ann cheana. Osclaíonn an cúntóir go sábháilte agus cuireann sé an chóip oibre príobháideach agus flushes sé. Glasaíonn sé an t-ionnóid bunaidh, seiceálacha a bonnlíne, cruthaíonn sé comhad scríbe eisiach in aice leis an sprioc, scríobhann gach ábhar, feidhm agus verifies meiteashonraí, seiceálacha an bunaidh arís, agus flushes an athsholáthar. 5. Tagann an t-eolaire céanna `os.replace` in ionad an sprioc. An máthair Tá eolaire flushed agus an cosán deiridh, hash, indea agus meiteashonraí a fhíorú. Fanann an bhunchonair ar fáil go dtí go n- ionadaítear é. Riamh Tá an comhad oibre ar athraíodh a ionad ar fud córais comhad agus tá sé as oifig ag críochnú. 6. Tar éis go bhfaigheann Core rath fíoraithe, Athsheiceáil glanta ar leith an deiridh ábhar agus meiteashonraí slándála roimh bhaint an comhad oibre agus iris. Tuairiscíonn teip glanta fós a shábháil deimhnithe le `recoveryAvailable: true`. Theip ar uasluchtú, theip ar sudo, coimhlint, earráid mheiteashonraí nó teipthe coimeádann athsholáthar an bhunábhar agus aon ábhar céimnithe. Aithnítear uaslódálacha neamhiomlána mar sin agus ní féidir iad a aisghabháil mar dhoiciméad curtha in eagar iomlán. Caillte SSH cumarsáid, stádas scoir ar iarraidh, timeouts agus torthaí críochnú gan choinne a thuairisciú mar **anaithnid**, riamh mar a shábháil. Blocanna Croí eile a shábháil ar dhoiciméad éiginnte; níl aon retry athsholáthair uathoibríoch. ## Meiteashonraí, pribhléidí agus teorainneacha sábháilteachta Caomhnaíonn agus déanann an cúntóir UID, GID agus gach giotán ceada POSIX, lena n-áirítear clár inrite, setuid, giotáin daingnithe agus greamaitheacha. Atáirgeann sé tréithe Linux síneadh beart do bheart, lena n-áirítear POSIX ACLs, cumais agus lipéid SELinux. Tá úinéireacht agus ábhar comhaid leagtha roimh tréithe slándála, toisc gur féidir le scríobhann / a bhfuil cumas soiléir nó giotán cead speisialta. Baintear tréithe scríbe lotated atá as láthair ar an mbunleagan. Léiríonn an t-am Modhnuithe an scríobh nua agus nach bhfuil cóipe ó na bunaidh. Aitreabúid dholéite nó neamh- inchaite IMA / EVM sínithe diúltaíodh go sainráite toisc go mbeadh ábhar / isteach isteach isteach shíniú sláine neamhbhailí orthu. Comharthaí sa sprioc nó cosán baile, comhaid crua-nasctha agus comhaid neamhrialta diúltaíodh. Gan in áit nó níos laige SFTP Tá forscríobh fallback úsáidtear. Sábháil mar ghnáth- inscríofa SSH cuntas. Saves cosanta gá `{ sudo: true }` follasach; tá focal faire sudo roghnach do sudo gan focal faire. Tá na focail fhaire bailíochtaithe agus rite ach amháin ar an ghnáth- ionchur cainéal, riamh taobh istigh den ordú, iris, comhad oibre, logger nó earráid chianda. Bain úsáid as an seiceadóir fréamhacha díreach atá ann cheana féin mar fhréamh SSH. Níorbh fhéidir an bhunchóip agus an chóip oibre a fhágáil slán. Gach Sábháil mar fhréamh (forúsáideoir díreach SSH nó sudo) dhiúltú freisin sprioc eolairí /ancestors úinéireacht nó inscríofa ag cuntais eile, nó ag iompar rochtain ACL, seachas trusting paitname phribhléid rialú ag cuntas eile. Ritheann an cúntóir seasta le `python3 -I -B`: neamhaird sé cosáin úsáideora Python, an eolaire oibre agus úsáideoirí pacáistí suíomh, agus scríobhann aon bytecode. Conairí agus argóintí JSON shell-quoted in Core. Breiseáin riamh a fháil treallach SSH exec nó SFTP Láimhseálann. Bosca gainimh atá ann cheana féin, CSP, ceadanna a léiriú, Tá fíorú eochair óstach agus fíorú cothrom le dáta in úsáid. ## Breiseán API agus fágtha comhtháthú Monacó **An ar leithligh Monacó / Bainisteoir Comhad Chomhéadain as láthair ón Seiceáil. A chomhtháthú Chomhéadain, sudo leid, Ní raibh láimhseáil salach-buffer agus aistriúcháin a chur i bhfeidhm nó a thástáil anseo.** Is é an fhoinse breiseán bundled an breiseán Hash & Seiceáil an breiseán. Níor Cruthaíodh aon fhoinse Bhainisteoir Comhad ionadach. Tá na modhanna atá ann faoi láthair ar fáil fós. Modhanna/roghanna breise curtha i láthair ag an réamhlódáil agus am reatha seiceáilte ag an gaineamhbhosca: ```js const opened = await chjPlugin.files.readText(sessionId, path); // For a protected read, explicitly pass { sudo: true, sudoPassword }. const result = await chjPlugin.files.saveText(sessionId, path, editor.getValue(), { editId: opened.editId, sudo: true, // Include only after the user authorizes elevation. sudoPassword // Omit for passwordless sudo; never persist this value. }); if (result.ok && result.value.status === "saved") { // Mark this exact submitted editor version as saved. Later edits stay dirty. } else { // Keep the Monaco model dirty. Translate result.error.code/status. // result.error.recoveryId/recoveryPath identify retained working material. } await chjPlugin.files.closeText(opened.editId); const recovery = await chjPlugin.files.listRecovery(sessionId); const copy = await chjPlugin.files.readRecovery(sessionId, recoveryId); // Review copy.status and copy.text; open a fresh document before another save. await chjPlugin.files.cleanupRecovery(sessionId, recoveryId); // Cleanup rejects anything whose target is not currently confirmed. ``` Glacann modhanna aisghabhála deiridh roghnach `{ sudo: true, sudoPassword }` Éilíonn argóint nuair iniúchadh sprioc ingearchló. Coinníonn siad spás oibre an úsáideora fíordheimhnithe fiú nuair a fhorghníomhú trí sudo. Journals maireachtáil app atosú agus SSH athlonnú; riamh a ghnóthú redoes go huathoibríoch críochnú. Athbhreithniú maolán aisghafa in aghaidh sprioc úr oscailte roimh shábháil go sainráite é. `files.read` gardaí léann, iniúchadh agus a láimhseáil scaoileadh. `files.write` gardaí Sábhálann agus a ghnóthú glanadh. `writeText` diúltú fós do mhainneachtain plugins atá ann cheana; `saveText` a fhilleann struchtúr `{ ok, value/error }` clúdach mar gheall ar Electron titeann airíonna saincheaptha nuair a dhiúltaítear Earráid. Is féidir le oidhreacht trí argóint `writeText` úsáid a bhaint as an bonnlíne doiciméad amháin oscailte. Éilíonn doiciméid beo il le haghaidh an cosán céanna `editId`; glaonna oidhreacht débhríoch theipeann sábháilte in ionad roghnú doiciméad eile bonnlíne. Ba chóir do bhreiseáin láimhseáil gan úsáid a bhaint as. Ní mór don Chomhéadain seachtrach a thaispeáint shábháil láithreach, a choinneáil maoláin salach ar teip, thairiscint sudo ach amháin tar éis an cead / teipeanna fhíorú, coinbhleachtaí a thaispeáint gan overwriting, agus a thairiscint aisghabháil tar éis caillteanas nasc nó toradh anaithnid. Caithfidh sé na stáit sin a aistriú i Seicis, Gearmáinis agus i mBéarla. Cóip stáit molta: | State | Czech | German | English | | --- | --- | --- | --- | | Saving | Ukládání… | Wird gespeichert… | Saving… | | Confirmed | Uloženo | Gespeichert | Saved | | Failure | Uložení selhalo | Speichern fehlgeschlagen | Save failed | | Sudo required | Vyžadováno oprávnění sudo | sudo-Autorisierung erforderlich | Sudo authorization required | | Conflict | Původní soubor byl změněn | Originaldatei wurde geändert | Original file changed | | Disconnected | Spojení bylo přerušeno | Verbindung unterbrochen | Connection lost | | Unknown | Výsledek uložení není znám | Speicherergebnis unbekannt | Save result unknown | | Recovery | Obnova je dostupná | Wiederherstellung verfügbar | Recovery available | ## Sainmhínithe Lonrachta agus saolré **Ping** Is é an latency tuairiscíodh ag cliant-taobh iarbhír ICMP macalla freagra ar an IP réiteach in úsáid ag SSH. Croí agairt an clár inrite ping ardán asynchronously le eagar argóint seasta, gan Shell nó riachtanas tosaithe riarthóir. Linux, macOS (lena n-áirítear `ping6`) agus Windows roghnófar argóintí eatarthu féin. Blocáilte ICMP, clár inrite ar iarraidh, teorainn ama, aschur neamhbhailí nó uachtair-cheangal amháin Windows freagra a thabhairt, mar shampla `<1ms` luach gan aimsiú, ní uimhir invented é. **SSH RTT** is monatón é `performance.now()` fad socraithe `true` Theip ar fhíordheimhniú SSH cliant. Cuimsíonn sé cainéil thus, próiseáil freastalaí agus a sheachadadh fhreagra; nach bhfuil sé RTT líonra íon nó SSH Aga logála isteach. Míníonn an táscaire aistrithe tooltip an t-idirdhealú. Tosaíonn monatóireacht a luaithe a nascann an teirminéal. Probes reáchtáil i gcomhthráth agus asynchronously, le timeout iarratas cúig-dara / phróiseáil. Is é an sampla eile sceidealta dhá soicind tar éis a chríochnaíonn an sampla roimhe, forluí a chosc. Dícheangail tobscoir ICMP, timers nglanann, ceal ar feitheamh SSH obair agus glanann luachanna. Seiceálacha aitheantais Taifead cosc nasc roimh ré ó fhoilsiú tar éis athnascadh. Ní raibh an teip ICMP athruithe riamh SSH stát nasc. Taistealann Latenency laistigh den imeacht `state` atá ann cheana / `ssh:state` IPC íocload: ```js latency: { pingMs: 24.1, sshRttMs: 31.25, measuredAt: "…" } ``` Tá uimhreacha gan fáil `null`. Úsáideann an táscaire teirminéil dlúth milleasoicindí, logánta téacs agus lipéid Seicis/German/English. Seithí sé ar dhícheangal. Ní raibh gá le haon chumas breise chun forghníomhú rindreálaí nó iarratas IPC. ## Teorainneacha ama agus oibríochtúla - Rith ó `app/`: `npm ci`, ansin `npm test`. - Toradh deiridh logánta: **179 tástálacha; 163 rith, 0 teipthe, 16 @ info: tooltip**. Gach scip atá an Linux cásanna córais comhad ar na cásanna seo macOS óstríomhaire. D' éirigh le tiomsú error `npm ci`, Python agus `git diff --check`. - Clúdaíonn na tástálacha Core Sábhálann / aisghabháil, prótacal sudo agus focal faire rederate, fíor-Blaosc POSIX lua cosáin naimhdeach, coinbhleachtaí, uasluchtuithe, theip glanta, torthaí éiginnte, doiciméid comhthráthacha, ceadanna IPC agus saolré moill. - Linux tástáil an chórais comhad a úsáideann an pointe iontrála Python, le príobháideach cuntas tástála Lookup baile: úinéireacht/mode/xattrs, POSIX ACLs, nasc siombalacha / cruardlinks, FIFOs, uaslódáil agus meiteashonraí teipeanna, teipeanna athsholáthair, sprioc rásaí, torthaí iar-athshuíomh anaithnid agus aisghabháil. Úsáideann staighdiú traschóras `/dev/shm` agus córas comhad eile nuair atá ar fáil. Scip na tástálacha seo ar neamh-Linux ina hóstach ar iarraidh; go ndéanfar áiseanna ACL/comhad-comhaid ar iarraidh a dhíchóimeáil go sainráite. - Ritheann an Linux GitHub Gníomhartha phost ar an gcóras comhad iomlán agus athrá cásanna mar fhorúsáideoir. Níor seoladh an sreabhadh oibre seo ón chrann oibre. - Bailíochtú áitiúil a bhí ar macOS. Seiceáiladh comhréir fhoinse Python leis an díreach Uirlisí Líne Orduithe Python inrite. A fíor macOS loopback ICMP tobac a sheiceáil ais `0.071 ms`. Níl aon tóir iargúlta SSH freastalaí, Windows runtime, Linux rith ama, tástáladh imscaradh SELinux nó Monacó seachtracha Chomhéadain go háitiúil. - Tá gá le eagarthóireacht cianda téacs anois Linux agus Python 3 le tuairisceoir-ghaol tacaíocht córas comhad/xattr. Theip ar iarraidh ó ateangaire go sainráite. Diúltaíonn sé seo Core aon ghnó meiteashonraí neamhshábháilte, naisc agus cumraíochtaí eolaire. - Tá Glasáil comhairleach: Is féidir le próisis neamh-chomhoibriú cine fós sna caol eatramh idir an seiceáil bonnlíne is déanaí agus an t- athainmniú adamhach. Linux soláthairtí aon ábhar adamhach ginearálta-hash i gcomparáid-agus-áit oibriú. Seiceálacha a bhrath athruithe roimh an eatramh; choinnigh ag obair cóipeanna tacaíocht a ghnóthú ina dhiaidh sin. - Fanann sonraí a aisghabháil ar an gcuntas iargúlta go dtí go nglantar deimhnithe. gan chríochnú, Riamh iniamhnaithe agus uninsspectable irisí a chaitheamh ar ais go ciúin. Níl aon uathoibríoch a ghnóthú-comhad éag agus gan aon rogha forscríobh éigean. - `npm ci` tuairiscíodh 17 spleáchas torthaí iniúchta (9 measartha, 8 ard). Athrúchán seo nach n-athraíonn spleáchais nó samhail iontaobhais nuashonrú an iarratais. An t- úsáideoir a iarrtar a choinneáil ar athruithe sa chrann oibre atá ann faoi láthair, faoi láthair `feature/hash-checksum-plugin`; Rinneadh aon athrú brainse nó glanadh unbuild. ## Comhaid athraithe don tasc seo - `src/main/files/remoteFileService.js` - `src/main/files/remoteEditor.py` (nua) - `src/main/sessions/sessionManager.js` - `src/main/sessions/latencyMonitor.js` (nua) - `src/main/plugins/pluginRuntime.js` - `src/preload/pluginPreload.js` - `src/renderer/app.js` - `src/renderer/index.html` - `src/renderer/styles.css` - `src/renderer/i18n.js` - `test/remoteFileService.test.js` - `test/sessionManager.test.js` - `test/pluginRuntime.test.js` - `test/remoteEditor.test.js` (nua) - `test/remoteEditorProtocol.test.js` (nua) - `test/remoteEditorLinux.test.js` (nua) - `test/fixtures/remoteEditorLinux.py` (nua) - `test/latencyMonitor.test.js` (nua) - `README.md` - `docs/remote-editor-latency.md` (an comhad seo) - `../.github/workflows/remote-editor-tests.yml` (nua)