Skip to content

Commit 05ceeb3

Browse files
committed
feat: formatted breadcrumbs - extract wikilink display text, remove fold markers
- Wikilinks now show only display text: [[link|display]] -> display - Remove Creases plugin %% fold %% markers from breadcrumbs - Remove all Obsidian comments (%% ... %%) from breadcrumbs - Remove all block IDs (not just outliner- format) from breadcrumbs Bump version to 1.0.4
1 parent bc732de commit 05ceeb3

File tree

4 files changed

+58
-4
lines changed

4 files changed

+58
-4
lines changed

CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,42 @@
11
# Changelog
22

3+
## 1.0.4 (2025-12-07)
4+
5+
### Improvements
6+
- **Formatted breadcrumbs** - Wikilinks now display only their display text (e.g., `[[2025-12-05|Dec 5th]]` shows as `Dec 5th`)
7+
- **Clean breadcrumbs** - Removed Creases plugin fold markers (`%% fold %%`) and other Obsidian comments from breadcrumbs
8+
- **Block ID cleanup** - All block IDs (both plugin and native Obsidian format) are now hidden from breadcrumbs
9+
10+
## 1.0.3 (2025-12-07)
11+
12+
### Bug Fixes
13+
- Fixed expand selection to full list items when selecting from parent to child items
14+
- Fixed block IDs visibility in mirrored content when "Show block IDs" option is off
15+
- Fixed debug logs appearing when debug mode is disabled
16+
17+
### Improvements
18+
- Added "Paste as Block Link" command - pastes a wikilink to the original block
19+
- Added setting to toggle visibility of block IDs and mirror markers
20+
21+
## 1.0.2 (2025-12-07)
22+
23+
### Bug Fixes
24+
- Fixed mirror paste indentation when pasting at nested levels
25+
- Fixed sync duplicates issue when original content was updated
26+
- Fixed block ID adjacency issue (now requires space before `^`)
27+
28+
## 1.0.1 (2025-12-06)
29+
30+
### Features
31+
- **Linked Copies (Mirrors)** - Create synchronized copies of list items across documents
32+
- **i18n Support** - Added Russian language translations for all commands and settings
33+
- **Go to Original** command - Navigate from mirror to original block
34+
- **Break Mirror Link** command - Convert mirror to regular copy
35+
36+
### Bug Fixes
37+
- Fixed mirror markers visibility in editor
38+
- Fixed orphaned block ID cleanup when all mirrors are deleted
39+
340
## 1.0.0 (2025-12-06)
441

542
Initial release combining [Outliner](https://github.com/vslinko/obsidian-outliner) and [Zoom](https://github.com/vslinko/obsidian-zoom) into a single unified plugin.

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"id": "obsidian-pro-outliner",
33
"name": "Pro Outliner",
4-
"version": "1.0.3",
4+
"version": "1.0.4",
55
"minAppVersion": "1.8.7",
66
"description": "Work with your lists like in Workflowy, RoamResearch, or Tana, with powerful zoom functionality. Combines the best of Outliner and Zoom plugins.",
77
"author": "Ruben Khachaturov",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "obsidian-pro-outliner",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"description": "Work with your lists like in Workflowy, RoamResearch, or Tana, with zoom functionality.",
55
"main": "main.js",
66
"scripts": {

src/logic/utils/cleanTitle.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,25 @@ export function cleanTitle(title: string) {
66
.replace(/^([-+*]|\d+\.)(\s)/, "$2")
77
// Remove mirror markers
88
.replace(/\s*<!--\s*mirror:[a-zA-Z0-9]+\s*-->\s*/g, "")
9-
// Remove block IDs
10-
.replace(/\s*\^outliner-[a-zA-Z0-9]+\s*/g, "")
9+
// Remove block IDs (both outliner- and native Obsidian format)
10+
.replace(/\s*\^[a-zA-Z0-9-]+\s*/g, "")
11+
// Extract display text from wikilinks: [[link|display]] -> display, [[link]] -> link
12+
.replace(/\[\[([^\]]+)\]\]/g, (_match, content: string) => {
13+
const parts = content.split("|");
14+
// If there's a pipe, use the part after it (display text)
15+
// Otherwise use the link itself (remove path if present)
16+
if (parts.length > 1) {
17+
return parts[parts.length - 1];
18+
}
19+
// For [[link]], extract just the note name (remove path)
20+
const linkPart = parts[0];
21+
const lastSlash = linkPart.lastIndexOf("/");
22+
return lastSlash >= 0 ? linkPart.substring(lastSlash + 1) : linkPart;
23+
})
24+
// Remove Creases plugin fold markers: %% fold %%, %% fold:... %%, etc.
25+
.replace(/\s*%%\s*fold[^%]*%%\s*/gi, "")
26+
// Remove other common markers: %% ... %%
27+
.replace(/\s*%%[^%]*%%\s*/g, "")
1128
.trim()
1229
);
1330
}

0 commit comments

Comments
 (0)