Ship Assistent 0.15.11: collaborative params, richer UI, and strict image critique.

Adds session_exact pinning, sampler/scheduler chips, expanded param tags with non-default highlighting, QLoRA HF presets, LoRA strength editing, SQLite bootstrap for training memory, last-job UI, and harsher critique_image QC so result review leads with defects instead of praise.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-23 19:59:45 +03:00
co-authored by Cursor
parent 65a0982b9d
commit b0f2736f65
22 changed files with 1674 additions and 265 deletions
+38 -28
View File
@@ -297,23 +297,46 @@ public sealed partial class AssistentMemory
{
return null;
}
return new JObject
{
["id"] = r.GetString(0),
["kind"] = r.GetString(1),
["status"] = r.GetString(2),
["config_json"] = r.IsDBNull(3) ? null : r.GetString(3),
["base_model"] = r.IsDBNull(4) ? null : r.GetString(4),
["output_name"] = r.IsDBNull(5) ? null : r.GetString(5),
["log_path"] = r.IsDBNull(6) ? null : r.GetString(6),
["progress_json"] = r.IsDBNull(7) ? null : r.GetString(7),
["created_at"] = r.GetInt64(8),
["updated_at"] = r.GetInt64(9),
["finished_at"] = r.IsDBNull(10) ? null : r.GetInt64(10),
};
return ReadTrainJobRow(r);
}
}
public JObject GetLastTrainJob()
{
lock (_lock)
{
EnsureOpen();
using SqliteCommand cmd = _conn.CreateCommand();
cmd.CommandText =
"SELECT id, kind, status, config_json, base_model, output_name, log_path, progress_json, created_at, updated_at, finished_at "
+ "FROM train_jobs ORDER BY updated_at DESC LIMIT 1";
using SqliteDataReader r = cmd.ExecuteReader();
if (!r.Read())
{
return null;
}
return ReadTrainJobRow(r);
}
}
static JObject ReadTrainJobRow(SqliteDataReader r)
{
return new JObject
{
["id"] = r.GetString(0),
["kind"] = r.GetString(1),
["status"] = r.GetString(2),
["config_json"] = r.IsDBNull(3) ? null : r.GetString(3),
["base_model"] = r.IsDBNull(4) ? null : r.GetString(4),
["output_name"] = r.IsDBNull(5) ? null : r.GetString(5),
["log_path"] = r.IsDBNull(6) ? null : r.GetString(6),
["progress_json"] = r.IsDBNull(7) ? null : r.GetString(7),
["created_at"] = r.GetInt64(8),
["updated_at"] = r.GetInt64(9),
["finished_at"] = r.IsDBNull(10) ? null : r.GetInt64(10),
};
}
public JObject GetActiveTrainJob()
{
lock (_lock)
@@ -326,20 +349,7 @@ public sealed partial class AssistentMemory
{
return null;
}
return new JObject
{
["id"] = r.GetString(0),
["kind"] = r.GetString(1),
["status"] = r.GetString(2),
["config_json"] = r.IsDBNull(3) ? null : r.GetString(3),
["base_model"] = r.IsDBNull(4) ? null : r.GetString(4),
["output_name"] = r.IsDBNull(5) ? null : r.GetString(5),
["log_path"] = r.IsDBNull(6) ? null : r.GetString(6),
["progress_json"] = r.IsDBNull(7) ? null : r.GetString(7),
["created_at"] = r.GetInt64(8),
["updated_at"] = r.GetInt64(9),
["finished_at"] = r.IsDBNull(10) ? null : r.GetInt64(10),
};
return ReadTrainJobRow(r);
}
}
}