@orchyn/mcp 1.17.7 → 1.17.9

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.
@@ -32,8 +32,9 @@ export const ORCHYN_UI_TEMPLATE = `<!DOCTYPE html>
32
32
  --shadow-sm:0 1px 2px rgba(0,0,0,.2);--shadow-md:0 4px 12px rgba(0,0,0,.3);
33
33
  --shadow-lg:0 8px 24px rgba(0,0,0,.4);
34
34
  }}
35
+ html{overflow-x:hidden;overflow-y:auto}
35
36
  *{margin:0;padding:0;box-sizing:border-box;}
36
- body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--bg);color:var(--fg);padding:16px;line-height:1.5;}
37
+ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--bg);color:var(--fg);padding:16px;line-height:1.5;overflow-x:hidden;}
37
38
 
38
39
  /* ─── Content entrance ─── */
39
40
  .fade-in{animation:fadeIn .4s ease-out;}
@@ -49,8 +50,18 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
49
50
  .stagger>*:nth-child(8){animation-delay:.4s}
50
51
 
51
52
  /* ─── Cards ─── */
52
- .gallery{display:flex;flex-wrap:wrap;gap:10px;}
53
- .card{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;width:380px;background:var(--card);display:inline-block;vertical-align:top;box-shadow:var(--shadow-sm);transition:var(--transition);cursor:default;}
53
+ .gallery-wrap{position:relative;margin:0 -4px;overflow:visible}
54
+ .gallery{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;padding:4px 4px 8px;scrollbar-width:none;width:100%;}
55
+ .gallery::-webkit-scrollbar{display:none}
56
+ .gallery-dots{display:flex;justify-content:center;gap:6px;margin-top:10px;flex-wrap:wrap}
57
+ .gallery-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--border);border:none;cursor:pointer;transition:var(--transition);padding:0}
58
+ .gallery-dots .dot.active{background:var(--accent);transform:scale(1.3)}
59
+ .gallery-nav{position:absolute;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:50%;background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-md);cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--fg);transition:var(--transition);opacity:0}
60
+ .gallery-wrap:hover .gallery-nav{opacity:1}
61
+ .gallery-nav:hover{background:var(--accent);color:#fff}
62
+ .gallery-nav.prev{left:2px}
63
+ .gallery-nav.next{right:2px}
64
+ .card{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;width:380px;min-width:380px;background:var(--card);display:block;box-shadow:var(--shadow-sm);transition:var(--transition);cursor:default;scroll-snap-align:start;flex-shrink:0}
54
65
  .card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--muted);}
55
66
  .card-wide{width:100%;}
56
67
  .card img{width:100%;height:260px;object-fit:cover;display:block;transition:transform .3s ease;}
@@ -487,6 +498,58 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
487
498
  return result;
488
499
  }
489
500
 
501
+ var galleryId=0;
502
+ function galleryWrap(cardsHtml,count){
503
+ var id="gal"+(galleryId++);
504
+ if(count<=1)return cardsHtml;
505
+ var dots="";
506
+ for(var i=0;i<count;i++)dots+='<button class="dot'+(i===0?" active":"")+'" data-g="'+id+'" data-i="'+i+'"></button>';
507
+ return '<div class="gallery-wrap fade-in">'
508
+ +'<button class="gallery-nav prev" data-gnav="'+id+'" data-dir="-1">\u2039</button>'
509
+ +'<div class="gallery" id="'+id+'">'+cardsHtml+'</div>'
510
+ +'<button class="gallery-nav next" data-gnav="'+id+'" data-dir="1">\u203a</button>'
511
+ +'<div class="gallery-dots" id="'+id+'-dots">'+dots+'</div>'
512
+ +'</div>';
513
+ }
514
+ function initGalleryNav(){
515
+ document.addEventListener('click',function(e){
516
+ var navBtn=e.target.closest('.gallery-nav[data-gnav]');
517
+ if(navBtn){
518
+ var g=document.getElementById(navBtn.getAttribute('data-gnav'));
519
+ if(!g)return;
520
+ var dir=Number(navBtn.getAttribute('data-dir'));
521
+ var cardW=g.querySelector('.card')?.offsetWidth||380;
522
+ g.scrollBy({left:dir*(cardW+12),behavior:'smooth'});
523
+ return;
524
+ }
525
+ var dotBtn=e.target.closest('.dot[data-g]');
526
+ if(dotBtn){
527
+ var gId=dotBtn.getAttribute('data-g');
528
+ var g=document.getElementById(gId);
529
+ var dots=document.getElementById(gId+'-dots');
530
+ if(!g||!dots)return;
531
+ var idx=Number(dotBtn.getAttribute('data-i'));
532
+ var cards=g.querySelectorAll('.card');
533
+ if(cards[idx])cards[idx].scrollIntoView({behavior:'smooth',block:'nearest',inline:'start'});
534
+ dots.querySelectorAll('.dot').forEach(function(d){d.classList.remove('active')});
535
+ dotBtn.classList.add('active');
536
+ }
537
+ });
538
+ document.addEventListener('scroll',function(e){
539
+ if(!e.target.classList||!e.target.classList.contains('gallery'))return;
540
+ var g=e.target;var gId=g.id;
541
+ var dots=document.getElementById(gId+'-dots');
542
+ if(!dots)return;
543
+ var cards=g.querySelectorAll('.card');
544
+ if(!cards.length)return;
545
+ var scrollLeft=g.scrollLeft;var cardW=cards[0].offsetWidth+12;
546
+ var active=Math.round(scrollLeft/cardW);
547
+ active=Math.max(0,Math.min(active,cards.length-1));
548
+ dots.querySelectorAll('.dot').forEach(function(d,i){d.classList.toggle('active',i===active)});
549
+ },true);
550
+ }
551
+ initGalleryNav();
552
+
490
553
  function render(result){
491
554
  var app=document.getElementById("app");if(!app)return;
492
555
  var d=extractResult(result);
@@ -499,11 +562,11 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
499
562
  // Posts gallery
500
563
  if(d.posts&&Array.isArray(d.posts)){
501
564
  if(!d.posts.length){app.innerHTML='<div class="empty-state fade-in"><div class="icon">🔍</div><div class="text">No posts found</div></div>';return;}
502
- app.innerHTML='<div class="gallery stagger">'+d.posts.map(function(p){return postCard(p,false);}).join("")+"</div>";return;}
565
+ app.innerHTML=galleryWrap(d.posts.map(function(p){return postCard(p,false);}).join(""),d.posts.length);return;}
503
566
  // Creators
504
567
  if(d.creators&&Array.isArray(d.creators)){
505
568
  if(!d.creators.length){app.innerHTML='<div class="empty-state fade-in"><div class="icon">👤</div><div class="text">No creators found</div></div>';return;}
506
- app.innerHTML='<div class="gallery stagger">'+d.creators.map(function(c){return creatorCard(c);}).join("")+"</div>";return;}
569
+ app.innerHTML=galleryWrap(d.creators.map(function(c){return creatorCard(c);}).join(""),d.creators.length);return;}
507
570
  // Comments
508
571
  if(d.comments&&Array.isArray(d.comments)){
509
572
  var ch=d.comments.slice(0,15).map(function(c){
@@ -516,7 +579,7 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
516
579
  +'<div style="font-size:16px;font-weight:700;margin-bottom:12px">💬 Comments ('+d.comments.length+')</div>'+ch+"</div></div>";return;}
517
580
  // Sounds
518
581
  if(d.sounds&&Array.isArray(d.sounds)){
519
- app.innerHTML='<div class="gallery stagger">'+d.sounds.map(function(s){
582
+ app.innerHTML=galleryWrap(d.sounds.map(function(s){
520
583
  var color=pColor(s.platform||"tiktok");
521
584
  var cover=s.coverUrl?'<img class="sound-cover" src="'+esc(s.coverUrl)+'" alt="cover" loading="lazy"/>'
522
585
  :'<div class="sound-cover" style="background:'+color+'15;display:flex;align-items:center;justify-content:center;font-size:26px">🎵</div>';
@@ -527,7 +590,7 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
527
590
  +'<div style="font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">'+esc(s.title||"")+"</div>"
528
591
  +'<div style="font-size:12px;color:var(--muted)">'+esc(s.artist||s.author||"")+(s.duration?" • "+esc(s.duration):"")+"</div>"
529
592
  +playBtn+"</div></div></div>";
530
- }).join("")+"</div>";return;}
593
+ }).join(""),d.sounds.length);return;}
531
594
  // Credits
532
595
  if(d.balance!=null||d.tier){
533
596
  var bal=Number(d.balance)||0,tier=d.tier||"",ff=d.firstFreeTools||[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchyn/mcp",
3
- "version": "1.17.7",
3
+ "version": "1.17.9",
4
4
  "description": "MCP server for orchyn - fetch, discover and understand TikTok/Instagram/YouTube/X/LinkedIn posts with AI (media metadata, niche discovery, hook & viral analysis)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",