Skip to content

chore: delete UI for features that is not implemented yet#320

Merged
vitonsky merged 10 commits into
masterfrom
143-delete-any-ui-for-features-that-is-not-implemented-yet
Jun 9, 2026
Merged

chore: delete UI for features that is not implemented yet#320
vitonsky merged 10 commits into
masterfrom
143-delete-any-ui-for-features-that-is-not-implemented-yet

Conversation

@vitonsky

@vitonsky vitonsky commented Jun 8, 2026

Copy link
Copy Markdown
Member

Closes #143

Summary by CodeRabbit

  • Removed Features

    • Notifications system and popup; reminder/notification settings removed
    • Pin (thumbtack) note action removed
    • Back links feature removed
    • Several Activity Bar buttons removed (files, reminders, extensions, inbox, publish)
  • New Features

    • Note history menu option added
  • UI Changes

    • Activity bar streamlined
    • Settings panels reorganized
    • Editor toolbar and button sizing/props refined

@vitonsky vitonsky linked an issue Jun 8, 2026 that may be closed by this pull request
@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR removes the Notifications feature and its theme wiring, simplifies activity bar and settings UI, standardizes editor toolbar button sizing to xs and forwards button props, cleans up note menu/sidebar tabs, and updates status-bar date localization and icon adjustments.

Changes

Feature Deletion and UI Simplification

Layer / File(s) Summary
Notifications feature removal
packages/app/src/components/theme/base.ts, packages/app/src/features/MainScreen/index.tsx
Removes NotificationsRecipe from theme slotRecipes and deletes NotificationsPopup usage/import from MainScreen.
Activity bar and main screen cleanup
packages/app/src/features/MainScreen/ActivityBar.tsx
Removes several activity IconButtons and consolidates react-icons imports to only used icons.
Settings panel reorganization
packages/app/src/features/App/Settings/sections/GeneralSettings.tsx, packages/app/src/features/App/Settings/sections/VaultSettings.tsx
Moves LanguagePicker into main panel with a Separator, removes notifications switch and many VaultSettings groups, and reintroduces only the deleteOrphaned toggle in files-and-data.
Editor toolbar sizing and button prop forwarding
packages/app/src/features/NoteEditor/EditorPanel/EditorPanel.tsx, packages/app/src/features/NoteEditor/EditorPanel/buttons/HeaderPicker.tsx, packages/app/src/features/NoteEditor/EditorPanel/buttons/ImageButton.tsx, packages/app/src/features/NoteEditor/EditorPanel/buttons/LinkButton.tsx
Changes toolbar button sizes from sm to xs; HeaderPicker now accepts buttonProps; ImageButton and LinkButton forward extra ButtonProps.
Note menu and sidebar tabs cleanup
packages/app/src/features/NoteEditor/NoteMenu.tsx, packages/app/src/features/NoteEditor/index.tsx
Removes unimplemented menu items (remind me, backlinks, readonly, etc.), adds a history menu item, removes pin button, and deletes BACK_LINKS/files sidebar tabs.
Status bar icons and localized date formatting
packages/app/src/features/App/Vault/VaultStatusBar/useVaultSyncButton.tsx, packages/app/src/features/App/Workspace/WorkspaceStatusBarItems.tsx, packages/app/src/features/App/Workspace/useActiveNoteHistoryButton.tsx, packages/app/src/hooks/useLocalizedDate.tsx
Scales sync icon, registers a status-bar control via useEffect using FaTent, uses useLocalizedDate + Redux date format for active-note date, and fixes dayjs(date) usage in the localization hook.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

  • DeepinkApp/deepink#307: Related previous changes that also remove/adjust the Notifications UI and theme slotRecipes.

Poem

🐰 I hopped through code with a twitch and a grin,
Removed half-baked bells and tidied the bin,
Buttons grew smaller, their props now polite,
Menus trimmed thin, status-bar dates look just right,
A rabbit-approved refactor — neat and light! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main objective of the PR: removing UI for unimplemented features, which is reflected across all changeset modifications.
Linked Issues check ✅ Passed The PR successfully addresses issue #143 by removing UI components and settings for unimplemented features including notifications, reminders, extensions, inbox, publish notes, backlinks, and other controls.
Out of Scope Changes check ✅ Passed Minor supporting changes like icon scaling, date formatting improvements, and prop forwarding enhancements are reasonable refactoring alongside the main UI removal objective.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 143-delete-any-ui-for-features-that-is-not-implemented-yet

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
packages/app/src/features/NoteEditor/EditorPanel/buttons/ImageButton.tsx (1)

