diff --git a/src/App.tsx b/src/App.tsx
index fc1206b..c5e4d3a 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -528,10 +528,7 @@ export default function App() {
-
- {titles[page][0]}
- .
-
+
{titles[page][0]}
{titles[page][1]}
{page === "models" && (
diff --git a/src/styles.css b/src/styles.css
index 8fab2fd..77d0536 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -393,10 +393,6 @@ h1 {
letter-spacing: 1px;
line-height: 1.25;
}
-.heading-dot {
- color: var(--orange);
- margin-left: 3px;
-}
.page-header p {
color: var(--muted);
font-size: 12px;
diff --git a/src/test/app.test.tsx b/src/test/app.test.tsx
index dac3361..71f7fd4 100644
--- a/src/test/app.test.tsx
+++ b/src/test/app.test.tsx
@@ -552,6 +552,25 @@ describe("temporary model test feedback", () => {
});
describe("settings and backup controls", () => {
+ /** Verify that every available module heading contains only its title. */
+ it("shows module headings without a trailing dot", async () => {
+ render();
+ await screen.findByText("我的模型");
+ expect(screen.getByRole("heading", { level: 1 })).toHaveTextContent(
+ /^模型库$/,
+ );
+
+ await userEvent.click(screen.getByRole("button", { name: "模型配置备份" }));
+ expect(screen.getByRole("heading", { level: 1 })).toHaveTextContent(
+ /^模型配置备份$/,
+ );
+
+ await userEvent.click(screen.getByRole("button", { name: "设置" }));
+ expect(screen.getByRole("heading", { level: 1 })).toHaveTextContent(
+ /^设置$/,
+ );
+ });
+
it("shows model deletion in the fixed global tip", async () => {
vi.mocked(api.delete).mockResolvedValue();
render();