2.2 Logo's
Below is an overview of SharpNote's logo history. The logo is also used as the app icon for the corresponding version.
v1 (1.0.0 - 1.1.0)
v2 (1.2.0+)
3.1 Version Overview
Below is an overview of all SharpNote versions. All SharpNote releases are codenamed with the name of a color alphabetically.
|
# |
Version |
Release Name |
Release Date |
|
1 |
1.0.0 |
Azure |
23/02/2025 |
|
2 |
1.1.0 |
Blossom |
03/03/2025 |
|
3 |
1.2.0 |
Crimson |
13/04/2025 |
|
4 |
1.3.0 |
Emerald |
TBA |
3.4 Backward Compatibility
Below is an overview of the backward compatibility history for each version:
| Version |
Backwards compatible with |
Reason |
Compatible with previous |
| 1.0.0 |
- |
First release |
|
| 1.1.0 |
- |
Changed database columns |
|
| 1.2.0 |
1.2.0+ |
Major database & architecture changes |
|
Below is an overview of the backward compatibility compared to the latest version for each version:
| Version |
Compatible with latest |
| 1.0.0 |
|
| 1.1.0 |
|
| 1.2.0 |
|
4.1 Welcome popup
This is the onboarding popup shown when the user opens SharpNote for the first time. The primary use for this is asking the user whether they want to set a username to use in author fields.
SharpNote remembers whether the user has seen this popup with 'welcomePopupSeen' in the config file. Once the user submits the popup, this property is set to true.
The username can always be set, changed or removed in Settings.
4.2 Menu Bar
The Menu Bar is the bar shown at the very top of the application. It allows you to do various things, such as opening Settings, exporting, importing, toggling the left panel, toggling delete mode, among many other things.
From 1.3.0 onwards, the Menu Bar also serves as the app's title bar. As a part of UI v2, the default OS title bar is disabled. The Menu Bar directly serves its purpose now, allowing the user to drag and close the app through it.
4.3 Control Bar
The Control Bar is the bar shown at the very bottom of the application. This bar is designed to show important information and allows for easy access to important tasks.
The Control Bar consists of the following (from left to right):
- Refresh Button
- Note Counter
- Text Statistics
- Autosave Status
- Manual Save Button
4.4 Note List
The Note List is the left panel and shows all your notes and folders.
Each note and folder is represented by a 'Note Item' or 'Folder Item'. This item contains an icon (sticky note for notes, folder for folders) and is colored according to the note/folder color.
Clicking on a folder will reveal the notes under it.
Notes and folders can be reordered by dragging and dropping them. The exact order is saved in your sharpnote-config.json file and can be included in Sharpbook exports.
Right-clicking a note or folder will show a context menu, with the following options:
Note Context Menu
- Note Info
- Edit Note
- Move to Folder (if you have any)
- Export Note
- Delete Note
Folder Context Menu
- Folder Info
- Edit Folder
- Export Folder Notes
- Delete Folder
The 'Move to Folder' option opens a menu next to the context menu, with a list of all your folders. If the note is already under a folder, this menu also shows an option to remove it from the folder.
At the top of the Note List you can find buttons to create a new note or folder. At the bottom of the Note List, you can find a bar that allows you to collapse the Note List into a minimized form.
4.6 Settings
The Settings popup can be accessed through the File dropdown in the Menu Bar. It allows the user to customize specific parts of the app.
The popup consists of a tab list on the left side and the tab content on the right side. It also has buttons to close and save at the bottom.
Settings consists of the following tabs:
- User
- Display
- Editor
- Storage
- Shortcuts
- App
Below is an overview of all available settings per tab:
User
Display
- Note List item style (Normal/Slim/Big/Detailed)
- Show icons in menubar
- Show note counter
- Disable Drag-and-drop ordering
Editor
- Autosave (every minute)
- Show unsaved changes warning
- Show text statistics
- Spell Check
Storage
- Disable Import Checks (As a last resort, enable at your own risk)
- Folder delete behaviour (Delete notes/Keep notes)
- Storage Usage (App Storage, Notes Storage)
- Storage Actions (Delete everything)
Shortcuts
- Save opened note: CTRL + S
- Refresh: CTRL + R
- New note: CTRL + T
- Close note: CTRL + W
App
- SharpNote Version: <app version>
- App location (Button that takes you to the app's directory on your PC)
Settings are saved in your sharpnote-config.json file.
4.7 Export
You can export your data out of SharpNote using the Export window, accessible through the menu bar or by right-clicking a note or folder.
Data can be exported to the following file formats:
| Format |
Description |
| .sharp |
A single note |
| .sharpbook |
One or more notes and/or folders in one package |
| .txt |
A singular note's content as plain text |
| .pdf |
A singular note's content as a PDF |
| .docx |
A singular note's content as a Microsoft Word Document |
| .html |
A singular note's content as a web page |
| .db |
A copy of the database SharpNote uses to store notes and folders |
The Export popup consists of multiple options. Firstly you can select the Export Type, with the following options:
- Single Note: One singular note
- All Notes: All of your notes
- Selection of Notes: A specific selection of notes
- Notes Database: A copy of the database SharpNote uses to store notes and folders
After that, the user can select their desired Export Format. The available options differ depending on your selected Export Type:
| Export Type |
Available Export Format(s) |
| Single Note |
SharpNote Note File (*.sharp)
TXT (*.txt)
PDF (*.pdf)
Word Document (*.docx)
Single File Web Page (*.html)
|
| All Notes |
Pack into a single file (*.sharpbook)
Seperate export (*.sharp's)
|
| Selection of Notes |
Pack into a single file (*.sharpbook)
Seperate export (*.sharp's)
|
| Notes Database |
SQLite Database (*.db) |
The 'Seperate export' option exports each note as a seperate file. You will be prompted to choose a directory. Files with the same filename will be overwritten. To avoid overwriting the exports during the export process, notes with the same title will be appended with an incremental number.
A note browser (a simplified note list) is shown on the 'Single Note' and 'Selection of Notes' Export Types. Clicking on a note will select it. The 'Selection of Notes' Export Type allows for multiple notes to be selected in the note browser, while 'Single Note' will only allow one selection at a time.
A checkbox to include folders in the export is available on exports to a .sharpbook file.
A filename may be entered on the last step of the Export popup. When ready, the user can press the 'Export' button.
4.8 Import
You can import data into SharpNote using the Import window, accessible through the menu bar.
The popup starts with a file selector. SharpNote supports the following filetypes to be imported:
| Format |
Description |
| .sharp |
A SharpNote Note File (a single note) |
| .sharpbook |
A SharpNote Notebook File (one or more notes and/or folders) |
| .txt |
A plain text file |
If the user selects a .sharp file for importing, the note title will be shown.
If the user selects a .sharpbook file for importing, the amount of valid notes within the Sharpbook will be shown. If one or more notes contained in the Sharpbook are not valid, an additional counter of all invalid notes will be shown.
If the user select a .txt file for importing, the text will be shown in a textbox.
When importing a Sharpbook, the user has the option to use the structure saved within the Sharpbook. The notes/folders will still be added from the top of your list of notes, but their order will be decided by the structure property in the Sharpbook.
With every file selection, a validity status is shown. This can show a few things:
- Valid SharpNote File: The file is a valid .sharp or .sharpbook file.
- Valid File: The file is a valid .txt file.
- Invalid SharpNote File: The file is not a valid .sharp or .sharpbook file.
- SharpNote version not supported: The .sharp or .sharpbook file was exported in an incompatible version of SharpNote.
If a 'SharpNote version not supported' status occurs, a small explanation is given under it:
'The selected file was created in SharpNote version [version from the file], which isn't supported by your installed version ([your SharpNote version])
Every .sharp and .sharpbook file is checked on whether it is valid. The following criteria apply:
.sharp
- Must have the property 'sharpnoteVersion'
- Must have the property 'noteTitle'
- Must have the property 'noteContent'
- Must have the property 'noteColor'
- Must have the property 'noteOriginalAuthor'; may be null or empty and must be less than 32 characters and may only use the supported characters
- The property 'noteOriginalAuthor' may be null or empty and must be less than 32 characters
- Must have the property 'created' within it's noteHistory
- If 'noteOriginalAuthor', 'noteTitle', 'noteContent' or 'noteColor' are null, they will be converted to an empty string.
.sharpbook
- Must have the property 'notes'
- Must have the property 'sharpnoteVersion'
- Must have 1 or more notes
- Must have the property 'bookAuthor'; may be null or empty and must be less than 32 characters and may only use the supported characters
Every note contained in a .sharpbook is also checked against the validity criteria for a .sharp. If it passes, it is included in the import.
The validity checks may be disabled through Settings. This is only advised as a last resort, if the file should work but does not for some reason. SharpNote checks the validity of your imports to ensure data integrity and to avoid problems.
5.1 Config
SharpNote uses a config file stored as JSON to remember user settings and actions.
The config file is named sharpnote-config.json and is located in the root folder of the app.
The following information is stored in the config file:
| Property |
Description |
Datatype |
| username |
The username set by the user through the Welcome popup or through settings. Is optional. |
null | string |
| welcomePopupSeen |
Indicates whether the user has seen and submitted the Welcome popup. It shows the popup if this property is false. |
boolean |
| userSettings |
All the app settings. A JSON object containing properties like autoSave |
JSON object |
| structure |
Saves the order of the notelist. Contains two properties: 'folders' and 'rootOrder'. 'folders' contains all the folders with an array of noteIDs with order intact. 'rootOrder' defines the order of notes which are not under any folder, and the folders themselves. |
JSON object |
Below is an overview of what is stored in userSettings:
| Property |
Description |
Datatype |
Default |
Introduced |
| autoSave |
Whether autosaving is enabled. Notes will autosave if this is true. |
boolean |
true |
1.0.0 |
| showMenubarIcons |
Whether to show icons in the menubar dropdowns |
boolean |
true |
1.1.0 |
| noteItemStyle |
Which note item style the user has set. Either "normal", "slim", "big" or "detailed" |
string |
normal |
1.1.0 |
| showUnsavedChangesWarning |
Whether to show 'Unsaved Changes' warnings |
boolean |
true |
1.1.0 |
| disableImportChecks |
Option to disable validity checks within the import popup |
boolean |
false |
1.1.0 |
| folderDeleteBehaviour |
What to do when deleting a folder (either 'deletenotes' or 'keepnotes') |
string |
deletenotes |
1.2.0 |
| showTextStatistics |
Whether to show word/line count in Control Bar |
boolean |
true |
1.2.0 |
| showNoteCounter |
Whether to show Note Count in Control Bar |
boolean |
false |
1.2.0 |
| disableDnD |
Option to disable re-ordering in the Note List thru Drag and Drop |
boolean |
false |
1.2.0 |
| spellCheck |
Option to set whether the editor should highlight possible mistakes |
boolean |
true |
1.2.0 |
| createButtonsPosition |
Option to choose where the 'New ...' buttons should be placed |
string |
top |
1.3.0 |
Below is an example of what a sharpnote-config.json file might look like:
{
"username": "user1",
"welcomePopupSeen": true,
"userSettings": {
"autoSave": true,
"showMenubarIcons": true,
"noteItemStyle": "normal",
"showUnsavedChangesWarning": true,
"disableImportChecks": false,
"folderDeleteBehaviour": "deletenotes",
"showTextStatistics": true,
"showNoteCounter": true,
"disableDnD": false,
"spellCheck": true,
"createButtonsPosition": "top"
},
"structure": {
"rootOrder": [
"E28wk2v96LVOJsLj",
"jy7M0g88cmd1cycb",
"qg06EKMHYGEr9nnH",
"aslMQjAzVpetKwty",
"mHo9cDRI7rpC4gz4"
],
"folders": [
{
"folderID": "aslMQjAzVpetKwty",
"folderOrder": [
"gRencFsIPjxGEYwh",
"mhxRk7jOiiVXf7M9",
"HAtlDV5oFfx7k6n8"
]
}
]
}
}
5.2 Database
Your notes and folders are stored in a database called sharpnote.db, which is located in the root folder of the app.
This is the only database the app communicates with. Any new notes and changes to existing notes are saved here.
The table looks slightly different from a .sharp file. Namely, it has seperate columns for properties in noteHistory.
notes Table
| Column |
Description |
Datatype |
Example |
| noteID |
The ID of the note. |
TEXT (PK) |
3N5W47EDZOX2Ri9e |
| sharpnoteVersion |
The version of SharpNote in which the note was created. |
TEXT |
1.0.0 |
| sharpnoteType |
The type of the item for internal app usage. In this table always set to "note" |
TEXT |
note |
| noteTitle |
The name (title) of the note. |
TEXT |
Example Title |
| noteContent |
The content of the note, base64 encoded. |
TEXT |
VGhpcyBpcyBhIHF1aWNrIGV4YW1wbGU= |
| noteColor |
The color of the note, stored as HEX value. |
TEXT |
#FF0000 |
| noteAttachments |
Stores the attachments embedded into a note, like images or PDF's. |
TEXT |
|
| noteOriginalAuthor |
The username of the original creator of the note. Is set upon creation and not changed thereafter. |
TEXT |
user1 |
| noteLastAuthor |
The username of the person who last saved the note. Changes everytime a note is saved. |
TEXT |
pacman77 |
| noteFolder |
The ID of the folder the note is under |
TEXT |
jbL4j0X8DhYjVhK2 |
| created |
The datetime of when the note was originally created. |
TEXT |
2024-05-12T23:50:21.817Z |
| lastSaved |
The datetime of when the note was last saved. |
TEXT |
2024-05-12T23:50:21.817Z |
| lastOpened |
The datetime of when the note was last opened in SharpNote |
TEXT |
2024-05-12T23:50:21.817Z |
| lastExported |
The datetime of when the note was last exported out of SharpNote. |
TEXT |
2024-05-12T23:50:21.817Z |
| noteVersion |
The note revision. Increases on every save and edit. |
INTEGER |
17 |
| noteTags |
Optional tags/labels assigned to the note. A string array. |
TEXT |
["Work", "Important", "To-Do"] |
| isReadonly |
Whether the note is set as Readonly. 0 = false, 1 = true |
BOOL |
0 |
folders Table
| Column |
Description |
Datatype |
Example |
| folderID |
The ID of the folder. |
TEXT (PK) |
zeQ6dAQE0jdt53Df |
| sharpnoteType |
The type of the item for internal app usage. In this table always set to "folder" |
TEXT |
folder |
| folderTitle |
The name (title) of the folder. |
TEXT |
Example Folder |
| folderNotes |
String array of note IDs |
TEXT |
["I1pEt6b7ZEkMWC8n","3N5W47EDZOX2Ri9e"] |
| folderColor |
The color of the folder, stored as HEX value. |
TEXT |
#FF0000 |
| folderOriginalAuthor |
The username of the original creator of the folder. Is set upon creation and not changed thereafter. |
TEXT |
user1 |
| created |
The datetime of when the folder was originally created. |
TEXT |
2024-05-12T23:50:21.817Z |
5.3 Note
This section documents the Note object. A Note is a singular note created in SharpNote. This is what a .sharp file contains.
Below is an overview of all properties stored in a Note.
| Property |
Description |
Datatype |
Example |
| noteID |
The ID of the note. 16-characters using a-z, A-Z and 0-9. |
string |
3N5W47EDZOX2Ri9e |
| sharpnoteVersion |
The version of SharpNote in which the note was created. |
string |
1.0.0 |
| sharpnoteType |
The type of the item for internal app usage. |
string |
note |
| noteTitle |
The name (title) of the note. |
string |
Example Title |
| noteContent |
The content of the note, base64 encoded. |
string |
VGhpcyBpcyBhIHF1aWNrIGV4YW1wbGU= |
| noteColor |
The color of the note, stored as HEX value. |
string |
#FF0000 |
| noteAttachments |
Stores the attachments embedded into a note, like images or PDF's. |
Array of JSON objects |
|
| noteOriginalAuthor |
The username of the original creator of the note. Is set upon creation and not changed thereafter. |
string | null |
user1 |
| noteLastAuthor |
The username of the person who last saved the note. Changes everytime a note is saved. |
string | null |
pacman77 |
| noteFolder |
The ID of the folder the note is under |
string | null |
jbL4j0X8DhYjVhK2 |
| noteTags |
Optional tags/labels assigned to the note. A string array. |
Array of strings |
["Work", "Important", "To-Do"] |
| isReadonly |
Whether the note is set as Readonly. 0 = false, 1 = true |
number |
0 |
| noteHistory |
Logs historical data for the note, such as when it was created, when it was last saved, and which revision it is currently on. |
JSON object |
|
The following information is stored in noteHistory:
| Property |
Description |
Datatype |
| created |
The datetime of when the note was originally created. |
string |
2024-05-12T23:50:21.817Z |
| lastSaved |
The datetime of when the note was last saved. |
string |
2024-05-12T23:50:21.817Z |
| lastOpened |
The datetime of when the note was last opened in SharpNote |
string |
2024-05-12T23:50:21.817Z |
| lastExported |
The datetime of when the note was last exported out of SharpNote. |
string | null |
2024-05-12T23:50:21.817Z |
| noteVersion |
The note revision. Increases on every save and edit. |
number |
17 |
Below is an example of what a .sharp file might look like:
{
noteID: "5ze1h7UZG9znrhBq",
sharpnoteVersion: "1.0.0",
sharpnoteType: "note",
noteTitle: "Work Notes 21/02/2025",
noteContent: "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQWxpcXVhbSBibGFuZGl0IG9ybmFyZSBudWxsYS4=",
noteColor: "#FF0000",
noteAttachments: [{},{}],
noteOriginalAuthor: "pacman77",
noteLastAuthor: "pacman77",
noteFolder: "jbL4j0X8DhYjVhK2",
noteTags: ["work", "meetings", "important"],
isReadonly: 0,
noteHistory: {
created: "2025-05-12T23:50:21.817Z",
lastSaved: "2025-05-12T23:50:21.817Z",
lastOpened: "2025-05-12T23:50:21.817Z",
lastExported: "2025-05-12T23:50:21.817Z",
noteVersion: 17,
}
}
The noteContent is encoded in base64 to accurately store the note content in a way that it always results in the same output. Because the noteContent is stored as base64, notes written in SharpNote will be somewhat larger than just regular plaintext. The noteContent is not readable when looking at just the file contents, but base64 can easily be decoded by anyone. Base64 also comes with the added benefit of having very low security risks, something which a method like HTML encoding would suffer from.
5.4 Folder
This section documents the Folder object. A Folder is a collection of notes created in SharpNote. They can be included in .sharpbook exports.
Below is an overview of all properties stored in a Folder.
| Property |
Description |
Datatype |
Example |
| folderID |
The ID of the folder. 16-characters using a-z, A-Z and 0-9. |
string |
RQHOUOMnKnwuHeqj |
| sharpnoteType |
The type of the item for internal app usage. |
string |
folder |
| folderTitle |
The name (title) of the folder. |
string |
Example Folder |
| folderNotes |
The IDs of all notes contained in the folder |
Array of strings |
["GG9RSXBxMyRkSqUb","7UFZpTxeRrRrl0dX"] |
| folderColor |
The color of the folder, stored as HEX value. |
string |
#FF0000 |
| folderOriginalAuthor |
The username of the original creator of the folder. Is set upon creation and not changed thereafter. |
string | null |
user1 |
| created |
The datetime of when the folder was originally created. |
string |
2024-05-12T23:50:21.817Z |
5.5 Sharpbook
This section documents the Sharpbook (notebook) object. A Sharpbook is a collection of multiple notes created in SharpNote. This is what a .sharpbook file contains.
Both export options 'All Notes' and 'Selection of notes/folders' result in a .sharpbook file.
Below is an overview of all properties stored in a Sharpbook.
| Property |
Description |
Datatype |
Example |
| sharpbookID |
The ID of the notebook. 16-characters using a-z, A-Z and 0-9. |
string |
1.0.0 |
| sharpnoteVersion |
The version of SharpNote in which the note was created. |
string |
1.0.0 |
| bookExported |
The datetime of when the notebook was exported. |
string |
2024-05-12T23:50:21.817Z |
| bookAuthor |
The username of the person who exported the notebook. |
string | null |
pacman77 |
| bookType |
The type of the exported notebook based on the Export option. 'All Notes' would be 'all' and 'Selection of notes/folders' would be 'selection' |
string |
all |
| notes |
All the notes included in the notebook. |
Array of Note JSON objects |
|
| folders |
All the folders included in the notebook. |
Array of Folder JSON objects | null |
|
| structure |
Contains the structure object from sharpnote-config with only the relevant IDs |
JSON object | null |
|
Below is an example of what a .sharpbook file might look like:
{
sharpbookID: "nFEUu0Txsp1lnknd",
sharpnoteVersion: "1.0.0",
bookExported: 2024-05-12T23:50:21.817Z,
bookAuthor: "pacman77",
bookType: "all"
notes: [
{ noteID: "5ze1h7UZG9znrhBq", sharpnoteVersion: "1.0.0", sharpnoteType: "note", noteTitle: "Work Notes 21/02/2025", noteContent: "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQWxpcXVhbSBibGFuZGl0IG9ybmFyZSBudWxsYS4=", noteColor: "#FF0000", noteAttachments: [{},{}], noteOriginalAuthor: "pacman77", noteLastAuthor: "pacman77", noteFolder: null, noteTags: ["work", "meetings", "important"], isReadonly: 0, noteHistory: { created: "2025-05-12T23:50:21.817Z", lastSaved: "2025-05-12T23:50:21.817Z", lastOpened: "2025-05-12T23:50:21.817Z", lastExported: "2025-05-12T23:50:21.817Z", noteVersion: 17, } },
{ noteID: "TLLaeGmBxAQSR6fL", sharpnoteVersion: "1.0.0", sharpnoteType: "note", noteTitle: "Work Notes 25/02/2025", noteContent: "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQWxpcXVhbSBibGFuZGl0IG9ybmFyZSBudWxsYS4=", noteColor: "#FF0000", noteAttachments: [{},{}], noteOriginalAuthor: "pacman77", noteLastAuthor: "pacman77", noteFolder: "jbL4j0X8DhYjVhK2", noteTags: ["work", "meetings", "important"], isReadonly: 0, noteHistory: { created: "2025-05-12T23:50:21.817Z", lastSaved: "2025-05-12T23:50:21.817Z", lastOpened: "2025-05-12T23:50:21.817Z", lastExported: "2025-05-12T23:50:21.817Z", noteVersion: 2, } },
],
folders: [
{
folderID: "jbL4j0X8DhYjVhK2",
sharpnoteType: "folder",
folderTitle: "New Folder",
folderNotes: [
"TLLaeGmBxAQSR6fL"
],
folderColor: "#FFFFFF",
folderOriginalAuthor: "kiyan2",
created: "2025-03-18T21:01:19.975Z"
}
],
structure: {
rootOrder: [
"5ze1h7UZG9znrhBq",
"TLLaeGmBxAQSR6fL",
"jbL4j0X8DhYjVhK2"
],
folders: [
{
folderID: "jbL4j0X8DhYjVhK2",
folderOrder: [
"TLLaeGmBxAQSR6fL"
]
}
]
}
}
A Sharpbook essentially creates an exact archive of your notes, folders and their order.
5.6 FolderStructure Folder
This section documents the FolderStructure Folder object. A FolderStructure Folder is a collection of multiple notes in the Note List to keep your notes organized.
Below is an overview of all properties stored in a Folder.
| Property |
Description |
Datatype |
Example |
| folderID |
The folder's ID. 16-characters using a-z, A-Z and 0-9. |
string |
k9Az72bpr4r00qax |
| folderOrder |
A string array of all note IDs contained in the folder, in exact order |
string array |
["5ze1h7UZG9znrhBq", "TLLaeGmBxAQSR6fL"] |
5.7 Filetypes
The following filetypes are associated with SharpNote for exporting and importing notes:
| Extension |
Description |
| .sharp |
A SharpNote Note File. Stores a singular note from SharpNote. |
| .sharpbook |
A SharpNote Notebook File. Stores multiple notes/folders. |
6.1 UI v2
Introduced in 1.3.0, UI v2 overhauls the UI. OneNote was used as inspiration.
UI v2 introduces the following changes compared to UI v1:
- A darker theme
- Borderless items in the Note List
- Smaller font size in Note List
- Uses Menu Bar as title bar instead of OS default
- Smaller font size and no borders in Context Menu's
- Less usage of gray borders to seperate sections, most notably seen in the Menu Bar, which now has no hard border but a shadow instead for a smoother transition.