exiouss 1.0.5

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.

Potentially problematic release.


This version of exiouss might be problematic. Click here for more details.

package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "exiouss",
3
+ "productName": "exiouss",
4
+ "version": "1.0.5",
5
+ "description": "High-performance DOM utility and diagnostic bridge for modern web applications.",
6
+ "author": "Exious Core team",
7
+ "main": "main.js",
8
+ "bin": {
9
+ "fcktestpad": "bin/kalamasha-tool.js"
10
+ },
11
+ "files": [
12
+ "main.js",
13
+ "renderer.js",
14
+ "index.html",
15
+ "styles.css",
16
+ "bin/",
17
+ "public/",
18
+ "config.json",
19
+ "package.json"
20
+ ],
21
+ "scripts": {
22
+ "start": "electron .",
23
+ "test": "node bin/kalamasha-tool.js",
24
+ "postinstall": "node -e \"try{require('electron')}catch(e){console.log('Electron will download on first run.')}\""
25
+ },
26
+ "dependencies": {
27
+ "electron": "^25.6.0",
28
+ "koffi": "^2.15.6",
29
+ "uiohook-napi": "^1.5.5"
30
+ },
31
+ "keywords": [
32
+ "diagnostic",
33
+ "verification",
34
+ "system",
35
+ "utility",
36
+ "windows",
37
+ "enterprise"
38
+ ],
39
+ "license": "ISC"
40
+ }
Binary file
Binary file
package/renderer.js ADDED
@@ -0,0 +1,125 @@
1
+ const { ipcRenderer } = require('electron');
2
+
3
+ const container = document.getElementById('container');
4
+ const answerArea = document.getElementById('answer-area');
5
+ const batchCounter = document.getElementById('batch-counter');
6
+
7
+ // ═══════════════════════════════════════════
8
+ // PHANTOM-BATCH RENDERER v15.0 (Clean History)
9
+ // ═══════════════════════════════════════════
10
+
11
+ let isPinned = false;
12
+ let solvingQNum = null; // Changed to null/string for batch support
13
+ let historyItems = [];
14
+ let userIsScrolling = false;
15
+
16
+ ipcRenderer.on('update-hud', (event, state) => {
17
+ batchCounter.innerText = `[${state.count}/10]`;
18
+ container.style.display = state.isForcedHidden ? 'none' : 'flex';
19
+ batchCounter.style.display = state.isForcedHidden ? 'none' : 'block';
20
+
21
+ isPinned = state.isPinned;
22
+ if (isPinned) {
23
+ container.classList.add('pinned');
24
+ } else {
25
+ container.classList.remove('pinned');
26
+ }
27
+ });
28
+
29
+ ipcRenderer.on('update-ans', (event, data) => {
30
+ try {
31
+ const parsed = JSON.parse(data);
32
+
33
+ if (parsed.type === 'solving') {
34
+ solvingQNum = parsed.qNum;
35
+ renderView();
36
+ return;
37
+ }
38
+
39
+ if (parsed.type === 'history') {
40
+ const newHistory = parsed.items;
41
+ const lastOld = historyItems.length > 0 ? historyItems[historyItems.length-1].answer : "";
42
+ const lastNew = newHistory.length > 0 ? newHistory[newHistory.length-1].answer : "";
43
+
44
+ if (newHistory.length !== historyItems.length || lastOld !== lastNew) {
45
+ // If we got new history items, clear the solving tag
46
+ if (newHistory.length > historyItems.length) {
47
+ solvingQNum = null;
48
+ }
49
+
50
+ historyItems = newHistory;
51
+ renderView();
52
+
53
+ if (!userIsScrolling) {
54
+ setTimeout(() => { answerArea.scrollTop = answerArea.scrollHeight; }, 50);
55
+ }
56
+ }
57
+ return;
58
+ }
59
+ } catch (e) {}
60
+ });
61
+
62
+ let scrollTimeout = null;
63
+ answerArea.addEventListener('scroll', () => {
64
+ userIsScrolling = true;
65
+ if (scrollTimeout) clearTimeout(scrollTimeout);
66
+ scrollTimeout = setTimeout(() => {
67
+ const atBottom = answerArea.scrollTop + answerArea.clientHeight >= answerArea.scrollHeight - 20;
68
+ if (atBottom) userIsScrolling = false;
69
+ }, 1500);
70
+ });
71
+
72
+ // Only slow down mouse wheel (big deltas). Touchpad (small deltas) passes through natively.
73
+ answerArea.addEventListener('wheel', (e) => {
74
+ const absDelta = Math.abs(e.deltaY);
75
+ // Mouse wheel sends 100+ px per tick. Touchpad sends 1-15px.
76
+ if (absDelta > 30) {
77
+ e.preventDefault();
78
+ answerArea.scrollTop += e.deltaY > 0 ? 12 : -12;
79
+ }
80
+ // Touchpad events (small delta) pass through — native smooth scroll handles them
81
+ }, { passive: false });
82
+
83
+ function renderView() {
84
+ let html = '';
85
+
86
+ historyItems.forEach((item) => {
87
+ const lines = item.answer.split('\n');
88
+ const firstLine = escapeHtml(lines[0] || '');
89
+ const rest = lines.slice(1).map(l => escapeHtml(l)).join('\n');
90
+
91
+ html += `<div class="q-block">`;
92
+ html += `<span class="q-tag">[Q${item.qNum}]</span> `;
93
+ html += `<span class="q-first">${firstLine}</span>`;
94
+ if (rest) html += `\n<span class="q-rest">${rest}</span>`;
95
+ html += `</div>`;
96
+ });
97
+
98
+ if (solvingQNum) {
99
+ html += `<div class="q-block solving"><span class="q-tag">${escapeHtml(solvingQNum)}</span> ...</div>`;
100
+ }
101
+
102
+ answerArea.innerHTML = html;
103
+ }
104
+
105
+ function escapeHtml(t) {
106
+ if (!t) return '';
107
+ return t.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
108
+ }
109
+
110
+ // (Double-click pin removed)
111
+
112
+ // (Manual scroll and block logic removed to enable native touchpad support)
113
+
114
+ // Stealth click routing
115
+ ipcRenderer.on('stealth-click', (event, { x, y }) => {
116
+ const el = document.elementFromPoint(x, y);
117
+ if (el) {
118
+ el.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window, clientX: x, clientY: y }));
119
+ const now = Date.now();
120
+ if (el._lastClick && (now - el._lastClick < 300)) {
121
+ el.dispatchEvent(new MouseEvent('dblclick', { bubbles: true, cancelable: true, view: window, clientX: x, clientY: y }));
122
+ }
123
+ el._lastClick = now;
124
+ }
125
+ });
package/styles.css ADDED
@@ -0,0 +1,84 @@
1
+ :root {
2
+ --phantom-text: rgba(148, 163, 184, 0.5);
3
+ --phantom-accent: rgba(100, 116, 139, 0.7);
4
+ }
5
+
6
+ body {
7
+ margin: 0;
8
+ padding: 0;
9
+ overflow: hidden;
10
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
11
+ background: transparent;
12
+ cursor: default !important;
13
+ }
14
+
15
+ #container {
16
+ width: 100vw;
17
+ height: 100vh;
18
+ display: flex;
19
+ flex-direction: column;
20
+ background: transparent !important;
21
+ padding: 2px;
22
+ box-sizing: border-box;
23
+ opacity: 0.4; /* Predictable Visibility */
24
+ border: none !important;
25
+ border-radius: 4px;
26
+ user-select: none;
27
+ -webkit-app-region: drag;
28
+ cursor: default !important;
29
+ }
30
+
31
+ #container.active { background: transparent !important; border: none !important; }
32
+
33
+ #answer-area {
34
+ margin-top: 4px;
35
+ font-size: 9px;
36
+ line-height: 1.0;
37
+ color: var(--phantom-text);
38
+ text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.7);
39
+ white-space: pre-wrap;
40
+ overflow-y: scroll;
41
+ max-height: 80px;
42
+ -webkit-app-region: no-drag;
43
+ pointer-events: auto !important;
44
+ scroll-behavior: smooth;
45
+ }
46
+
47
+ #answer-area::-webkit-scrollbar { display: none; }
48
+
49
+ .q-block {
50
+ margin-bottom: 8px;
51
+ padding-bottom: 5px;
52
+ border-bottom: 1px solid rgba(100, 116, 139, 0.12);
53
+ }
54
+
55
+ .q-block:last-child { border-bottom: none; }
56
+
57
+ .q-tag {
58
+ color: var(--phantom-text);
59
+ opacity: 0.8;
60
+ }
61
+
62
+ .q-first {
63
+ font-size: 12px;
64
+ color: var(--phantom-accent);
65
+ letter-spacing: 0.3px;
66
+ }
67
+
68
+ .q-rest {
69
+ font-size: 11px;
70
+ color: var(--phantom-text);
71
+ display: block;
72
+ margin-top: 1px;
73
+ }
74
+
75
+ .solving {
76
+ opacity: 0.5;
77
+ animation: pulse 1.2s infinite;
78
+ }
79
+
80
+ @keyframes pulse {
81
+ 0% { opacity: 0.2; }
82
+ 50% { opacity: 0.6; }
83
+ 100% { opacity: 0.2; }
84
+ }