pywebexec 1.5.10__tar.gz → 1.5.12__tar.gz

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.
Files changed (48) hide show
  1. {pywebexec-1.5.10/pywebexec.egg-info → pywebexec-1.5.12}/PKG-INFO +1 -1
  2. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/css/style.css +23 -5
  3. pywebexec-1.5.12/pywebexec/static/images/running.svg +1 -0
  4. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/popup.js +8 -1
  5. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/script.js +9 -3
  6. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/templates/index.html +1 -0
  7. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/templates/popup.html +1 -0
  8. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/version.py +2 -2
  9. {pywebexec-1.5.10 → pywebexec-1.5.12/pywebexec.egg-info}/PKG-INFO +1 -1
  10. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec.egg-info/SOURCES.txt +1 -1
  11. pywebexec-1.5.10/pywebexec/static/images/running.gif +0 -0
  12. {pywebexec-1.5.10 → pywebexec-1.5.12}/.github/workflows/python-publish.yml +0 -0
  13. {pywebexec-1.5.10 → pywebexec-1.5.12}/.gitignore +0 -0
  14. {pywebexec-1.5.10 → pywebexec-1.5.12}/LICENSE +0 -0
  15. {pywebexec-1.5.10 → pywebexec-1.5.12}/README.md +0 -0
  16. {pywebexec-1.5.10 → pywebexec-1.5.12}/pyproject.toml +0 -0
  17. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/__init__.py +0 -0
  18. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/pywebexec.py +0 -0
  19. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/css/Consolas NF.ttf +0 -0
  20. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/css/xterm.css +0 -0
  21. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/aborted.svg +0 -0
  22. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/copy.svg +0 -0
  23. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/copy_ok.svg +0 -0
  24. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/down-arrow.svg +0 -0
  25. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/failed.svg +0 -0
  26. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/favicon.svg +0 -0
  27. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/font-decrease.svg +0 -0
  28. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/font-increase.svg +0 -0
  29. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/pause.svg +0 -0
  30. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/popup.svg +0 -0
  31. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/resume.svg +0 -0
  32. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/images/success.svg +0 -0
  33. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/commands.js +0 -0
  34. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/LICENSE +0 -0
  35. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/addon-canvas.js +0 -0
  36. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/addon-canvas.js.map +0 -0
  37. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/addon-fit.js +0 -0
  38. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/addon-fit.js.map +0 -0
  39. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/addon-unicode11.js +0 -0
  40. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/addon-unicode11.js.map +0 -0
  41. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/xterm.js +0 -0
  42. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/static/js/xterm/xterm.js.map +0 -0
  43. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec/templates/__init__.py +0 -0
  44. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec.egg-info/dependency_links.txt +0 -0
  45. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec.egg-info/entry_points.txt +0 -0
  46. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec.egg-info/requires.txt +0 -0
  47. {pywebexec-1.5.10 → pywebexec-1.5.12}/pywebexec.egg-info/top_level.txt +0 -0
  48. {pywebexec-1.5.10 → pywebexec-1.5.12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pywebexec
3
- Version: 1.5.10
3
+ Version: 1.5.12
4
4
  Summary: Simple Python HTTP Exec Server
5
5
  Home-page: https://github.com/joknarf/pywebexec
6
6
  Author: Franck Jouvanceau
@@ -83,6 +83,7 @@ form {
83
83
  display: inline-block;
84
84
  width: 16px;
85
85
  height: 16px;
86
+ min-width: 16px;
86
87
  margin-right: 5px;
87
88
  background-size: contain;
88
89
  background-repeat: no-repeat;
@@ -95,7 +96,7 @@ form {
95
96
  vertical-align: bottom;
96
97
  }
97
98
  .status-running {
98
- background-image: url("/static/images/running.gif")
99
+ background-image: url("/static/images/running.svg")
99
100
  }
100
101
  .status-success {
101
102
  background-image: url("/static/images/success.svg")
@@ -254,16 +255,18 @@ body.dimmed * {
254
255
  transform: translate(-50%, -50%);
255
256
  }
256
257
  /* allow wide chars in terminal */
258
+ /*
257
259
  span {
258
260
  letter-spacing: 0px !important;
259
261
  margin-right: -0.17px;
260
262
  margin-left: -0.09px
261
263
  }
264
+ */
262
265
  .slider-container {
263
266
  display: flex;
264
267
  align-items: center;
265
- gap: 10px;
266
- margin-top: 10px;
268
+ gap: 7px;
269
+ margin-top: 5px;
267
270
  }
268
271
  #outputSlider {
269
272
  width: 100%;
@@ -324,10 +327,11 @@ span {
324
327
  .pause-resume-button {
325
328
  background-color: transparent;
326
329
  border: none;
327
- padding: 0;
328
- width: 24px;
330
+ /*padding: 0;*/
331
+ min-width: 24px;
329
332
  height: 24px;
330
333
  cursor: pointer;
334
+ flex-shrink: 0;
331
335
  }
332
336
 
333
337
 
@@ -345,3 +349,17 @@ span {
345
349
  pointer-events: none;
346
350
  }
347
351
 
352
+ .command-info {
353
+ display: inline-block;
354
+ padding: 5px 10px 5px 10px;
355
+ background-color: #ddd;
356
+ max-width: 300px;
357
+ white-space: nowrap;
358
+ border-radius: 5px;
359
+ overflow: hidden;
360
+ text-overflow: ellipsis;
361
+ flex-shrink: 0;
362
+ font-family: Consolas NF, monospace;
363
+ font-size: 13px;
364
+ }
365
+
@@ -0,0 +1 @@
1
+ <svg fill="#2b9753" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" stroke="#2b9753" stroke-width="0.00024000000000000003"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><path d="m0 12c0-6.627 5.373-12 12-12s12 5.373 12 12-5.373 12-12 12c-6.624-.008-11.992-5.376-12-11.999zm2.4 0c0 5.302 4.298 9.6 9.6 9.6s9.6-4.298 9.6-9.6-4.298-9.6-9.6-9.6c-5.299.006-9.594 4.301-9.6 9.599v.001zm4 0c0-3.093 2.507-5.6 5.6-5.6s5.6 2.507 5.6 5.6-2.507 5.6-5.6 5.6c-3.093 0-5.6-2.507-5.6-5.6z"></path></g></svg>
@@ -109,14 +109,17 @@ async function fetchOutput(url) {
109
109
  }
110
110
  nextOutputLink = data.links.next;
111
111
  if (data.status != 'running') {
112
- document.title = document.title.replace('[running]',`[${data.status}]`);
113
112
  clearInterval(outputInterval);
113
+ document.title = document.title.replace('[running]',`[${data.status}]`);
114
114
  toggleButton.style.display = 'none';
115
+ document.getElementById('commandStatus').classList.remove('status-running');
116
+ document.getElementById('commandStatus').classList.add(`status-${data.status}`);
115
117
  } else {
116
118
  toggleButton.style.display = 'block';
117
119
  const title = extractTitle(data.output);
118
120
  if (title) {
119
121
  document.title = `${title} - [running]`;
122
+ document.getElementById('commandInfo').innerHTML = `<span id="commandStatus" class="status-icon status-running"></span>${title}`;
120
123
  }
121
124
  }
122
125
  }
@@ -141,6 +144,10 @@ async function viewOutput(command_id) {
141
144
  return;
142
145
  }
143
146
  const data = await response.json();
147
+ const commandInfo = document.getElementById('commandInfo');
148
+ const command = `${data.command.replace(/^\.\//, '')} ${data.params.join(' ')}`;
149
+ commandInfo.innerHTML = `<span id="commandStatus" class="status-icon status-${data.status}"></span>${command}`;
150
+ commandInfo.setAttribute('title', command);
144
151
  document.title = `${data.command} ${data.params.join(' ')} - [${data.status}]`;
145
152
  if (data.command == 'term')
146
153
  terminal.options.cursorInactiveStyle = 'outline';
@@ -196,12 +196,14 @@ async function fetchOutput(url) {
196
196
  if (data.status != 'running') {
197
197
  clearInterval(outputInterval);
198
198
  toggleButton.style.display = 'none';
199
+ document.getElementById('commandStatus').classList.remove('status-running');
200
+ document.getElementById('commandStatus').classList.add(`status-${data.status}`);
199
201
  } else {
200
202
  toggleButton.style.display = 'block';
201
- /*const title = extractTitle(data.output);
203
+ const title = extractTitle(data.output);
202
204
  if (title) {
203
- document.title = title;
204
- }*/
205
+ document.getElementById('commandInfo').innerHTML = `<span id="commandStatus" class="status-icon status-running"></span>${title}`;
206
+ }
205
207
  }
206
208
  }
207
209
  } catch (error) {
@@ -225,6 +227,10 @@ async function viewOutput(command_id) {
225
227
  return;
226
228
  }
227
229
  const data = await response.json();
230
+ const commandInfo = document.getElementById('commandInfo');
231
+ const command = `${data.command.replace(/^\.\//, '')} ${data.params.join(' ')}`;
232
+ commandInfo.innerHTML = `<span id="commandStatus" class="status-icon status-${data.status}"></span>${command}`;
233
+ commandInfo.setAttribute('title', command);
228
234
  if (data.command == 'term')
229
235
  terminal.options.cursorInactiveStyle = 'outline';
230
236
  else
@@ -51,6 +51,7 @@
51
51
  <button id="toggleFetch" class="pause-resume-button pause"></button>
52
52
  <button id="decreaseFontSize" class="font-size-button font-decrease"></button>
53
53
  <button id="increaseFontSize" class="font-size-button font-increase"></button>
54
+ <span id="commandInfo" class="command-info"></span>
54
55
  </div>
55
56
  <script src="/static/js/xterm/xterm.js"></script>
56
57
  <script src="/static/js/xterm/addon-canvas.js"></script>
@@ -19,6 +19,7 @@
19
19
  <button id="toggleFetch" class="pause-resume-button pause"></button>
20
20
  <button id="decreaseFontSize" class="font-size-button font-decrease"></button>
21
21
  <button id="increaseFontSize" class="font-size-button font-increase"></button>
22
+ <span id="commandInfo" class="command-info"></span>
22
23
  </div>
23
24
  <script src="/static/js/xterm/xterm.js"></script>
24
25
  <script src="/static/js/xterm/addon-canvas.js"></script>
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.5.10'
16
- __version_tuple__ = version_tuple = (1, 5, 10)
15
+ __version__ = version = '1.5.12'
16
+ __version_tuple__ = version_tuple = (1, 5, 12)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pywebexec
3
- Version: 1.5.10
3
+ Version: 1.5.12
4
4
  Summary: Simple Python HTTP Exec Server
5
5
  Home-page: https://github.com/joknarf/pywebexec
6
6
  Author: Franck Jouvanceau
@@ -27,7 +27,7 @@ pywebexec/static/images/font-increase.svg
27
27
  pywebexec/static/images/pause.svg
28
28
  pywebexec/static/images/popup.svg
29
29
  pywebexec/static/images/resume.svg
30
- pywebexec/static/images/running.gif
30
+ pywebexec/static/images/running.svg
31
31
  pywebexec/static/images/success.svg
32
32
  pywebexec/static/js/commands.js
33
33
  pywebexec/static/js/popup.js
File without changes
File without changes
File without changes
File without changes
File without changes