Initial release: Ironpad v0.1.0 - Local-first, file-based project and knowledge management system. Rust backend, Vue 3 frontend, Milkdown editor, Git integration, cross-platform builds. Built with AI using Open Method.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
skepsismusic
2026-02-06 00:13:31 +01:00
commit ebe3e2aa8f
97 changed files with 25033 additions and 0 deletions

175
frontend/src/types/index.ts Normal file
View File

@@ -0,0 +1,175 @@
// Types for Ironpad
export interface NoteSummary {
id: string
title: string
path: string
note_type: string
updated?: string
}
export interface Note {
id: string
path: string
note_type: string
frontmatter: Record<string, unknown>
content: string
}
export interface Project {
id: string
name: string
path: string
created: string
}
export interface ProjectWithContent extends Project {
content: string
}
export interface ProjectNote {
id: string
title: string
path: string
project_id: string
created: string
updated: string
}
export interface ProjectNoteWithContent extends ProjectNote {
content: string
}
export interface Task {
id: string
title: string
completed: boolean
section: string
priority?: string
due_date?: string
is_active: boolean
tags: string[]
parent_id?: string
recurrence?: string
recurrence_interval?: number
project_id: string
path: string
created: string
updated: string
}
export interface TaskWithContent extends Task {
content: string
}
export interface SearchResult {
path: string
title: string
matches: { line_number: number; line_content: string }[]
}
export interface GitStatus {
is_repo: boolean
branch?: string
has_changes: boolean
files: { path: string; status: string }[]
last_commit?: { id: string; message: string; timestamp: string }
conflicts?: string[]
}
export interface CommitInfo {
id: string
message: string
timestamp: string
}
export interface CommitDetail {
id: string
short_id: string
message: string
author: string
timestamp: string
files_changed: number
}
export interface DiffLine {
origin: string
content: string
}
export interface DiffHunk {
header: string
lines: DiffLine[]
}
export interface FileDiff {
path: string
status: string
additions: number
deletions: number
hunks: DiffHunk[]
}
export interface DiffStats {
files_changed: number
insertions: number
deletions: number
}
export interface DiffInfo {
files: FileDiff[]
stats: DiffStats
}
export interface RemoteInfo {
name: string
url: string
has_upstream: boolean
ahead: number
behind: number
}
export interface DailyNote {
id: string
date: string
path: string
content: string
frontmatter: Record<string, unknown>
}
export interface FileLock {
path: string
client_id: string
lock_type: 'editor' | 'task_view'
}
// WebSocket message types
export type WsMessageType =
| 'Connected'
| 'FileCreated'
| 'FileModified'
| 'FileDeleted'
| 'FileRenamed'
| 'FileLocked'
| 'FileUnlocked'
| 'GitConflict'
| 'Ping'
export interface WsMessage {
type: WsMessageType
payload?: unknown
}
export interface WsConnectedPayload {
client_id: string
}
export interface WsFilePayload {
path: string
}
export interface WsFileLockPayload {
path: string
client_id: string
lock_type: 'editor' | 'task_view'
}