skopix 2.0.45 → 2.0.47

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skopix",
3
- "version": "2.0.45",
3
+ "version": "2.0.47",
4
4
  "description": "Browser-based QA tool — record tests by using your app, replay them deterministically, generate Playwright code automatically",
5
5
  "main": "cli/index.js",
6
6
  "bin": {
@@ -5631,10 +5631,10 @@ function renderPendingSteps(steps) {
5631
5631
  }
5632
5632
 
5633
5633
  async function loadLibraryView() {
5634
- await new Promise(r => setTimeout(r, 50)); // ensure view is visible
5635
5634
  const [steps, pending] = await Promise.all([fetchLibrarySteps(), fetchPendingSteps()]);
5636
- populateLibraryTagFilter();
5635
+ // Render pending FIRST before populateLibraryTagFilter which can trigger onchange
5637
5636
  renderPendingSteps(pending);
5637
+ populateLibraryTagFilter();
5638
5638
  renderLibrarySteps(steps);
5639
5639
  }
5640
5640
 
@@ -5897,7 +5897,11 @@ function populateLibraryTagFilter() {
5897
5897
  if (!sel) return;
5898
5898
  const allTags = [...new Set(libraryStepsCache.flatMap(s => s.tags || []))].sort();
5899
5899
  const current = sel.value;
5900
+ // Use a temp listener removal to avoid triggering onchange
5901
+ const prev = sel.onchange;
5902
+ sel.onchange = null;
5900
5903
  sel.innerHTML = '<option value="">All tags</option>' + allTags.map(t => `<option value="${escapeAttr(t)}" ${t===current?'selected':''}>${escapeHtml(t)}</option>`).join('');
5904
+ sel.onchange = prev;
5901
5905
  }
5902
5906
 
5903
5907
  async function loadLibraryView() {