diff --git a/CHANGELOG.md b/CHANGELOG.md
index ac490d64a..c81b60cce 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,13 +11,14 @@ and this project adheres to
- ♿️(frontend) restore skip to content link after header redesign #2510
- 🌐(i18n) rename cn_CN to zh_CN, add eo_PL and zh_TW locales #2486
-### Fixed
-
-- 🐛(frontend) redirect homepage to login when homepage feat is disabled #2521
-
### Changed
- ♿️(frontend) use semantic `
` structure in document info card #2379
+- ♻️(frontend) change favorite to star #2539
+
+### Fixed
+
+- 🐛(frontend) redirect homepage to login when homepage feat is disabled #2521
## [v5.4.1] - 2026-07-09
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts b/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts
index a28440f44..7f1a2b5d2 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts
@@ -28,7 +28,7 @@ const saveStorageState = async (
* If the grid is displayed, it means the user is logged in and the storage state can be saved.
*/
await expect(
- page.getByRole('heading', { name: 'All docs', level: 2 }),
+ page.getByRole('heading', { name: 'Recent', level: 2 }),
).toBeVisible({ timeout: 10000 });
await page.context().storageState({
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts
index 3cef7cd75..a57dcc026 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts
@@ -112,29 +112,35 @@ test.describe('Document grid item options', () => {
).toBeVisible();
});
- test('it pins a document', async ({ page, browserName }) => {
+ test('it stars a document', async ({ page, browserName }) => {
const [docTitle] = await createDoc(page, `Favorite doc`, browserName);
+ const [docTitle2] = await createDoc(page, `Not Favorite doc`, browserName);
- await page.goto('/');
+ await page.getByRole('button', { name: 'Back to homepage' }).click();
const row = await getGridRow(page, docTitle);
- // Pin
+ // Star
await row.getByRole('button', { name: /Open the menu of actions/ }).click();
- await page.getByRole('menuitem', { name: 'Pin' }).click();
+ await page.getByRole('menuitem', { name: 'Star' }).click();
- // Check is pinned
- await expect(row.getByTestId('doc-pinned-icon')).toBeVisible();
- const leftPanelFavorites = page.getByTestId('left-panel-favorites');
- await expect(leftPanelFavorites.getByText(docTitle)).toBeVisible();
+ // Check is starred
+ await expect(row.getByText(/This document is starred/)).toBeVisible();
+ await expect(page.getByText(docTitle2)).toBeVisible();
- // Unpin
+ await page.getByRole('link', { name: 'Starred', exact: true }).click();
+ await expect(row.getByText(/This document is starred/)).toBeVisible();
+ await expect(page.getByText(docTitle2)).toBeHidden();
+
+ // Unstar
await row.getByRole('button', { name: /Open the menu of actions/ }).click();
- await page.getByText('Unpin').click();
+ await page.getByText('Unstar').click();
+ await expect(row).toBeHidden();
- // Check is unpinned
- await expect(row.getByTestId('doc-pinned-icon')).toBeHidden();
- await expect(leftPanelFavorites.getByText(docTitle)).toBeHidden();
+ // Check is unstarred
+ await page.getByRole('link', { name: 'Recent', exact: true }).click();
+ await expect(row).toBeVisible();
+ await expect(row.getByText(/This document is starred/)).toBeHidden();
});
test('it deletes the document', async ({ page, browserName }) => {
@@ -311,7 +317,7 @@ test.describe('Documents Grid', () => {
docs = result.results as SmallDoc[];
await expect(page.getByTestId('grid-loader')).toBeHidden();
- await expect(page.locator('h2').getByText('All docs')).toBeVisible();
+ await expect(page.locator('h2').getByText('Recent')).toBeVisible();
const thead = page.getByTestId('docs-grid-header');
await expect(thead.getByText(/Name/i)).toBeVisible();
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-header.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-header.spec.ts
index b3eaab1d6..7e5aad883 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/doc-header.spec.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-header.spec.ts
@@ -560,46 +560,22 @@ test.describe('Doc Header', () => {
expect(clipboardContent.trim()).toMatch(url);
});
- test('it pins a document', async ({ page, browserName }) => {
- const [docTitle] = await createDoc(page, `Pin doc`, browserName);
+ test('it stars a document', async ({ page, browserName }) => {
+ await createDoc(page, `Star doc`, browserName);
+ // Star
await page
.getByRole('button', { name: 'Open the document options' })
.click();
+ await page.getByRole('menuitem', { name: 'Star' }).click();
+ await expect(page.getByText('This document is starred')).toBeVisible();
- // Pin
- await page.getByRole('menuitem', { name: 'Pin' }).click();
+ // UnStar
await page
.getByRole('button', { name: 'Open the document options' })
.click();
- await expect(page.getByText('Unpin')).toBeVisible();
-
- await page.goto('/');
-
- const row = await getGridRow(page, docTitle);
-
- // Check is pinned
- await expect(row.getByTestId('doc-pinned-icon')).toBeVisible();
- const leftPanelFavorites = page.getByTestId('left-panel-favorites');
- await expect(leftPanelFavorites.getByText(docTitle)).toBeVisible();
-
- await row.getByText(docTitle).click();
- await page
- .getByRole('button', { name: 'Open the document options' })
- .click();
-
- // Unpin
- await page.getByRole('menuitem', { name: 'Unpin' }).click();
- await page
- .getByRole('button', { name: 'Open the document options' })
- .click();
- await expect(page.getByRole('menuitem', { name: 'Pin' })).toBeVisible();
-
- await page.goto('/');
-
- // Check is unpinned
- await expect(row.getByTestId('doc-pinned-icon')).toBeHidden();
- await expect(leftPanelFavorites.getByText(docTitle)).toBeHidden();
+ await page.getByRole('menuitem', { name: 'Unstar' }).click();
+ await expect(page.getByText('This document is starred')).toBeHidden();
});
test('it duplicates a document', async ({ page, browserName }) => {
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts
index 456df240c..2956da33a 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts
@@ -81,7 +81,7 @@ test.describe('Doc Trashbin', () => {
await clickInGridMenu(page, row2, 'Restore');
await expect(row2.getByText(title2)).toBeHidden();
- await page.getByRole('link', { name: 'All docs' }).click();
+ await page.getByRole('link', { name: 'Recent' }).click();
const row2Restored = await getGridRow(page, title2);
await expect(row2Restored.getByText(title2)).toBeVisible();
await row2Restored.getByRole('link', { name: /Open document/ }).click();
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts
index 34c6b6907..cbb2dcf2c 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts
@@ -19,7 +19,7 @@ test.describe('Header', () => {
// Clicking moves focus to the page heading
await skipLink.click();
const pageHeading = page.getByRole('heading', {
- name: 'All docs',
+ name: 'Recent',
level: 2,
});
await expect(pageHeading).toBeFocused();
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/left-panel.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/left-panel.spec.ts
index 8e79553a9..d1cd268db 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/left-panel.spec.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/left-panel.spec.ts
@@ -285,7 +285,7 @@ test.describe('Left panel responsive', () => {
await page.setViewportSize({ width: 900, height: 1200 });
await page.goto('/');
- await expect(page.getByRole('link', { name: 'All docs' })).toBeInViewport();
+ await expect(page.getByRole('link', { name: 'Recent' })).toBeInViewport();
await expect(newDocButton).toBeInViewport();
await expect(userMenu).toBeInViewport();
await expect(header.getByLabel('Toggle left panel')).toBeVisible();
diff --git a/src/frontend/apps/impress/src/assets/icons/doc-all.svg b/src/frontend/apps/impress/src/assets/icons/doc-all.svg
deleted file mode 100644
index a4e61a5aa..000000000
--- a/src/frontend/apps/impress/src/assets/icons/doc-all.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
diff --git a/src/frontend/apps/impress/src/assets/icons/ui-kit/clock.svg b/src/frontend/apps/impress/src/assets/icons/ui-kit/clock.svg
index 1f9490559..7cf330c52 100644
--- a/src/frontend/apps/impress/src/assets/icons/ui-kit/clock.svg
+++ b/src/frontend/apps/impress/src/assets/icons/ui-kit/clock.svg
@@ -1,3 +1,19 @@
-