Add User Preferences to MVP, add Phase 2.5 Personal Branching specs
- Fixed minor typescript errors that would show during compile
This commit is contained in:
25
.claude/settings.local.json
Normal file
25
.claude/settings.local.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(tasklist:*)",
|
||||
"Bash(findstr:*)",
|
||||
"Bash(powershell -Command:*)",
|
||||
"Bash(timeout:*)",
|
||||
"Bash(netstat:*)",
|
||||
"mcp__postgres__query",
|
||||
"Bash(curl:*)",
|
||||
"Bash(TOKEN=\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MjdjMDI1Ni00N2VmLTRiODAtYjZjNS1iODE5MDAyMzdhMjkiLCJleHAiOjE3Njk1NjA4NTgsInR5cGUiOiJhY2Nlc3MifQ.7eBGz7awT6BOPbfNv303zm4ERQBeUOGHLRPgQMgwchM\")",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(git push:*)",
|
||||
"Bash(dir /b \"C:\\\\Dev\\\\Projects\\\\Apoklisis\")",
|
||||
"Bash(npm create:*)",
|
||||
"Bash(npm install:*)",
|
||||
"Bash(npx tailwindcss:*)",
|
||||
"Bash(node node_modules/tailwindcss/lib/cli.js:*)",
|
||||
"Bash(npm exec:*)",
|
||||
"Bash(npm uninstall:*)",
|
||||
"Bash(npm run build:*)"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -67,6 +67,11 @@
|
||||
- [x] Loading states
|
||||
- [x] Error handling and user feedback (ErrorBoundary)
|
||||
- [ ] Keyboard shortcuts - *Not yet implemented*
|
||||
- [ ] User preferences
|
||||
- [ ] Settings modal/page accessible from user menu
|
||||
- [ ] Theme toggle (dark/light/system)
|
||||
- [ ] Persist preferences in localStorage
|
||||
- [ ] Default export format preference
|
||||
|
||||
**Testing:**
|
||||
- [x] Michael tests on 5-10 real tickets
|
||||
|
||||
@@ -274,6 +274,52 @@ Started Citrix VDA service after resolving NetLogon dependency issue. VDA succes
|
||||
|
||||
---
|
||||
|
||||
### 5.5 User Preferences (MVP)
|
||||
|
||||
**Description:** Basic user settings to personalize the application experience, stored locally for MVP with optional server sync in later phases.
|
||||
|
||||
**MVP Settings:**
|
||||
|
||||
| Setting | Options | Default | Storage |
|
||||
|---------|---------|---------|--------|
|
||||
| Theme | Light / Dark / System | System | localStorage |
|
||||
| Default Export Format | Markdown / Text / HTML | Markdown | localStorage |
|
||||
|
||||
**UI Components:**
|
||||
- **Settings Access:** Gear icon in user menu dropdown
|
||||
- **Settings Modal:** Simple modal with toggle/dropdown for each setting
|
||||
- **Theme Toggle:** Can also be quick-access icon in header
|
||||
|
||||
**Theme Implementation:**
|
||||
```
|
||||
Light Mode:
|
||||
- Background: White/light gray
|
||||
- Text: Dark gray/black
|
||||
- Accents: Brand colors
|
||||
|
||||
Dark Mode:
|
||||
- Background: Dark gray (#1a1a2e or similar)
|
||||
- Text: Light gray/white
|
||||
- Accents: Adjusted brand colors for dark backgrounds
|
||||
|
||||
System:
|
||||
- Follows OS preference via prefers-color-scheme media query
|
||||
- Updates automatically if OS setting changes
|
||||
```
|
||||
|
||||
**Technical Requirements:**
|
||||
- Persist to localStorage immediately on change
|
||||
- Apply theme without page reload (CSS variables)
|
||||
- Respect system preference on first visit
|
||||
- Export format preference used as default in export dialog
|
||||
|
||||
**Future Enhancements (Phase 2+):**
|
||||
- Sync preferences to user account (database)
|
||||
- More settings: auto-save interval, keyboard shortcuts, notification preferences
|
||||
- Per-tree preferences (remember last used export format per tree)
|
||||
|
||||
---
|
||||
|
||||
### 5. Attachment Support
|
||||
|
||||
**Description:** Upload and attach files (screenshots, logs, command outputs) to specific decision nodes during troubleshooting.
|
||||
@@ -724,6 +770,7 @@ Public and team steps can be rated by users to surface the most helpful content.
|
||||
| Tree Navigation | ✓ | | | | |
|
||||
| Basic Export | ✓ | | | | |
|
||||
| User Auth | ✓ | | | | |
|
||||
| **User Preferences** | **✓** | | | | |
|
||||
| 5 Starter Trees | ✓ | | | | |
|
||||
| Team Management | | ✓ | | | |
|
||||
| Tree Editor | | ✓ | | | |
|
||||
|
||||
@@ -95,6 +95,7 @@ export function TreeLibraryPage() {
|
||||
<select
|
||||
value={selectedCategory}
|
||||
onChange={(e) => setSelectedCategory(e.target.value)}
|
||||
aria-label="Filter by category"
|
||||
className={cn(
|
||||
'rounded-md border border-input bg-background px-3 py-2',
|
||||
'text-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary'
|
||||
|
||||
@@ -18,11 +18,10 @@
|
||||
|
||||
/* Linting */
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"erasableSyntaxOnly": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedSideEffectImports": true,
|
||||
|
||||
/* Path aliases */
|
||||
"baseUrl": ".",
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [],
|
||||
"references": [
|
||||
{ "path": "./tsconfig.app.json" },
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
||||
"target": "ES2023",
|
||||
"lib": ["ES2023"],
|
||||
"target": "ES2022",
|
||||
"lib": ["ES2022"],
|
||||
"module": "ESNext",
|
||||
"types": ["node"],
|
||||
"skipLibCheck": true,
|
||||
@@ -16,11 +16,10 @@
|
||||
|
||||
/* Linting */
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"erasableSyntaxOnly": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedSideEffectImports": true
|
||||
"noFallthroughCasesInSwitch": true
|
||||
},
|
||||
"include": ["vite.config.ts"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user