Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -353,11 +353,11 @@ it("reconciles provider skills and metadata without losing formatting, caret, or
editor.commands.setTextSelection("run use $baby".length + 1);
});
editor = await screen.update(value, true, [disabled, babysit]);
expect(editor.state.doc.textContent).toBe("run use now then $HOME");
expect(editor.state.doc.textContent).toBe("run **use now** then $HOME");
const chip = serializeEditorDoc(editor.state.doc).runs.find((run) => run.kind === "token")!;
expect(editor.state.selection.from).toBe(chip.pmPos + 1);
editor = await screen.update(value, true, [disabled]);
expect.soft(editor.state.doc.textContent).toBe("run use $babysit now then $HOME");
expect.soft(editor.state.doc.textContent).toBe("run **use $babysit now** then $HOME");
expect(serializeEditorDoc(editor.state.doc).value).toBe(value);
await act(async () => {
editor.commands.insertContent("X");
Expand All @@ -367,7 +367,7 @@ it("reconciles provider skills and metadata without losing formatting, caret, or
editor.commands.undo();
});
expect(serializeEditorDoc(editor.state.doc).value).toBe(value);
expect(editor.state.doc.textContent).toBe("run use $babysit now then $HOME");
expect(editor.state.doc.textContent).toBe("run **use $babysit now** then $HOME");

editor = await screen.update(value, true, [babysit]);
await act(async () => {
Expand All @@ -377,7 +377,7 @@ it("reconciles provider skills and metadata without losing formatting, caret, or
await act(async () => {
editor.commands.undo();
});
expect(editor.state.doc.textContent).toBe("run use $babysit now then $HOME");
expect(editor.state.doc.textContent).toBe("run **use $babysit now** then $HOME");
expect(serializeEditorDoc(editor.state.doc).value).toBe(value);

editor = await screen.update(value, true, [
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/components/settings/SettingsPanels.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1971,7 +1971,7 @@ export function ThreadsSettingsPanel() {
<SettingsRow
serverScoped
{...searchableSetting("stop-at-subscription-limit")}
description="Stop all Claude, Codex, and Cursor threads at subscription limits, even when paid usage is available. Overrides thread options and rechecks running sessions when enabled. Provider reports can lag; this is not a billing cap."
description="Stop Claude, Codex and Cursor at subscription limits, even with paid usage. Overrides thread options and rechecks running sessions. Reports can lag; this is not a billing cap."
settingKeys={["stopAtSubscriptionLimit"]}
control={
<ScopedSwitch
Expand Down
1 change: 1 addition & 0 deletions apps/web/src/composer-rich-text-doc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,7 @@ function withoutOpenersInCode(rules: InputRule[] | undefined): InputRule[] {
find: rule.find,
undoable: rule.undoable,
handler: (props) => {
if (touchesMarkdownSource(props.state, props.range.from, props.range.to)) return null;
const opener = props.range.from + Math.max(props.match[0].search(/\S/), 0);
const code = props.state.schema.marks.code;
if (code && props.state.doc.rangeHasMark(opener, opener + 1, code)) return null;
Expand Down