devicely 2.2.10 â 2.2.12
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 +40 -3
- package/bin/devicely.js +1 -1
- package/config/devices.conf +22 -6
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/commanderService.js +1 -0
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/doctor.js +1 -1
- package/lib/encryption.js +1 -1
- package/lib/executor.js +1 -1
- package/lib/frontend/asset-manifest.json +6 -6
- package/lib/frontend/index.html +1 -1
- package/lib/locatorStrategy.js +1 -0
- package/lib/logger.js +1 -1
- package/lib/package.json +1 -0
- package/lib/public/asset-manifest.json +13 -0
- package/lib/public/index.html +1 -0
- package/lib/public/index.html.bak +1 -0
- package/lib/public/static/css/main.1bbcfef2.css +1 -0
- package/lib/public/static/css/main.ed39ba12.css +2 -0
- package/lib/public/static/css/main.ed39ba12.css.map +1 -0
- package/lib/public/voice-test.html +156 -0
- package/lib/scriptLoader.js +1 -1
- package/lib/server.js +1 -1
- package/package.json +6 -3
- package/lib/aiProviders.js.backup +0 -301
- package/lib/frontend/static/css/main.23bd35c0.css +0 -2
- package/lib/frontend/static/css/main.23bd35c0.css.map +0 -1
- package/lib/frontend/static/js/main.81eae090.js +0 -3
- package/lib/frontend/static/js/main.81eae090.js.LICENSE.txt +0 -48
- package/lib/frontend/static/js/main.81eae090.js.map +0 -1
- package/lib/package-lock.json +0 -1678
- package/lib/server.js.bak +0 -3546
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files": {
|
|
3
|
+
"main.css": "/static/css/main.ed39ba12.css",
|
|
4
|
+
"main.js": "/static/js/main.c07c84ed.js",
|
|
5
|
+
"index.html": "/index.html",
|
|
6
|
+
"main.ed39ba12.css.map": "/static/css/main.ed39ba12.css.map",
|
|
7
|
+
"main.c07c84ed.js.map": "/static/js/main.c07c84ed.js.map"
|
|
8
|
+
},
|
|
9
|
+
"entrypoints": [
|
|
10
|
+
"static/css/main.ed39ba12.css",
|
|
11
|
+
"static/js/main.c07c84ed.js"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Devicely - AI-Powered Device Pool Management - Control your iOS device pool with intelligent automation"/><title>Devicely - AI-Powered Device Pool</title><style>@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}</style><script defer="defer" src="/static/js/main.c07c84ed.js"></script><link href="/static/css/main.ed39ba12.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Devicely - AI-Powered Device Pool Management - Control your iOS device pool with intelligent automation"/><title>Devicely - AI-Powered Device Pool</title><style>@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}</style><script defer="defer" src="/static/js/main.9932d65a.js?v=1771143178"></script><link href="/static/css/main.1bbcfef2.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.commander-mode-container{margin-bottom:10px}.stop-btn-compact{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:6px 16px;transition:all .2s}.stop-btn-compact:hover{box-shadow:0 3px 8px #f5576c66;transform:translateY(-1px)}.swap-btn-compact{height:auto!important;min-height:28px!important}.element-box{cursor:pointer;transition:all .2s ease-in-out}.element-box:hover rect{stroke-width:4;filter:brightness(1.3)}.screen-canvas{transition:transform .2s ease-in-out}.screen-canvas:active{transform:scale(.98)}.commander-canvas{position:relative}@media (prefers-color-scheme:dark){input[type=search],input[type=text]{background-color:#2d3748!important;color:#fff!important}input[type=search]::placeholder,input[type=text]::placeholder{color:#a0aec0!important}}@media (max-width:1200px){.screen-canvas-wrapper{max-width:400px}}@media (max-width:768px){.screen-canvas-wrapper{max-width:100%}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.15)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes glow{0%,to{box-shadow:0 0 5px #1890ff80}50%{box-shadow:0 0 20px #1890ffcc,0 0 30px #1890ff99}}.fade-in{animation:fadeIn .5s ease-out}.slide-in-right{animation:slideInRight .5s ease-out}.slide-in-left{animation:slideInLeft .5s ease-out}.scale-in{animation:scaleIn .4s cubic-bezier(.34,1.56,.64,1)}.pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.ping{animation:ping 2s cubic-bezier(0,0,.2,1) infinite}.bounce{animation:bounce 1s ease-in-out infinite}.float{animation:float 3s ease-in-out infinite}.shimmer{animation:shimmer 2s infinite;background:linear-gradient(90deg,#fff0 0,#ffffff4d 50%,#fff0);background-size:1000px 100%}.rotate{animation:rotate 1s linear}.glow{animation:glow 2s ease-in-out infinite}*{-webkit-tap-highlight-color:transparent}.smooth-transition{transition:all .3s cubic-bezier(.4,0,.2,1)}.smooth-hover:hover{box-shadow:0 10px 25px #00000026;transform:translateY(-2px)}.glass{background:#ffffff1a;border:1px solid #fff3}.glass,.glass-dark{backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%)}.glass-dark{background:#0003;border:1px solid #ffffff1a}.card-hover{transition:all .3s cubic-bezier(.4,0,.2,1)}.card-hover:hover{box-shadow:0 20px 40px #0003;transform:translateY(-4px) scale(1.02)}.ripple{overflow:hidden;position:relative}.ripple:after{background:#ffffff80;border-radius:50%;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s;width:0}.ripple:active:after{height:300px;width:300px}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#0000000d;border-radius:10px}::-webkit-scrollbar-thumb{background:#0000004d;border-radius:10px;-webkit-transition:all .3s ease;transition:all .3s ease}::-webkit-scrollbar-thumb:hover{background:#00000080}.skeleton{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#c8c8c84d 25%,#c8c8c880 50%,#c8c8c84d 75%);background-size:200% 100%;border-radius:8px}:focus-visible{border-radius:4px;outline:2px solid #1890ff99;outline-offset:2px}.no-select{-webkit-user-select:none;user-select:none}.gradient-text{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1890ff,#9254de);-webkit-background-clip:text;background-clip:text}.shadow-soft{box-shadow:0 2px 8px #00000014,0 4px 16px #00000014}.shadow-medium{box-shadow:0 4px 12px #0000001a,0 8px 24px #0000001a}.shadow-strong{box-shadow:0 8px 24px #00000026,0 16px 48px #00000026}.stagger-item{animation:fadeIn .5s ease-out forwards;opacity:0}.stagger-item:first-child{animation-delay:.05s}.stagger-item:nth-child(2){animation-delay:.1s}.stagger-item:nth-child(3){animation-delay:.15s}.stagger-item:nth-child(4){animation-delay:.2s}.stagger-item:nth-child(5){animation-delay:.25s}.stagger-item:nth-child(6){animation-delay:.3s}.stagger-item:nth-child(7){animation-delay:.35s}.stagger-item:nth-child(8){animation-delay:.4s}.micro-bounce:hover{animation:bounce .5s ease}.micro-rotate:hover{animation:rotate .5s ease}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
.commander-mode-container{margin-bottom:10px}.stop-btn-compact{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:6px 16px;transition:all .2s}.stop-btn-compact:hover{box-shadow:0 3px 8px #f5576c66;transform:translateY(-1px)}.swap-btn-compact{height:auto!important;min-height:28px!important}.element-box{cursor:pointer;transition:all .2s ease-in-out}.element-box:hover rect{stroke-width:4;filter:brightness(1.3)}.screen-canvas{transition:transform .2s ease-in-out}.screen-canvas:active{transform:scale(.98)}.commander-canvas{position:relative}@media (prefers-color-scheme:dark){input[type=search],input[type=text]{background-color:#2d3748!important;color:#fff!important}input[type=search]::placeholder,input[type=text]::placeholder{color:#a0aec0!important}}@media (max-width:1200px){.screen-canvas-wrapper{max-width:400px}}@media (max-width:768px){.screen-canvas-wrapper{max-width:100%}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.15)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes glow{0%,to{box-shadow:0 0 5px #1890ff80}50%{box-shadow:0 0 20px #1890ffcc,0 0 30px #1890ff99}}.fade-in{animation:fadeIn .5s ease-out}.slide-in-right{animation:slideInRight .5s ease-out}.slide-in-left{animation:slideInLeft .5s ease-out}.scale-in{animation:scaleIn .4s cubic-bezier(.34,1.56,.64,1)}.pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.ping{animation:ping 2s cubic-bezier(0,0,.2,1) infinite}.bounce{animation:bounce 1s ease-in-out infinite}.float{animation:float 3s ease-in-out infinite}.shimmer{animation:shimmer 2s infinite;background:linear-gradient(90deg,#fff0 0,#ffffff4d 50%,#fff0);background-size:1000px 100%}.rotate{animation:rotate 1s linear}.glow{animation:glow 2s ease-in-out infinite}*{-webkit-tap-highlight-color:transparent}.smooth-transition{transition:all .3s cubic-bezier(.4,0,.2,1)}.smooth-hover:hover{box-shadow:0 10px 25px #00000026;transform:translateY(-2px)}.glass{background:#ffffff1a;border:1px solid #fff3}.glass,.glass-dark{backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%)}.glass-dark{background:#0003;border:1px solid #ffffff1a}.card-hover{transition:all .3s cubic-bezier(.4,0,.2,1)}.card-hover:hover{box-shadow:0 20px 40px #0003;transform:translateY(-4px) scale(1.02)}.ripple{overflow:hidden;position:relative}.ripple:after{background:#ffffff80;border-radius:50%;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s;width:0}.ripple:active:after{height:300px;width:300px}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#0000000d;border-radius:10px}::-webkit-scrollbar-thumb{background:#0000004d;border-radius:10px;-webkit-transition:all .3s ease;transition:all .3s ease}::-webkit-scrollbar-thumb:hover{background:#00000080}.skeleton{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#c8c8c84d 25%,#c8c8c880 50%,#c8c8c84d 75%);background-size:200% 100%;border-radius:8px}:focus-visible{border-radius:4px;outline:2px solid #1890ff99;outline-offset:2px}.no-select{-webkit-user-select:none;user-select:none}.gradient-text{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1890ff,#9254de);-webkit-background-clip:text;background-clip:text}.shadow-soft{box-shadow:0 2px 8px #00000014,0 4px 16px #00000014}.shadow-medium{box-shadow:0 4px 12px #0000001a,0 8px 24px #0000001a}.shadow-strong{box-shadow:0 8px 24px #00000026,0 16px 48px #00000026}.stagger-item{animation:fadeIn .5s ease-out forwards;opacity:0}.stagger-item:first-child{animation-delay:.05s}.stagger-item:nth-child(2){animation-delay:.1s}.stagger-item:nth-child(3){animation-delay:.15s}.stagger-item:nth-child(4){animation-delay:.2s}.stagger-item:nth-child(5){animation-delay:.25s}.stagger-item:nth-child(6){animation-delay:.3s}.stagger-item:nth-child(7){animation-delay:.35s}.stagger-item:nth-child(8){animation-delay:.4s}.micro-bounce:hover{animation:bounce .5s ease}.micro-rotate:hover{animation:rotate .5s ease}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
|
|
2
|
+
/*# sourceMappingURL=main.ed39ba12.css.map*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/css/main.ed39ba12.css","mappings":"AAAA,0BACE,kBACF,CAEA,kBAEE,kDAA6D,CAE7D,WAAY,CACZ,iBAAkB,CAFlB,UAAY,CAKZ,cAAe,CAFf,cAAe,CACf,eAAgB,CANhB,gBAAiB,CAQjB,kBACF,CAEA,wBAEE,8BAA6C,CAD7C,0BAEF,CAEA,kBACE,qBAAuB,CACvB,yBACF,CCvBA,aAEE,cAAe,CADf,8BAEF,CAEA,wBAEE,cAAe,CADf,sBAEF,CAGA,eACE,oCACF,CAEA,sBACE,oBACF,CAGA,kBACE,iBACF,CAeA,mCACE,oCAGE,kCAAoC,CADpC,oBAEF,CAEA,8DAEE,uBACF,CACF,CAGA,0BACE,uBACE,eACF,CACF,CAEA,yBACE,uBACE,cACF,CACF,CC3DA,kBACE,GACE,SAAU,CACV,0BACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CAGA,wBACE,GACE,SAAU,CACV,0BACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CAGA,uBACE,GACE,SAAU,CACV,2BACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CAGA,mBACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,kBACF,CACF,CAGA,iBACE,MACE,SAAU,CACV,kBACF,CACA,IACE,UAAY,CACZ,qBACF,CACF,CAGA,gBACE,OAEE,SAAU,CADV,kBAEF,CACF,CAGA,kBACE,MACE,uBACF,CACA,IACE,2BACF,CACF,CAGA,mBACE,GACE,6BACF,CACA,GACE,4BACF,CACF,CAGA,kBACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAGA,iBACE,MACE,uBACF,CACA,IACE,0BACF,CACF,CAGA,gBACE,MACE,4BACF,CACA,IACE,gDACF,CACF,CAGA,SACE,6BACF,CAEA,gBACE,mCACF,CAEA,eACE,kCACF,CAEA,UACE,kDACF,CAEA,OACE,mDACF,CAEA,MACE,iDACF,CAEA,QACE,wCACF,CAEA,OACE,uCACF,CAEA,SAQE,6BAA8B,CAP9B,6DAKC,CACD,2BAEF,CAEA,QACE,0BACF,CAEA,MACE,sCACF,CAGA,EACE,uCACF,CAEA,mBACE,0CACF,CAEA,oBAEE,gCAA2C,CAD3C,0BAEF,CAGA,OACE,oBAAoC,CAGpC,sBACF,CAEA,mBALE,yCAA0C,CAC1C,iDASF,CALA,YACE,gBAA8B,CAG9B,0BACF,CAGA,YACE,0CACF,CAEA,kBAEE,4BAA0C,CAD1C,sCAEF,CAGA,QAEE,eAAgB,CADhB,iBAEF,CAEA,cAQE,oBAAoC,CADpC,iBAAkB,CANlB,UAAW,CAKX,QAAS,CAFT,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAMR,8BAAgC,CAChC,+BAAmC,CALnC,OAMF,CAEA,qBAEE,YAAa,CADb,WAEF,CAGA,oBAEE,WAAY,CADZ,UAEF,CAEA,0BACE,oBAA+B,CAC/B,kBACF,CAEA,0BACE,oBAA8B,CAC9B,kBAAmB,CACnB,+BAAyB,CAAzB,uBACF,CAEA,gCACE,oBACF,CAGA,UAQE,+BAAgC,CAPhC,2EAKC,CACD,yBAA0B,CAE1B,iBACF,CAGA,eAGE,iBAAkB,CAFlB,2BAA0C,CAC1C,kBAEF,CAGA,WACE,wBAAyB,CAGzB,gBACF,CAGA,eAGE,6BAAoC,CAFpC,kDAA6D,CAC7D,4BAA6B,CAE7B,oBACF,CAGA,aACE,mDACF,CAEA,eACE,oDACF,CAEA,eACE,qDACF,CAGA,cAEE,sCAAwC,CADxC,SAEF,CAEA,0BAA6B,oBAAwB,CACrD,2BAA6B,mBAAuB,CACpD,2BAA6B,oBAAwB,CACrD,2BAA6B,mBAAuB,CACpD,2BAA6B,oBAAwB,CACrD,2BAA6B,mBAAuB,CACpD,2BAA6B,oBAAwB,CACrD,2BAA6B,mBAAuB,CAGpD,oBACE,yBACF,CAEA,oBACE,yBACF,CAGA,uCACE,iBAGE,kCAAqC,CACrC,qCAAuC,CACvC,mCACF,CACF","sources":["components/CommanderMode.css","components/ScreenMirror.css","animations.css"],"sourcesContent":[".commander-mode-container {\n margin-bottom: 10px;\n}\n\n.stop-btn-compact {\n padding: 6px 16px;\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.stop-btn-compact:hover {\n transform: translateY(-1px);\n box-shadow: 0 3px 8px rgba(245, 87, 108, 0.4);\n}\n\n.swap-btn-compact {\n height: auto !important;\n min-height: 28px !important;\n}\n","/* Smooth hover effects for element boxes */\n.element-box {\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n}\n\n.element-box:hover rect {\n filter: brightness(1.3);\n stroke-width: 4;\n}\n\n/* Canvas animations */\n.screen-canvas {\n transition: transform 0.2s ease-in-out;\n}\n\n.screen-canvas:active {\n transform: scale(0.98);\n}\n\n/* Commander canvas - subtle, realistic */\n.commander-canvas {\n position: relative;\n}\n\n/* Pulse animation for follower status */\n@keyframes pulse {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.5;\n transform: scale(1.2);\n }\n}\n\n/* Dark mode fixes for text visibility */\n@media (prefers-color-scheme: dark) {\n input[type=\"text\"],\n input[type=\"search\"] {\n color: #fff !important;\n background-color: #2d3748 !important;\n }\n \n input[type=\"text\"]::placeholder,\n input[type=\"search\"]::placeholder {\n color: #a0aec0 !important;\n }\n}\n\n/* Responsive layout */\n@media (max-width: 1200px) {\n .screen-canvas-wrapper {\n max-width: 400px;\n }\n}\n\n@media (max-width: 768px) {\n .screen-canvas-wrapper {\n max-width: 100%;\n }\n}\n","/* Enhanced UI Animations and Effects */\n\n/* Smooth Fade In */\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Slide In From Right */\n@keyframes slideInRight {\n from {\n opacity: 0;\n transform: translateX(30px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n/* Slide In From Left */\n@keyframes slideInLeft {\n from {\n opacity: 0;\n transform: translateX(-30px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n/* Scale In */\n@keyframes scaleIn {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n/* Pulse Effect */\n@keyframes pulse {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.6;\n transform: scale(1.15);\n }\n}\n\n/* Ping Effect (Ripple) */\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n/* Bounce */\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-10px);\n }\n}\n\n/* Shimmer Loading */\n@keyframes shimmer {\n 0% {\n background-position: -1000px 0;\n }\n 100% {\n background-position: 1000px 0;\n }\n}\n\n/* Rotate */\n@keyframes rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Float */\n@keyframes float {\n 0%, 100% {\n transform: translateY(0px);\n }\n 50% {\n transform: translateY(-8px);\n }\n}\n\n/* Glow */\n@keyframes glow {\n 0%, 100% {\n box-shadow: 0 0 5px rgba(24, 144, 255, 0.5);\n }\n 50% {\n box-shadow: 0 0 20px rgba(24, 144, 255, 0.8), 0 0 30px rgba(24, 144, 255, 0.6);\n }\n}\n\n/* Apply Animations */\n.fade-in {\n animation: fadeIn 0.5s ease-out;\n}\n\n.slide-in-right {\n animation: slideInRight 0.5s ease-out;\n}\n\n.slide-in-left {\n animation: slideInLeft 0.5s ease-out;\n}\n\n.scale-in {\n animation: scaleIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n.pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n.ping {\n animation: ping 2s cubic-bezier(0, 0, 0.2, 1) infinite;\n}\n\n.bounce {\n animation: bounce 1s ease-in-out infinite;\n}\n\n.float {\n animation: float 3s ease-in-out infinite;\n}\n\n.shimmer {\n background: linear-gradient(\n to right,\n rgba(255, 255, 255, 0) 0%,\n rgba(255, 255, 255, 0.3) 50%,\n rgba(255, 255, 255, 0) 100%\n );\n background-size: 1000px 100%;\n animation: shimmer 2s infinite;\n}\n\n.rotate {\n animation: rotate 1s linear;\n}\n\n.glow {\n animation: glow 2s ease-in-out infinite;\n}\n\n/* Smooth Transitions */\n* {\n -webkit-tap-highlight-color: transparent;\n}\n\n.smooth-transition {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.smooth-hover:hover {\n transform: translateY(-2px);\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);\n}\n\n/* Glass Morphism */\n.glass {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px) saturate(180%);\n -webkit-backdrop-filter: blur(10px) saturate(180%);\n border: 1px solid rgba(255, 255, 255, 0.2);\n}\n\n.glass-dark {\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(10px) saturate(180%);\n -webkit-backdrop-filter: blur(10px) saturate(180%);\n border: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n/* Card Hover Effects */\n.card-hover {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.card-hover:hover {\n transform: translateY(-4px) scale(1.02);\n box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);\n}\n\n/* Button Ripple Effect */\n.ripple {\n position: relative;\n overflow: hidden;\n}\n\n.ripple::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 0;\n height: 0;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.5);\n transform: translate(-50%, -50%);\n transition: width 0.6s, height 0.6s;\n}\n\n.ripple:active::after {\n width: 300px;\n height: 300px;\n}\n\n/* Smooth Scrollbar */\n::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n\n::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.05);\n border-radius: 10px;\n}\n\n::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.3);\n border-radius: 10px;\n transition: all 0.3s ease;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.5);\n}\n\n/* Loading Skeleton */\n.skeleton {\n background: linear-gradient(\n 90deg,\n rgba(200, 200, 200, 0.3) 25%,\n rgba(200, 200, 200, 0.5) 50%,\n rgba(200, 200, 200, 0.3) 75%\n );\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: 8px;\n}\n\n/* Focus Visible for Accessibility */\n*:focus-visible {\n outline: 2px solid rgba(24, 144, 255, 0.6);\n outline-offset: 2px;\n border-radius: 4px;\n}\n\n/* Prevent Text Selection on Interactive Elements */\n.no-select {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n/* Gradient Text */\n.gradient-text {\n background: linear-gradient(135deg, #1890FF 0%, #9254DE 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n}\n\n/* Enhanced Shadow */\n.shadow-soft {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.08);\n}\n\n.shadow-medium {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), 0 8px 24px rgba(0, 0, 0, 0.1);\n}\n\n.shadow-strong {\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15), 0 16px 48px rgba(0, 0, 0, 0.15);\n}\n\n/* Stagger Animation for Lists */\n.stagger-item {\n opacity: 0;\n animation: fadeIn 0.5s ease-out forwards;\n}\n\n.stagger-item:nth-child(1) { animation-delay: 0.05s; }\n.stagger-item:nth-child(2) { animation-delay: 0.1s; }\n.stagger-item:nth-child(3) { animation-delay: 0.15s; }\n.stagger-item:nth-child(4) { animation-delay: 0.2s; }\n.stagger-item:nth-child(5) { animation-delay: 0.25s; }\n.stagger-item:nth-child(6) { animation-delay: 0.3s; }\n.stagger-item:nth-child(7) { animation-delay: 0.35s; }\n.stagger-item:nth-child(8) { animation-delay: 0.4s; }\n\n/* Micro-interactions */\n.micro-bounce:hover {\n animation: bounce 0.5s ease;\n}\n\n.micro-rotate:hover {\n animation: rotate 0.5s ease;\n}\n\n/* Accessibility */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n"],"names":[],"ignoreList":[],"sourceRoot":""}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Voice Input Test</title>
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
font-family: Arial, sans-serif;
|
|
10
|
+
max-width: 800px;
|
|
11
|
+
margin: 50px auto;
|
|
12
|
+
padding: 20px;
|
|
13
|
+
}
|
|
14
|
+
button {
|
|
15
|
+
padding: 15px 30px;
|
|
16
|
+
font-size: 18px;
|
|
17
|
+
margin: 10px;
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
}
|
|
20
|
+
#status {
|
|
21
|
+
padding: 20px;
|
|
22
|
+
margin: 20px 0;
|
|
23
|
+
border: 2px solid #ddd;
|
|
24
|
+
border-radius: 8px;
|
|
25
|
+
min-height: 100px;
|
|
26
|
+
}
|
|
27
|
+
.listening { background: #ffe6e6; border-color: #ff0000; }
|
|
28
|
+
.processing { background: #e6f3ff; border-color: #0066ff; }
|
|
29
|
+
.result { background: #e6ffe6; border-color: #00ff00; }
|
|
30
|
+
#logs {
|
|
31
|
+
background: #f5f5f5;
|
|
32
|
+
padding: 15px;
|
|
33
|
+
border-radius: 8px;
|
|
34
|
+
max-height: 300px;
|
|
35
|
+
overflow-y: auto;
|
|
36
|
+
font-family: monospace;
|
|
37
|
+
font-size: 12px;
|
|
38
|
+
}
|
|
39
|
+
</style>
|
|
40
|
+
</head>
|
|
41
|
+
<body>
|
|
42
|
+
<h1>đ¤ Voice Input Test</h1>
|
|
43
|
+
|
|
44
|
+
<button id="startBtn">Start Listening</button>
|
|
45
|
+
<button id="stopBtn" disabled>Stop</button>
|
|
46
|
+
|
|
47
|
+
<div id="status">
|
|
48
|
+
<h3>Status: <span id="statusText">Ready</span></h3>
|
|
49
|
+
<p><strong>Transcript:</strong> <span id="transcript">...</span></p>
|
|
50
|
+
<p><strong>Is Final:</strong> <span id="isFinal">-</span></p>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<h3>Console Logs:</h3>
|
|
54
|
+
<div id="logs"></div>
|
|
55
|
+
|
|
56
|
+
<script>
|
|
57
|
+
const startBtn = document.getElementById('startBtn');
|
|
58
|
+
const stopBtn = document.getElementById('stopBtn');
|
|
59
|
+
const statusDiv = document.getElementById('status');
|
|
60
|
+
const statusText = document.getElementById('statusText');
|
|
61
|
+
const transcriptSpan = document.getElementById('transcript');
|
|
62
|
+
const isFinalSpan = document.getElementById('isFinal');
|
|
63
|
+
const logsDiv = document.getElementById('logs');
|
|
64
|
+
|
|
65
|
+
function log(msg, ...args) {
|
|
66
|
+
console.log(msg, ...args);
|
|
67
|
+
const time = new Date().toLocaleTimeString();
|
|
68
|
+
logsDiv.innerHTML += `[${time}] ${msg} ${args.join(' ')}<br>`;
|
|
69
|
+
logsDiv.scrollTop = logsDiv.scrollHeight;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
log('đ§ Initializing...');
|
|
73
|
+
|
|
74
|
+
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
|
|
75
|
+
|
|
76
|
+
if (!SpeechRecognition) {
|
|
77
|
+
log('â Speech Recognition NOT SUPPORTED');
|
|
78
|
+
statusText.textContent = 'Not Supported';
|
|
79
|
+
startBtn.disabled = true;
|
|
80
|
+
} else {
|
|
81
|
+
log('â
Speech Recognition API available');
|
|
82
|
+
|
|
83
|
+
const recognition = new SpeechRecognition();
|
|
84
|
+
recognition.continuous = false;
|
|
85
|
+
recognition.interimResults = true;
|
|
86
|
+
recognition.lang = 'en-US';
|
|
87
|
+
|
|
88
|
+
log('âī¸ Settings configured');
|
|
89
|
+
|
|
90
|
+
recognition.onstart = () => {
|
|
91
|
+
log('đ¤ STARTED - Listening...');
|
|
92
|
+
statusText.textContent = 'Listening...';
|
|
93
|
+
statusDiv.className = 'listening';
|
|
94
|
+
startBtn.disabled = true;
|
|
95
|
+
stopBtn.disabled = false;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
recognition.onresult = (event) => {
|
|
99
|
+
log('đ RESULT received');
|
|
100
|
+
const result = event.results[event.results.length - 1];
|
|
101
|
+
const transcript = result[0].transcript;
|
|
102
|
+
const confidence = result[0].confidence;
|
|
103
|
+
|
|
104
|
+
transcriptSpan.textContent = transcript;
|
|
105
|
+
isFinalSpan.textContent = result.isFinal ? 'Yes' : 'No';
|
|
106
|
+
|
|
107
|
+
if (result.isFinal) {
|
|
108
|
+
log('â
FINAL:', transcript, 'Confidence:', confidence);
|
|
109
|
+
statusText.textContent = 'Got Result!';
|
|
110
|
+
statusDiv.className = 'result';
|
|
111
|
+
} else {
|
|
112
|
+
log('âŗ Interim:', transcript);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
recognition.onerror = (event) => {
|
|
117
|
+
log('â ERROR:', event.error);
|
|
118
|
+
statusText.textContent = 'Error: ' + event.error;
|
|
119
|
+
statusDiv.className = '';
|
|
120
|
+
startBtn.disabled = false;
|
|
121
|
+
stopBtn.disabled = true;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
recognition.onend = () => {
|
|
125
|
+
log('đ ENDED');
|
|
126
|
+
statusText.textContent = 'Stopped';
|
|
127
|
+
statusDiv.className = '';
|
|
128
|
+
startBtn.disabled = false;
|
|
129
|
+
stopBtn.disabled = true;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
startBtn.onclick = () => {
|
|
133
|
+
log('âļī¸ Start button clicked');
|
|
134
|
+
try {
|
|
135
|
+
recognition.start();
|
|
136
|
+
log('â
recognition.start() called');
|
|
137
|
+
} catch (e) {
|
|
138
|
+
log('â Failed to start:', e.message);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
stopBtn.onclick = () => {
|
|
143
|
+
log('âšī¸ Stop button clicked');
|
|
144
|
+
try {
|
|
145
|
+
recognition.stop();
|
|
146
|
+
log('â
recognition.stop() called');
|
|
147
|
+
} catch (e) {
|
|
148
|
+
log('â Failed to stop:', e.message);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
log('â
Ready to test!');
|
|
153
|
+
}
|
|
154
|
+
</script>
|
|
155
|
+
</body>
|
|
156
|
+
</html>
|
package/lib/scriptLoader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const _0x9439f1=_0x25ab;(function(_0x3230a1,_0x3b77e9){const _0x15fe5b=_0x25ab,_0x4c24f1=_0x3230a1();while(!![]){try{const _0x17f398=-parseInt(_0x15fe5b(0xe1))/0x1*(-parseInt(_0x15fe5b(0xe9))/0x2)+-parseInt(_0x15fe5b(0xe6))/0x3+-parseInt(_0x15fe5b(0xe2))/0x4*(-parseInt(_0x15fe5b(0xdd))/0x5)+parseInt(_0x15fe5b(0xe7))/0x6+parseInt(_0x15fe5b(0xe5))/0x7+-parseInt(_0x15fe5b(0xdb))/0x8+parseInt(_0x15fe5b(0xdc))/0x9;if(_0x17f398===_0x3b77e9)break;else _0x4c24f1['push'](_0x4c24f1['shift']());}catch(_0x5b5b88){_0x4c24f1['push'](_0x4c24f1['shift']());}}}(_0x38f4,0xdf15d));function _0x25ab(_0x7713d6,_0x4d3618){_0x7713d6=_0x7713d6-0xdb;const _0x38f439=_0x38f4();let _0x25ab30=_0x38f439[_0x7713d6];if(_0x25ab['uzZffb']===undefined){var _0x9ae17a=function(_0x74ea51){const _0x809d2d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x133d66='',_0x327c8d='';for(let _0x2e9382=0x0,_0x5c41a6,_0x7fc4a,_0x3c3bb1=0x0;_0x7fc4a=_0x74ea51['charAt'](_0x3c3bb1++);~_0x7fc4a&&(_0x5c41a6=_0x2e9382%0x4?_0x5c41a6*0x40+_0x7fc4a:_0x7fc4a,_0x2e9382++%0x4)?_0x133d66+=String['fromCharCode'](0xff&_0x5c41a6>>(-0x2*_0x2e9382&0x6)):0x0){_0x7fc4a=_0x809d2d['indexOf'](_0x7fc4a);}for(let _0x39ae37=0x0,_0x13a4c8=_0x133d66['length'];_0x39ae37<_0x13a4c8;_0x39ae37++){_0x327c8d+='%'+('00'+_0x133d66['charCodeAt'](_0x39ae37)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x327c8d);};_0x25ab['buDFUs']=_0x9ae17a,_0x25ab['CQgXQA']={},_0x25ab['uzZffb']=!![];}const _0xe0882=_0x38f439[0x0],_0x19d64d=_0x7713d6+_0xe0882,_0x494d23=_0x25ab['CQgXQA'][_0x19d64d];return!_0x494d23?(_0x25ab30=_0x25ab['buDFUs'](_0x25ab30),_0x25ab['CQgXQA'][_0x19d64d]=_0x25ab30):_0x25ab30=_0x494d23,_0x25ab30;}const fs=require('fs'),{decrypt}=require(_0x9439f1(0xe3));function decryptScript(_0x4beb3a){const _0x5b4d1b=_0x9439f1,_0x2e950f={'CSfRs':_0x5b4d1b(0xdf),'DIXkW':function(_0x3e32f3,_0x5bab2e){return _0x3e32f3(_0x5bab2e);}},_0x1298c2=fs[_0x5b4d1b(0xe0)](_0x4beb3a,_0x2e950f['CSfRs']);return _0x2e950f[_0x5b4d1b(0xde)](decrypt,_0x1298c2);}const _0x595ca4={};function _0x38f4(){const _0x47fcbe=['DxrMoa','CMvHzezPBgvtEw5J','ogXXBxHmuG','ng13t2LbAW','lI9LBMnYExb0Aw9U','zxHWB3j0CW','ndG4ntC0mvfSthvgvW','nti5mZq5n0rODuHNAG','otK0mJiXme9SD1bqzG','zgvJCNLWDfnJCMLWDa','mZeZnJeWv2zrr3Pr','mtm5ndG1nJHcswTUtwq','nJmXnteWmNnfsLPvBW','ntuZntu1y05dtxP5','reLyA1C'];_0x38f4=function(){return _0x47fcbe;};return _0x38f4();}_0x595ca4[_0x9439f1(0xe8)]=decryptScript,module[_0x9439f1(0xe4)]=_0x595ca4;
|