feat(workspace): add hashtag indexing, tag pages and bullet group view
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m0s

This commit is contained in:
sandrodach committed 2026-10-25 12:04:53 +01:00
1 parent c4b2a00348
commit 1310f8102e
8 files changed
+893 -11

No files matched your search

+23
View File
@@ -17,6 +17,8 @@ import {
TaskList,
Thought,
SubTask,
TagDetails,
TagSummary,
User,
UserInvite,
WSMessage,
@@ -388,6 +390,27 @@ export const api = {
);
},
// --- WORKSPACE TAGS ---
async getWorkspaceTags(): Promise<TagSummary[]> {
const res = await request<TagSummary[]>('/api/v1/workspace/tags');
return ensureArray(res);
},
async getTagDetails(tag: string): Promise<TagDetails> {
const clean = encodeURIComponent(tag.replace(/^#/, ''));
const res = await request<TagDetails>(`/api/v1/workspace/tags/${clean}`);
return {
...res,
documents: ensureArray(res.documents).map((doc) => ({
...doc,
matchedBlocks: ensureArray(doc.matchedBlocks).map((mb) => ({
rootBlock: mb.rootBlock,
children: ensureArray(mb.children),
})),
})),
};
},
// --- WORKSPACE DOCUMENTS ---
async getDocuments(): Promise<Document[]> {
const res = await request<Document[]>('/api/v1/documents');
+28
View File
@@ -170,6 +170,34 @@ export interface Document {
sharedWith?: DocShare[];
}
export interface TagSummary {
tag: string;
count: number;
}
export interface MatchedTagBlock {
rootBlock: DocumentBlock;
children: DocumentBlock[];
}
export interface TagDocumentGroup {
docId: string;
title: string;
icon: string;
folderPath: string;
updatedAt: string;
isOwner: boolean;
permission: 'owner' | 'write' | 'read';
ownerName?: string;
matchedBlocks: MatchedTagBlock[];
}
export interface TagDetails {
tag: string;
documents: TagDocumentGroup[];
totalMatches: number;
}
export interface SpaceMember {
spaceId: string;
userId: string;