@floless/app 0.22.0 → 0.22.1

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.
@@ -52729,7 +52729,7 @@ function appVersion() {
52729
52729
  return resolveVersion({
52730
52730
  isSea: isSea2(),
52731
52731
  sqVersionXml: readSqVersionXml(),
52732
- define: true ? "0.22.0" : void 0,
52732
+ define: true ? "0.22.1" : void 0,
52733
52733
  pkgVersion: readPkgVersion()
52734
52734
  });
52735
52735
  }
@@ -52739,7 +52739,7 @@ function resolveChannel(s) {
52739
52739
  return "dev";
52740
52740
  }
52741
52741
  function appChannel() {
52742
- return resolveChannel({ isSea: isSea2(), define: true ? "0.22.0" : void 0 });
52742
+ return resolveChannel({ isSea: isSea2(), define: true ? "0.22.1" : void 0 });
52743
52743
  }
52744
52744
 
52745
52745
  // oauth-presets.ts
package/dist/web/app.css CHANGED
@@ -1125,9 +1125,17 @@
1125
1125
  overflow-y: auto;
1126
1126
  display: grid;
1127
1127
  grid-template-columns: 1fr 1fr;
1128
+ /* align-items:start so a collapsed card isn't stretched to match an
1129
+ expanded sibling in the same row (the accordion-in-grid pattern). */
1130
+ align-items: start;
1128
1131
  gap: 6px;
1129
1132
  padding-right: 4px;
1130
1133
  }
1134
+ /* One grid cell per agent: holds the card header + its command list, so the
1135
+ commands nest directly under the picked card (see renderLibrary). */
1136
+ .lib-card { min-width: 0; }
1137
+ .lib-card.expanded .lib-item { border-color: var(--accent-dim); }
1138
+ .lib-card.expanded .lib-fav { transform: rotate(180deg); }
1131
1139
  .lib-item {
1132
1140
  background: var(--surface-2);
1133
1141
  border: 1px solid var(--border-strong);
@@ -1162,6 +1170,7 @@
1162
1170
  border-radius: 3px;
1163
1171
  flex-shrink: 0;
1164
1172
  line-height: 1;
1173
+ transition: transform 0.15s ease, color 0.15s, border-color 0.15s;
1165
1174
  }
1166
1175
  .lib-item .lib-fav.faved { color: var(--star); border-color: var(--star); }
1167
1176
 
package/dist/web/aware.js CHANGED
@@ -3681,15 +3681,20 @@
3681
3681
  renderLibrary = function renderLibraryReal() {
3682
3682
  const q = ($libSearch.value || '').toLowerCase().trim();
3683
3683
  const items = agentCatalog.filter((a) => !q || a.id.toLowerCase().includes(q) || (a.kind || '').toLowerCase().includes(q));
3684
+ // Each agent is ONE grid cell: the card header + its (lazy) command list live
3685
+ // in the same `.lib-card`, so expanding nests the commands directly under the
3686
+ // picked card instead of scattering them into a neighbouring grid slot.
3684
3687
  $libList.innerHTML = items.map((a) => `
3685
- <div class="lib-item" data-agent="${escapeAttr(a.id)}">
3686
- <div class="info">
3687
- <div class="name">${escapeHtml(a.id)} <span style="color:var(--text-dim);font-weight:400">v${escapeHtml(String(a.version))}</span></div>
3688
- <div class="meta">${escapeHtml(a.kind || 'agent')} · ${a.commands} command${a.commands === 1 ? '' : 's'} · ${a.skills} skill${a.skills === 1 ? '' : 's'}</div>
3688
+ <div class="lib-card" data-agent="${escapeAttr(a.id)}">
3689
+ <div class="lib-item">
3690
+ <div class="info">
3691
+ <div class="name">${escapeHtml(a.id)} <span style="color:var(--text-dim);font-weight:400">v${escapeHtml(String(a.version))}</span></div>
3692
+ <div class="meta">${escapeHtml(a.kind || 'agent')} · ${a.commands} command${a.commands === 1 ? '' : 's'} · ${a.skills} skill${a.skills === 1 ? '' : 's'}</div>
3693
+ </div>
3694
+ <button class="lib-fav" data-expand="${escapeAttr(a.id)}" data-tip="Show commands">⌄</button>
3689
3695
  </div>
3690
- <button class="lib-fav" data-expand="${escapeAttr(a.id)}" data-tip="Show commands">⌄</button>
3696
+ <div class="lib-commands" id="cmds-${escapeAttr(a.id)}" hidden></div>
3691
3697
  </div>
3692
- <div class="lib-commands" id="cmds-${escapeAttr(a.id)}" hidden></div>
3693
3698
  `).join('') || '<div class="empty-state">No agents match.</div>';
3694
3699
  $libList.querySelectorAll('[data-expand]').forEach((btn) => {
3695
3700
  btn.onclick = () => expandAgent(btn.dataset.expand);
@@ -3699,8 +3704,10 @@
3699
3704
  async function expandAgent(id) {
3700
3705
  const box = document.getElementById(`cmds-${id}`);
3701
3706
  if (!box) return;
3702
- if (!box.hidden) { box.hidden = true; return; }
3707
+ const card = box.closest('.lib-card');
3708
+ if (!box.hidden) { box.hidden = true; if (card) card.classList.remove('expanded'); return; }
3703
3709
  box.hidden = false;
3710
+ if (card) card.classList.add('expanded');
3704
3711
  box.innerHTML = '<div class="cmd-desc">loading…</div>';
3705
3712
  try {
3706
3713
  const { agent } = await api(`/api/agent/${encodeURIComponent(id)}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floless/app",
3
- "version": "0.22.0",
3
+ "version": "0.22.1",
4
4
  "type": "module",
5
5
  "description": "Thin localhost host for floless.app — serves web/ and shells the aware CLI. No engine, no LLM.",
6
6
  "bin": {