pcremotecommander 0.7.0-beta.10 → 0.7.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/pcremotecommander.cjs +35 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,4 +6,4 @@ Setup requests full computer control and opens a matching-code approval page on
|
|
|
6
6
|
|
|
7
7
|
This is a beta. It has not completed a production security or reliability review. Use an isolated workspace for testing.
|
|
8
8
|
|
|
9
|
-
Beta.
|
|
9
|
+
Beta.11 shows a green dot-matrix Welcome to PCRC banner once per setup/connect run, connects to the production service and removes the extra workflow-skills and transport messages from the terminal. A saved staging connection requires a fresh production matching-code approval. Explicit --gateway overrides are preserved. Production access is currently limited to the acceptance-test accounts.
|
|
@@ -8,9 +8,9 @@ const crypto=require('node:crypto');
|
|
|
8
8
|
const {pipeline}=require('node:stream/promises');
|
|
9
9
|
const {spawn,spawnSync}=require('node:child_process');
|
|
10
10
|
|
|
11
|
-
const version='0.7.0-beta.
|
|
12
|
-
const sha256='
|
|
13
|
-
const url='https://pc-remote-commander.pcremotecommander.workers.dev/downloads/windows/pcremotecommander-0.7.0-beta.
|
|
11
|
+
const version='0.7.0-beta.11';
|
|
12
|
+
const sha256='07c3782bd1c44f22ed827d55ffaac63c936ecd9d2bcc6fbc030806e0d46c6007';
|
|
13
|
+
const url='https://pc-remote-commander.pcremotecommander.workers.dev/downloads/windows/pcremotecommander-0.7.0-beta.11.tgz';
|
|
14
14
|
const maximumBytes=100*1024*1024;
|
|
15
15
|
|
|
16
16
|
function cacheRoot(env=process.env) {
|
|
@@ -85,16 +85,47 @@ function runtimeArgs(argv) {
|
|
|
85
85
|
if(!['setup','connect'].includes(action)||argv.includes('--gateway'))return argv;
|
|
86
86
|
return [action,...argv.slice(1),'--gateway','https://pc-remote-commander.pcremotecommander.workers.dev'];
|
|
87
87
|
}
|
|
88
|
+
function welcomeBanner(columns=80,color=false) {
|
|
89
|
+
const glyphs={
|
|
90
|
+
W:['10001','10001','10001','10101','10101','11011','10001'],
|
|
91
|
+
E:['11111','10000','10000','11110','10000','10000','11111'],
|
|
92
|
+
L:['10000','10000','10000','10000','10000','10000','11111'],
|
|
93
|
+
C:['01111','10000','10000','10000','10000','10000','01111'],
|
|
94
|
+
O:['01110','10001','10001','10001','10001','10001','01110'],
|
|
95
|
+
M:['10001','11011','10101','10101','10001','10001','10001'],
|
|
96
|
+
T:['11111','00100','00100','00100','00100','00100','00100'],
|
|
97
|
+
P:['11110','10001','10001','11110','10000','10000','10000'],
|
|
98
|
+
R:['11110','10001','10001','11110','10100','10010','10001'],
|
|
99
|
+
' ':['00000','00000','00000','00000','00000','00000','00000']
|
|
100
|
+
};
|
|
101
|
+
const groups=columns>=65?['WELCOME TO','PCRC']:['WELCOME','TO PCRC'];
|
|
102
|
+
const width=Math.max(...groups.map(text=>text.length*6-1));
|
|
103
|
+
const scale=columns>=width*2+4?2:1;
|
|
104
|
+
const border='+'+'-'.repeat(width*scale+2)+'+';
|
|
105
|
+
const lines=[border];
|
|
106
|
+
for(const text of groups){
|
|
107
|
+
lines.push('| '+' '.repeat(width*scale)+' |');
|
|
108
|
+
for(let row=0;row<7;row++){
|
|
109
|
+
const pixels=[...text].map(letter=>glyphs[letter][row]).join('0');
|
|
110
|
+
const rendered=[...pixels].map(pixel=>(pixel==='1'?'●':' ').repeat(scale)).join('');
|
|
111
|
+
const padding=Math.floor((width*scale-rendered.length)/2);
|
|
112
|
+
lines.push('| '+' '.repeat(padding)+rendered+' '.repeat(width*scale-padding-rendered.length)+' |');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
lines.push('| '+' '.repeat(width*scale)+' |',border);
|
|
116
|
+
return (color?'\x1b[92m':'')+lines.join('\n')+(color?'\x1b[0m':'');
|
|
117
|
+
}
|
|
88
118
|
async function main(argv=process.argv.slice(2)) {
|
|
89
119
|
if(Number(process.versions.node.split('.')[0])<20)throw Error('Node.js 20 or newer is required.');
|
|
90
120
|
if(['help','--help','-h'].includes(argv[0])) {
|
|
91
121
|
console.log('PC Remote Commander beta\n\nUsage: pcremotecommander [setup|connect|cli|doctor] [options]\nSetup downloads a pinned runtime, verifies its SHA-256, then starts pairing. Windows and Node.js 20+ are required.');
|
|
92
122
|
return;
|
|
93
123
|
}
|
|
124
|
+
if(['setup','connect'].includes(argv[0]??'connect'))console.log(welcomeBanner(process.stdout.columns??80,!!process.stdout.isTTY&&!process.env.NO_COLOR&&process.env.TERM!=='dumb'));
|
|
94
125
|
const entry=await ensurePayload();
|
|
95
126
|
const child=spawn(process.execPath,[entry,...runtimeArgs(argv)],{stdio:'inherit',windowsHide:false,shell:false});
|
|
96
127
|
child.on('error',error=>{console.error('PC Remote Commander runtime could not start: '+error.message);process.exitCode=1;});
|
|
97
128
|
child.on('exit',(code,signal)=>{process.exitCode=signal?130:code??1;});
|
|
98
129
|
}
|
|
99
130
|
if(require.main===module)main().catch(error=>{console.error('PC Remote Commander: '+error.message);process.exitCode=1;});
|
|
100
|
-
module.exports={cacheRoot,shaFile,verified,validateEntries,ensurePayload,runtimeArgs,main};
|
|
131
|
+
module.exports={cacheRoot,shaFile,verified,validateEntries,ensurePayload,runtimeArgs,welcomeBanner,main};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pcremotecommander",
|
|
3
|
-
"version": "0.7.0-beta.
|
|
3
|
+
"version": "0.7.0-beta.11",
|
|
4
4
|
"description": "PC Remote Commander Windows beta launcher; verifies a pinned full-control runtime and connects to the production service",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"bin": {
|