diff --git a/src/components/NoteItem.test.tsx b/src/components/NoteItem.test.tsx
index af196441..1d57bbec 100644
--- a/src/components/NoteItem.test.tsx
+++ b/src/components/NoteItem.test.tsx
@@ -281,6 +281,35 @@ describe('NoteItem', () => {
expect(screen.getByTestId('property-chip-topics-0')).toHaveTextContent('AI / ML')
})
+ it('keeps explicit wikilink aliases in relationship chips', () => {
+ const linkedProject = makeEntry({
+ path: '/vault/project/my-project.md',
+ filename: 'my-project.md',
+ title: 'My Project',
+ isA: 'Project',
+ })
+ const sourceEntry = makeEntry({
+ path: '/vault/note/source.md',
+ filename: 'source.md',
+ title: 'Source',
+ isA: 'Note',
+ relationships: { 'Belongs to': ['[[project/my-project|My Cool Project]]'] },
+ })
+
+ render(
+ ,
+ )
+
+ expect(screen.getByTestId('property-chip-belongs-to-0')).toHaveTextContent('My Cool Project')
+ })
+
it('opens URL chips on Cmd+click only and keeps regular clicks inert', () => {
const entry = makeEntry({
path: '/vault/note/source.md',
diff --git a/src/components/inspector/shared.test.ts b/src/components/inspector/shared.test.ts
index e35bc11e..4f598e18 100644
--- a/src/components/inspector/shared.test.ts
+++ b/src/components/inspector/shared.test.ts
@@ -22,4 +22,17 @@ describe('resolveRefProps', () => {
expect(props.label).toBe('AI / ML')
})
+
+ it('keeps explicit wikilink aliases for relationship labels', () => {
+ const linkedProject = makeEntry({
+ path: '/vault/project/my-project.md',
+ filename: 'my-project.md',
+ title: 'My Project',
+ isA: 'Project',
+ })
+
+ const props = resolveRefProps('[[project/my-project|My Cool Project]]', [linkedProject], {})
+
+ expect(props.label).toBe('My Cool Project')
+ })
})
diff --git a/src/components/inspector/shared.ts b/src/components/inspector/shared.ts
index 7d0b5bfb..9dfec937 100644
--- a/src/components/inspector/shared.ts
+++ b/src/components/inspector/shared.ts
@@ -25,13 +25,19 @@ export function entryStatusTitle(entry: VaultEntry | undefined): string | undefi
return undefined
}
+function resolveRefLabel(ref: string, resolvedTitle: string | undefined): string {
+ const displayLabel = wikilinkDisplay(ref)
+ if (ref.includes('|')) return displayLabel
+ return resolvedTitle ?? displayLabel
+}
+
export function resolveRefProps(ref: string, entries: VaultEntry[], typeEntryMap: Record) {
const resolved = resolveRef(ref, entries)
const refType = resolved?.isA ?? null
const te = typeEntryMap[refType ?? '']
const icon = resolved?.icon
return {
- label: resolved?.title ?? wikilinkDisplay(ref),
+ label: resolveRefLabel(ref, resolved?.title),
noteIcon: icon ?? null,
typeColor: getTypeColor(refType, te?.color),
bgColor: getTypeLightColor(refType, te?.color),
diff --git a/src/components/note-item/PropertyChips.tsx b/src/components/note-item/PropertyChips.tsx
index ccf668e1..9581d0c8 100644
--- a/src/components/note-item/PropertyChips.tsx
+++ b/src/components/note-item/PropertyChips.tsx
@@ -72,7 +72,8 @@ function resolveRelationshipChip(
typeEntryMap: Record,
): PropertyChipValue | null {
const targetEntry = resolveEntry(allEntries, wikilinkTarget(ref))
- const label = targetEntry?.title ?? wikilinkDisplay(ref)
+ const displayLabel = wikilinkDisplay(ref)
+ const label = ref.includes('|') ? displayLabel : (targetEntry?.title ?? displayLabel)
if (!label) return null
if (!targetEntry) {
return {