ldrouter 1.17.0 → 1.17.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ All notable changes to this project are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/) and the project adheres to
5
5
  [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.17.1] - 2026-09-17
8
+
9
+ ### Added
10
+
11
+ - **Combo members are ordered by drag and drop.** The combo create/edit dialog lists members as sortable rows (`@dnd-kit`, the same interaction as the Codex and Qoder account pools): drag the handle — or reorder with the keyboard — and the row order becomes the saved priority, `position` 0 being tried first in fallback mode and leading the rotation in weighted round-robin.
12
+
13
+ ### Fixed
14
+
15
+ - **`GET /api/admin/combos/:id` returned members in SQLite row order instead of priority order**, so a reordered combo could reopen showing the previous sequence. Members are now sorted by `position`.
16
+
7
17
  ## [1.17.0] - 2026-09-17
8
18
 
9
19
  ### Added
@@ -118,7 +118,10 @@ export async function registerComboRoutes(app) {
118
118
  const c = db.select().from(schema.combos).where(eq(schema.combos.id, id)).get();
119
119
  if (!c)
120
120
  throw new GatewayError('invalid_request_error', 'Combo not found', { status: 404 });
121
- const members = db.select().from(schema.comboMembers).where(eq(schema.comboMembers.comboId, id)).all();
121
+ // The admin UI shows (and drag-reorders) members by priority, so return them
122
+ // in position order rather than relying on SQLite row order.
123
+ const members = db.select().from(schema.comboMembers).where(eq(schema.comboMembers.comboId, id)).all()
124
+ .sort((a, b) => a.position - b.position);
122
125
  const models = db.select().from(schema.models).all();
123
126
  const modelMap = new Map(models.map((m) => [m.id, m]));
124
127
  return {