fix: drop identity emoji response prefix
This commit is contained in:
@@ -40,7 +40,7 @@
|
|||||||
- System prompt now tags allowlisted owner numbers as the user identity to avoid mistaken “friend” assumptions.
|
- System prompt now tags allowlisted owner numbers as the user identity to avoid mistaken “friend” assumptions.
|
||||||
- LM Studio/Ollama replies now require <final> tags; streaming ignores content until <final> begins.
|
- LM Studio/Ollama replies now require <final> tags; streaming ignores content until <final> begins.
|
||||||
- LM Studio responses API: tools payloads no longer include `strict: null`, and LM Studio no longer gets forced `<think>/<final>` tags.
|
- LM Studio responses API: tools payloads no longer include `strict: null`, and LM Studio no longer gets forced `<think>/<final>` tags.
|
||||||
- Empty `messages.responsePrefix` now disables the identity emoji prefix.
|
- Identity emoji no longer auto-prefixes replies (set `messages.responsePrefix` explicitly if desired).
|
||||||
- `process log` pagination is now line-based (omit `offset` to grab the last N lines).
|
- `process log` pagination is now line-based (omit `offset` to grab the last N lines).
|
||||||
- macOS WebChat: assistant bubbles now update correctly when toggling light/dark mode.
|
- macOS WebChat: assistant bubbles now update correctly when toggling light/dark mode.
|
||||||
- macOS: avoid spawning a duplicate gateway process when an external listener already exists.
|
- macOS: avoid spawning a duplicate gateway process when an external listener already exists.
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ describe("config identity defaults", () => {
|
|||||||
process.env.HOME = previousHome;
|
process.env.HOME = previousHome;
|
||||||
});
|
});
|
||||||
|
|
||||||
it("derives responsePrefix and mentionPatterns when identity is set", async () => {
|
it("derives mentionPatterns when identity is set", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const configDir = path.join(home, ".clawdis");
|
const configDir = path.join(home, ".clawdis");
|
||||||
await fs.mkdir(configDir, { recursive: true });
|
await fs.mkdir(configDir, { recursive: true });
|
||||||
@@ -49,7 +49,7 @@ describe("config identity defaults", () => {
|
|||||||
const { loadConfig } = await import("./config.js");
|
const { loadConfig } = await import("./config.js");
|
||||||
const cfg = loadConfig();
|
const cfg = loadConfig();
|
||||||
|
|
||||||
expect(cfg.messages?.responsePrefix).toBe("🦥");
|
expect(cfg.messages?.responsePrefix).toBeUndefined();
|
||||||
expect(cfg.routing?.groupChat?.mentionPatterns).toEqual([
|
expect(cfg.routing?.groupChat?.mentionPatterns).toEqual([
|
||||||
"\\b@?Samantha\\b",
|
"\\b@?Samantha\\b",
|
||||||
]);
|
]);
|
||||||
@@ -139,7 +139,7 @@ describe("config identity defaults", () => {
|
|||||||
const { loadConfig } = await import("./config.js");
|
const { loadConfig } = await import("./config.js");
|
||||||
const cfg = loadConfig();
|
const cfg = loadConfig();
|
||||||
|
|
||||||
expect(cfg.messages?.responsePrefix).toBe("🦥");
|
expect(cfg.messages?.responsePrefix).toBeUndefined();
|
||||||
expect(cfg.routing?.groupChat?.mentionPatterns).toEqual([
|
expect(cfg.routing?.groupChat?.mentionPatterns).toEqual([
|
||||||
"\\b@?Samantha\\b",
|
"\\b@?Samantha\\b",
|
||||||
]);
|
]);
|
||||||
@@ -147,4 +147,30 @@ describe("config identity defaults", () => {
|
|||||||
expect(cfg.session).toBeUndefined();
|
expect(cfg.session).toBeUndefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("does not derive responsePrefix from identity emoji", async () => {
|
||||||
|
await withTempHome(async (home) => {
|
||||||
|
const configDir = path.join(home, ".clawdis");
|
||||||
|
await fs.mkdir(configDir, { recursive: true });
|
||||||
|
await fs.writeFile(
|
||||||
|
path.join(configDir, "clawdis.json"),
|
||||||
|
JSON.stringify(
|
||||||
|
{
|
||||||
|
identity: { name: "Clawd", theme: "space lobster", emoji: "🦞" },
|
||||||
|
messages: {},
|
||||||
|
routing: {},
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
2,
|
||||||
|
),
|
||||||
|
"utf-8",
|
||||||
|
);
|
||||||
|
|
||||||
|
vi.resetModules();
|
||||||
|
const { loadConfig } = await import("./config.js");
|
||||||
|
const cfg = loadConfig();
|
||||||
|
|
||||||
|
expect(cfg.messages?.responsePrefix).toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -878,11 +878,6 @@ function applyIdentityDefaults(cfg: ClawdisConfig): ClawdisConfig {
|
|||||||
let mutated = false;
|
let mutated = false;
|
||||||
const next: ClawdisConfig = { ...cfg };
|
const next: ClawdisConfig = { ...cfg };
|
||||||
|
|
||||||
if (emoji && messages.responsePrefix === undefined) {
|
|
||||||
next.messages = { ...(next.messages ?? messages), responsePrefix: emoji };
|
|
||||||
mutated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name && !groupChat.mentionPatterns) {
|
if (name && !groupChat.mentionPatterns) {
|
||||||
const parts = name.split(/\s+/).filter(Boolean).map(escapeRegExp);
|
const parts = name.split(/\s+/).filter(Boolean).map(escapeRegExp);
|
||||||
const re = parts.length ? parts.join("\\s+") : escapeRegExp(name);
|
const re = parts.length ? parts.join("\\s+") : escapeRegExp(name);
|
||||||
|
|||||||
Reference in New Issue
Block a user