20-24: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Avoid accepting onClick when it is always ignored.

The component now accepts full ButtonProps, but internal onClick replaces any caller onClick, which makes part of the public props misleading.

Suggested fix
 export const ImageButton: FC<
- ButtonProps & {
+ Omit<ButtonProps, 'onClick'> & {
     onPick: (payload: InsertingPayloadMap['image']) => void;
   }
 > = ({ onPick, ...props }) => {

Also applies to: 34-35

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/app/src/features/NoteEditor/EditorPanel/buttons/ImageButton.tsx`
around lines 20 - 24, The ImageButton component accepts all ButtonProps but
always overwrites onClick, which makes the public API misleading; update the
component signature to exclude onClick from the accepted props (e.g., use
Omit<ButtonProps, "onClick"> or explicitly type the allowed props) so callers
cannot pass an ignored onClick, and keep passing the remaining props
({...props}) into the Button; apply the same change for the other similar button
declarations around lines 34-35 to remove onClick from their prop types as well.
packages/app/src/features/NoteEditor/EditorPanel/buttons/LinkButton.tsx (1)

20-24: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

ButtonProps overstates supported behavior here.

onClick can be passed by type, but it never executes because internal onClick overwrites it. Restricting the accepted props prevents misuse.

Suggested fix
 export const LinkButton: FC<
- ButtonProps & {
+ Omit<ButtonProps, 'onClick'> & {
     onPick: (payload: InsertingPayloadMap['link']) => void;
   }
 > = ({ onPick, ...props }) => {

Also applies to: 34-35

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/app/src/features/NoteEditor/EditorPanel/buttons/LinkButton.tsx`
around lines 20 - 24, The component LinkButton currently types its props as
ButtonProps which permits an onClick prop that never runs because the component
supplies its own internal onClick; update the prop type for the LinkButton
component to exclude onClick (e.g. use Omit<ButtonProps, 'onClick'>) so callers
cannot pass an ignored onClick, and adjust the component signature that
currently reads LinkButton: FC<ButtonProps & { onPick: ... }> to use the
narrowed type (and apply the same change to the similar occurrence around the
onPick usage referenced in the comment).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/app/src/features/NoteEditor/EditorPanel/buttons/HeaderPicker.tsx`:
- Around line 12-17: Narrow the exposed buttonProps type so consumers cannot
pass handlers that will be overridden: change the prop declaration in
HeaderPicker from buttonProps?: ButtonProps to buttonProps?: Omit<ButtonProps,
'onClick' | 'onMouseUp'> (and apply the same Omit to the other buttonProps
occurrence in this file), ensuring the component still forwards allowed props to
the internal Button/Menu.Button while preventing misleading onClick/onMouseUp
handlers from being part of the public API.

---

Outside diff comments:
In `@packages/app/src/features/NoteEditor/EditorPanel/buttons/ImageButton.tsx`:
- Around line 20-24: The ImageButton component accepts all ButtonProps but
always overwrites onClick, which makes the public API misleading; update the
component signature to exclude onClick from the accepted props (e.g., use
Omit<ButtonProps, "onClick"> or explicitly type the allowed props) so callers
cannot pass an ignored onClick, and keep passing the remaining props
({...props}) into the Button; apply the same change for the other similar button
declarations around lines 34-35 to remove onClick from their prop types as well.

In `@packages/app/src/features/NoteEditor/EditorPanel/buttons/LinkButton.tsx`:
- Around line 20-24: The component LinkButton currently types its props as
ButtonProps which permits an onClick prop that never runs because the component
supplies its own internal onClick; update the prop type for the LinkButton
component to exclude onClick (e.g. use Omit<ButtonProps, 'onClick'>) so callers
cannot pass an ignored onClick, and adjust the component signature that
currently reads LinkButton: FC<ButtonProps & { onPick: ... }> to use the
narrowed type (and apply the same change to the similar occurrence around the
onPick usage referenced in the comment).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 5a69b13d-aade-45dc-9d81-a0a402ad2cf3

📥 Commits

Reviewing files that changed from the base of the PR and between ddcef38 and a791c40.

📒 Files selected for processing (14)
  • packages/app/src/components/Notifications/Notifications.theme.ts
  • packages/app/src/components/Notifications/Notifications.tsx
  • packages/app/src/components/theme/base.ts
  • packages/app/src/features/App/Settings/sections/GeneralSettings.tsx
  • packages/app/src/features/App/Settings/sections/VaultSettings.tsx
  • packages/app/src/features/MainScreen/ActivityBar.tsx
  • packages/app/src/features/MainScreen/index.tsx
  • packages/app/src/features/NoteEditor/EditorPanel/EditorPanel.tsx
  • packages/app/src/features/NoteEditor/EditorPanel/buttons/HeaderPicker.tsx
  • packages/app/src/features/NoteEditor/EditorPanel/buttons/ImageButton.tsx
  • packages/app/src/features/NoteEditor/EditorPanel/buttons/LinkButton.tsx
  • packages/app/src/features/NoteEditor/NoteMenu.tsx
  • packages/app/src/features/NoteEditor/index.tsx
  • packages/app/src/features/NotificationsPopup/index.tsx
💤 Files with no reviewable changes (6)
  • packages/app/src/components/Notifications/Notifications.tsx
  • packages/app/src/features/NotificationsPopup/index.tsx
  • packages/app/src/features/MainScreen/index.tsx
  • packages/app/src/components/Notifications/Notifications.theme.ts
  • packages/app/src/components/theme/base.ts
  • packages/app/src/features/NoteEditor/index.tsx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/app/src/features/App/Workspace/WorkspaceStatusBarItems.tsx (1)

19-36: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add effect cleanup for status-bar control registration.

Line 19 registers changeVault but never unregisters it. This can leave stale controls after unmount/remount cycles.

Suggested fix
 	useEffect(() => {
 		statusBarButtons.controls.register(
 			'changeVault',
 			{
 				visible: true,
 				title: t('statusBar.changeVault'),
 				onClick: () => {
 					dispatch(workspacesApi.setActiveVault(null));
 					vaultControls.close();
 				},
 				icon: <FaTent />,
 			},
 			{
 				placement: 'start',
 				priority: 1,
 			},
 		);
+
+		return () => {
+			statusBarButtons.controls.unregister('changeVault');
+		};
 	}, [dispatch, statusBarButtons.controls, t, vaultControls]);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/app/src/features/App/Workspace/WorkspaceStatusBarItems.tsx` around
lines 19 - 36, The effect registers the 'changeVault' control via
statusBarButtons.controls.register but never unregisters it; update the
useEffect to return a cleanup function that calls
statusBarButtons.controls.unregister('changeVault') (or the correct deregister
method on statusBarButtons.controls) so the control is removed on unmount,
keeping the hook around dispatch, statusBarButtons.controls, t, and
vaultControls as dependencies; place this cleanup in the same useEffect that
calls statusBarButtons.controls.register.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@packages/app/src/features/App/Workspace/WorkspaceStatusBarItems.tsx`:
- Around line 19-36: The effect registers the 'changeVault' control via
statusBarButtons.controls.register but never unregisters it; update the
useEffect to return a cleanup function that calls
statusBarButtons.controls.unregister('changeVault') (or the correct deregister
method on statusBarButtons.controls) so the control is removed on unmount,
keeping the hook around dispatch, statusBarButtons.controls, t, and
vaultControls as dependencies; place this cleanup in the same useEffect that
calls statusBarButtons.controls.register.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8b27884d-0241-4a9e-9b28-8bc199e7757a

📥 Commits

Reviewing files that changed from the base of the PR and between a791c40 and 8c84267.

📒 Files selected for processing (4)
  • packages/app/src/features/App/Vault/VaultStatusBar/useVaultSyncButton.tsx
  • packages/app/src/features/App/Workspace/WorkspaceStatusBarItems.tsx
  • packages/app/src/features/App/Workspace/useActiveNoteHistoryButton.tsx
  • packages/app/src/hooks/useLocalizedDate.tsx
✅ Files skipped from review due to trivial changes (1)
  • packages/app/src/features/App/Vault/VaultStatusBar/useVaultSyncButton.tsx

@vitonsky vitonsky merged commit f7b5a3d into master Jun 9, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Delete any UI for features that is not implemented yet

1 participant