Compare commits
19
Commits
4523ce67b3
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4257f92f9d | ||
|
|
a3ee8c09cf | ||
|
|
f77a4afd50 | ||
|
|
be56d86e84 | ||
|
|
ee6e7518fa | ||
|
|
b182762e14 | ||
|
|
aff829a1e2 | ||
|
|
652bdbc364 | ||
|
|
acca28b2dd | ||
|
|
700440499a | ||
|
|
42953759ff | ||
|
|
9c88db6d0f | ||
|
|
a05a3f5126 | ||
|
|
f3a0775c85 | ||
|
|
99c64fec46 | ||
|
|
ea7bcad5ac | ||
|
|
0dac58fb6f | ||
|
|
63add96a09 | ||
|
|
451cd42b7a |
@@ -1,7 +0,0 @@
|
|||||||
<claude-mem-context>
|
|
||||||
# Recent Activity
|
|
||||||
|
|
||||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
|
||||||
|
|
||||||
*No recent activity*
|
|
||||||
</claude-mem-context>
|
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
risk: medium
|
||||||
|
writes: 00-03 .md frontmatter
|
||||||
|
|
||||||
---
|
---
|
||||||
description:
|
description:
|
||||||
Add or update YAML frontmatter properties to enhance note organization
|
Add or update YAML frontmatter properties to enhance note organization
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
risk: low
|
||||||
|
writes: .claude/sessions/
|
||||||
|
|
||||||
---
|
---
|
||||||
allowed-tools: Read
|
allowed-tools: Read
|
||||||
description: Summarize and compress conversation history to reduce token usage
|
description: Summarize and compress conversation history to reduce token usage
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
risk: low
|
||||||
|
writes: .claude/commands/
|
||||||
|
|
||||||
---
|
---
|
||||||
allowed-tools: Write, Read, Bash(ls:*, mkdir:*), Edit
|
allowed-tools: Write, Read, Bash(ls:*, mkdir:*), Edit
|
||||||
description: Create a new Claude Code slash command
|
description: Create a new Claude Code slash command
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Daily Review
|
# Daily Review
|
||||||
|
risk: medium
|
||||||
|
writes: 00_Inbox/ daily notes
|
||||||
|
|
||||||
Conduct an end-of-day review to capture progress and set up tomorrow.
|
Conduct an end-of-day review to capture progress and set up tomorrow.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
risk: medium
|
||||||
|
writes: note content 00-03
|
||||||
|
|
||||||
---
|
---
|
||||||
allowed-tools: Read, Write, Edit
|
allowed-tools: Read, Write, Edit
|
||||||
description: Remove AI-generated jargon and restore human voice to text
|
description: Remove AI-generated jargon and restore human voice to text
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# download-attachment
|
# download-attachment
|
||||||
|
risk: low
|
||||||
|
writes: 05_Attachments/
|
||||||
|
|
||||||
Download files from URLs to attachments folder and organize them with
|
Download files from URLs to attachments folder and organize them with
|
||||||
descriptive names.
|
descriptive names.
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
risk: low
|
||||||
|
writes: none (generates text)
|
||||||
|
|
||||||
---
|
---
|
||||||
allowed-tools: Bash, AskUserQuestion
|
allowed-tools: Bash, AskUserQuestion
|
||||||
description: AI-generated git commit messages from staged changes
|
description: AI-generated git commit messages from staged changes
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Inbox Processor
|
# Inbox Processor
|
||||||
|
risk: medium
|
||||||
|
writes: 00_Inbox → 01-03
|
||||||
|
|
||||||
Help organize and process items in the 00_Inbox folder according to the PARA
|
Help organize and process items in the 00_Inbox folder according to the PARA
|
||||||
method.
|
method.
|
||||||
|
|||||||
@@ -1,854 +0,0 @@
|
|||||||
---
|
|
||||||
name: init-bootstrap
|
|
||||||
description:
|
|
||||||
Interactive setup wizard that helps new users create a personalized CLAUDE.md
|
|
||||||
file based on their Obsidian workflow preferences
|
|
||||||
allowed-tools: [Read, Write, MultiEdit, Bash, Task]
|
|
||||||
argument-hint: "(optional) path to existing vault or 'new' for fresh setup"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Initialize Bootstrap Configuration
|
|
||||||
|
|
||||||
This command helps you create a personalized CLAUDE.md configuration file by
|
|
||||||
asking questions about your Obsidian workflow and preferences.
|
|
||||||
|
|
||||||
## Task
|
|
||||||
|
|
||||||
Read the CLAUDE-BOOTSTRAP.md template and interactively gather information about
|
|
||||||
the user's:
|
|
||||||
|
|
||||||
- Existing vault structure (if any)
|
|
||||||
- Workflow preferences
|
|
||||||
- Note-taking style
|
|
||||||
- Organization methods
|
|
||||||
- Specific requirements
|
|
||||||
|
|
||||||
Then generate a customized CLAUDE.md file tailored to their needs.
|
|
||||||
|
|
||||||
## Process
|
|
||||||
|
|
||||||
1. **Initial Environment Setup**
|
|
||||||
- Get current date with `date` command for timestamps
|
|
||||||
- Check current folder name and ask if they want to rename it
|
|
||||||
- If yes, guide them through renaming (handle parent directory move)
|
|
||||||
- Check for package.json and install dependencies:
|
|
||||||
- Try `pnpm install` first (faster, better)
|
|
||||||
- Fall back to `npm install` if pnpm not available
|
|
||||||
- Verify core dependencies are installed
|
|
||||||
- Check git status:
|
|
||||||
- If no .git folder: Initialize git repository
|
|
||||||
- If has remote origin: Ask about development work
|
|
||||||
- Personal vault: Remove origin and .github folder
|
|
||||||
- Contributing: Keep origin and workflows intact
|
|
||||||
- If clean local repo: Ready to go
|
|
||||||
- Don't create folders yet - wait until after asking about organization
|
|
||||||
method
|
|
||||||
|
|
||||||
2. **Check Existing Configuration**
|
|
||||||
- Look for existing CLAUDE.md
|
|
||||||
- If exists, ask if they want to update or start fresh
|
|
||||||
- Check for CLAUDE-BOOTSTRAP.md template
|
|
||||||
|
|
||||||
3. **Gather Vault Information**
|
|
||||||
- Search common locations for existing Obsidian vaults (.obsidian folder)
|
|
||||||
- Check these paths with appropriate depth limits:
|
|
||||||
- `~/Documents` (maxdepth 3) - all platforms
|
|
||||||
- `~/Desktop` (maxdepth 3) - all platforms
|
|
||||||
- `~/Library/Mobile Documents/iCloud~md~obsidian/Documents` (maxdepth 5 -
|
|
||||||
**macOS only**, iCloud vaults)
|
|
||||||
- Home directory `~/` (maxdepth 2) - all platforms
|
|
||||||
- Current directory parent (maxdepth 2) - all platforms
|
|
||||||
- If found, ask: "Found Obsidian vault at [path]. Is this the vault you want
|
|
||||||
to import?"
|
|
||||||
- Count files correctly: `find [path] -type f -name "*.md" | wc -l` (no depth
|
|
||||||
limit)
|
|
||||||
- Show vault size: `du -sh [path]`
|
|
||||||
- If confirmed, analyze vault structure:
|
|
||||||
- Run `tree -L 3 -d [path]` to see folder hierarchy
|
|
||||||
- Sample 10-15 random notes to understand content types
|
|
||||||
- List 30-50 recent file names to detect naming patterns
|
|
||||||
- Check for daily notes folder and format
|
|
||||||
- Identify most active folders by file count
|
|
||||||
- Detect if using PARA, Zettelkasten, Johnny Decimal, or custom
|
|
||||||
- If not the right one or none found:
|
|
||||||
- **On macOS only:** Ask: "Is your vault stored in iCloud Drive? (yes/no)"
|
|
||||||
- If yes (macOS): "Please enter the full path to your vault (e.g.,
|
|
||||||
~/Library/Mobile Documents/iCloud~md~obsidian/Documents/YourVault)"
|
|
||||||
- If no, or on Linux/Windows: "Please enter the path to your existing
|
|
||||||
vault, or type 'skip' to start fresh"
|
|
||||||
- **Validate user-provided paths** (see "User Path Validation" section
|
|
||||||
below)
|
|
||||||
- If no existing vault or user skips, they're starting fresh
|
|
||||||
|
|
||||||
4. **Ask Configuration Questions**
|
|
||||||
- "What's your name?" (for personalization)
|
|
||||||
- "Would you like me to research your public work to better understand your
|
|
||||||
context?"
|
|
||||||
- If yes: Search for information
|
|
||||||
- ALWAYS show findings and ask "Is this correct?" for confirmation
|
|
||||||
- If multiple people found, list them numbered for selection
|
|
||||||
- If wrong person, offer to search again or skip
|
|
||||||
- Save relevant context about their work, writing style, areas of expertise
|
|
||||||
- "Do you follow the PARA method or have a different organization system?"
|
|
||||||
- "What are your main use cases? (research, writing, project management,
|
|
||||||
knowledge base, daily notes)"
|
|
||||||
|
|
||||||
**If using PARA, ask specific setup questions:**
|
|
||||||
[PARA Method by Tiago Forte](https://fortelabs.com/blog/para/)
|
|
||||||
- "What active projects are you working on?" (Create folders in 01_Projects)
|
|
||||||
- "What areas of responsibility do you maintain?" (e.g., Work, Health,
|
|
||||||
Finance, Family)
|
|
||||||
- "What topics do you research frequently?" (Set up in 03_Resources)
|
|
||||||
- "Any projects you recently completed?" (Can archive with summaries)
|
|
||||||
|
|
||||||
**General preferences:**
|
|
||||||
- Check .obsidian/community-plugins.json to see what plugins they use
|
|
||||||
- Analyze existing files to detect naming convention automatically
|
|
||||||
- Check for attachments folder to see if they work with media files
|
|
||||||
- "Do you use git for version control?"
|
|
||||||
- "Any specific websites or resources you reference often?"
|
|
||||||
- "Do you have any specific writing style preferences?"
|
|
||||||
- "Are there any workflows or patterns you want Claude to follow?"
|
|
||||||
- "Would you like a weekly review ritual? (e.g., Thursday project review)"
|
|
||||||
- "Do you prefer 'thinking mode' (questions/exploration) vs 'writing mode'?"
|
|
||||||
|
|
||||||
5. **Optional Tool Setup**
|
|
||||||
|
|
||||||
**Gemini Vision (already included)**
|
|
||||||
- Ask: "Gemini Vision is already included for analyzing images, PDFs, and
|
|
||||||
videos. Would you like to activate it? (yes/no/later)"
|
|
||||||
- Explain: "You just need a free API key from Google. This lets Claude
|
|
||||||
analyze any visual content in your vault."
|
|
||||||
- If later: "No problem! You can set it up anytime by running
|
|
||||||
`/setup-gemini`"
|
|
||||||
- If yes:
|
|
||||||
- Guide to get API key from https://aistudio.google.com/apikey (free, takes
|
|
||||||
30 seconds)
|
|
||||||
- Help add to shell profile (.zshrc, .bashrc, etc.)
|
|
||||||
- Run
|
|
||||||
`claude mcp add --scope project gemini-vision node .claude/mcp-servers/gemini-vision.mjs`
|
|
||||||
- Configure .mcp.json with API key
|
|
||||||
- Test the connection with a sample command
|
|
||||||
|
|
||||||
**Firecrawl (already included)**
|
|
||||||
- Ask: "Firecrawl is included for web research. Would you like to set it up?
|
|
||||||
(yes/no/later)"
|
|
||||||
- Explain: "This is a game-changer for research! When you find an article or
|
|
||||||
website, you can save it directly to your vault as markdown - preserving
|
|
||||||
the content forever, making it searchable, and letting Claude analyze it.
|
|
||||||
Perfect for building a research library."
|
|
||||||
- Example: "Just tell Claude: 'Save this article to my vault: [URL]' and it's
|
|
||||||
done!"
|
|
||||||
- If later: "You can set it up anytime by running `/setup-firecrawl`"
|
|
||||||
- If yes:
|
|
||||||
- Guide to get API key from https://firecrawl.dev (free tier available)
|
|
||||||
- Help configure the scripts in .scripts/
|
|
||||||
- Show example usage: `.scripts/firecrawl-scrape.sh https://example.com`
|
|
||||||
|
|
||||||
6. **Generate Custom Configuration**
|
|
||||||
- Get current date: `date +"%B %d, %Y"` for the CLAUDE.md header
|
|
||||||
- Save preferences to `.claude/vault-config.json`:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"user": {
|
|
||||||
"name": "Jane Smith",
|
|
||||||
"background": {
|
|
||||||
"companies": ["Variance", "Percolate"],
|
|
||||||
"roles": ["Co-founder", "Writer"],
|
|
||||||
"publications": ["Why Is This Interesting?", "every.to"],
|
|
||||||
"expertise": [
|
|
||||||
"Developer tools",
|
|
||||||
"Marketing tech",
|
|
||||||
"Systems thinking"
|
|
||||||
],
|
|
||||||
"interests": ["AI for thinking", "Note-taking systems", "Creativity"]
|
|
||||||
},
|
|
||||||
"profileSources": [
|
|
||||||
"https://whyisthisinteresting.com/about",
|
|
||||||
"https://every.to/@username"
|
|
||||||
],
|
|
||||||
"customContext": "Focuses on AI as thinking augmentation, not just writing",
|
|
||||||
"publicProfile": true
|
|
||||||
},
|
|
||||||
"vaultPath": "/path/to/existing/vault",
|
|
||||||
"fileNamingPattern": "detected-pattern",
|
|
||||||
"organizationMethod": "PARA",
|
|
||||||
"primaryUses": ["research", "writing", "projects"],
|
|
||||||
"tools": {
|
|
||||||
"geminiVision": true,
|
|
||||||
"firecrawl": false
|
|
||||||
},
|
|
||||||
"projects": ["Book - Productivity", "SaaS App"],
|
|
||||||
"areas": ["Newsletter", "Health"],
|
|
||||||
"importedAt": "2025-01-13",
|
|
||||||
"lastUpdated": "2025-01-13"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
- Start with CLAUDE-BOOTSTRAP.md as base
|
|
||||||
- Add user-specific sections:
|
|
||||||
- Custom folder structure with their actual projects/areas
|
|
||||||
- Personal workflows
|
|
||||||
- Preferred tools and scripts
|
|
||||||
- Specific guidelines
|
|
||||||
- MCP configuration if set up
|
|
||||||
- Include their websites/resources if provided
|
|
||||||
- Add any custom naming conventions
|
|
||||||
- Pre-populate with their projects and areas:
|
|
||||||
- Create project folders in 01_Projects/
|
|
||||||
- Create area folders in 02_Areas/
|
|
||||||
- Create resource topics in 03_Resources/
|
|
||||||
- Add README files explaining each project/area
|
|
||||||
|
|
||||||
7. **Import Existing Vault (if applicable)**
|
|
||||||
- If user has existing vault:
|
|
||||||
- Create OLD_VAULT folder: `mkdir OLD_VAULT`
|
|
||||||
- Copy entire vault preserving structure:
|
|
||||||
`cp -r [vault-path]/* ./OLD_VAULT/`
|
|
||||||
- Copy Obsidian configuration: `cp -r [vault-path]/.obsidian ./`
|
|
||||||
- Check for and copy other important files:
|
|
||||||
- `.trash/` (Obsidian's trash folder)
|
|
||||||
- `.smart-connections/` (if using that plugin)
|
|
||||||
- Any workspace files: `.obsidian.vimrc`, etc.
|
|
||||||
- Skip copying: `.git/` (they'll have their own), `.claude/` (using ours)
|
|
||||||
- Show summary: "Imported your vault to OLD_VAULT/ (X files, Y folders)"
|
|
||||||
- Explain: "Your original structure is preserved in OLD_VAULT. You can
|
|
||||||
gradually migrate files to the PARA folders as needed."
|
|
||||||
|
|
||||||
8. **Create Supporting Files**
|
|
||||||
- Generate initial folder structure if new vault
|
|
||||||
- Create README files for main folders
|
|
||||||
- For each project folder, create subfolders:
|
|
||||||
- Research/ (source materials)
|
|
||||||
- Chats/ (AI conversations)
|
|
||||||
- Daily Progress/ (running log)
|
|
||||||
- Create 05_Attachments/Organized/ directory
|
|
||||||
- Set up .gitignore if using git (include .mcp.json, node_modules)
|
|
||||||
- Create initial templates if requested
|
|
||||||
- Create WEEKLY_REVIEW.md if user wants review ritual
|
|
||||||
- Remove FIRST_RUN marker file if it exists
|
|
||||||
- Make initial git commit if repository was initialized
|
|
||||||
|
|
||||||
9. **Run Test Commands**
|
|
||||||
- Execute `pnpm vault:stats` to verify scripts work
|
|
||||||
- Test attachment commands if folders exist
|
|
||||||
- Test MCP tools if configured
|
|
||||||
- Verify git is tracking files correctly
|
|
||||||
|
|
||||||
10. **Provide Next Steps**
|
|
||||||
|
|
||||||
- Summary of what was created and configured
|
|
||||||
- Quick start guide specific to their setup
|
|
||||||
- List of available commands they can use
|
|
||||||
- Test commands to verify everything works
|
|
||||||
- Suggestions for first tasks based on their use cases
|
|
||||||
- How to modify configuration later
|
|
||||||
|
|
||||||
## Example Output
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
# Your Obsidian Vault Configuration
|
|
||||||
|
|
||||||
Generated on: [Run `date +"%B %d, %Y"` to get current date] Last updated: [Same
|
|
||||||
date] Based on your preferences for: [main use cases] Setup completed with: ✅
|
|
||||||
Dependencies ✅ Folder structure ✅ Git initialized
|
|
||||||
|
|
||||||
## Your Custom Folder Structure
|
|
||||||
|
|
||||||
[Their specific structure with explanations]
|
|
||||||
|
|
||||||
## Your Workflows
|
|
||||||
|
|
||||||
### Daily Routine
|
|
||||||
|
|
||||||
[Based on their answers]
|
|
||||||
|
|
||||||
### Project Management
|
|
||||||
|
|
||||||
[Their specific approach]
|
|
||||||
|
|
||||||
### Research Method (Noah Brier Style)
|
|
||||||
|
|
||||||
- Capture everything you read
|
|
||||||
- Let important ideas naturally resurface
|
|
||||||
- Start with writing to test understanding
|
|
||||||
- Use search, not tags, to find things
|
|
||||||
- [Learn more from Noah's system](https://every.to/superorganizers/ceo-by-day-internet-sleuth-by-night-267452)
|
|
||||||
|
|
||||||
### Weekly Review Ritual
|
|
||||||
|
|
||||||
[If enabled: Every Thursday at 4pm, review all projects]
|
|
||||||
|
|
||||||
## Your Preferences
|
|
||||||
|
|
||||||
### File Naming
|
|
||||||
|
|
||||||
- Pattern: [their convention]
|
|
||||||
- Examples: [specific examples]
|
|
||||||
|
|
||||||
### Tools & Scripts
|
|
||||||
|
|
||||||
[Relevant scripts for their workflow]
|
|
||||||
|
|
||||||
## MCP Servers (if configured)
|
|
||||||
|
|
||||||
### Gemini Vision
|
|
||||||
|
|
||||||
- Status: ✅ Configured and tested
|
|
||||||
- API Key: Set in .mcp.json
|
|
||||||
- Test with: `Use gemini-vision to analyze [image path]`
|
|
||||||
|
|
||||||
## Available Commands
|
|
||||||
|
|
||||||
### Vault Management
|
|
||||||
|
|
||||||
- `pnpm vault:stats` - Show vault statistics
|
|
||||||
- `pnpm attachments:list` - List unprocessed attachments
|
|
||||||
- `pnpm attachments:organized` - Count organized files
|
|
||||||
|
|
||||||
### Claude Commands
|
|
||||||
|
|
||||||
- `claude run thinking-partner` - Collaborative thinking mode
|
|
||||||
- `claude run daily-review` - Review your day
|
|
||||||
- `claude run init-bootstrap` - Re-run this setup
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
|
|
||||||
1. [Personalized first step]
|
|
||||||
2. [Next action based on their goals]
|
|
||||||
3. [Specific to their workflow]
|
|
||||||
|
|
||||||
## Pro Tips from Research Masters
|
|
||||||
|
|
||||||
- **Be a token maximalist**: Provide lots of context to Claude
|
|
||||||
- **Writing scales**: Document everything for future reference
|
|
||||||
([Noah Brier](https://every.to/superorganizers/ceo-by-day-internet-sleuth-by-night-267452))
|
|
||||||
- **Trust emergence**: Important ideas will keep surfacing
|
|
||||||
- **Start with writing**: Always begin projects in text form
|
|
||||||
- **Review regularly**: Set aside time weekly to prune and update
|
|
||||||
- **PARA Method**: Projects, Areas, Resources, Archive
|
|
||||||
([Tiago Forte](https://fortelabs.com/blog/para/))
|
|
||||||
|
|
||||||
## Setup Summary
|
|
||||||
|
|
||||||
✅ Dependencies installed (pnpm/npm) ✅ Folder structure created ✅ Git
|
|
||||||
repository initialized and disconnected from original ✅ CLAUDE.md personalized
|
|
||||||
✅ First-run setup completed [✅ MCP Gemini Vision configured - if set up] [✅
|
|
||||||
First commit made - if git was initialized]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Important Implementation Notes
|
|
||||||
|
|
||||||
### Handling Multiple Vaults
|
|
||||||
|
|
||||||
When multiple vaults are detected:
|
|
||||||
|
|
||||||
1. **Always list all vaults found** with clear numbering and details
|
|
||||||
2. **Require explicit selection** - don't assume which vault to use
|
|
||||||
3. **Confirm the selection** before proceeding with import
|
|
||||||
4. **Handle ambiguous responses** - if user provides unclear input (like pasting
|
|
||||||
a screenshot), ask for clarification:
|
|
||||||
- "I see you've shared a screenshot. Could you please type the number (1-3)
|
|
||||||
of the vault you'd like to import?"
|
|
||||||
- "I need a clear selection. Please type '1', '2', or '3' to choose a vault,
|
|
||||||
or 'skip' to start fresh."
|
|
||||||
|
|
||||||
### Never Proceed Without Clear Confirmation
|
|
||||||
|
|
||||||
If the user's response is unclear:
|
|
||||||
|
|
||||||
- Don't guess or assume
|
|
||||||
- Ask for explicit confirmation
|
|
||||||
- Provide clear options again
|
|
||||||
- Example: "I want to make sure I import the right vault. Please type the number
|
|
||||||
of your choice (1, 2, or 3)."
|
|
||||||
|
|
||||||
### Platform Compatibility
|
|
||||||
|
|
||||||
This command is designed to work across Linux, macOS, and Windows (WSL/Git
|
|
||||||
Bash), with platform-specific features:
|
|
||||||
|
|
||||||
**All Platforms:**
|
|
||||||
|
|
||||||
- Search ~/Documents, ~/Desktop, home directory
|
|
||||||
- Standard Obsidian vault detection
|
|
||||||
- Full vault import and setup
|
|
||||||
|
|
||||||
**macOS Only:**
|
|
||||||
|
|
||||||
- iCloud Drive vault detection and import
|
|
||||||
- Obsidian's iCloud sync is macOS-only, so iCloud features are disabled on other
|
|
||||||
platforms
|
|
||||||
|
|
||||||
**Platform Detection:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Check platform
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
# macOS - enable iCloud features
|
|
||||||
PLATFORM="macOS"
|
|
||||||
ICLOUD_SUPPORTED=true
|
|
||||||
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
||||||
# Linux
|
|
||||||
PLATFORM="Linux"
|
|
||||||
ICLOUD_SUPPORTED=false
|
|
||||||
elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
|
|
||||||
# Windows (Git Bash or WSL)
|
|
||||||
PLATFORM="Windows"
|
|
||||||
ICLOUD_SUPPORTED=false
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
### iCloud Vault Search Implementation
|
|
||||||
|
|
||||||
When searching for vaults, use this find command pattern:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Standard locations (shallow search)
|
|
||||||
# Note: 2>/dev/null suppresses expected permission errors from system directories
|
|
||||||
# If no vaults are found, we'll ask the user for their vault path
|
|
||||||
find ~/Documents ~/Desktop -maxdepth 3 -type d -name ".obsidian" 2>/dev/null
|
|
||||||
|
|
||||||
# iCloud location (deeper search needed due to nested structure)
|
|
||||||
# Only search on macOS
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
find ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents -maxdepth 5 -type d -name ".obsidian" 2>/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Home directory (shallow to avoid deep recursion)
|
|
||||||
find ~ -maxdepth 2 -type d -name ".obsidian" 2>/dev/null
|
|
||||||
```
|
|
||||||
|
|
||||||
The iCloud path requires:
|
|
||||||
|
|
||||||
- Higher maxdepth (5) due to nested folder structure
|
|
||||||
- Escaped spaces in path name
|
|
||||||
- Silent error handling (2>/dev/null) as many users won't have iCloud
|
|
||||||
- Platform check (macOS only)
|
|
||||||
|
|
||||||
**Error Handling Note:** Permission errors are suppressed (2>/dev/null) because
|
|
||||||
they're expected when searching system directories. If no vaults are found, the
|
|
||||||
script gracefully prompts the user for their vault path.
|
|
||||||
|
|
||||||
### User Path Validation
|
|
||||||
|
|
||||||
When users manually provide a vault path, validate it thoroughly with helpful
|
|
||||||
error messages:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# User provided path
|
|
||||||
USER_PATH="$1"
|
|
||||||
|
|
||||||
# Expand tilde and resolve to absolute path
|
|
||||||
USER_PATH="${USER_PATH/#\~/$HOME}"
|
|
||||||
REAL_PATH=$(realpath "$USER_PATH" 2>/dev/null)
|
|
||||||
|
|
||||||
# Validation 1: Path exists
|
|
||||||
if [ -z "$REAL_PATH" ]; then
|
|
||||||
echo "❌ Error: Path does not exist: $USER_PATH"
|
|
||||||
echo ""
|
|
||||||
echo "💡 Suggestions:"
|
|
||||||
echo " • Check for typos in the path"
|
|
||||||
echo " • Make sure you're using the full path (e.g., /Users/name/vault)"
|
|
||||||
echo " • You can use ~ for your home directory (e.g., ~/Documents/vault)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validation 2: Is a directory
|
|
||||||
if [ ! -d "$REAL_PATH" ]; then
|
|
||||||
echo "❌ Error: Not a directory: $REAL_PATH"
|
|
||||||
echo ""
|
|
||||||
echo "💡 The path exists but points to a file, not a folder."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validation 3: Contains .obsidian folder
|
|
||||||
if [ ! -d "$REAL_PATH/.obsidian" ]; then
|
|
||||||
echo "❌ Error: Not a valid Obsidian vault (no .obsidian folder)"
|
|
||||||
echo " Looking in: $REAL_PATH"
|
|
||||||
echo ""
|
|
||||||
echo "💡 Suggestions:"
|
|
||||||
echo " • Make sure the path points to your vault root (not a subfolder)"
|
|
||||||
echo " • Check that you've opened this vault in Obsidian at least once"
|
|
||||||
echo " • Try the path without trailing slash"
|
|
||||||
echo " • For iCloud: ~/Library/Mobile Documents/iCloud~md~obsidian/Documents/YourVault"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validation 4: Readable permissions
|
|
||||||
if [ ! -r "$REAL_PATH/.obsidian" ]; then
|
|
||||||
echo "❌ Error: Cannot read vault directory (permission denied)"
|
|
||||||
echo " Path: $REAL_PATH"
|
|
||||||
echo ""
|
|
||||||
echo "💡 You may need to:"
|
|
||||||
echo " • Check file permissions with: ls -la \"$REAL_PATH\""
|
|
||||||
echo " • Make sure you own this directory"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Show resolved path if different from input
|
|
||||||
if [ "$USER_PATH" != "$REAL_PATH" ]; then
|
|
||||||
echo "✓ Resolved path: $REAL_PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Valid vault path
|
|
||||||
VAULT_PATH="$REAL_PATH"
|
|
||||||
echo "✓ Valid Obsidian vault found"
|
|
||||||
```
|
|
||||||
|
|
||||||
This validation:
|
|
||||||
|
|
||||||
- Expands `~` to home directory properly
|
|
||||||
- Resolves symlinks and relative paths to absolute paths
|
|
||||||
- Checks all essential requirements (exists, is directory, has .obsidian,
|
|
||||||
readable)
|
|
||||||
- Provides helpful, actionable error messages with suggestions
|
|
||||||
- Shows the resolved path so users understand what's being checked
|
|
||||||
- Trusts users (allows symlinks, paths outside home directory)
|
|
||||||
- Cross-platform compatible (works on Linux, macOS, Windows/WSL)
|
|
||||||
|
|
||||||
### iCloud Sync State Checking
|
|
||||||
|
|
||||||
When a user selects an iCloud vault, check sync state and warn if needed:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# After user confirms vault selection
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]] && [[ "$vault_path" == *"iCloud"* ]]; then
|
|
||||||
# Check for common iCloud sync indicators
|
|
||||||
if [ -f "$vault_path/.icloud" ] || [ -f "$vault_path/.obsidian/.icloud" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "📱 iCloud Sync Notice:"
|
|
||||||
echo " This vault appears to be still downloading from iCloud."
|
|
||||||
echo " For best results, open it in Obsidian first to ensure files are synced."
|
|
||||||
echo ""
|
|
||||||
read -p "Continue anyway? (yes/no): " sync_answer
|
|
||||||
if [[ ! "$sync_answer" =~ ^[Yy] ]]; then
|
|
||||||
echo "No problem! Open the vault in Obsidian, then re-run /init-bootstrap"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo ""
|
|
||||||
echo "📱 iCloud vault detected. If import seems incomplete, make sure sync is complete."
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
This provides a soft warning that:
|
|
||||||
|
|
||||||
- Only runs on macOS for iCloud paths
|
|
||||||
- Checks for placeholder files that indicate incomplete download
|
|
||||||
- Asks for confirmation if sync issues detected
|
|
||||||
- Gives gentle reminder even when no issues found
|
|
||||||
- Lets users proceed if they choose
|
|
||||||
|
|
||||||
## Interactive Example
|
|
||||||
|
|
||||||
````
|
|
||||||
User: claude run init-bootstrap
|
|
||||||
Assistant: Welcome! I'll help you set up your personalized Obsidian + Claude configuration.
|
|
||||||
|
|
||||||
📅 Today's date: [Gets from `date +"%B %d, %Y"`]
|
|
||||||
|
|
||||||
First, let me check your setup...
|
|
||||||
|
|
||||||
📁 **Folder Name Check**
|
|
||||||
Current folder: claudesidian
|
|
||||||
Would you like to rename this folder to something more personal? (e.g., my-vault, knowledge-base, obsidian-notes)
|
|
||||||
*Why: Your vault should have a name that makes sense to you - you'll see it every day!*
|
|
||||||
|
|
||||||
[If yes: Handles the rename by moving to parent directory and back]
|
|
||||||
|
|
||||||
Now setting up your environment...
|
|
||||||
|
|
||||||
📦 **Installing Dependencies**
|
|
||||||
[Checks for pnpm, uses npm if not available]
|
|
||||||
[Installs dependencies with pnpm/npm]
|
|
||||||
*Why: These tools enable Claude Code to work with your vault effectively*
|
|
||||||
|
|
||||||
🔓 **Repository Setup**
|
|
||||||
|
|
||||||
**Will you be contributing to claudesidian development?**
|
|
||||||
- **No** (Personal vault only) → I'll remove GitHub workflows and disconnect from the repo
|
|
||||||
- **Yes** (I want to contribute) → I'll keep the development setup intact
|
|
||||||
|
|
||||||
[Implementation:]
|
|
||||||
```bash
|
|
||||||
# If user says "No" (personal vault):
|
|
||||||
rm -rf .github # Remove GitHub workflows
|
|
||||||
git remote remove origin # Disconnect from claudesidian repo
|
|
||||||
|
|
||||||
# If user says "Yes" (contributing):
|
|
||||||
# Keep .github folder and origin remote
|
|
||||||
echo "Development setup preserved for contributing"
|
|
||||||
````
|
|
||||||
|
|
||||||
_Why: Personal vaults don't need GitHub Actions, but contributors benefit from
|
|
||||||
the automation_
|
|
||||||
|
|
||||||
📂 **Creating Folder Structure** [Creates folders based on your chosen
|
|
||||||
organization method] _Why: A good structure helps you organize and find your
|
|
||||||
knowledge effectively_
|
|
||||||
|
|
||||||
🎯 **Finalizing Setup** [Checks git status and removes first-run marker] _Why:
|
|
||||||
Git gives you version control, and removing the marker ensures you won't see the
|
|
||||||
welcome message again_
|
|
||||||
|
|
||||||
✅ Folder renamed (if requested) ✅ Dependencies installed ✅ Core folders
|
|
||||||
created ✅ Git repository ready (disconnected from original claudesidian) ✅
|
|
||||||
First-run marker removed
|
|
||||||
|
|
||||||
Now let me ask you a few questions to customize your setup:
|
|
||||||
|
|
||||||
🔍 **Searching for existing Obsidian vaults...** [Searches ~/Documents,
|
|
||||||
~/Desktop, home directory, and parent directories. On macOS, also searches
|
|
||||||
iCloud Drive]
|
|
||||||
|
|
||||||
### Case 1: Single Vault Found
|
|
||||||
|
|
||||||
Found Obsidian vault at: ~/Documents/MyNotes 📊 Vault stats: 2,517 markdown
|
|
||||||
files, 1.1GB total size Would you like to import this vault?
|
|
||||||
|
|
||||||
- **yes** - Import this vault
|
|
||||||
- **no** - Search for a different vault
|
|
||||||
- **skip** - Start fresh without importing
|
|
||||||
- **path** - Specify a different path manually
|
|
||||||
|
|
||||||
User: yes
|
|
||||||
|
|
||||||
### Case 2: Multiple Vaults Found
|
|
||||||
|
|
||||||
🔍 **Found multiple Obsidian vaults:**
|
|
||||||
|
|
||||||
1. **~/Documents/MyNotes** (2,517 files, 1.1GB)
|
|
||||||
- Last modified: 2 hours ago
|
|
||||||
- Contains: Daily notes, projects, resources
|
|
||||||
|
|
||||||
2. **~/Desktop/WorkVault** (892 files, 450MB)
|
|
||||||
- Last modified: 3 days ago
|
|
||||||
- Contains: Client projects, meeting notes
|
|
||||||
|
|
||||||
3. **~/Documents/ObsidianVault** (156 files, 23MB)
|
|
||||||
- Last modified: 2 weeks ago
|
|
||||||
- Contains: Personal notes, drafts
|
|
||||||
|
|
||||||
**Which vault would you like to import?**
|
|
||||||
|
|
||||||
- Enter **1-3** to select a vault
|
|
||||||
- **all** - Import all vaults (each to a separate folder)
|
|
||||||
- **skip** - Start fresh without importing
|
|
||||||
- **path** - Specify a different path manually
|
|
||||||
|
|
||||||
User: 1
|
|
||||||
|
|
||||||
**Confirming your selection:** You selected: ~/Documents/MyNotes (2,517 files,
|
|
||||||
1.1GB)
|
|
||||||
|
|
||||||
Is this correct? (yes/no)
|
|
||||||
|
|
||||||
User: yes
|
|
||||||
|
|
||||||
Great! I'll import your vault to OLD_VAULT/ where it will be safely preserved.
|
|
||||||
You can migrate files to the PARA folders at your own pace.
|
|
||||||
|
|
||||||
### Case 3: No Vaults Found (Platform-Aware)
|
|
||||||
|
|
||||||
🔍 **No Obsidian vaults found in common locations.**
|
|
||||||
|
|
||||||
**On macOS:** Is your vault stored in iCloud Drive? (yes/no)
|
|
||||||
|
|
||||||
User: yes
|
|
||||||
|
|
||||||
Please enter the full path to your vault: (Example: ~/Library/Mobile
|
|
||||||
Documents/iCloud~md~obsidian/Documents/YourVault)
|
|
||||||
|
|
||||||
User: ~/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault
|
|
||||||
|
|
||||||
[Validates path and shows vault stats]
|
|
||||||
|
|
||||||
Found vault at: ~/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault
|
|
||||||
📊 Vault stats: 1,248 markdown files, 523MB total size
|
|
||||||
|
|
||||||
Would you like to import this vault? (yes/skip)
|
|
||||||
|
|
||||||
**On Linux/Windows:** Please enter the path to your existing Obsidian vault, or
|
|
||||||
type 'skip' to start fresh: (Example: ~/Documents/MyVault or
|
|
||||||
/home/user/obsidian-vault)
|
|
||||||
|
|
||||||
User: ~/Documents/MyVault
|
|
||||||
|
|
||||||
[Validates path and shows vault stats]
|
|
||||||
|
|
||||||
Found vault at: ~/Documents/MyVault 📊 Vault stats: 1,248 markdown files, 523MB
|
|
||||||
total size
|
|
||||||
|
|
||||||
Would you like to import this vault? (yes/skip)
|
|
||||||
|
|
||||||
📦 **Analyzing your vault structure...** [Running tree to see folder hierarchy]
|
|
||||||
[Sampling notes to understand content] [Detecting naming patterns from recent
|
|
||||||
files]
|
|
||||||
|
|
||||||
I can see you're using:
|
|
||||||
|
|
||||||
- A modified PARA structure with custom folders
|
|
||||||
- Date-prefixed files for daily notes (YYYY-MM-DD)
|
|
||||||
- Project folders with nested research
|
|
||||||
- Heavy use of the Resources folder for reference material
|
|
||||||
|
|
||||||
📦 **Importing your vault...** [Copying files to OLD_VAULT/] [Preserving
|
|
||||||
.obsidian settings] [Checking for plugin folders]
|
|
||||||
|
|
||||||
✅ Imported 2,517 files (1.1GB) to OLD_VAULT/ Your original structure is
|
|
||||||
completely preserved!
|
|
||||||
|
|
||||||
Now let's personalize your setup:
|
|
||||||
|
|
||||||
1. **What's your name?**
|
|
||||||
|
|
||||||
_Why I'm asking:_ I'll use this to personalize your CLAUDE.md file and help
|
|
||||||
me understand your context better. This creates a more tailored experience
|
|
||||||
where I can reference your work and interests naturally.
|
|
||||||
|
|
||||||
User: Noah Brier
|
|
||||||
|
|
||||||
2. **Would you like me to research your public work?**
|
|
||||||
|
|
||||||
_Why this helps:_ By understanding your background, expertise, and interests,
|
|
||||||
I can:
|
|
||||||
- Tailor suggestions to your specific field and workflow
|
|
||||||
- Reference relevant examples from your domain
|
|
||||||
- Better understand the context of your questions
|
|
||||||
- Build a profile that helps me be a more effective thinking partner
|
|
||||||
|
|
||||||
User: Yes
|
|
||||||
|
|
||||||
Great! To make sure I find information about the real you, could you provide any
|
|
||||||
of these details?
|
|
||||||
|
|
||||||
- Your company or organization
|
|
||||||
- Your location (city/country)
|
|
||||||
- A unique project you've worked on
|
|
||||||
- Your website or social media handle
|
|
||||||
- Any other distinguishing information
|
|
||||||
|
|
||||||
This helps me avoid confusion with others who share your name.
|
|
||||||
|
|
||||||
User: I co-founded Variance and Percolate, I write at every.to
|
|
||||||
|
|
||||||
Perfect! Let me search for you with those details...
|
|
||||||
|
|
||||||
[Searches for information using the provided identifying information]
|
|
||||||
|
|
||||||
Based on your details, I found you - Noah Brier, co-founder of Variance and
|
|
||||||
Percolate, writer at every.to.
|
|
||||||
|
|
||||||
Let me confirm this is correct:
|
|
||||||
|
|
||||||
- Co-founded Variance (developer tools) and Percolate (marketing software)
|
|
||||||
- Write at every.to and Why Is This Interesting? newsletter
|
|
||||||
- Focus on systems thinking, creativity, and technology
|
|
||||||
|
|
||||||
Is this you? (yes/no)
|
|
||||||
|
|
||||||
User: yes
|
|
||||||
|
|
||||||
Excellent! I've identified the right profile.
|
|
||||||
|
|
||||||
**Building Your Profile** Would you like me to read any specific pages to better
|
|
||||||
understand your work?
|
|
||||||
|
|
||||||
- Your personal website or blog
|
|
||||||
- Recent articles or papers you've written
|
|
||||||
- Company/project pages
|
|
||||||
- LinkedIn or other profiles
|
|
||||||
|
|
||||||
Enter URLs (comma-separated) or 'skip' to continue:
|
|
||||||
|
|
||||||
User: https://whyisthisinteresting.com/about, https://every.to/@noahbrier
|
|
||||||
|
|
||||||
[Fetches and analyzes the provided URLs]
|
|
||||||
|
|
||||||
I've built a comprehensive profile:
|
|
||||||
|
|
||||||
- You co-founded Variance (developer tools) and Percolate (marketing software)
|
|
||||||
- You write Why Is This Interesting? newsletter with Colin Nagy
|
|
||||||
- You explore creativity, technology, and systems thinking
|
|
||||||
- You've written about writing as thinking, note-taking systems, and AI
|
|
||||||
|
|
||||||
Is there anything else I should know about your work or interests?
|
|
||||||
|
|
||||||
User: I'm really interested in how AI can augment thinking, not just writing
|
|
||||||
|
|
||||||
Got it! I'll remember that you focus on AI as a thinking tool, not just a
|
|
||||||
writing assistant.
|
|
||||||
|
|
||||||
3. **What will you primarily use this vault for?** (research, writing, project
|
|
||||||
management, daily notes, knowledge base, or combination?)
|
|
||||||
|
|
||||||
User: I'll use it for research and writing, plus managing client projects
|
|
||||||
|
|
||||||
Assistant: Great! I'll configure your vault for research, writing, and client
|
|
||||||
project management.
|
|
||||||
|
|
||||||
2. **What specific projects are you currently working on?** (I'll create folders
|
|
||||||
for each in 01_Projects)
|
|
||||||
|
|
||||||
User: I'm writing a book about productivity systems, building a SaaS app, and
|
|
||||||
planning a conference talk
|
|
||||||
|
|
||||||
Assistant: Perfect! I'll set up project folders for:
|
|
||||||
|
|
||||||
- 01_Projects/Book - Productivity Systems/
|
|
||||||
- 01_Projects/SaaS App Development/
|
|
||||||
- 01_Projects/Conference Talk/
|
|
||||||
|
|
||||||
3. **What ongoing areas of responsibility do you maintain?** (These go in
|
|
||||||
02_Areas - things without an end date)
|
|
||||||
|
|
||||||
User: My newsletter, health & fitness, personal finances, and family activities
|
|
||||||
|
|
||||||
Assistant: I'll create area folders for:
|
|
||||||
|
|
||||||
- 02_Areas/Newsletter/
|
|
||||||
- 02_Areas/Health & Fitness/
|
|
||||||
- 02_Areas/Finances/
|
|
||||||
- 02_Areas/Family/
|
|
||||||
|
|
||||||
4. **What topics do you frequently research or reference?** (I'll organize these
|
|
||||||
in 03_Resources)
|
|
||||||
|
|
||||||
User: AI tools, productivity methods, SaaS metrics, and writing techniques
|
|
||||||
|
|
||||||
Assistant: Setting up resource folders for:
|
|
||||||
|
|
||||||
- 03_Resources/AI Tools/
|
|
||||||
- 03_Resources/Productivity Methods/
|
|
||||||
- 03_Resources/SaaS Metrics/
|
|
||||||
- 03_Resources/Writing Techniques/
|
|
||||||
|
|
||||||
[Continues with questions...]
|
|
||||||
|
|
||||||
**Gemini Vision Setup** Gemini Vision is already included in claudesidian! It
|
|
||||||
can analyze images, PDFs, and videos in your vault. To activate it, you just
|
|
||||||
need a free Google API key (takes 30 seconds). Would you like to set it up now?
|
|
||||||
(yes/no/later)
|
|
||||||
|
|
||||||
User: later
|
|
||||||
|
|
||||||
No problem! You can set it up anytime by running `/setup-gemini` when you're
|
|
||||||
ready.
|
|
||||||
|
|
||||||
**Firecrawl Setup** Firecrawl is a game-changer for research! Save any article
|
|
||||||
or website directly to your vault as markdown. Perfect for building a permanent,
|
|
||||||
searchable research library. Would you like to set it up? (yes/no/later)
|
|
||||||
|
|
||||||
User: yes
|
|
||||||
|
|
||||||
Great choice! Firecrawl will transform how you collect research.
|
|
||||||
|
|
||||||
Assistant: Excellent! Here's how to get your API key:
|
|
||||||
|
|
||||||
1. Go to https://aistudio.google.com/apikey
|
|
||||||
2. Click "Create API Key"
|
|
||||||
3. Copy the key (starts with AIzaSy...)
|
|
||||||
|
|
||||||
Once you have it, paste it here and I'll configure everything for you.
|
|
||||||
@@ -1,343 +0,0 @@
|
|||||||
---
|
|
||||||
allowed-tools: [Read, Write, Bash]
|
|
||||||
description: Install claudesidian shell command to launch Claude Code from anywhere
|
|
||||||
argument-hint: (optional shell: bash/zsh/fish)
|
|
||||||
---
|
|
||||||
|
|
||||||
# Install Claudesidian Command
|
|
||||||
|
|
||||||
Creates a shell alias/function that allows you to run `claudesidian` from
|
|
||||||
anywhere to open your vault in Claude Code.
|
|
||||||
|
|
||||||
## Task
|
|
||||||
|
|
||||||
Install a shell command that:
|
|
||||||
|
|
||||||
1. Changes to your claudesidian vault directory
|
|
||||||
2. Launches Claude Code
|
|
||||||
3. Works from any directory in your terminal
|
|
||||||
|
|
||||||
Similar to having a quick launcher for your vault.
|
|
||||||
|
|
||||||
## Process
|
|
||||||
|
|
||||||
### 1. **Detect Current Setup**
|
|
||||||
|
|
||||||
- Check which shell the user is using (bash/zsh/fish)
|
|
||||||
- Find the current working directory (vault path)
|
|
||||||
- Determine the appropriate config file
|
|
||||||
|
|
||||||
### 2. **Create the Command**
|
|
||||||
|
|
||||||
The command will be an alias that:
|
|
||||||
|
|
||||||
- Changes to the vault directory: `cd /path/to/your/vault`
|
|
||||||
- Tries to resume existing session: `claude --resume 2>/dev/null`
|
|
||||||
- Falls back to new session if no existing one: `|| claude`
|
|
||||||
- All in one command with properly escaped path:
|
|
||||||
`(cd "/path/to/vault" && (claude --resume 2>/dev/null || claude))`
|
|
||||||
|
|
||||||
**Important:** The path must be properly escaped to handle spaces and special
|
|
||||||
characters.
|
|
||||||
|
|
||||||
This automatically enters resume mode if there's an existing session, or starts
|
|
||||||
a new one if not.
|
|
||||||
|
|
||||||
### 3. **Install to Shell Config**
|
|
||||||
|
|
||||||
Add the alias to the appropriate config file:
|
|
||||||
|
|
||||||
- **Bash**: `~/.bashrc` or `~/.bash_profile`
|
|
||||||
- **Zsh**: `~/.zshrc`
|
|
||||||
- **Fish**: `~/.config/fish/config.fish`
|
|
||||||
|
|
||||||
### 4. **Verify Installation**
|
|
||||||
|
|
||||||
- Show the added line
|
|
||||||
- Remind user to reload their shell or source the config
|
|
||||||
- Provide test command
|
|
||||||
|
|
||||||
## Shell Detection
|
|
||||||
|
|
||||||
Detects the user's default shell, with support for command-line override:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Check if shell specified as argument (/install-claudesidian-command zsh)
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
# User provided shell type as argument
|
|
||||||
SHELL_TYPE="$1"
|
|
||||||
else
|
|
||||||
# Auto-detect from $SHELL (user's default shell, not current shell)
|
|
||||||
SHELL_TYPE=$(basename "$SHELL")
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validate shell type and set appropriate config file
|
|
||||||
case "$SHELL_TYPE" in
|
|
||||||
zsh)
|
|
||||||
CONFIG_FILE="$HOME/.zshrc"
|
|
||||||
;;
|
|
||||||
bash)
|
|
||||||
# Prefer .bashrc on Linux, .bash_profile on macOS
|
|
||||||
if [ -f "$HOME/.bashrc" ]; then
|
|
||||||
CONFIG_FILE="$HOME/.bashrc"
|
|
||||||
else
|
|
||||||
CONFIG_FILE="$HOME/.bash_profile"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
fish)
|
|
||||||
CONFIG_FILE="$HOME/.config/fish/config.fish"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "❌ Unsupported shell: $SHELL_TYPE"
|
|
||||||
echo " Supported shells: bash, zsh, fish"
|
|
||||||
echo " Usage: /install-claudesidian-command [bash|zsh|fish]"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo "🐚 Installing for: $SHELL_TYPE"
|
|
||||||
echo "📝 Config file: $CONFIG_FILE"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Key improvements:**
|
|
||||||
|
|
||||||
- Uses `$SHELL` to detect default shell (not `$ZSH_VERSION`/`$BASH_VERSION`
|
|
||||||
which detect current session)
|
|
||||||
- Supports command-line argument to override auto-detection
|
|
||||||
- Shows detected shell and config file for transparency
|
|
||||||
- Validates shell type and provides clear error message for unsupported shells
|
|
||||||
|
|
||||||
## Installation Steps
|
|
||||||
|
|
||||||
1. **Detect shell**: Use argument if provided, otherwise auto-detect from
|
|
||||||
`$SHELL`
|
|
||||||
2. **Get vault path**: Use `pwd` to get current directory
|
|
||||||
3. **Escape the path**: Properly escape quotes and special characters for shell
|
|
||||||
safety
|
|
||||||
```bash
|
|
||||||
# Escape any double quotes in the path
|
|
||||||
ESCAPED_PATH="${VAULT_PATH//\"/\\\"}"
|
|
||||||
# Also escape backslashes
|
|
||||||
ESCAPED_PATH="${ESCAPED_PATH//\\/\\\\}"
|
|
||||||
```
|
|
||||||
4. **Check if already installed**: Search config file for existing
|
|
||||||
`claudesidian` alias/function
|
|
||||||
```bash
|
|
||||||
# Check for existing alias/function
|
|
||||||
if grep -q "alias claudesidian\|function claudesidian" "$CONFIG_FILE"; then
|
|
||||||
echo "⚠️ Found existing claudesidian command:"
|
|
||||||
grep -A 3 "claudesidian" "$CONFIG_FILE"
|
|
||||||
echo ""
|
|
||||||
read -p "Replace it? (yes/no): " replace_answer
|
|
||||||
if [[ ! "$replace_answer" =~ ^[Yy] ]]; then
|
|
||||||
echo "Installation cancelled. Existing command preserved."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
# Mark for replacement (will remove before adding new one)
|
|
||||||
REPLACING=true
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
5. **Get user confirmation**: Show what will be added and get final confirmation
|
|
||||||
6. **Create backup**: Only if proceeding with modification
|
|
||||||
```bash
|
|
||||||
# Create backup with timestamp
|
|
||||||
BACKUP_FILE="$CONFIG_FILE.backup-$(date +%Y%m%d-%H%M%S)"
|
|
||||||
cp "$CONFIG_FILE" "$BACKUP_FILE"
|
|
||||||
echo "💾 Backup created: $BACKUP_FILE"
|
|
||||||
```
|
|
||||||
7. **Build the safe alias/function command**: Use the escaped path from step 3
|
|
||||||
```bash
|
|
||||||
# CRITICAL: Use $ESCAPED_PATH in the command (not raw $VAULT_PATH)
|
|
||||||
if [ "$SHELL_TYPE" = "fish" ]; then
|
|
||||||
# Fish uses function syntax, not alias
|
|
||||||
COMMAND_TEXT="function claudesidian
|
|
||||||
cd \"$ESCAPED_PATH\" && (claude --resume 2>/dev/null; or claude)
|
|
||||||
cd -
|
|
||||||
end"
|
|
||||||
else
|
|
||||||
# Bash/Zsh use alias syntax
|
|
||||||
# IMPORTANT: Use double quotes around $ESCAPED_PATH to preserve escaping
|
|
||||||
COMMAND_TEXT="alias claudesidian='(cd \"$ESCAPED_PATH\" && (claude --resume 2>/dev/null || claude))'"
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
8. **Remove old command if replacing**:
|
|
||||||
```bash
|
|
||||||
if [ "$REPLACING" = true ]; then
|
|
||||||
# Remove old alias/function before adding new one
|
|
||||||
sed -i.tmp '/alias claudesidian\|function claudesidian/,/^end$/d' "$CONFIG_FILE"
|
|
||||||
rm -f "$CONFIG_FILE.tmp"
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
9. **Add command to config file**: Append using the escaped command text
|
|
||||||
```bash
|
|
||||||
echo "$COMMAND_TEXT" >> "$CONFIG_FILE"
|
|
||||||
```
|
|
||||||
10. **Show success message**: With instructions to reload shell
|
|
||||||
|
|
||||||
## Example Output
|
|
||||||
|
|
||||||
**Bash/Zsh Example (with spaces in path to demonstrate escaping):**
|
|
||||||
|
|
||||||
```
|
|
||||||
🔧 Installing claudesidian command...
|
|
||||||
|
|
||||||
📁 Vault path: /home/user/My Obsidian Vault
|
|
||||||
🐚 Shell detected: zsh
|
|
||||||
📝 Config file: /home/user/.zshrc
|
|
||||||
|
|
||||||
💾 Backup created: /home/user/.zshrc.backup-20250107-143025
|
|
||||||
|
|
||||||
✅ Installed! Added to /home/user/.zshrc:
|
|
||||||
alias claudesidian='(cd "/home/user/My Obsidian Vault" && (claude --resume 2>/dev/null || claude))'
|
|
||||||
|
|
||||||
🔄 To activate, run:
|
|
||||||
source ~/.zshrc
|
|
||||||
|
|
||||||
Or start a new terminal session.
|
|
||||||
|
|
||||||
✨ Test it: Type 'claudesidian' from any directory!
|
|
||||||
```
|
|
||||||
|
|
||||||
**Fish Shell Example:**
|
|
||||||
|
|
||||||
```
|
|
||||||
🔧 Installing claudesidian command...
|
|
||||||
|
|
||||||
📁 Vault path: /home/user/My Obsidian Vault
|
|
||||||
🐚 Shell detected: fish
|
|
||||||
📝 Config file: /home/user/.config/fish/config.fish
|
|
||||||
|
|
||||||
💾 Backup created: /home/user/.config/fish/config.fish.backup-20250107-143025
|
|
||||||
|
|
||||||
✅ Installed! Added to /home/user/.config/fish/config.fish:
|
|
||||||
function claudesidian
|
|
||||||
cd "/home/user/My Obsidian Vault" && (claude --resume 2>/dev/null; or claude)
|
|
||||||
cd -
|
|
||||||
end
|
|
||||||
|
|
||||||
🔄 To activate, run:
|
|
||||||
source ~/.config/fish/config.fish
|
|
||||||
|
|
||||||
Or start a new terminal session.
|
|
||||||
|
|
||||||
✨ Test it: Type 'claudesidian' from any directory!
|
|
||||||
```
|
|
||||||
|
|
||||||
## Handling Special Characters
|
|
||||||
|
|
||||||
The implementation properly handles paths with:
|
|
||||||
|
|
||||||
- Spaces: `/Users/noah/My Vault`
|
|
||||||
- Quotes: `/Users/noah/vault's backup`
|
|
||||||
- Special characters that need escaping
|
|
||||||
|
|
||||||
Paths are double-quoted and any embedded quotes/backslashes are escaped.
|
|
||||||
|
|
||||||
## Fish Shell Support
|
|
||||||
|
|
||||||
Fish shell uses different syntax than Bash/Zsh:
|
|
||||||
|
|
||||||
**Bash/Zsh (alias):**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
alias claudesidian='(cd "/path" && command)'
|
|
||||||
```
|
|
||||||
|
|
||||||
**Fish (function):**
|
|
||||||
|
|
||||||
```fish
|
|
||||||
function claudesidian
|
|
||||||
cd "/path" && (command; or fallback)
|
|
||||||
cd -
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
Key differences:
|
|
||||||
|
|
||||||
- Fish uses `function` keyword instead of `alias` for complex commands
|
|
||||||
- Fish uses `; or` instead of `||` for fallback logic
|
|
||||||
- Fish uses `cd -` to return to previous directory (instead of subshell)
|
|
||||||
- Multi-line function definition instead of single-line alias
|
|
||||||
|
|
||||||
The installation automatically detects Fish and uses the correct syntax.
|
|
||||||
|
|
||||||
## Security Considerations
|
|
||||||
|
|
||||||
This command modifies your shell configuration file (a sensitive operation).
|
|
||||||
Safety measures:
|
|
||||||
|
|
||||||
- **You'll see exactly what will be added** before any changes
|
|
||||||
- **Timestamped backup is automatically created** before modification
|
|
||||||
- **Vault path is properly escaped** to prevent injection attacks
|
|
||||||
- **Only the claudesidian command is modified** - nothing else in your config
|
|
||||||
- **Asks permission** before replacing existing commands
|
|
||||||
|
|
||||||
If anything goes wrong, restore from: `$CONFIG_FILE.backup-YYYYMMDD-HHMMSS`
|
|
||||||
|
|
||||||
## Important Notes
|
|
||||||
|
|
||||||
- The command uses a subshell `()` (or `cd -` in Fish) so it returns to your
|
|
||||||
original directory after
|
|
||||||
- Automatically tries to resume existing sessions, falls back to new session
|
|
||||||
- If alias/function already exists, asks user if they want to replace it
|
|
||||||
- Always shows what will be added before modifying config files
|
|
||||||
- **Always creates timestamped backup** of config file before modifying (format:
|
|
||||||
`YYYYMMDD-HHMMSS`)
|
|
||||||
- Backups are kept indefinitely - users can manually clean up old backups if
|
|
||||||
needed
|
|
||||||
- Shows backup location so users know where to restore from if needed
|
|
||||||
|
|
||||||
## Usage Examples
|
|
||||||
|
|
||||||
Install for your default shell (auto-detected):
|
|
||||||
|
|
||||||
```
|
|
||||||
/install-claudesidian-command
|
|
||||||
```
|
|
||||||
|
|
||||||
Install for specific shell (override auto-detection):
|
|
||||||
|
|
||||||
```
|
|
||||||
/install-claudesidian-command zsh
|
|
||||||
/install-claudesidian-command bash
|
|
||||||
/install-claudesidian-command fish
|
|
||||||
```
|
|
||||||
|
|
||||||
**When to specify shell:**
|
|
||||||
|
|
||||||
- You use multiple shells and want to install for a specific one
|
|
||||||
- Auto-detection picked the wrong shell
|
|
||||||
- You're setting up for someone else
|
|
||||||
|
|
||||||
## How It Works
|
|
||||||
|
|
||||||
**Bash/Zsh (alias with subshell):**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
alias claudesidian='(cd "/path/to/vault" && (claude --resume 2>/dev/null || claude))'
|
|
||||||
```
|
|
||||||
|
|
||||||
1. `(cd "/path/to/vault" && ...)` - Subshell that changes directory temporarily
|
|
||||||
(path is double-quoted for safety)
|
|
||||||
2. `claude --resume 2>/dev/null` - Tries to resume existing session, suppresses
|
|
||||||
error
|
|
||||||
3. `|| claude` - If resume fails (no session), starts new session
|
|
||||||
4. After Claude exits, subshell closes and returns to original directory
|
|
||||||
automatically
|
|
||||||
|
|
||||||
**Fish (function with cd -):**
|
|
||||||
|
|
||||||
```fish
|
|
||||||
function claudesidian
|
|
||||||
cd "/path/to/vault" && (claude --resume 2>/dev/null; or claude)
|
|
||||||
cd -
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
1. `cd "/path/to/vault"` - Changes to vault directory (path is double-quoted for
|
|
||||||
safety)
|
|
||||||
2. `claude --resume 2>/dev/null` - Tries to resume existing session, suppresses
|
|
||||||
error
|
|
||||||
3. `; or claude` - If resume fails (no session), starts new session (Fish
|
|
||||||
syntax)
|
|
||||||
4. `cd -` - Returns to previous directory after Claude exits
|
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
risk: low
|
||||||
|
writes: none (read-only)
|
||||||
|
|
||||||
---
|
---
|
||||||
name: pragmatic-review
|
name: pragmatic-review
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Pull Request Command
|
# Pull Request Command
|
||||||
|
risk: high
|
||||||
|
writes: git remote (push + PR)
|
||||||
|
|
||||||
Creates a new feature branch, commits changes, pushes to GitHub, and opens a
|
Creates a new feature branch, commits changes, pushes to GitHub, and opens a
|
||||||
pull request - all in one command. Perfect for contributing features or fixes.
|
pull request - all in one command. Perfect for contributing features or fixes.
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
risk: high
|
||||||
|
writes: git remote (tag + push)
|
||||||
|
|
||||||
---
|
---
|
||||||
name: release
|
name: release
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Research Assistant
|
# Research Assistant
|
||||||
|
risk: medium
|
||||||
|
writes: 03_Resources/
|
||||||
|
|
||||||
Conduct thorough research on topics by searching the vault and synthesizing
|
Conduct thorough research on topics by searching the vault and synthesizing
|
||||||
findings.
|
findings.
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Thinking Partner
|
# Thinking Partner
|
||||||
|
risk: low
|
||||||
|
writes: none (conversation)
|
||||||
|
|
||||||
You are a collaborative thinking partner specializing in helping people explore
|
You are a collaborative thinking partner specializing in helping people explore
|
||||||
complex problems. Your role is to facilitate thinking through careful
|
complex problems. Your role is to facilitate thinking through careful
|
||||||
|
|||||||
@@ -1,645 +0,0 @@
|
|||||||
---
|
|
||||||
name: upgrade
|
|
||||||
description:
|
|
||||||
Intelligently upgrade claudesidian with new features while preserving user
|
|
||||||
customizations using AI-powered semantic analysis
|
|
||||||
allowed-tools: [Read, Write, Edit, MultiEdit, Bash, WebFetch, Grep, Glob]
|
|
||||||
argument-hint:
|
|
||||||
"(optional) 'check' to preview changes, 'force' to skip confirmations"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Smart Upgrade Command
|
|
||||||
|
|
||||||
Intelligently upgrades your claudesidian installation by fetching the latest
|
|
||||||
release from GitHub and using AI-powered semantic analysis to merge new features
|
|
||||||
with your existing customizations. Preserves user intent while adding new
|
|
||||||
capabilities.
|
|
||||||
|
|
||||||
## Task
|
|
||||||
|
|
||||||
1. Check GitHub for the latest claudesidian release
|
|
||||||
2. Download and analyze what has changed since your version
|
|
||||||
3. Use Claude's semantic understanding to identify user customizations
|
|
||||||
4. Intelligently merge new features with existing customizations
|
|
||||||
5. Safely apply updates while preserving user data and preferences
|
|
||||||
6. Create backups and provide rollback options
|
|
||||||
|
|
||||||
## Process
|
|
||||||
|
|
||||||
### 1. **Version Check & Setup**
|
|
||||||
|
|
||||||
- Get current version from package.json
|
|
||||||
- Check if already on latest version:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Use cut instead of sed to avoid zsh parentheses escaping issues
|
|
||||||
CURRENT=$(grep '"version"' package.json | head -1 | cut -d'"' -f4)
|
|
||||||
LATEST=$(curl -s https://raw.githubusercontent.com/heyitsnoah/claudesidian/main/package.json | grep '"version"' | head -1 | cut -d'"' -f4)
|
|
||||||
|
|
||||||
if [ "$CURRENT" = "$LATEST" ]; then
|
|
||||||
echo "✅ You're already on the latest version ($CURRENT)"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
- Create timestamped backup in `.backup/upgrade-YYYY-MM-DD-HHMMSS/`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Create backup directory
|
|
||||||
BACKUP_DIR=".backup/upgrade-$(date +%Y-%m-%d-%H%M%S)"
|
|
||||||
mkdir -p "$BACKUP_DIR"
|
|
||||||
|
|
||||||
# Copy all important files to backup
|
|
||||||
cp -r .claude "$BACKUP_DIR/"
|
|
||||||
cp -r .scripts "$BACKUP_DIR/"
|
|
||||||
cp package.json "$BACKUP_DIR/"
|
|
||||||
cp CHANGELOG.md "$BACKUP_DIR/" 2>/dev/null || true
|
|
||||||
cp README.md "$BACKUP_DIR/" 2>/dev/null || true
|
|
||||||
|
|
||||||
echo "✅ Backup created in $BACKUP_DIR"
|
|
||||||
```
|
|
||||||
|
|
||||||
- Clone latest claudesidian to temp directory (doesn't affect user's repo):
|
|
||||||
```bash
|
|
||||||
# Get fresh copy in .tmp dir (hidden from Obsidian) - user's repo stays disconnected
|
|
||||||
git clone --depth=1 --branch=main https://github.com/heyitsnoah/claudesidian.git .tmp/claudesidian-upgrade
|
|
||||||
```
|
|
||||||
- Now we have latest version to compare against
|
|
||||||
|
|
||||||
### 2. **Create Upgrade Checklist**
|
|
||||||
|
|
||||||
- Compare system files between current directory and .tmp/claudesidian-upgrade/:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Find all system files that differ AND new files in upstream
|
|
||||||
# First, find files that exist in both but differ
|
|
||||||
diff -qr . .tmp/claudesidian-upgrade/ --include="*.md" --include="*.sh" --include="*.json" |
|
|
||||||
grep -E '(\.claude/|\.scripts/|package\.json|CHANGELOG\.md|README\.md)' |
|
|
||||||
grep -v '(00_|01_|02_|03_|04_|05_|06_|\.obsidian|CLAUDE\.md)'
|
|
||||||
|
|
||||||
# Also find NEW files in upstream (like new commands)
|
|
||||||
find .tmp/claudesidian-upgrade/.claude/commands -name "*.md" | while read f; do
|
|
||||||
local_file=${f#.tmp/claudesidian-upgrade/}
|
|
||||||
[ ! -f "$local_file" ] && echo "NEW: $local_file"
|
|
||||||
done
|
|
||||||
```
|
|
||||||
|
|
||||||
- Create checklist of files that need review
|
|
||||||
- Explicitly EXCLUDE:
|
|
||||||
- User content folders (00_Inbox, 01_Projects, etc.)
|
|
||||||
- User's CLAUDE.md (their personalized version)
|
|
||||||
- vault-config.json (user's vault configuration)
|
|
||||||
- .obsidian/ (user's Obsidian settings)
|
|
||||||
- Any .md files in the root except README and CHANGELOG
|
|
||||||
- Create `.upgrade-checklist.md` with only system files that differ
|
|
||||||
- Mark each file with status: `[ ] pending`, `[x] updated`, `[-] skipped`
|
|
||||||
- Group files by type for easier review:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## Commands (12 files)
|
|
||||||
|
|
||||||
[ ] .claude/commands/init-bootstrap.md [ ] .claude/commands/release.md [ ]
|
|
||||||
.claude/commands/thinking-partner.md ...
|
|
||||||
|
|
||||||
## Settings (2 files)
|
|
||||||
|
|
||||||
[ ] .claude/settings.json [ ] .claude/settings.local.json
|
|
||||||
|
|
||||||
## Core Files (3 files)
|
|
||||||
|
|
||||||
[ ] package.json [ ] CHANGELOG.md [ ] README.md
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. **File-by-File Review**
|
|
||||||
|
|
||||||
**⚠️ CRITICAL IMPLEMENTATION REQUIREMENT:**
|
|
||||||
|
|
||||||
- **NEVER blindly overwrite files without showing diffs first**
|
|
||||||
- **ALWAYS show diffs to the user first**
|
|
||||||
- **ALWAYS ask for confirmation before replacing files**
|
|
||||||
- **Skipping these steps can lose user customizations!**
|
|
||||||
- **NEVER use `cp` or `cp -f` (both can cause prompts on protected files)**
|
|
||||||
- **ALWAYS USE `cat source > dest` for guaranteed non-interactive replacement**
|
|
||||||
- **WAIT for actual user input - don't automatically choose option 1**
|
|
||||||
|
|
||||||
For EACH file in the checklist:
|
|
||||||
|
|
||||||
1. Read current checklist status from `.upgrade-checklist.md`
|
|
||||||
2. **MANDATORY: Show the diff between local and upstream**:
|
|
||||||
```bash
|
|
||||||
# ALWAYS show this to the user!
|
|
||||||
diff -u current/file .tmp/claudesidian-upgrade/file
|
|
||||||
```
|
|
||||||
3. Determine update strategy:
|
|
||||||
- **No local changes**: Direct replace from upstream
|
|
||||||
- **Never update**: User's CLAUDE.md, vault-config.json, .mcp.json
|
|
||||||
- **Local changes detected**: Ask user:
|
|
||||||
|
|
||||||
```
|
|
||||||
File: .claude/commands/thinking-partner.md has local modifications
|
|
||||||
|
|
||||||
Options:
|
|
||||||
1. Keep your version (skip update)
|
|
||||||
2. Take upstream version (lose your changes)
|
|
||||||
3. View diff and decide
|
|
||||||
4. Try to merge both (AI-assisted)
|
|
||||||
|
|
||||||
Choice (1/2/3/4): [WAIT FOR USER TO TYPE NUMBER AND PRESS ENTER]
|
|
||||||
```
|
|
||||||
|
|
||||||
**IMPORTANT**: Actually WAIT for the user to type their choice! Do NOT
|
|
||||||
automatically select any option. The user must manually type 1, 2, 3, or 4
|
|
||||||
and press Enter.
|
|
||||||
|
|
||||||
4. Apply the chosen strategy:
|
|
||||||
- **For option 1 (Apply update/Take upstream)**:
|
|
||||||
```bash
|
|
||||||
# IMPORTANT: Check if file exists first, then use cat with redirection
|
|
||||||
if [ -f ".tmp/claudesidian-upgrade/path/to/file" ]; then
|
|
||||||
cat .tmp/claudesidian-upgrade/path/to/file > path/to/file && echo "✅ Updated"
|
|
||||||
else
|
|
||||||
echo "⚠️ File not found in upstream - keeping local version"
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
- **For option 2 (Keep your version)**:
|
|
||||||
```bash
|
|
||||||
echo "✅ Kept your version"
|
|
||||||
```
|
|
||||||
- **For option 4 (AI merge)**: Read both files and create merged version
|
|
||||||
5. **CRITICAL: Update the checklist file immediately**:
|
|
||||||
```markdown
|
|
||||||
[ ] .claude/commands/init-bootstrap.md → becomes → [x]
|
|
||||||
.claude/commands/init-bootstrap.md
|
|
||||||
```
|
|
||||||
6. Save `.upgrade-checklist.md` after EVERY file update
|
|
||||||
7. Move to next file
|
|
||||||
|
|
||||||
### 4. **Update Types**
|
|
||||||
|
|
||||||
- **Safe to replace**: `.claude/commands/*.md`, `.claude/agents/*.md`,
|
|
||||||
`.scripts/*`
|
|
||||||
- **Needs review**: `package.json` (preserve user's custom scripts)
|
|
||||||
- **Never touch**: User content folders, CLAUDE.md, API configs
|
|
||||||
|
|
||||||
#### Batch Updates for Similar Files
|
|
||||||
|
|
||||||
For commands that have only formatting changes, you can batch update:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Batch update multiple command files with same type of changes
|
|
||||||
for file in thinking-partner.md daily-review.md inbox-processor.md; do
|
|
||||||
if [ -f ".tmp/claudesidian-upgrade/.claude/commands/$file" ]; then
|
|
||||||
cat ".tmp/claudesidian-upgrade/.claude/commands/$file" > ".claude/commands/$file"
|
|
||||||
echo "✅ Updated $file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Handling Missing Upstream Files
|
|
||||||
|
|
||||||
Some files may exist locally but not in upstream (like deprecated agents):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Check if file exists in upstream before trying to update
|
|
||||||
if [ ! -f ".tmp/claudesidian-upgrade/$filepath" ]; then
|
|
||||||
echo "⚠️ $filepath not in upstream - keeping local version"
|
|
||||||
# Mark as skipped in checklist: [-]
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. **Progress Tracking**
|
|
||||||
|
|
||||||
- Use TodoWrite tool to track progress alongside the checklist
|
|
||||||
- Save progress after each file in `.upgrade-checklist.md`
|
|
||||||
- **MUST mark items in checklist**:
|
|
||||||
- `[x]` = completed
|
|
||||||
- `[-]` = skipped (user customization)
|
|
||||||
- `[ ]` = still pending
|
|
||||||
- If interrupted, can resume from where you left off
|
|
||||||
- Show progress: "Updating file 5 of 23..."
|
|
||||||
- Clear indication of what's been done and what's remaining
|
|
||||||
|
|
||||||
### 6. **Verification Check**
|
|
||||||
|
|
||||||
- Re-check all system files against the checklist
|
|
||||||
- Compare with checklist to identify:
|
|
||||||
- Files marked `[ ]` pending = likely missed (problem)
|
|
||||||
- Files marked `[-]` skipped = intentionally kept different (fine)
|
|
||||||
- Files marked `[x]` updated but still in diff = merge issues or user edits
|
|
||||||
(review)
|
|
||||||
- Show verification results:
|
|
||||||
```
|
|
||||||
✅ All required files updated successfully
|
|
||||||
ℹ️ 2 files intentionally kept with user customizations:
|
|
||||||
- .claude/commands/thinking-partner.md (user's concise style)
|
|
||||||
- package.json (user's custom scripts preserved)
|
|
||||||
- or -
|
|
||||||
⚠️ Warning: 2 files appear to be missed (still marked pending):
|
|
||||||
- .claude/commands/release.md
|
|
||||||
- .scripts/vault-stats.sh
|
|
||||||
```
|
|
||||||
- Only flag as problem if files are still marked `[ ]` pending in checklist
|
|
||||||
|
|
||||||
### 7. **Final Steps**
|
|
||||||
|
|
||||||
- Update version in package.json
|
|
||||||
- Verify all commands work
|
|
||||||
- Clean up temp directory: `rm -rf .tmp/claudesidian-upgrade`
|
|
||||||
- Save final checklist for reference (shows what was updated vs skipped)
|
|
||||||
- Show summary of what was updated
|
|
||||||
|
|
||||||
## Update Categories
|
|
||||||
|
|
||||||
### 🤖 AI-Powered Intelligent Merge
|
|
||||||
|
|
||||||
**Commands** (`.claude/commands/*.md`):
|
|
||||||
|
|
||||||
- Analyze user's prompt style, output preferences, workflow modifications
|
|
||||||
- Merge new features with existing customizations
|
|
||||||
- Preserve user's tone, structure, and specific requirements
|
|
||||||
|
|
||||||
**Agents** (`.claude/agents/*.md`):
|
|
||||||
|
|
||||||
- Understand user's interaction preferences
|
|
||||||
- Combine new capabilities with existing personality
|
|
||||||
- Maintain user's established workflows
|
|
||||||
|
|
||||||
**Templates** (`06_Metadata/Templates/*.md`):
|
|
||||||
|
|
||||||
- Preserve custom fields and structure
|
|
||||||
- Add new template features
|
|
||||||
- Maintain user's formatting preferences
|
|
||||||
|
|
||||||
### ⚡ Automatic Safe Updates
|
|
||||||
|
|
||||||
- **New commands/agents**: Purely additive, no conflicts
|
|
||||||
- **Scripts** (`.scripts/*`): Utility functions, safe to replace
|
|
||||||
- **Dependencies** (`package.json`): Security and feature updates
|
|
||||||
- **Documentation**: README, CONTRIBUTING updates
|
|
||||||
|
|
||||||
### 🛡️ Never Modified
|
|
||||||
|
|
||||||
- **User content**: All `00_*` through `06_*` folders (except templates)
|
|
||||||
- **Personal config**: User's `CLAUDE.md`
|
|
||||||
- **API keys**: `.mcp.json`, environment variables
|
|
||||||
- **Git history**: User's commits and branches
|
|
||||||
|
|
||||||
## Smart Conflict Resolution
|
|
||||||
|
|
||||||
When Claude detects conflicts:
|
|
||||||
|
|
||||||
### Example Scenarios:
|
|
||||||
|
|
||||||
**Scenario 1: Command Enhancement**
|
|
||||||
|
|
||||||
```
|
|
||||||
📝 thinking-partner command has updates:
|
|
||||||
|
|
||||||
YOUR VERSION: Custom concise output format, specific industry focus
|
|
||||||
NEW VERSION: Added video analysis capability, improved questioning flow
|
|
||||||
|
|
||||||
🤖 SMART MERGE PROPOSAL:
|
|
||||||
✅ Keep your concise output style
|
|
||||||
✅ Keep your industry-specific prompts
|
|
||||||
✅ Add new video analysis features
|
|
||||||
✅ Integrate improved questioning (adapted to your style)
|
|
||||||
|
|
||||||
Options:
|
|
||||||
1. 🎯 Apply smart merge (recommended)
|
|
||||||
2. 👀 Show detailed diff first
|
|
||||||
3. 🚫 Skip this update
|
|
||||||
4. 💾 Replace with new version (backup yours)
|
|
||||||
```
|
|
||||||
|
|
||||||
**Scenario 2: Template Updates**
|
|
||||||
|
|
||||||
```
|
|
||||||
📋 Project Template has changes:
|
|
||||||
|
|
||||||
YOUR VERSION: Added custom fields for client info, budget tracking
|
|
||||||
NEW VERSION: Enhanced metadata structure, new automation hooks
|
|
||||||
|
|
||||||
🤖 SMART MERGE PROPOSAL:
|
|
||||||
✅ Preserve your custom client/budget fields
|
|
||||||
✅ Add new metadata enhancements
|
|
||||||
✅ Integrate automation hooks
|
|
||||||
✅ Maintain your field ordering
|
|
||||||
|
|
||||||
Apply merge? (y/n/preview)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Command Usage
|
|
||||||
|
|
||||||
### Preview Mode (Recommended First Run)
|
|
||||||
|
|
||||||
```
|
|
||||||
/upgrade check
|
|
||||||
```
|
|
||||||
|
|
||||||
- Shows what would be updated
|
|
||||||
- Displays intelligent merge previews
|
|
||||||
- No changes made to files
|
|
||||||
- Safe to run anytime
|
|
||||||
|
|
||||||
### Interactive Upgrade
|
|
||||||
|
|
||||||
```
|
|
||||||
/upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
- Step-by-step confirmation for each change
|
|
||||||
- Shows before/after for modified files
|
|
||||||
- Allows selective application of updates
|
|
||||||
- Creates automatic backups
|
|
||||||
|
|
||||||
### Batch Upgrade (Advanced)
|
|
||||||
|
|
||||||
```
|
|
||||||
/upgrade force
|
|
||||||
```
|
|
||||||
|
|
||||||
- Applies all safe updates automatically
|
|
||||||
- Still prompts for complex merges
|
|
||||||
- Faster for users comfortable with the process
|
|
||||||
- Full backup created before starting
|
|
||||||
|
|
||||||
## Safety Features
|
|
||||||
|
|
||||||
### Automatic Backups
|
|
||||||
|
|
||||||
- Complete backup before any changes: `.backup/upgrade-[timestamp]/`
|
|
||||||
- Individual file backups for each modification
|
|
||||||
- Backup includes current git state and uncommitted changes
|
|
||||||
|
|
||||||
### Rollback Support
|
|
||||||
|
|
||||||
```
|
|
||||||
# If upgrade causes issues:
|
|
||||||
/rollback-upgrade [timestamp]
|
|
||||||
# Restores from specific backup
|
|
||||||
```
|
|
||||||
|
|
||||||
### Verification Steps
|
|
||||||
|
|
||||||
- Post-upgrade functionality testing
|
|
||||||
- Command validation (runs test commands)
|
|
||||||
- MCP server connectivity check
|
|
||||||
- Git repository integrity verification
|
|
||||||
|
|
||||||
### Incremental Application
|
|
||||||
|
|
||||||
- Updates applied one file at a time
|
|
||||||
- Validation after each critical change
|
|
||||||
- Stops on first error with clear diagnostics
|
|
||||||
- Easy to identify which change caused issues
|
|
||||||
|
|
||||||
## Common Pitfalls to Avoid
|
|
||||||
|
|
||||||
### ⚠️ Selective Updates Problem
|
|
||||||
|
|
||||||
**Never cherry-pick files based only on release notes!** This leads to:
|
|
||||||
|
|
||||||
- Missing critical command updates
|
|
||||||
- Incomplete feature implementations
|
|
||||||
- Broken dependencies between files
|
|
||||||
- Users not getting all improvements
|
|
||||||
|
|
||||||
**Always use `git diff HEAD upstream/main --name-only`** to get the complete
|
|
||||||
list of changed files, then update ALL relevant files systematically.
|
|
||||||
|
|
||||||
## Error Handling
|
|
||||||
|
|
||||||
### Common Scenarios
|
|
||||||
|
|
||||||
- **No internet connection**: Graceful failure with offline options
|
|
||||||
- **GitHub API rate limits**: Intelligent retry with backoff
|
|
||||||
- **Merge conflicts**: Clear explanation and manual resolution options
|
|
||||||
- **Permission issues**: Helpful guidance on fixing file permissions
|
|
||||||
|
|
||||||
### Recovery Options
|
|
||||||
|
|
||||||
- **Partial failure**: Continue from last successful step
|
|
||||||
- **Complete failure**: Full rollback to pre-upgrade state
|
|
||||||
- **Git conflicts**: Merge upstream changes with local commits
|
|
||||||
- **Dependency issues**: Fallback to previous working versions
|
|
||||||
|
|
||||||
## Advanced Features
|
|
||||||
|
|
||||||
### Custom Merge Rules
|
|
||||||
|
|
||||||
Users can create `.upgrade-rules.json` to specify:
|
|
||||||
|
|
||||||
- Files to always skip
|
|
||||||
- Custom merge preferences
|
|
||||||
- Automatic approval for specific change types
|
|
||||||
- Backup retention policies
|
|
||||||
|
|
||||||
### Integration with Git
|
|
||||||
|
|
||||||
- Commits each major change separately
|
|
||||||
- Meaningful commit messages describing updates
|
|
||||||
- Preserves user's branch structure
|
|
||||||
- Handles git conflicts intelligently
|
|
||||||
|
|
||||||
### Selective Updates
|
|
||||||
|
|
||||||
```
|
|
||||||
/upgrade commands-only # Update just commands
|
|
||||||
/upgrade agents-only # Update just agents
|
|
||||||
/upgrade scripts-only # Update just scripts
|
|
||||||
/upgrade deps-only # Update just dependencies
|
|
||||||
```
|
|
||||||
|
|
||||||
## CORRECT Implementation Example
|
|
||||||
|
|
||||||
**THIS is how the upgrade should work:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
📄 File 1/3: .claude/commands/release.md
|
|
||||||
|
|
||||||
# Step 1: ALWAYS show the diff first
|
|
||||||
Checking for differences...
|
|
||||||
|
|
||||||
--- .claude/commands/release.md
|
|
||||||
+++ .tmp/claudesidian-upgrade/.claude/commands/release.md
|
|
||||||
@@ -58,6 +58,11 @@
|
|
||||||
|
|
||||||
### Semantic Versioning (MAJOR.MINOR.PATCH)
|
|
||||||
|
|
||||||
+**Quick Decision Guide:**
|
|
||||||
+- Can users do something they couldn't do before? → **MINOR**
|
|
||||||
+- Did something that worked break? → **MAJOR** (if breaking) or **PATCH** (if fixing)
|
|
||||||
+- Did something that worked get better? → **PATCH**
|
|
||||||
+
|
|
||||||
**MAJOR** (1.0.0 → 2.0.0):
|
|
||||||
|
|
||||||
# Step 2: Ask user what to do
|
|
||||||
This file has updates available. What would you like to do?
|
|
||||||
|
|
||||||
1. Apply update (take upstream version)
|
|
||||||
2. Keep your version (skip this update)
|
|
||||||
3. View full diff again
|
|
||||||
4. Try to merge changes (AI-assisted)
|
|
||||||
|
|
||||||
Your choice (1-4): 1
|
|
||||||
|
|
||||||
Applying update...
|
|
||||||
[x] Updated .claude/commands/release.md
|
|
||||||
```
|
|
||||||
|
|
||||||
**WRONG Implementation (what happened in the test):**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
📄 File 1/3: .claude/commands/release.md
|
|
||||||
|
|
||||||
# NO DIFF SHOWN - WRONG!
|
|
||||||
# Just blindly overwrites:
|
|
||||||
Bash(cat .tmp/claudesidian-upgrade/.claude/commands/release.md > .claude/commands/release.md)
|
|
||||||
|
|
||||||
# No user confirmation - WRONG!
|
|
||||||
# Could lose customizations!
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example Session
|
|
||||||
|
|
||||||
```
|
|
||||||
> /upgrade
|
|
||||||
|
|
||||||
🔍 Checking for updates...
|
|
||||||
📦 Current version: 0.8.2
|
|
||||||
🆕 Latest version: 0.8.3
|
|
||||||
|
|
||||||
💾 Creating backup to .backup/upgrade-2025-09-13-142030/
|
|
||||||
|
|
||||||
📋 Creating upgrade checklist...
|
|
||||||
Checking system files only (not your personal notes)...
|
|
||||||
Found 15 system files with updates available
|
|
||||||
|
|
||||||
Created .upgrade-checklist.md to track updates:
|
|
||||||
|
|
||||||
## Commands (8 files)
|
|
||||||
[ ] .claude/commands/init-bootstrap.md
|
|
||||||
[ ] .claude/commands/release.md
|
|
||||||
[ ] .claude/commands/thinking-partner.md
|
|
||||||
[ ] .claude/commands/upgrade.md
|
|
||||||
[ ] .claude/commands/daily-review.md
|
|
||||||
[ ] .claude/commands/inbox-processor.md
|
|
||||||
[ ] .claude/commands/research-assistant.md
|
|
||||||
[ ] .claude/commands/weekly-synthesis.md
|
|
||||||
|
|
||||||
## Settings (1 file)
|
|
||||||
[ ] .claude/settings.json
|
|
||||||
|
|
||||||
## Core Files (3 files)
|
|
||||||
[ ] package.json
|
|
||||||
[ ] CHANGELOG.md
|
|
||||||
[ ] README.md
|
|
||||||
|
|
||||||
## Scripts (3 files)
|
|
||||||
[ ] .scripts/vault-stats.sh
|
|
||||||
[ ] .scripts/firecrawl-scrape.sh
|
|
||||||
[ ] .scripts/setup-mcp.sh
|
|
||||||
|
|
||||||
Starting file-by-file review...
|
|
||||||
|
|
||||||
📄 File 1/15: .claude/commands/init-bootstrap.md
|
|
||||||
Status: No local changes detected
|
|
||||||
Action: Direct update from upstream
|
|
||||||
[x] Updated
|
|
||||||
|
|
||||||
📄 File 2/15: .claude/commands/release.md
|
|
||||||
Status: No local changes detected
|
|
||||||
Action: Direct update from upstream
|
|
||||||
[x] Updated
|
|
||||||
|
|
||||||
📄 File 3/15: .claude/settings.json
|
|
||||||
Status: Has local changes (your custom hooks)
|
|
||||||
Showing diff...
|
|
||||||
Action: Merge needed - preserving your hooks, adding new features
|
|
||||||
[x] Merged
|
|
||||||
|
|
||||||
[... continues through all files ...]
|
|
||||||
|
|
||||||
🔍 **Verification Check**
|
|
||||||
Re-checking for any missed system files...
|
|
||||||
|
|
||||||
✅ All system files successfully updated!
|
|
||||||
No claudesidian system files remain out of sync with upstream.
|
|
||||||
|
|
||||||
🎉 Upgrade complete!
|
|
||||||
📈 claudesidian 0.8.2 → 0.8.3
|
|
||||||
|
|
||||||
✅ Updated: 14 files
|
|
||||||
⏭️ Skipped: 1 file (CLAUDE.md - user customization)
|
|
||||||
✅ Verified: All system files match upstream
|
|
||||||
|
|
||||||
Summary of changes:
|
|
||||||
- Fixed init-bootstrap vault selection
|
|
||||||
- Improved SessionStart hooks
|
|
||||||
- Enhanced user identification prompts
|
|
||||||
- Updated all commands to latest versions
|
|
||||||
```
|
|
||||||
|
|
||||||
### Example: Verification Catches Missed Files
|
|
||||||
|
|
||||||
```
|
|
||||||
🔍 **Verification Check**
|
|
||||||
Re-checking for any missed system files...
|
|
||||||
|
|
||||||
⚠️ Warning: 2 files appear to be missed (still marked pending in checklist):
|
|
||||||
- .claude/commands/thinking-partner.md [ ]
|
|
||||||
- .scripts/vault-stats.sh [ ]
|
|
||||||
|
|
||||||
These files haven't been processed yet.
|
|
||||||
|
|
||||||
Would you like to complete the upgrade for these files? (y/n) > y
|
|
||||||
|
|
||||||
📄 Completing upgrade for missed files...
|
|
||||||
|
|
||||||
📄 File: .claude/commands/thinking-partner.md
|
|
||||||
Status: Reviewing diff...
|
|
||||||
Action: Direct update from upstream
|
|
||||||
[x] Updated
|
|
||||||
|
|
||||||
📄 File: .scripts/vault-stats.sh
|
|
||||||
Status: Reviewing diff...
|
|
||||||
Action: Direct update from upstream
|
|
||||||
[x] Updated
|
|
||||||
|
|
||||||
✅ Verification complete - all system files now match upstream!
|
|
||||||
```
|
|
||||||
|
|
||||||
### Example: Verification with User Customizations
|
|
||||||
|
|
||||||
```
|
|
||||||
🔍 **Verification Check**
|
|
||||||
Re-checking for any missed system files...
|
|
||||||
|
|
||||||
Files still differing from upstream:
|
|
||||||
- .claude/commands/thinking-partner.md [x] ← Updated but user customized
|
|
||||||
- package.json [x] ← Merged, kept user's custom scripts
|
|
||||||
- .claude/commands/daily-review.md [ ] ← Not processed yet!
|
|
||||||
|
|
||||||
✅ 2 files intentionally preserve user customizations
|
|
||||||
⚠️ 1 file appears to be missed (still pending)
|
|
||||||
|
|
||||||
Would you like to:
|
|
||||||
1. Review the missed file (.claude/commands/daily-review.md)
|
|
||||||
2. Skip verification (keep current state)
|
|
||||||
3. See details about customized files
|
|
||||||
|
|
||||||
Choice (1/2/3) > 1
|
|
||||||
|
|
||||||
📄 File: .claude/commands/daily-review.md
|
|
||||||
Status: Reviewing diff...
|
|
||||||
Action: Direct update from upstream
|
|
||||||
[x] Updated
|
|
||||||
|
|
||||||
✅ Verification complete!
|
|
||||||
- All required updates applied
|
|
||||||
- User customizations preserved where intended
|
|
||||||
```
|
|
||||||
|
|
||||||
This intelligent upgrade system leverages Claude's semantic understanding to
|
|
||||||
provide the smoothest possible upgrade experience while ensuring no user
|
|
||||||
customizations are lost.
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
# Weekly Synthesis
|
# Weekly Synthesis
|
||||||
|
risk: medium
|
||||||
|
writes: 00_Inbox/ weekly notes
|
||||||
|
|
||||||
Create a comprehensive synthesis of the week's work and thinking.
|
Create a comprehensive synthesis of the week's work and thinking.
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
# Git Workflow
|
|
||||||
|
|
||||||
## Session Workflow
|
|
||||||
```bash
|
|
||||||
# Always start sessions with
|
|
||||||
git pull
|
|
||||||
|
|
||||||
# After significant work
|
|
||||||
git add . && git commit -m "vault backup: $(date)" && git push
|
|
||||||
```
|
|
||||||
|
|
||||||
## Commit Format
|
|
||||||
- Standard: `vault backup: YYYY-MM-DD HH:MM:SS`
|
|
||||||
- Feature: `feat: description`
|
|
||||||
- Fix: `fix: description`
|
|
||||||
- Docs: `docs: description`
|
|
||||||
|
|
||||||
## Best Practices
|
|
||||||
- Pull before starting work
|
|
||||||
- Commit frequently (after significant changes)
|
|
||||||
- Push at end of session
|
|
||||||
- Use descriptive messages for non-backup commits
|
|
||||||
- Never force push without approval
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# Linking Strategy & Connections
|
|
||||||
|
|
||||||
## Core Principles
|
|
||||||
- Use `[[wikilinks]]` for all internal connections
|
|
||||||
- Link liberally - prefer over-linking to under-linking
|
|
||||||
- Always check and update links after reorganizing files
|
|
||||||
- Proactively suggest connections when relevant
|
|
||||||
|
|
||||||
## When to Create Links
|
|
||||||
- User mentions existing topics/notes
|
|
||||||
- New content relates to existing knowledge
|
|
||||||
- Concepts connect across PARA categories
|
|
||||||
- Creating connections aids discovery
|
|
||||||
|
|
||||||
## Link Maintenance
|
|
||||||
- After moving files, verify all backlinks updated
|
|
||||||
- Periodically check for broken links
|
|
||||||
- Suggest creating MOCs (Maps of Content) for clustered topics
|
|
||||||
- Identify orphaned notes (no connections)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
# PARA Organization System
|
|
||||||
|
|
||||||
## Folder Structure
|
|
||||||
```
|
|
||||||
00_Inbox/ → Temporary capture, process weekly
|
|
||||||
01_Projects/ → Time-bound work with deadlines
|
|
||||||
02_Areas/ → Ongoing responsibilities
|
|
||||||
03_Resources/ → Reference materials
|
|
||||||
04_Archive/ → Completed items
|
|
||||||
05_Attachments/ → Media files
|
|
||||||
06_Metadata/ → Docs & templates
|
|
||||||
```
|
|
||||||
|
|
||||||
## Quick Decision Tree
|
|
||||||
- Has deadline? → 01_Projects/
|
|
||||||
- Ongoing responsibility? → 02_Areas/
|
|
||||||
- Reference material? → 03_Resources/
|
|
||||||
- Unsure? → 00_Inbox/
|
|
||||||
|
|
||||||
## Organization Principles
|
|
||||||
- Inbox is temporary - process weekly
|
|
||||||
- One idea per note (atomic notes)
|
|
||||||
- Flat structure over deep nesting (max 3 levels)
|
|
||||||
- Use links not folders for relationships
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# Data Safety & File Operations
|
|
||||||
|
|
||||||
## Core Principles
|
|
||||||
- **Never delete without approval** - Always ask before removing content
|
|
||||||
- **Preserve everything when merging** - Only remove verified exact duplicates
|
|
||||||
- **Verify before moving** - Check destination exists, update all `[[wikilinks]]` after
|
|
||||||
- **Read before writing** - Use Read tool before editing any file
|
|
||||||
|
|
||||||
## File Operations
|
|
||||||
- Use `mv` not `cp` (avoid duplicates)
|
|
||||||
- Never move numbered folders (00-06) from vault root
|
|
||||||
- Get approval for bulk operations affecting 5+ files
|
|
||||||
|
|
||||||
When proposing bulk operations:
|
|
||||||
- Explain what's changing and why
|
|
||||||
- List files affected
|
|
||||||
- Provide rollback approach
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
# Note Standards & Frontmatter
|
|
||||||
|
|
||||||
## Required Frontmatter
|
|
||||||
```yaml
|
|
||||||
---
|
|
||||||
created: YYYY-MM-DD
|
|
||||||
modified: YYYY-MM-DD
|
|
||||||
tags: [specific, tags]
|
|
||||||
status: draft|active|complete|archived
|
|
||||||
---
|
|
||||||
```
|
|
||||||
|
|
||||||
## File Naming
|
|
||||||
- **Daily notes**: YYYY-MM-DD.md (e.g., 2026-01-08.md)
|
|
||||||
- **Project notes**: Clear, descriptive names with context
|
|
||||||
- **Resource notes**: Topic-based naming
|
|
||||||
- **Avoid**: Special characters except hyphens and underscores
|
|
||||||
|
|
||||||
## Note Types
|
|
||||||
- **Atomic Notes**: Single concept, highly linkable
|
|
||||||
- **MOCs**: Topic hubs with curated links
|
|
||||||
- **Daily Notes**: Journal entries, meeting notes, quick captures
|
|
||||||
- **Project Notes**: Actionable items with clear outcomes
|
|
||||||
- **Evergreen Notes**: Permanent, well-developed ideas
|
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
# Obsidian PKM Assistant
|
|
||||||
|
|
||||||
> Core principles only. See `06_Metadata/WORKFLOWS.md` for detailed procedures.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Safety First
|
|
||||||
|
|
||||||
### Data Integrity
|
|
||||||
- **Never delete without approval** - Always ask before removing content
|
|
||||||
- **Preserve everything when merging** - Only remove verified exact duplicates
|
|
||||||
- **Verify before moving** - Check destination exists, update all `[[wikilinks]]` after
|
|
||||||
- **Read before writing** - Use Read tool before editing any file
|
|
||||||
|
|
||||||
### File Operations
|
|
||||||
- Use `mv` not `cp` (avoid duplicates)
|
|
||||||
- Never move numbered folders (00-06) from vault root
|
|
||||||
- Get approval for bulk operations affecting 5+ files
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## PARA Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
00_Inbox/ → Temporary capture, process weekly
|
|
||||||
01_Projects/ → Time-bound work with deadlines
|
|
||||||
02_Areas/ → Ongoing responsibilities
|
|
||||||
03_Resources/ → Reference materials
|
|
||||||
04_Archive/ → Completed items
|
|
||||||
05_Attachments/ → Media files
|
|
||||||
06_Metadata/ → Docs & templates
|
|
||||||
```
|
|
||||||
|
|
||||||
**Quick Decision**: Deadline? → Projects | Ongoing? → Areas | Reference? → Resources | Unsure? → Inbox
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Git Essentials
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Always start sessions with
|
|
||||||
git pull
|
|
||||||
|
|
||||||
# After significant work
|
|
||||||
git add . && git commit -m "vault backup: $(date)" && git push
|
|
||||||
```
|
|
||||||
|
|
||||||
Commit format: `vault backup: YYYY-MM-DD HH:MM:SS`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Memory Integration
|
|
||||||
|
|
||||||
Use Memvid MCP for persistent context across sessions:
|
|
||||||
|
|
||||||
### Core Workflow
|
|
||||||
1. **Query first**: Always search memory at task start: `memvid_search`
|
|
||||||
2. **Work**: Complete task using retrieved context
|
|
||||||
3. **Write back**: Save decisions: `memvid_add_text` + `memvid_commit`
|
|
||||||
|
|
||||||
### What to Store
|
|
||||||
- **DO**: User preferences, decisions, constraints, patterns, project context
|
|
||||||
- **DON'T**: Secrets, credentials, errors, logs, temporary data
|
|
||||||
|
|
||||||
### Memory File Location
|
|
||||||
- Default: `.claude/memory/memvid.mv2`
|
|
||||||
- Project-specific: `.claude/memory/[project-name].mv2`
|
|
||||||
|
|
||||||
### Tagging Strategy
|
|
||||||
Use consistent tags for retrieval:
|
|
||||||
- `type:preference` - User preferences and settings
|
|
||||||
- `type:decision` - Architectural and design decisions
|
|
||||||
- `type:constraint` - Project limitations and requirements
|
|
||||||
- `type:pattern` - Code patterns and conventions
|
|
||||||
- `project:[name]` - Project-specific context
|
|
||||||
- `area:[name]` - Area-specific information
|
|
||||||
|
|
||||||
### Quick Reference
|
|
||||||
```
|
|
||||||
Search: memvid_search(query, top_k=5)
|
|
||||||
Add: memvid_add_text(content, tags={"type": "decision"})
|
|
||||||
Commit: memvid_commit()
|
|
||||||
List: memvid_list_contents(limit=20)
|
|
||||||
Info: memvid_info()
|
|
||||||
```
|
|
||||||
|
|
||||||
See `06_Metadata/WORKFLOWS.md#memvid-workflows` for detailed procedures.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Note Standards
|
|
||||||
|
|
||||||
### Frontmatter
|
|
||||||
```yaml
|
|
||||||
---
|
|
||||||
created: YYYY-MM-DD
|
|
||||||
modified: YYYY-MM-DD
|
|
||||||
tags: [specific, tags]
|
|
||||||
status: draft|active|complete|archived
|
|
||||||
---
|
|
||||||
```
|
|
||||||
|
|
||||||
### Linking
|
|
||||||
- Use `[[wikilinks]]` for internal connections
|
|
||||||
- Link liberally, prefer over-linking
|
|
||||||
- Check and update links after reorganizing
|
|
||||||
|
|
||||||
### Organization
|
|
||||||
- Inbox is temporary - process weekly
|
|
||||||
- One idea per note (atomic notes)
|
|
||||||
- Flat structure over deep nesting (max 3 levels)
|
|
||||||
- Use links not folders for relationships
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Work Approach
|
|
||||||
|
|
||||||
**Simple tasks** → Execute directly
|
|
||||||
**Complex changes** → Propose plan first (affected files, steps, rollback)
|
|
||||||
**Uncertain info** → Mark `[待确认]` and ask
|
|
||||||
|
|
||||||
For bulk operations, provide:
|
|
||||||
- What's changing and why
|
|
||||||
- Files affected
|
|
||||||
- Rollback approach
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Detailed workflows, templates, troubleshooting**: → `06_Metadata/WORKFLOWS.md`
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+9
-32
@@ -3,42 +3,19 @@
|
|||||||
"permissions": {
|
"permissions": {
|
||||||
"allow": [
|
"allow": [
|
||||||
"Bash(npm run | grep daily-note)",
|
"Bash(npm run | grep daily-note)",
|
||||||
"Edit(06_Metadata/Templates/Daily Note Template.md)",
|
|
||||||
"Edit(06_Metadata/Reference/DAILY_NOTE_GUIDE.md)",
|
|
||||||
"Edit(.obsidian/plugins/quickadd/data.json)",
|
|
||||||
"Edit(04_Archive/Projects/Airport/Chengdu/Office Test Env.md)",
|
|
||||||
"Bash(wc:*)",
|
"Bash(wc:*)",
|
||||||
"Bash(find:*)",
|
"Bash(find:*)",
|
||||||
"Bash(git add:*)"
|
"Bash(git add:*)"
|
||||||
],
|
],
|
||||||
"deny": [],
|
"deny": [
|
||||||
"ask": []
|
"Edit(.obsidian/plugins/*/data.json)",
|
||||||
},
|
"Edit(04_Archive/**)",
|
||||||
"hooks": {
|
"Bash(git push:*)",
|
||||||
"SessionStart": [
|
"Bash(git add .:*)"
|
||||||
{
|
|
||||||
"hooks": [
|
|
||||||
{
|
|
||||||
"type": "command",
|
|
||||||
"command": "[ -f FIRST_RUN ] && echo '{\"hookSpecificOutput\":{\"hookEventName\":\"SessionStart\",\"additionalContext\":\"\\n\\n# 🚀 Welcome to Claudesidian!\\n\\n**This appears to be your first time using this vault.**\\n\\n## Quick Start\\n\\nRun the setup wizard:\\n\\n⬇\\n/init-bootstrap\\n⬆\\n\\n## What this will do:\\n\\n✅ Set up your personalized configuration\\n✅ Disconnect from the original repository\\n✅ Help you import any existing Obsidian vault\\n✅ Configure your preferred workflow\\n✅ Create your PARA folder structure\\n\\nThe setup wizard will guide you through everything!\\n\\n\"}}' || true"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "command",
|
|
||||||
"command": "npm run check-updates --silent 2>/dev/null || true"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"UserPromptSubmit": [
|
"ask": [
|
||||||
{
|
"Edit(.obsidian/**)"
|
||||||
"hooks": [
|
|
||||||
{
|
|
||||||
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/skill-discovery.sh",
|
|
||||||
"timeout": 5000,
|
|
||||||
"type": "command"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
]
|
"hooks": {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
05_Attachments/nanobanana-pro/nanobanana-pro-001.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-002.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-003.jpg
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-004.jpg
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-005.jpg
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-006.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-007.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-008.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-009.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-012.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-013.jpg
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-014.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-015.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-016.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-017.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-028.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-029.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-030.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-031.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-032.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-033.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-034.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-037.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-038.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-039.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-040.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-041.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-042.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-043.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-044.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-045.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-046.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-047.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-048.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-049.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-050.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-051.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-052.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-053.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-054.png
|
|
||||||
05_Attachments/nanobanana-pro/nanobanana-pro-085.jpg
|
|
||||||
@@ -23,6 +23,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
|
|
||||||
|
- name: Vault Secret Scanner
|
||||||
|
run: node .scripts/verify-vault.mjs
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
|
|||||||
+29
-8
@@ -3,18 +3,11 @@
|
|||||||
# ============================================
|
# ============================================
|
||||||
|
|
||||||
# --------------------------------------------
|
# --------------------------------------------
|
||||||
# Sensitive Files
|
# Sensitive Directories
|
||||||
# --------------------------------------------
|
# --------------------------------------------
|
||||||
04_Archive/SENSITIVE-DO-NOT-SYNC/
|
04_Archive/SENSITIVE-DO-NOT-SYNC/
|
||||||
04_Archive/security-sensitive/
|
04_Archive/security-sensitive/
|
||||||
04_Archive/personal-private/
|
04_Archive/personal-private/
|
||||||
**/*login*.md
|
|
||||||
**/*password*.md
|
|
||||||
**/*credential*.md
|
|
||||||
**/*secret*.md
|
|
||||||
**/*private*.md
|
|
||||||
**/apikey*.md
|
|
||||||
**/token*.md
|
|
||||||
|
|
||||||
# --------------------------------------------
|
# --------------------------------------------
|
||||||
# Obsidian Configuration
|
# Obsidian Configuration
|
||||||
@@ -249,3 +242,31 @@ __pycache__/
|
|||||||
# Agent / tool temporary files
|
# Agent / tool temporary files
|
||||||
# --------------------------------------------
|
# --------------------------------------------
|
||||||
.memory-changes-*.txt
|
.memory-changes-*.txt
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# QMD / Memory index
|
||||||
|
# --------------------------------------------
|
||||||
|
.qmd/
|
||||||
|
.memory-index.lock
|
||||||
|
*.sqlite-wal
|
||||||
|
*.sqlite-shm
|
||||||
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# Credential notes (keys live in service side, not in vault)
|
||||||
|
# --------------------------------------------
|
||||||
|
01_Projects/Personal-Tech/Development/Github.md
|
||||||
|
03_Resources/Community/Matrix Server.md
|
||||||
|
03_Resources/Development/AI-ML/Braintrust.dev.md
|
||||||
|
03_Resources/Development/AI-ML/DeepSeek-config.md
|
||||||
|
03_Resources/Development/AI-ML/Matrix Bot-config.md
|
||||||
|
03_Resources/Development/AI-ML/OpenRouter-config.md
|
||||||
|
03_Resources/Development/AI-ML/Opencode-config.md
|
||||||
|
01_Projects/Infrastructure/Services/vaultwarden.md
|
||||||
|
03_Resources/Development/DevOps/Gitlab/rest api.md
|
||||||
|
01_Projects/Work/Government-Projects/Virtual-Data-Center/prod.md
|
||||||
|
01_Projects/Work/Government-Projects/Municipal-Development-Reform/deploy.md
|
||||||
|
01_Projects/Work/Government-Projects/Municipal-Development-Reform/production.md
|
||||||
|
01_Projects/Work/Government-Projects/Industry-Info/Deployment.md
|
||||||
|
|
||||||
|
# Agent session artifacts (machine state, may embed env snippets)
|
||||||
|
.zcode/plans/
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
A 06_Metadata/AGENT_MEMORY_DEPLOYMENT_PLAN.md
|
|
||||||
A 06_Metadata/AGENT_MEMORY_IMPLEMENTATION_TASKS_2026-02-25.md
|
|
||||||
A 06_Metadata/AGENT_MEMORY_STRATEGY.md
|
|
||||||
@@ -1,250 +0,0 @@
|
|||||||
M .obsidian/CLAUDE.md
|
|
||||||
D 00_Inbox/2026-01-30.md
|
|
||||||
A 00_Inbox/CLAUDE.md
|
|
||||||
M 00_Inbox/IMPROVEMENT_PLAN_2026-02-03.md
|
|
||||||
A 01_Projects/Home-Automation/CLAUDE.md
|
|
||||||
A 01_Projects/Infrastructure/Services/CLAUDE.md
|
|
||||||
M 02_Areas/Blog/Blog.md
|
|
||||||
A 02_Areas/Blog/CLAUDE.md
|
|
||||||
A 02_Areas/Finance/CLAUDE.md
|
|
||||||
M 02_Areas/Finance/Finance.md
|
|
||||||
A 02_Areas/GFW/GFW.md
|
|
||||||
A 02_Areas/Health/CLAUDE.md
|
|
||||||
M 02_Areas/Health/Health.md
|
|
||||||
A 02_Areas/House/CLAUDE.md
|
|
||||||
M 02_Areas/House/House.md
|
|
||||||
A 02_Areas/Job/Job.md
|
|
||||||
A 02_Areas/Lifestyle/Lifestyle.md
|
|
||||||
M 02_Areas/Network & VPN/Network & VPN.md
|
|
||||||
M 02_Areas/Personal Development/Personal Development.md
|
|
||||||
A 02_Areas/Productivity/CLAUDE.md
|
|
||||||
M 02_Areas/Productivity/Productivity.md
|
|
||||||
A 03_Resources/Cooking/CLAUDE.md
|
|
||||||
M 03_Resources/Cooking/Pickled-Cucumber-Recipe.md
|
|
||||||
M 03_Resources/Cooking/Pickled-Cucumber.md
|
|
||||||
R100 02_Areas/Lifestyle/Gaming/Civilization.md 03_Resources/Gaming/Civilization.md
|
|
||||||
A 03_Resources/PKM.md
|
|
||||||
R100 2026-01-05.md 04_Archive/Daily-Notes/2026-01-05.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/8-SBOM-CN-SEC.md 04_Archive/Inbox-Clippings/2023/03/8-SBOM-CN-SEC.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/AboutSBOM-SBOM-Seal-Blog.md 04_Archive/Inbox-Clippings/2023/03/AboutSBOM-SBOM-Seal-Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/AboutSBOM-SBOM.md 04_Archive/Inbox-Clippings/2023/03/AboutSBOM-SBOM.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Adding and trusting a Certificate Authority (CA) in Fedora – Antonio Maradiaga – Collection of things I'm interested in working on.md 04_Archive/Inbox-Clippings/2023/03/Adding and trusting a Certificate Authority (CA) in Fedora – Antonio Maradiaga – Collection of things I'm interested in working on.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/DailySync · GitLab.md 04_Archive/Inbox-Clippings/2023/03/DailySync · GitLab.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/How do I install a root certificate - Ask Ubuntu.md 04_Archive/Inbox-Clippings/2023/03/How do I install a root certificate - Ask Ubuntu.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/How to Install AMD OpenCL Mining Drivers on Debian 11 Bullseye.md 04_Archive/Inbox-Clippings/2023/03/How to Install AMD OpenCL Mining Drivers on Debian 11 Bullseye.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/How-to-SBOM-SBOM-Implementation-_.md 04_Archive/Inbox-Clippings/2023/03/How-to-SBOM-SBOM-Implementation-_.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/How-to-SBOM.md 04_Archive/Inbox-Clippings/2023/03/How-to-SBOM.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/HowTosLDAP authentication for Atlassian JIRA using FreeIPA - FreeIPA.md 04_Archive/Inbox-Clippings/2023/03/HowTosLDAP authentication for Atlassian JIRA using FreeIPA - FreeIPA.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Jupyter kernels · jupyterjupyter Wiki.md 04_Archive/Inbox-Clippings/2023/03/Jupyter kernels · jupyterjupyter Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Lenovo-Support.md 04_Archive/Inbox-Clippings/2023/03/Lenovo-Support.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Openwrt-Bypass-Gateway-Ultimate-Setup-Debunking.md 04_Archive/Inbox-Clippings/2023/03/Openwrt-Bypass-Gateway-Ultimate-Setup-Debunking.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Prerequisites Tauri Apps.md 04_Archive/Inbox-Clippings/2023/03/Prerequisites Tauri Apps.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Run an OpenWRT VM on Proxmox VE.md 04_Archive/Inbox-Clippings/2023/03/Run an OpenWRT VM on Proxmox VE.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/SSL with self signed certificate - Drone Support - Harness Community.md 04_Archive/Inbox-Clippings/2023/03/SSL with self signed certificate - Drone Support - Harness Community.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Scope and Shadowing - Rust By Example.md 04_Archive/Inbox-Clippings/2023/03/Scope and Shadowing - Rust By Example.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/Software-Vendor-Handbook-SBOM-Interpretation-Fr.md 04_Archive/Inbox-Clippings/2023/03/Software-Vendor-Handbook-SBOM-Interpretation-Fr.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/The ultimate guide to SBOMs GitLab.md 04_Archive/Inbox-Clippings/2023/03/The ultimate guide to SBOMs GitLab.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/What-isSBOM-(SBOM)-Network-Security-AISEC.md 04_Archive/Inbox-Clippings/2023/03/What-isSBOM-(SBOM)-Network-Security-AISEC.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/honven-VPN-Recommendations.md 04_Archive/Inbox-Clippings/2023/03/honven-VPN-Recommendations.md
|
|
||||||
R100 00_Inbox/Clippings/2023/03/podmanrootless_tutorial.md at main · containerspodman.md 04_Archive/Inbox-Clippings/2023/03/podmanrootless_tutorial.md at main · containerspodman.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/5 Ways to Empty or Delete a Large File Content in Linux.md 04_Archive/Inbox-Clippings/2023/04/5 Ways to Empty or Delete a Large File Content in Linux.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/A half-hour to learn Rust.md 04_Archive/Inbox-Clippings/2023/04/A half-hour to learn Rust.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Base64 Encode and Decode From Command Line.md 04_Archive/Inbox-Clippings/2023/04/Base64 Encode and Decode From Command Line.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Best 100+ Stable Diffusion Prompts The Most Beautiful AI Text-to-Image Prompts Metaverse Post.md 04_Archive/Inbox-Clippings/2023/04/Best 100+ Stable Diffusion Prompts The Most Beautiful AI Text-to-Image Prompts Metaverse Post.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/ChatGPT-Plus-How-to-10.md 04_Archive/Inbox-Clippings/2023/04/ChatGPT-Plus-How-to-10.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Chatgpt4China-Application-Chatgpt3.5China-Free1.md 04_Archive/Inbox-Clippings/2023/04/Chatgpt4China-Application-Chatgpt3.5China-Free1.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Creating user, database and adding access on PostgreSQL by Arnav Gupta Coding Blocks Medium.md 04_Archive/Inbox-Clippings/2023/04/Creating user, database and adding access on PostgreSQL by Arnav Gupta Coding Blocks Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/DNS alias mode · acmesh-officialacme.sh Wiki.md 04_Archive/Inbox-Clippings/2023/04/DNS alias mode · acmesh-officialacme.sh Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Error Handling in Rust - Andrew Gallant's Blog.md 04_Archive/Inbox-Clippings/2023/04/Error Handling in Rust - Andrew Gallant's Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Future Tools - Find The Exact AI Tool For Your Needs.md 04_Archive/Inbox-Clippings/2023/04/Future Tools - Find The Exact AI Tool For Your Needs.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/How To Acquire a Let's Encrypt Certificate Using DNS Validation with acme-dns-certbot on Ubuntu 18.04 DigitalOcean.md 04_Archive/Inbox-Clippings/2023/04/How To Acquire a Let's Encrypt Certificate Using DNS Validation with acme-dns-certbot on Ubuntu 18.04 DigitalOcean.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/How to Install ROCm.md 04_Archive/Inbox-Clippings/2023/04/How to Install ROCm.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/How to install PostgreSQL on Debian 11.md 04_Archive/Inbox-Clippings/2023/04/How to install PostgreSQL on Debian 11.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/How to install and run bots for the Matrix network – tmplab.md 04_Archive/Inbox-Clippings/2023/04/How to install and run bots for the Matrix network – tmplab.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/How to setup your OTP appliance with privacyIDEA.md 04_Archive/Inbox-Clippings/2023/04/How to setup your OTP appliance with privacyIDEA.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Install and Run on AMD GPUs · AUTOMATIC1111stable-diffusion-webui Wiki.md 04_Archive/Inbox-Clippings/2023/04/Install and Run on AMD GPUs · AUTOMATIC1111stable-diffusion-webui Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Installation - Docs - Appwrite.md 04_Archive/Inbox-Clippings/2023/04/Installation - Docs - Appwrite.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Introduction Hasura Backend Plus.md 04_Archive/Inbox-Clippings/2023/04/Introduction Hasura Backend Plus.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Introduction - Learning Rust With Entirely Too Many Linked Lists.md 04_Archive/Inbox-Clippings/2023/04/Introduction - Learning Rust With Entirely Too Many Linked Lists.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Introduction - Rust and WebAssembly.md 04_Archive/Inbox-Clippings/2023/04/Introduction - Rust and WebAssembly.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Learn Rust in Y Minutes.md 04_Archive/Inbox-Clippings/2023/04/Learn Rust in Y Minutes.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Logto.md 04_Archive/Inbox-Clippings/2023/04/Logto.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/MistGPU.md 04_Archive/Inbox-Clippings/2023/04/MistGPU.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Most Useful ChatGPT Prompts.md 04_Archive/Inbox-Clippings/2023/04/Most Useful ChatGPT Prompts.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/PowerDNS pdnsutil cheat sheet - Makarainen.md 04_Archive/Inbox-Clippings/2023/04/PowerDNS pdnsutil cheat sheet - Makarainen.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Prerequisites.md 04_Archive/Inbox-Clippings/2023/04/Prerequisites.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Self hosted mail server – if then else.md 04_Archive/Inbox-Clippings/2023/04/Self hosted mail server – if then else.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Slurm Workload Manager - Overview.md 04_Archive/Inbox-Clippings/2023/04/Slurm Workload Manager - Overview.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Steamship Documentation.md 04_Archive/Inbox-Clippings/2023/04/Steamship Documentation.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/TorantulinoAuto-GPT An experimental open-source attempt to make GPT-4 fully autonomous..md 04_Archive/Inbox-Clippings/2023/04/TorantulinoAuto-GPT An experimental open-source attempt to make GPT-4 fully autonomous..md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Usage of matrix-bot-sdk Matrix.org.md 04_Archive/Inbox-Clippings/2023/04/Usage of matrix-bot-sdk Matrix.org.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/Using Let's Encrypt for internal servers - Philipp's Tech Blog.md 04_Archive/Inbox-Clippings/2023/04/Using Let's Encrypt for internal servers - Philipp's Tech Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/What is Prompt Engineering prmpts.AI.md 04_Archive/Inbox-Clippings/2023/04/What is Prompt Engineering prmpts.AI.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/[Pdns-users] TCP Connection Thread died because of STL error Reading data Connection reset by peer.md 04_Archive/Inbox-Clippings/2023/04/[Pdns-users] TCP Connection Thread died because of STL error Reading data Connection reset by peer.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/fast.ai - GPT 4 and the Uncharted Territories of Language.md 04_Archive/Inbox-Clippings/2023/04/fast.ai - GPT 4 and the Uncharted Territories of Language.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/matrixgptmatrix-chatgpt-bot Talk to ChatGPT via any Matrix client!.md 04_Archive/Inbox-Clippings/2023/04/matrixgptmatrix-chatgpt-bot Talk to ChatGPT via any Matrix client!.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/prmpts.AI - Prompt sandbox.md 04_Archive/Inbox-Clippings/2023/04/prmpts.AI - Prompt sandbox.md
|
|
||||||
R100 00_Inbox/Clippings/2023/04/yarmodelightful-matrix A curated list of delightful Matrix resources, implementations and clients. - delightful-matrix - Codeberg.org.md 04_Archive/Inbox-Clippings/2023/04/yarmodelightful-matrix A curated list of delightful Matrix resources, implementations and clients. - delightful-matrix - Codeberg.org.md
|
|
||||||
R100 00_Inbox/Clippings/2023/05/Creating user accounts Dendrite.md 04_Archive/Inbox-Clippings/2023/05/Creating user accounts Dendrite.md
|
|
||||||
R100 00_Inbox/Clippings/2023/05/How to Set Up a Mail Server with PostfixAdmin on Debian 11.md 04_Archive/Inbox-Clippings/2023/05/How to Set Up a Mail Server with PostfixAdmin on Debian 11.md
|
|
||||||
R100 00_Inbox/Clippings/2023/05/N26-Tutorial-Mutou.md 04_Archive/Inbox-Clippings/2023/05/N26-Tutorial-Mutou.md
|
|
||||||
R100 00_Inbox/Clippings/2023/05/PostfixAmavisNew - Community Help Wiki.md 04_Archive/Inbox-Clippings/2023/05/PostfixAmavisNew - Community Help Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2023/05/Setting Up Amavis and ClamAV on Ubuntu Mail Server - LinuxBabe.md 04_Archive/Inbox-Clippings/2023/05/Setting Up Amavis and ClamAV on Ubuntu Mail Server - LinuxBabe.md
|
|
||||||
R100 00_Inbox/Clippings/2023/06/50 AIChatGPT Prompts for Fitness Professionals - IDEA Health & Fitness Association.md 04_Archive/Inbox-Clippings/2023/06/50 AIChatGPT Prompts for Fitness Professionals - IDEA Health & Fitness Association.md
|
|
||||||
R100 00_Inbox/Clippings/2023/06/8 Best ChatGPT Uses for Cyclists Next Level Cycling AI Assistant.md 04_Archive/Inbox-Clippings/2023/06/8 Best ChatGPT Uses for Cyclists Next Level Cycling AI Assistant.md
|
|
||||||
R100 00_Inbox/Clippings/2023/06/API Design Practice. A practical guide to API QA and the… by TRGoodwill API Central May, 2023 Medium.md 04_Archive/Inbox-Clippings/2023/06/API Design Practice. A practical guide to API QA and the… by TRGoodwill API Central May, 2023 Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2023/06/Building Your Own DevSecOps Knowledge Base with OpenAI, LangChain, and LlamaIndex by Wenqi Glantz May, 2023 Better Programming.md 04_Archive/Inbox-Clippings/2023/06/Building Your Own DevSecOps Knowledge Base with OpenAI, LangChain, and LlamaIndex by Wenqi Glantz May, 2023 Better Programming.md
|
|
||||||
R100 00_Inbox/Clippings/2023/06/How we built the Tinder API Gateway by Tinder Tinder Tech Blog Medium.md 04_Archive/Inbox-Clippings/2023/06/How we built the Tinder API Gateway by Tinder Tinder Tech Blog Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2023/08/Unblockit - Proxies to access your favourite blocked sites.md 04_Archive/Inbox-Clippings/2023/08/Unblockit - Proxies to access your favourite blocked sites.md
|
|
||||||
R100 00_Inbox/Clippings/2023/09/SQL.md 04_Archive/Inbox-Clippings/2023/09/SQL.md
|
|
||||||
R100 00_Inbox/Clippings/2023/10/UBNT-EdgeRouter-XImplementationPPPoE-IPv6-Minad.md 04_Archive/Inbox-Clippings/2023/10/UBNT-EdgeRouter-XImplementationPPPoE-IPv6-Minad.md
|
|
||||||
R100 00_Inbox/Clippings/2024/02/OpenDKIM on Postfix with virtual domains [rigacci.org].md 04_Archive/Inbox-Clippings/2024/02/OpenDKIM on Postfix with virtual domains [rigacci.org].md
|
|
||||||
R100 00_Inbox/Clippings/2024/05/.md 04_Archive/Inbox-Clippings/2024/05/.md
|
|
||||||
R100 00_Inbox/Clippings/2024/05/Fedora Root on ZFS — OpenZFS documentation.md 04_Archive/Inbox-Clippings/2024/05/Fedora Root on ZFS — OpenZFS documentation.md
|
|
||||||
R100 00_Inbox/Clippings/2024/05/Overview — ZFSBootMenu 2.3.0 documentation.md 04_Archive/Inbox-Clippings/2024/05/Overview — ZFSBootMenu 2.3.0 documentation.md
|
|
||||||
R100 00_Inbox/Clippings/2024/05/Reliably boot Fedora with root on ZFS.md 04_Archive/Inbox-Clippings/2024/05/Reliably boot Fedora with root on ZFS.md
|
|
||||||
R100 00_Inbox/Clippings/2024/06/Comparison to alternatives — Meilisearch documentation.md 04_Archive/Inbox-Clippings/2024/06/Comparison to alternatives — Meilisearch documentation.md
|
|
||||||
R100 00_Inbox/Clippings/2024/06/The rEFInd Boot Manager Getting rEFInd.md 04_Archive/Inbox-Clippings/2024/06/The rEFInd Boot Manager Getting rEFInd.md
|
|
||||||
R100 00_Inbox/Clippings/2024/06/VPN-Recommendations-VPN-ReviewsSSRV2rayTrojan-(.md 04_Archive/Inbox-Clippings/2024/06/VPN-Recommendations-VPN-ReviewsSSRV2rayTrojan-(.md
|
|
||||||
R100 00_Inbox/Clippings/2024/07/AFTN-SITAMessage-Intro-CSDNBlog.md 04_Archive/Inbox-Clippings/2024/07/AFTN-SITAMessage-Intro-CSDNBlog.md
|
|
||||||
R100 00_Inbox/Clippings/2024/07/Getting started.md 04_Archive/Inbox-Clippings/2024/07/Getting started.md
|
|
||||||
R100 00_Inbox/Clippings/2024/07/How to Open Port for a Specific IP Address in Firewalld.md 04_Archive/Inbox-Clippings/2024/07/How to Open Port for a Specific IP Address in Firewalld.md
|
|
||||||
R100 00_Inbox/Clippings/2024/07/How to build a fullstack application with Go, Templ, and HTMX - DEV Community.md 04_Archive/Inbox-Clippings/2024/07/How to build a fullstack application with Go, Templ, and HTMX - DEV Community.md
|
|
||||||
R100 00_Inbox/Clippings/2024/07/Implementing Graceful Shutdown in Go RudderStack Blog.md 04_Archive/Inbox-Clippings/2024/07/Implementing Graceful Shutdown in Go RudderStack Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2024/07/Live website updates with Go, SSE, and htmx.md 04_Archive/Inbox-Clippings/2024/07/Live website updates with Go, SSE, and htmx.md
|
|
||||||
R100 00_Inbox/Clippings/2024/07/The Go libraries that never failed us 22 libraries you need to know.md 04_Archive/Inbox-Clippings/2024/07/The Go libraries that never failed us 22 libraries you need to know.md
|
|
||||||
R100 00_Inbox/Clippings/2024/08/CORS the ultimate guide Devsecurely.md 04_Archive/Inbox-Clippings/2024/08/CORS the ultimate guide Devsecurely.md
|
|
||||||
R100 00_Inbox/Clippings/2024/08/DockerHub-China-Mirror-List-2024-6-18-Tested-V2.md 04_Archive/Inbox-Clippings/2024/08/DockerHub-China-Mirror-List-2024-6-18-Tested-V2.md
|
|
||||||
R100 00_Inbox/Clippings/2024/08/Documenting Software Architectures - by Dr Milan Milanović.md 04_Archive/Inbox-Clippings/2024/08/Documenting Software Architectures - by Dr Milan Milanović.md
|
|
||||||
R100 00_Inbox/Clippings/2024/08/My Obsidian Note-Taking Workflow ssp.sh.md 04_Archive/Inbox-Clippings/2024/08/My Obsidian Note-Taking Workflow ssp.sh.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/Config-Instance-DM-DatabaseTech-Docs.md 04_Archive/Inbox-Clippings/2024/09/Config-Instance-DM-DatabaseTech-Docs.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/DB-Installation-DM-DatabaseTech-Docs.md 04_Archive/Inbox-Clippings/2024/09/DB-Installation-DM-DatabaseTech-Docs.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/DockerInstallation-DM-DatabaseTech-Docs.md 04_Archive/Inbox-Clippings/2024/09/DockerInstallation-DM-DatabaseTech-Docs.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/How to Upgrade Ubuntu from 20.04 to 22.04 (Step by Step).md 04_Archive/Inbox-Clippings/2024/09/How to Upgrade Ubuntu from 20.04 to 22.04 (Step by Step).md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/KylinV10-arm64aarch64-Offline-Installationdocke.md 04_Archive/Inbox-Clippings/2024/09/KylinV10-arm64aarch64-Offline-Installationdocke.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/LinuxInstallationDM-Database-DM8-sowler-Blog.md 04_Archive/Inbox-Clippings/2024/09/LinuxInstallationDM-Database-DM8-sowler-Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/OpenXPKI - The Open Source Trustcenter Solution.md 04_Archive/Inbox-Clippings/2024/09/OpenXPKI - The Open Source Trustcenter Solution.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/Pre-Installation-DM-DatabaseTech-Docs.md 04_Archive/Inbox-Clippings/2024/09/Pre-Installation-DM-DatabaseTech-Docs.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/Setting Up Elasticsearch and Kibana Single-Node with Docker Compose by Karthik S Medium.md 04_Archive/Inbox-Clippings/2024/09/Setting Up Elasticsearch and Kibana Single-Node with Docker Compose by Karthik S Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/Step-by-Step Guide Setting Up OpenXPKI for Secure Digital Certificates in Linux by Riski Ilyas Medium.md 04_Archive/Inbox-Clippings/2024/09/Step-by-Step Guide Setting Up OpenXPKI for Secure Digital Certificates in Linux by Riski Ilyas Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2024/09/elasticdumpelasticsearch-dump - Docker Image Docker Hub.md 04_Archive/Inbox-Clippings/2024/09/elasticdumpelasticsearch-dump - Docker Image Docker Hub.md
|
|
||||||
R100 00_Inbox/Clippings/2024/10/Event-driven architecture on the modern stack of Java technologies · Roman Kudryashov's tech blog.md 04_Archive/Inbox-Clippings/2024/10/Event-driven architecture on the modern stack of Java technologies · Roman Kudryashov's tech blog.md
|
|
||||||
R100 00_Inbox/Clippings/2024/10/How to Flush DNS on Mac – MacOS Clear DNS Cache.md 04_Archive/Inbox-Clippings/2024/10/How to Flush DNS on Mac – MacOS Clear DNS Cache.md
|
|
||||||
R100 00_Inbox/Clippings/2024/10/My-nix-Learning-Experience-Installation-Packagi.md 04_Archive/Inbox-Clippings/2024/10/My-nix-Learning-Experience-Installation-Packagi.md
|
|
||||||
R100 00_Inbox/Clippings/2024/10/MySQL community audit logging - CyberSecThreat.md 04_Archive/Inbox-Clippings/2024/10/MySQL community audit logging - CyberSecThreat.md
|
|
||||||
R100 00_Inbox/Clippings/2024/10/Permission-Validation-Nacos-Official.md 04_Archive/Inbox-Clippings/2024/10/Permission-Validation-Nacos-Official.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/8-SBOM-CN-SEC.md 04_Archive/Inbox-Clippings/2024/11/2023/03/8-SBOM-CN-SEC.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/AboutSBOM-SBOM-Seal-Blog.md 04_Archive/Inbox-Clippings/2024/11/2023/03/AboutSBOM-SBOM-Seal-Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/AboutSBOM-SBOM.md 04_Archive/Inbox-Clippings/2024/11/2023/03/AboutSBOM-SBOM.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Adding and trusting a Certificate Authority (CA) in Fedora – Antonio Maradiaga – Collection of things I'm interested in working on.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Adding and trusting a Certificate Authority (CA) in Fedora – Antonio Maradiaga – Collection of things I'm interested in working on.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/DailySync · GitLab.md 04_Archive/Inbox-Clippings/2024/11/2023/03/DailySync · GitLab.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/How do I install a root certificate - Ask Ubuntu.md 04_Archive/Inbox-Clippings/2024/11/2023/03/How do I install a root certificate - Ask Ubuntu.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/How to Install AMD OpenCL Mining Drivers on Debian 11 Bullseye.md 04_Archive/Inbox-Clippings/2024/11/2023/03/How to Install AMD OpenCL Mining Drivers on Debian 11 Bullseye.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/How-to-SBOM-SBOM-Implementation-_.md 04_Archive/Inbox-Clippings/2024/11/2023/03/How-to-SBOM-SBOM-Implementation-_.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/How-to-SBOM.md 04_Archive/Inbox-Clippings/2024/11/2023/03/How-to-SBOM.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/HowTosLDAP authentication for Atlassian JIRA using FreeIPA - FreeIPA.md 04_Archive/Inbox-Clippings/2024/11/2023/03/HowTosLDAP authentication for Atlassian JIRA using FreeIPA - FreeIPA.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Jupyter kernels · jupyterjupyter Wiki.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Jupyter kernels · jupyterjupyter Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Lenovo-Support.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Lenovo-Support.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Openwrt-Bypass-Gateway-Ultimate-Setup-Debunking.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Openwrt-Bypass-Gateway-Ultimate-Setup-Debunking.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Prerequisites Tauri Apps.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Prerequisites Tauri Apps.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Run an OpenWRT VM on Proxmox VE.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Run an OpenWRT VM on Proxmox VE.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/SSL with self signed certificate - Drone Support - Harness Community.md 04_Archive/Inbox-Clippings/2024/11/2023/03/SSL with self signed certificate - Drone Support - Harness Community.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Scope and Shadowing - Rust By Example.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Scope and Shadowing - Rust By Example.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/Software-Vendor-Handbook-SBOM-Interpretation-Fr.md 04_Archive/Inbox-Clippings/2024/11/2023/03/Software-Vendor-Handbook-SBOM-Interpretation-Fr.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/The ultimate guide to SBOMs GitLab.md 04_Archive/Inbox-Clippings/2024/11/2023/03/The ultimate guide to SBOMs GitLab.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/What-isSBOM-(SBOM)-Network-Security-AISEC.md 04_Archive/Inbox-Clippings/2024/11/2023/03/What-isSBOM-(SBOM)-Network-Security-AISEC.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/honven-VPN-Recommendations.md 04_Archive/Inbox-Clippings/2024/11/2023/03/honven-VPN-Recommendations.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/03/podmanrootless_tutorial.md at main · containerspodman.md 04_Archive/Inbox-Clippings/2024/11/2023/03/podmanrootless_tutorial.md at main · containerspodman.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/5 Ways to Empty or Delete a Large File Content in Linux.md 04_Archive/Inbox-Clippings/2024/11/2023/04/5 Ways to Empty or Delete a Large File Content in Linux.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/A half-hour to learn Rust.md 04_Archive/Inbox-Clippings/2024/11/2023/04/A half-hour to learn Rust.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Base64 Encode and Decode From Command Line.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Base64 Encode and Decode From Command Line.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Best 100+ Stable Diffusion Prompts The Most Beautiful AI Text-to-Image Prompts Metaverse Post.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Best 100+ Stable Diffusion Prompts The Most Beautiful AI Text-to-Image Prompts Metaverse Post.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/ChatGPT-Plus-How-to-10.md 04_Archive/Inbox-Clippings/2024/11/2023/04/ChatGPT-Plus-How-to-10.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Chatgpt4China-Application-Chatgpt3.5China-Free1.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Chatgpt4China-Application-Chatgpt3.5China-Free1.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Creating user, database and adding access on PostgreSQL by Arnav Gupta Coding Blocks Medium.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Creating user, database and adding access on PostgreSQL by Arnav Gupta Coding Blocks Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/DNS alias mode · acmesh-officialacme.sh Wiki.md 04_Archive/Inbox-Clippings/2024/11/2023/04/DNS alias mode · acmesh-officialacme.sh Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Error Handling in Rust - Andrew Gallant's Blog.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Error Handling in Rust - Andrew Gallant's Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Future Tools - Find The Exact AI Tool For Your Needs.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Future Tools - Find The Exact AI Tool For Your Needs.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/How To Acquire a Let's Encrypt Certificate Using DNS Validation with acme-dns-certbot on Ubuntu 18.04 DigitalOcean.md 04_Archive/Inbox-Clippings/2024/11/2023/04/How To Acquire a Let's Encrypt Certificate Using DNS Validation with acme-dns-certbot on Ubuntu 18.04 DigitalOcean.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/How to Install ROCm.md 04_Archive/Inbox-Clippings/2024/11/2023/04/How to Install ROCm.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/How to install PostgreSQL on Debian 11.md 04_Archive/Inbox-Clippings/2024/11/2023/04/How to install PostgreSQL on Debian 11.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/How to install and run bots for the Matrix network – tmplab.md 04_Archive/Inbox-Clippings/2024/11/2023/04/How to install and run bots for the Matrix network – tmplab.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/How to setup your OTP appliance with privacyIDEA.md 04_Archive/Inbox-Clippings/2024/11/2023/04/How to setup your OTP appliance with privacyIDEA.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Install and Run on AMD GPUs · AUTOMATIC1111stable-diffusion-webui Wiki.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Install and Run on AMD GPUs · AUTOMATIC1111stable-diffusion-webui Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Installation - Docs - Appwrite.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Installation - Docs - Appwrite.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Introduction Hasura Backend Plus.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Introduction Hasura Backend Plus.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Introduction - Learning Rust With Entirely Too Many Linked Lists.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Introduction - Learning Rust With Entirely Too Many Linked Lists.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Introduction - Rust and WebAssembly.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Introduction - Rust and WebAssembly.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Learn Rust in Y Minutes.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Learn Rust in Y Minutes.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Logto.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Logto.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/MistGPU.md 04_Archive/Inbox-Clippings/2024/11/2023/04/MistGPU.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Most Useful ChatGPT Prompts.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Most Useful ChatGPT Prompts.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/PowerDNS pdnsutil cheat sheet - Makarainen.md 04_Archive/Inbox-Clippings/2024/11/2023/04/PowerDNS pdnsutil cheat sheet - Makarainen.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Prerequisites.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Prerequisites.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Self hosted mail server – if then else.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Self hosted mail server – if then else.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Slurm Workload Manager - Overview.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Slurm Workload Manager - Overview.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Steamship Documentation.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Steamship Documentation.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/TorantulinoAuto-GPT An experimental open-source attempt to make GPT-4 fully autonomous..md 04_Archive/Inbox-Clippings/2024/11/2023/04/TorantulinoAuto-GPT An experimental open-source attempt to make GPT-4 fully autonomous..md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Usage of matrix-bot-sdk Matrix.org.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Usage of matrix-bot-sdk Matrix.org.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/Using Let's Encrypt for internal servers - Philipp's Tech Blog.md 04_Archive/Inbox-Clippings/2024/11/2023/04/Using Let's Encrypt for internal servers - Philipp's Tech Blog.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/What is Prompt Engineering prmpts.AI.md 04_Archive/Inbox-Clippings/2024/11/2023/04/What is Prompt Engineering prmpts.AI.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/[Pdns-users] TCP Connection Thread died because of STL error Reading data Connection reset by peer.md 04_Archive/Inbox-Clippings/2024/11/2023/04/[Pdns-users] TCP Connection Thread died because of STL error Reading data Connection reset by peer.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/fast.ai - GPT 4 and the Uncharted Territories of Language.md 04_Archive/Inbox-Clippings/2024/11/2023/04/fast.ai - GPT 4 and the Uncharted Territories of Language.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/matrixgptmatrix-chatgpt-bot Talk to ChatGPT via any Matrix client!.md 04_Archive/Inbox-Clippings/2024/11/2023/04/matrixgptmatrix-chatgpt-bot Talk to ChatGPT via any Matrix client!.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/prmpts.AI - Prompt sandbox.md 04_Archive/Inbox-Clippings/2024/11/2023/04/prmpts.AI - Prompt sandbox.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/04/yarmodelightful-matrix A curated list of delightful Matrix resources, implementations and clients. - delightful-matrix - Codeberg.org.md 04_Archive/Inbox-Clippings/2024/11/2023/04/yarmodelightful-matrix A curated list of delightful Matrix resources, implementations and clients. - delightful-matrix - Codeberg.org.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/05/Creating user accounts Dendrite.md 04_Archive/Inbox-Clippings/2024/11/2023/05/Creating user accounts Dendrite.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/05/How to Set Up a Mail Server with PostfixAdmin on Debian 11.md 04_Archive/Inbox-Clippings/2024/11/2023/05/How to Set Up a Mail Server with PostfixAdmin on Debian 11.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/05/N26-Tutorial-Mutou.md 04_Archive/Inbox-Clippings/2024/11/2023/05/N26-Tutorial-Mutou.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/05/PostfixAmavisNew - Community Help Wiki.md 04_Archive/Inbox-Clippings/2024/11/2023/05/PostfixAmavisNew - Community Help Wiki.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/05/Setting Up Amavis and ClamAV on Ubuntu Mail Server - LinuxBabe.md 04_Archive/Inbox-Clippings/2024/11/2023/05/Setting Up Amavis and ClamAV on Ubuntu Mail Server - LinuxBabe.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/06/50 AIChatGPT Prompts for Fitness Professionals - IDEA Health & Fitness Association.md 04_Archive/Inbox-Clippings/2024/11/2023/06/50 AIChatGPT Prompts for Fitness Professionals - IDEA Health & Fitness Association.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/06/8 Best ChatGPT Uses for Cyclists Next Level Cycling AI Assistant.md 04_Archive/Inbox-Clippings/2024/11/2023/06/8 Best ChatGPT Uses for Cyclists Next Level Cycling AI Assistant.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/06/API Design Practice. A practical guide to API QA and the… by TRGoodwill API Central May, 2023 Medium.md 04_Archive/Inbox-Clippings/2024/11/2023/06/API Design Practice. A practical guide to API QA and the… by TRGoodwill API Central May, 2023 Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/06/Building Your Own DevSecOps Knowledge Base with OpenAI, LangChain, and LlamaIndex by Wenqi Glantz May, 2023 Better Programming.md 04_Archive/Inbox-Clippings/2024/11/2023/06/Building Your Own DevSecOps Knowledge Base with OpenAI, LangChain, and LlamaIndex by Wenqi Glantz May, 2023 Better Programming.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/06/How we built the Tinder API Gateway by Tinder Tinder Tech Blog Medium.md 04_Archive/Inbox-Clippings/2024/11/2023/06/How we built the Tinder API Gateway by Tinder Tinder Tech Blog Medium.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/08/Unblockit - Proxies to access your favourite blocked sites.md 04_Archive/Inbox-Clippings/2024/11/2023/08/Unblockit - Proxies to access your favourite blocked sites.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/09/SQL.md 04_Archive/Inbox-Clippings/2024/11/2023/09/SQL.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/2023/10/UBNT-EdgeRouter-XImplementationPPPoE-IPv6-Minad.md 04_Archive/Inbox-Clippings/2024/11/2023/10/UBNT-EdgeRouter-XImplementationPPPoE-IPv6-Minad.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/DockerLearning-Notes_14-dockerApplication-Deplo.md 04_Archive/Inbox-Clippings/2024/11/DockerLearning-Notes_14-dockerApplication-Deplo.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/Percona XtraDB setup - Jite.eu.md 04_Archive/Inbox-Clippings/2024/11/Percona XtraDB setup - Jite.eu.md
|
|
||||||
R100 00_Inbox/Clippings/2024/11/Running Percona XtraDB Cluster in a Docker Container - Percona XtraDB Cluster.md 04_Archive/Inbox-Clippings/2024/11/Running Percona XtraDB Cluster in a Docker Container - Percona XtraDB Cluster.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/AlexxITSonoffLAN Control Sonoff Devices with eWeLink (original) firmware over LAN andor Cloud from Home Assistant.md 04_Archive/Inbox-Clippings/2024/12/AlexxITSonoffLAN Control Sonoff Devices with eWeLink (original) firmware over LAN andor Cloud from Home Assistant.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/CubicPillchina_southern_power_grid_stat-Home-As.md 04_Archive/Inbox-Clippings/2024/12/CubicPillchina_southern_power_grid_stat-Home-As.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/DB-Migration-fromMySQLtoPostgreSQL-HomeAssistan.md 04_Archive/Inbox-Clippings/2024/12/DB-Migration-fromMySQLtoPostgreSQL-HomeAssistan.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/Find All Storage Devices Attached to a Linux Machine Baeldung on Linux.md 04_Archive/Inbox-Clippings/2024/12/Find All Storage Devices Attached to a Linux Machine Baeldung on Linux.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/GitHub - DubhAdHome-AssistantConfig My Home Assistant configuration files.md 04_Archive/Inbox-Clippings/2024/12/GitHub - DubhAdHome-AssistantConfig My Home Assistant configuration files.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/How To Import QCOW2 Image Into Proxmox - OSTechNix.md 04_Archive/Inbox-Clippings/2024/12/How To Import QCOW2 Image Into Proxmox - OSTechNix.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/How to secure IOT devices with VLANs and firewall rules on an Ubiquiti EdgeRouter-X and a MikroTik switch running SwOS Lite · GeekBitZone.com - Passionate About Tech.md 04_Archive/Inbox-Clippings/2024/12/How to secure IOT devices with VLANs and firewall rules on an Ubiquiti EdgeRouter-X and a MikroTik switch running SwOS Lite · GeekBitZone.com - Passionate About Tech.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/Matrix.org - Understanding Synapse Hosting.md 04_Archive/Inbox-Clippings/2024/12/Matrix.org - Understanding Synapse Hosting.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/Mosquitto MQTT Installation Guide for Debian 11 Easy Setup - Shapehost.md 04_Archive/Inbox-Clippings/2024/12/Mosquitto MQTT Installation Guide for Debian 11 Easy Setup - Shapehost.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/OpenThread-LAN-Server-Access-Config-YP.Lam.md 04_Archive/Inbox-Clippings/2024/12/OpenThread-LAN-Server-Access-Config-YP.Lam.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/Proxy Configuration.md 04_Archive/Inbox-Clippings/2024/12/Proxy Configuration.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/Raspberry-Pi-OpenThread-Border-Router-Config-YP.md 04_Archive/Inbox-Clippings/2024/12/Raspberry-Pi-OpenThread-Border-Router-Config-YP.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/Vulnerability-Wikidocs-basedocswebappHarbor-Pub.md 04_Archive/Inbox-Clippings/2024/12/Vulnerability-Wikidocs-basedocswebappHarbor-Pub.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/openSUSE Leap 15.6 - Get openSUSE.md 04_Archive/Inbox-Clippings/2024/12/openSUSE Leap 15.6 - Get openSUSE.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/rospogrigiolocaltuya local handling for Tuya devices.md 04_Archive/Inbox-Clippings/2024/12/rospogrigiolocaltuya local handling for Tuya devices.md
|
|
||||||
R100 00_Inbox/Clippings/2024/12/tuyapidocsSETUP.md at master · codethewebtuyapi · GitHub.md 04_Archive/Inbox-Clippings/2024/12/tuyapidocsSETUP.md at master · codethewebtuyapi · GitHub.md
|
|
||||||
R100 03_Resources/PKM/Obsidian/Obsidian Theme/Things to look into.md 04_Archive/Legacy-Structure/PKM-merged-2026-02-25/Obsidian/Obsidian Theme/Things to look into.md
|
|
||||||
R100 03_Resources/PKM/Obsidian/Obsidian Theme/obsidian.css.md 04_Archive/Legacy-Structure/PKM-merged-2026-02-25/Obsidian/Obsidian Theme/obsidian.css.md
|
|
||||||
R100 03_Resources/PKM/PARA-Method/PARA Starter Kit/Methodology.md 04_Archive/Legacy-Structure/PKM-merged-2026-02-25/PARA-Method/PARA Starter Kit/Methodology.md
|
|
||||||
R100 03_Resources/PKM/PARA-Method/PARA Starter Kit/Outline.md 04_Archive/Legacy-Structure/PKM-merged-2026-02-25/PARA-Method/PARA Starter Kit/Outline.md
|
|
||||||
R100 03_Resources/PKM/PARA-Method/PARA Starter Kit/Workflows.md 04_Archive/Legacy-Structure/PKM-merged-2026-02-25/PARA-Method/PARA Starter Kit/Workflows.md
|
|
||||||
M 06_Metadata/AGENT_MEMORY_IMPLEMENTATION_TASKS_2026-02-25.md
|
|
||||||
R100 CHANGELOG.md 06_Metadata/CHANGELOG.md
|
|
||||||
R100 CLAUDE-BOOTSTRAP.md 06_Metadata/CLAUDE-BOOTSTRAP.md
|
|
||||||
A 06_Metadata/CLAUDE.md
|
|
||||||
R100 CONTRIBUTING.md 06_Metadata/CONTRIBUTING.md
|
|
||||||
A 06_Metadata/DATAVIEW_VALIDATION_2026-02-25.md
|
|
||||||
A 06_Metadata/FIX_TASK_BREAKDOWN_2026-02-25.md
|
|
||||||
A 06_Metadata/IMPROVEMENT_PLAN_2026-02-25.md
|
|
||||||
R100 QUICK_REFERENCE.md 06_Metadata/QUICK_REFERENCE.md
|
|
||||||
R100 REFACTOR_SUMMARY.md 06_Metadata/REFACTOR_SUMMARY.md
|
|
||||||
A 06_Metadata/REVIEW_REPORT_2026-02-25.md
|
|
||||||
A 06_Metadata/SECURITY_ROTATION_LOG_2026-02.md
|
|
||||||
R100 ULTRA_SIMPLE_WORKFLOW.md 06_Metadata/ULTRA_SIMPLE_WORKFLOW.md
|
|
||||||
R100 WEEKLY_REVIEW.md 06_Metadata/WEEKLY_REVIEW.md
|
|
||||||
M 06_Metadata/WORKFLOWS.md
|
|
||||||
R100 WORKFLOW_SIMPLIFICATION_ANALYSIS.md 06_Metadata/WORKFLOW_SIMPLIFICATION_ANALYSIS.md
|
|
||||||
R100 WORKFLOW_TRANSITION_GUIDE.md 06_Metadata/WORKFLOW_TRANSITION_GUIDE.md
|
|
||||||
M README.md
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
A 00_Inbox/Untitled.md
|
|
||||||
M 06_Metadata/AGENT_MEMORY_IMPLEMENTATION_TASKS_2026-02-25.md
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
M 01_Projects/Work/Government-Projects/Panyu-District/Panyu-Document/Issue-Handling.md
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
M 03_Resources/Development/AI-ML/OpenRouter-config.md
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
A airport-wiki/raw/articles/机场数据中心建设方案(综合性完整方案).md
|
|
||||||
Vendored
-11
@@ -1,11 +0,0 @@
|
|||||||
<claude-mem-context>
|
|
||||||
# Recent Activity
|
|
||||||
|
|
||||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
|
||||||
|
|
||||||
### Feb 25, 2026
|
|
||||||
|
|
||||||
| ID | Time | T | Title | Read |
|
|
||||||
|----|------|---|-------|------|
|
|
||||||
| #1216 | 10:29 AM | 🔵 | Dataview queries contain broken paths from previous folder structure reorganization | ~503 |
|
|
||||||
</claude-mem-context>
|
|
||||||
Vendored
-3
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"backlinkInDocument": true
|
|
||||||
}
|
|
||||||
Vendored
-12
@@ -1,12 +0,0 @@
|
|||||||
[
|
|
||||||
"obsidian-git",
|
|
||||||
"table-editor-obsidian",
|
|
||||||
"obsidian-advanced-uri",
|
|
||||||
"better-word-count",
|
|
||||||
"highlightr-plugin",
|
|
||||||
"obsidian-icon-folder",
|
|
||||||
"omnisearch",
|
|
||||||
"templater-obsidian",
|
|
||||||
"dataview",
|
|
||||||
"obsidian-local-rest-api"
|
|
||||||
]
|
|
||||||
Vendored
-33
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
"file-explorer": true,
|
|
||||||
"global-search": false,
|
|
||||||
"switcher": true,
|
|
||||||
"graph": true,
|
|
||||||
"backlink": true,
|
|
||||||
"canvas": true,
|
|
||||||
"outgoing-link": true,
|
|
||||||
"tag-pane": true,
|
|
||||||
"footnotes": false,
|
|
||||||
"properties": true,
|
|
||||||
"page-preview": true,
|
|
||||||
"daily-notes": true,
|
|
||||||
"templates": true,
|
|
||||||
"note-composer": true,
|
|
||||||
"command-palette": true,
|
|
||||||
"slash-command": true,
|
|
||||||
"editor-status": true,
|
|
||||||
"bookmarks": true,
|
|
||||||
"markdown-importer": true,
|
|
||||||
"zk-prefixer": true,
|
|
||||||
"random-note": false,
|
|
||||||
"outline": true,
|
|
||||||
"word-count": true,
|
|
||||||
"slides": false,
|
|
||||||
"audio-recorder": false,
|
|
||||||
"workspaces": false,
|
|
||||||
"file-recovery": true,
|
|
||||||
"publish": false,
|
|
||||||
"sync": false,
|
|
||||||
"bases": true,
|
|
||||||
"webviewer": true
|
|
||||||
}
|
|
||||||
Vendored
-4
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"folder": "00_Inbox",
|
|
||||||
"template": "06_Metadata/Templates/Daily Note Template"
|
|
||||||
}
|
|
||||||
Vendored
-22
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"collapse-filter": true,
|
|
||||||
"search": "",
|
|
||||||
"showTags": false,
|
|
||||||
"showAttachments": false,
|
|
||||||
"hideUnresolved": false,
|
|
||||||
"showOrphans": true,
|
|
||||||
"collapse-color-groups": true,
|
|
||||||
"colorGroups": [],
|
|
||||||
"collapse-display": true,
|
|
||||||
"showArrow": false,
|
|
||||||
"textFadeMultiplier": 0,
|
|
||||||
"nodeSizeMultiplier": 1,
|
|
||||||
"lineSizeMultiplier": 1,
|
|
||||||
"collapse-forces": true,
|
|
||||||
"centerStrength": 0.518713248970312,
|
|
||||||
"repelStrength": 10,
|
|
||||||
"linkStrength": 1,
|
|
||||||
"linkDistance": 250,
|
|
||||||
"scale": 1,
|
|
||||||
"close": true
|
|
||||||
}
|
|
||||||
+2193
-1156
File diff suppressed because one or more lines are too long
-11
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "advanced-canvas",
|
|
||||||
"name": "Advanced Canvas",
|
|
||||||
"version": "6.0.0",
|
|
||||||
"minAppVersion": "1.1.0",
|
|
||||||
"description": "Supercharge your canvas experience! Create presentations, flowcharts and more!",
|
|
||||||
"author": "Developer-Mike",
|
|
||||||
"authorUrl": "https://github.com/Developer-Mike",
|
|
||||||
"fundingUrl": "https://ko-fi.com/X8X27IA08",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
+127
-97
@@ -1,97 +1,11 @@
|
|||||||
/* src/styles.scss */
|
/* src/styles.scss */
|
||||||
.properties-field > .setting-item-info {
|
|
||||||
flex: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding: var(--size-4-1) var(--size-4-2);
|
|
||||||
border: var(--input-border-width) solid var(--background-modifier-border);
|
|
||||||
border-radius: var(--input-radius) 0 0 var(--input-radius);
|
|
||||||
}
|
|
||||||
.properties-field > .setting-item-control > input {
|
|
||||||
width: 100%;
|
|
||||||
border-radius: 0 var(--input-radius) var(--input-radius) 0;
|
|
||||||
}
|
|
||||||
.ac-settings-heading:not(:first-child) {
|
|
||||||
margin-top: var(--size-4-10) !important;
|
|
||||||
}
|
|
||||||
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) {
|
|
||||||
border-bottom-color: var(--background-modifier-border-hover);
|
|
||||||
}
|
|
||||||
.ac-settings-heading .setting-item-description {
|
|
||||||
margin-inline-end: 20px;
|
|
||||||
}
|
|
||||||
.settings-header-children {
|
|
||||||
transform-origin: top center;
|
|
||||||
transform: scaleY(1);
|
|
||||||
transition: transform 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
.settings-header-children details {
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: initial;
|
|
||||||
}
|
|
||||||
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) + .settings-header-children {
|
|
||||||
opacity: 0.5;
|
|
||||||
pointer-events: none;
|
|
||||||
height: 0;
|
|
||||||
transform: scaleY(0);
|
|
||||||
}
|
|
||||||
details.setting-item[open] > summary {
|
|
||||||
margin-bottom: 0.75em;
|
|
||||||
}
|
|
||||||
details.setting-item > *:not(summary) {
|
|
||||||
padding-left: 1em;
|
|
||||||
border-left: 1px solid var(--color-accent);
|
|
||||||
}
|
|
||||||
.kofi-banner {
|
|
||||||
position: relative;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
padding: var(--size-4-3);
|
|
||||||
background-color: var(--background-secondary);
|
|
||||||
border: 1px solid var(--divider-color);
|
|
||||||
border-radius: var(--radius-s);
|
|
||||||
}
|
|
||||||
.kofi-banner h1 {
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
font-size: var(--font-ui-large);
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
.kofi-banner .progress-container {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
align-items: center;
|
|
||||||
justify-items: center;
|
|
||||||
}
|
|
||||||
.kofi-banner .progress-container progress {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
.kofi-banner .progress-container progress::-webkit-progress-bar {
|
|
||||||
background-color: var(--background-modifier-border);
|
|
||||||
border-radius: var(--input-radius);
|
|
||||||
}
|
|
||||||
.kofi-banner .progress-container progress::-webkit-progress-value {
|
|
||||||
background-color: var(--color-accent);
|
|
||||||
border-radius: var(--input-radius);
|
|
||||||
}
|
|
||||||
.kofi-banner .progress-container .hourly-rate {
|
|
||||||
margin-left: 10px;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
.kofi-banner .ac-kofi-button {
|
|
||||||
align-self: flex-end;
|
|
||||||
width: min-content;
|
|
||||||
height: min-content;
|
|
||||||
line-height: 0;
|
|
||||||
}
|
|
||||||
.kofi-banner .ac-kofi-button img {
|
|
||||||
min-width: 100px;
|
|
||||||
width: 25%;
|
|
||||||
max-width: 200px;
|
|
||||||
}
|
|
||||||
.canvas-wrapper > .document-search-container {
|
.canvas-wrapper > .document-search-container {
|
||||||
transform: translateZ(0);
|
transform: translateZ(0);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
.document-search-count.is-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.canvas-wrapper:not(.mod-readonly) .show-while-readonly {
|
.canvas-wrapper:not(.mod-readonly) .show-while-readonly {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -106,7 +20,7 @@ details.setting-item > *:not(summary) {
|
|||||||
.canvas-node[data-shape=document],
|
.canvas-node[data-shape=document],
|
||||||
.canvas-node[data-shape=predefined-process],
|
.canvas-node[data-shape=predefined-process],
|
||||||
.canvas-node[data-shape=diamond] {
|
.canvas-node[data-shape=diamond] {
|
||||||
--border-color: rgb(var(--canvas-color));
|
--border-color: var(--canvas-color);
|
||||||
--border-width: 3px;
|
--border-width: 3px;
|
||||||
--box-shadow: none;
|
--box-shadow: none;
|
||||||
}
|
}
|
||||||
@@ -129,7 +43,7 @@ details.setting-item > *:not(summary) {
|
|||||||
.is-themed.canvas-node[data-shape=document],
|
.is-themed.canvas-node[data-shape=document],
|
||||||
.is-themed.canvas-node[data-shape=predefined-process],
|
.is-themed.canvas-node[data-shape=predefined-process],
|
||||||
.is-themed.canvas-node[data-shape=diamond] {
|
.is-themed.canvas-node[data-shape=diamond] {
|
||||||
--border-color: rgba(var(--canvas-color), 0.7);
|
--border-color: rgb(from var(--canvas-color) r g b / 0.7);
|
||||||
}
|
}
|
||||||
.reactive-node.is-themed.is-focused,
|
.reactive-node.is-themed.is-focused,
|
||||||
.is-themed.is-focused.canvas-node[data-shape=database],
|
.is-themed.is-focused.canvas-node[data-shape=database],
|
||||||
@@ -141,7 +55,7 @@ details.setting-item > *:not(summary) {
|
|||||||
.is-themed.is-selected.canvas-node[data-shape=document],
|
.is-themed.is-selected.canvas-node[data-shape=document],
|
||||||
.is-themed.is-selected.canvas-node[data-shape=predefined-process],
|
.is-themed.is-selected.canvas-node[data-shape=predefined-process],
|
||||||
.is-themed.is-selected.canvas-node[data-shape=diamond] {
|
.is-themed.is-selected.canvas-node[data-shape=diamond] {
|
||||||
--border-color: rgb(var(--canvas-color));
|
--border-color: var(--canvas-color);
|
||||||
--box-shadow: var(--shadow-border-themed);
|
--box-shadow: var(--shadow-border-themed);
|
||||||
}
|
}
|
||||||
.canvas-node[data-text-align=center] .markdown-preview-view {
|
.canvas-node[data-text-align=center] .markdown-preview-view {
|
||||||
@@ -210,7 +124,7 @@ details.setting-item > *:not(summary) {
|
|||||||
transform: skewX(-20deg);
|
transform: skewX(-20deg);
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
}
|
}
|
||||||
.canvas-node[data-shape=parallelogram] .canvas-node-container .canvas-node-content .markdown-embed-content {
|
.canvas-node[data-shape=parallelogram] .canvas-node-container .canvas-node-content > .markdown-embed-content {
|
||||||
transform: skewX(20deg);
|
transform: skewX(20deg);
|
||||||
}
|
}
|
||||||
.canvas-node[data-shape=circle] .canvas-node-container {
|
.canvas-node[data-shape=circle] .canvas-node-container {
|
||||||
@@ -293,7 +207,7 @@ details.setting-item > *:not(summary) {
|
|||||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe)) .canvas-node-container,
|
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe)) .canvas-node-container,
|
||||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::after,
|
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::after,
|
||||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::before {
|
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::before {
|
||||||
box-shadow: inset 0 0 0 1000px rgba(var(--canvas-color), 0.07) !important;
|
box-shadow: inset 0 0 0 1000px rgb(from var(--canvas-color) r g b/0.07) !important;
|
||||||
}
|
}
|
||||||
.canvas-node[data-shape=database] .canvas-node-content:not(:has(.embed-iframe)) {
|
.canvas-node[data-shape=database] .canvas-node-content:not(:has(.embed-iframe)) {
|
||||||
transform: translateY(20px);
|
transform: translateY(20px);
|
||||||
@@ -354,14 +268,29 @@ details.setting-item > *:not(summary) {
|
|||||||
.canvas-edges [data-arrow=diamond-outline] polygon,
|
.canvas-edges [data-arrow=diamond-outline] polygon,
|
||||||
.canvas-edges [data-arrow=circle-outline] polygon {
|
.canvas-edges [data-arrow=circle-outline] polygon {
|
||||||
fill: var(--canvas-background);
|
fill: var(--canvas-background);
|
||||||
stroke: rgb(var(--canvas-color));
|
stroke: var(--canvas-color);
|
||||||
stroke-width: calc(3px * var(--zoom-multiplier));
|
stroke-width: calc(3px * var(--zoom-multiplier));
|
||||||
}
|
}
|
||||||
.canvas-edges [data-arrow=thin-triangle] polygon {
|
.canvas-edges [data-arrow=thin-triangle] polygon {
|
||||||
fill: transparent;
|
fill: transparent;
|
||||||
stroke: rgb(var(--canvas-color));
|
stroke: var(--canvas-color);
|
||||||
stroke-width: calc(4px * var(--zoom-multiplier));
|
stroke-width: calc(4px * var(--zoom-multiplier));
|
||||||
}
|
}
|
||||||
|
.icon-modal-suggestion {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--size-4-4);
|
||||||
|
}
|
||||||
|
.icon-modal-suggestion .icon-modal-suggestion-icon {
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
.icon-modal-suggestion .icon-modal-suggestion-id {
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
.ac-pinned-pdf-page-embed {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
.canvas.is-exporting {
|
.canvas.is-exporting {
|
||||||
--zoom-multiplier: 1;
|
--zoom-multiplier: 1;
|
||||||
}
|
}
|
||||||
@@ -395,6 +324,76 @@ details.setting-item > *:not(summary) {
|
|||||||
.canvas-wrapper.mod-readonly[data-hide-background-grid-when-in-readonly=true] .canvas-background {
|
.canvas-wrapper.mod-readonly[data-hide-background-grid-when-in-readonly=true] .canvas-background {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas {
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-p > p:has(> span.vertical-space) {
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-p > p {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas :is(.el-ul, .el-ol) + .el-p > p:has(> span.vertical-space:first-child) {
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas ol::before {
|
||||||
|
margin-left: -2px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas ol {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas ul > li > ol > li {
|
||||||
|
margin-left: 36px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas ul::before {
|
||||||
|
margin-left: -2px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas ul {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-ul > ul > li {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas ol > li > ul > li {
|
||||||
|
margin-left: 36px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas ul > li > .list-bullet {
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .has-list-bullet .list-bullet::after {
|
||||||
|
margin-left: -4px;
|
||||||
|
margin-top: -3px;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-h1 > h1,
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-h2 > h2,
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-h3 > h3,
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-h4 > h4,
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-h5 > h5,
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-h6 > h6 {
|
||||||
|
margin-top: 0px !important;
|
||||||
|
margin-bottom: 0px !important;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .markdown-preview-section > .markdown-preview-pusher + :is(.el-h2) > :is(h2),
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .markdown-preview-section > .markdown-preview-pusher + :is(.el-h3) > :is(h3) {
|
||||||
|
margin-top: 0px !important;
|
||||||
|
}
|
||||||
|
.canvas-wrapper[data-reading-mode-fix-enabled=true] .canvas .el-table {
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
.canvas-node-iframe-body[data-reading-mode-fix-enabled=true] {
|
||||||
|
}
|
||||||
|
.canvas-node-iframe-body[data-reading-mode-fix-enabled=true] .markdown-source-view .cm-contentContainer > .cm-content.cm-lineWrapping > .cm-line {
|
||||||
|
margin-right: -2px !important;
|
||||||
|
}
|
||||||
|
.canvas-node-iframe-body[data-reading-mode-fix-enabled=true] .mod-inside-iframe .HyperMD-header {
|
||||||
|
padding-top: 0px !important;
|
||||||
|
}
|
||||||
|
.canvas-node-iframe-body[data-reading-mode-fix-enabled=true] .cm-formatting-list.cm-formatting-list-ul {
|
||||||
|
margin-right: 7px;
|
||||||
|
}
|
||||||
.collapse-button {
|
.collapse-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -404,7 +403,7 @@ details.setting-item > *:not(summary) {
|
|||||||
transform: translate(0, -100%) scale(var(--zoom-multiplier));
|
transform: translate(0, -100%) scale(var(--zoom-multiplier));
|
||||||
border-radius: var(--radius-s);
|
border-radius: var(--radius-s);
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
background-color: rgba(var(--canvas-color), 0.1);
|
background-color: rgb(from var(--canvas-color) r g b/0.1);
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
pointer-events: initial;
|
pointer-events: initial;
|
||||||
@@ -506,3 +505,34 @@ details.setting-item > *:not(summary) {
|
|||||||
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer .canvas-node-connection-point {
|
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer .canvas-node-connection-point {
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
}
|
}
|
||||||
|
.ac-card-embed {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border: 1px solid var(--canvas-color);
|
||||||
|
border-radius: var(--radius-m);
|
||||||
|
box-shadow: var(--shadow-stationary);
|
||||||
|
}
|
||||||
|
.ac-card-embed.is-themed {
|
||||||
|
background-color: rgb(from var(--canvas-color) r g b/0.07);
|
||||||
|
border-color: rgb(from var(--canvas-color) r g b/0.7);
|
||||||
|
box-shadow: inset 0 0 0 1px rgb(from var(--canvas-color) r g b/0.7), var(--shadow-stationary);
|
||||||
|
}
|
||||||
|
.ac-card-embed > .markdown-content {
|
||||||
|
position: relative;
|
||||||
|
overflow-y: auto;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 var(--size-4-4);
|
||||||
|
font-size: var(--font-text-size);
|
||||||
|
font-family: var(--font-text);
|
||||||
|
line-height: var(--line-height-normal);
|
||||||
|
color: var(--text-normal);
|
||||||
|
user-select: text;
|
||||||
|
-webkit-user-select: text;
|
||||||
|
scrollbar-gutter: stable;
|
||||||
|
}
|
||||||
|
|||||||
-35
@@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
"statusBar": [
|
|
||||||
{
|
|
||||||
"prefix": "",
|
|
||||||
"suffix": " words",
|
|
||||||
"metric": {
|
|
||||||
"type": 0,
|
|
||||||
"counter": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"prefix": " ",
|
|
||||||
"suffix": " characters",
|
|
||||||
"metric": {
|
|
||||||
"type": 0,
|
|
||||||
"counter": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"altBar": [
|
|
||||||
{
|
|
||||||
"prefix": "",
|
|
||||||
"suffix": " files",
|
|
||||||
"metric": {
|
|
||||||
"type": 2,
|
|
||||||
"counter": 6
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"countComments": true,
|
|
||||||
"collectStats": true,
|
|
||||||
"displaySectionCounts": true,
|
|
||||||
"pageWords": 300,
|
|
||||||
"statsPath": ".obsidian/vault-stats.json"
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "better-word-count",
|
|
||||||
"name": "Better Word Count",
|
|
||||||
"version": "0.10.1",
|
|
||||||
"description": "Counts the words of selected text in the editor.",
|
|
||||||
"author": "Luke Leppan",
|
|
||||||
"authorUrl": "https://lukeleppan.com",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
Vendored
-10
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"shouldConfirmBeforeCreate": true,
|
|
||||||
"weekStart": "locale",
|
|
||||||
"wordsPerDot": 250,
|
|
||||||
"showWeeklyNote": false,
|
|
||||||
"weeklyNoteFormat": "",
|
|
||||||
"weeklyNoteTemplate": "",
|
|
||||||
"weeklyNoteFolder": "",
|
|
||||||
"localeOverride": "system-default"
|
|
||||||
}
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "calendar",
|
|
||||||
"name": "Calendar",
|
|
||||||
"description": "Calendar view of your daily notes",
|
|
||||||
"version": "1.5.10",
|
|
||||||
"author": "Liam Cain",
|
|
||||||
"authorUrl": "https://github.com/liamcain/",
|
|
||||||
"isDesktopOnly": false,
|
|
||||||
"minAppVersion": "0.9.11"
|
|
||||||
}
|
|
||||||
Vendored
-7
@@ -1,7 +0,0 @@
|
|||||||
<claude-mem-context>
|
|
||||||
# Recent Activity
|
|
||||||
|
|
||||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
|
||||||
|
|
||||||
*No recent activity*
|
|
||||||
</claude-mem-context>
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "claudian",
|
|
||||||
"name": "Claudian",
|
|
||||||
"version": "1.3.55",
|
|
||||||
"minAppVersion": "1.4.5",
|
|
||||||
"description": "Embeds Claude Code as an AI collaborator in your vault. Your vault becomes Claude's working directory, giving it full agentic capabilities: file read/write, search, bash commands, and multi-step workflows.",
|
|
||||||
"author": "Yishen Tu",
|
|
||||||
"authorUrl": "https://github.com/YishenTu",
|
|
||||||
"isDesktopOnly": true
|
|
||||||
}
|
|
||||||
-7
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"useJieba": true,
|
|
||||||
"hmm": true,
|
|
||||||
"dict": "",
|
|
||||||
"moveByChineseWords": true,
|
|
||||||
"moveTillChinesePunctuation": true
|
|
||||||
}
|
|
||||||
-10
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "cm-chs-patch",
|
|
||||||
"name": "Simplified Chinese Word Splitting",
|
|
||||||
"version": "1.13.4",
|
|
||||||
"minAppVersion": "1.12.3",
|
|
||||||
"description": "Adds Simplified Chinese word splitting support for the editor and Vim mode.",
|
|
||||||
"author": "AidenLx",
|
|
||||||
"authorUrl": "https://github.com/AidenLx",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "code-styler",
|
|
||||||
"name": "Code Styler",
|
|
||||||
"version": "1.1.7",
|
|
||||||
"minAppVersion": "0.15.0",
|
|
||||||
"description": "Style and customize codeblocks and inline code in both editing mode and reading mode.",
|
|
||||||
"author": "Mayuran Visakan",
|
|
||||||
"authorUrl": "https://github.com/mayurankv",
|
|
||||||
"fundingUrl": "https://www.buymeacoffee.com/mayurankv2",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
Vendored
-421
@@ -1,421 +0,0 @@
|
|||||||
{
|
|
||||||
"userId": "87c535dd-63a3-4751-89bd-f32cf07fddaa",
|
|
||||||
"isPlusUser": false,
|
|
||||||
"plusLicenseKey": "",
|
|
||||||
"openAIApiKey": "",
|
|
||||||
"openAIOrgId": "",
|
|
||||||
"huggingfaceApiKey": "",
|
|
||||||
"cohereApiKey": "",
|
|
||||||
"anthropicApiKey": "",
|
|
||||||
"azureOpenAIApiKey": "",
|
|
||||||
"azureOpenAIApiInstanceName": "",
|
|
||||||
"azureOpenAIApiDeploymentName": "",
|
|
||||||
"azureOpenAIApiVersion": "",
|
|
||||||
"azureOpenAIApiEmbeddingDeploymentName": "",
|
|
||||||
"googleApiKey": "",
|
|
||||||
"openRouterAiApiKey": "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",
|
|
||||||
"xaiApiKey": "",
|
|
||||||
"mistralApiKey": "",
|
|
||||||
"deepseekApiKey": "sk-44363e94da3847169ac6d7e1aba13fb1",
|
|
||||||
"amazonBedrockApiKey": "",
|
|
||||||
"amazonBedrockRegion": "",
|
|
||||||
"siliconflowApiKey": "",
|
|
||||||
"defaultChainType": "llm_chain",
|
|
||||||
"defaultModelKey": "google/gemini-2.5-flash|openrouterai",
|
|
||||||
"embeddingModelKey": "text-embedding-3-small|openai",
|
|
||||||
"temperature": 0.1,
|
|
||||||
"maxTokens": 6000,
|
|
||||||
"contextTurns": 15,
|
|
||||||
"userSystemPrompt": "",
|
|
||||||
"openAIProxyBaseUrl": "",
|
|
||||||
"openAIEmbeddingProxyBaseUrl": "",
|
|
||||||
"stream": true,
|
|
||||||
"defaultSaveFolder": "copilot/copilot-conversations",
|
|
||||||
"defaultConversationTag": "copilot-conversation",
|
|
||||||
"autosaveChat": true,
|
|
||||||
"generateAIChatTitleOnSave": true,
|
|
||||||
"includeActiveNoteAsContext": true,
|
|
||||||
"defaultOpenArea": "view",
|
|
||||||
"defaultSendShortcut": "enter",
|
|
||||||
"customPromptsFolder": "copilot/copilot-custom-prompts",
|
|
||||||
"indexVaultToVectorStore": "ON MODE SWITCH",
|
|
||||||
"qaExclusions": "copilot",
|
|
||||||
"qaInclusions": "",
|
|
||||||
"chatNoteContextPath": "",
|
|
||||||
"chatNoteContextTags": [],
|
|
||||||
"enableIndexSync": true,
|
|
||||||
"debug": false,
|
|
||||||
"enableEncryption": false,
|
|
||||||
"maxSourceChunks": 15,
|
|
||||||
"groqApiKey": "",
|
|
||||||
"activeModels": [
|
|
||||||
{
|
|
||||||
"name": "copilot-plus-flash",
|
|
||||||
"provider": "copilot-plus",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"plusExclusive": true,
|
|
||||||
"projectEnabled": false,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "google/gemini-2.5-flash-lite",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "google/gemini-2.5-flash",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "google/gemini-2.5-pro",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gpt-5",
|
|
||||||
"provider": "openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gpt-5-mini",
|
|
||||||
"provider": "openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gpt-4.1",
|
|
||||||
"provider": "openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gpt-4.1-mini",
|
|
||||||
"provider": "openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openai/gpt-4.1",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": false,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openai/gpt-4.1-mini",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": false,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "grok-4-fast",
|
|
||||||
"provider": "xai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": false,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "x-ai/grok-4-fast",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"core": false,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "claude-sonnet-4-20250514",
|
|
||||||
"provider": "anthropic",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision",
|
|
||||||
"reasoning"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gemini-2.5-flash",
|
|
||||||
"provider": "google",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gemini-2.5-flash-lite",
|
|
||||||
"provider": "google",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gemini-2.5-pro",
|
|
||||||
"provider": "google",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"projectEnabled": true,
|
|
||||||
"capabilities": [
|
|
||||||
"vision"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "azure-openai",
|
|
||||||
"provider": "azure openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deepseek-chat",
|
|
||||||
"provider": "deepseek",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deepseek-reasoner",
|
|
||||||
"provider": "deepseek",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"capabilities": [
|
|
||||||
"reasoning"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deepseek-ai/DeepSeek-V3",
|
|
||||||
"provider": "siliconflow",
|
|
||||||
"enabled": false,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"baseUrl": "https://api.siliconflow.com/v1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deepseek-ai/DeepSeek-R1",
|
|
||||||
"provider": "siliconflow",
|
|
||||||
"enabled": false,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"baseUrl": "https://api.siliconflow.com/v1",
|
|
||||||
"capabilities": [
|
|
||||||
"reasoning"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "moonshotai/kimi-k2-thinking",
|
|
||||||
"provider": "3rd party (openai-format)",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": false,
|
|
||||||
"baseUrl": "https://zenmux.ai/api/v1",
|
|
||||||
"apiKey": "sk-ai-v1-82f1a2df15721ca5d5afc633842b91719fea95c6c449cbb78db0dd03f7ed1aa2",
|
|
||||||
"isEmbeddingModel": false,
|
|
||||||
"capabilities": [
|
|
||||||
"reasoning"
|
|
||||||
],
|
|
||||||
"stream": true,
|
|
||||||
"displayName": "kimi"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deepseek/deepseek-v3.2",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openai/gpt-5.1-codex",
|
|
||||||
"provider": "openrouterai",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"activeEmbeddingModels": [
|
|
||||||
{
|
|
||||||
"name": "copilot-plus-small",
|
|
||||||
"provider": "copilot-plus",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true,
|
|
||||||
"core": true,
|
|
||||||
"plusExclusive": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "copilot-plus-large",
|
|
||||||
"provider": "copilot-plus-jina",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true,
|
|
||||||
"core": true,
|
|
||||||
"plusExclusive": true,
|
|
||||||
"believerExclusive": true,
|
|
||||||
"dimensions": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "copilot-plus-multilingual",
|
|
||||||
"provider": "copilot-plus-jina",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true,
|
|
||||||
"core": true,
|
|
||||||
"plusExclusive": true,
|
|
||||||
"dimensions": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "text-embedding-3-small",
|
|
||||||
"provider": "openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true,
|
|
||||||
"core": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gemini-embedding-001",
|
|
||||||
"provider": "google",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true,
|
|
||||||
"core": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Qwen/Qwen3-Embedding-0.6B",
|
|
||||||
"provider": "siliconflow",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true,
|
|
||||||
"core": true,
|
|
||||||
"baseUrl": "https://api.siliconflow.com/v1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "text-embedding-3-large",
|
|
||||||
"provider": "openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "embed-multilingual-light-v3.0",
|
|
||||||
"provider": "cohereai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "text-embedding-004",
|
|
||||||
"provider": "google",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "azure-openai",
|
|
||||||
"provider": "azure openai",
|
|
||||||
"enabled": true,
|
|
||||||
"isBuiltIn": true,
|
|
||||||
"isEmbeddingModel": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"embeddingRequestsPerMin": 60,
|
|
||||||
"embeddingBatchSize": 16,
|
|
||||||
"disableIndexOnMobile": true,
|
|
||||||
"showSuggestedPrompts": true,
|
|
||||||
"showRelevantNotes": true,
|
|
||||||
"numPartitions": 1,
|
|
||||||
"lexicalSearchRamLimit": 100,
|
|
||||||
"promptUsageTimestamps": {},
|
|
||||||
"promptSortStrategy": "timestamp",
|
|
||||||
"defaultConversationNoteName": "{$topic}@{$date}_{$time}",
|
|
||||||
"inlineEditCommands": [],
|
|
||||||
"projectList": [],
|
|
||||||
"enableAutocomplete": false,
|
|
||||||
"autocompleteAcceptKey": "Tab",
|
|
||||||
"allowAdditionalContext": true,
|
|
||||||
"enableWordCompletion": false,
|
|
||||||
"lastDismissedVersion": "3.1.5",
|
|
||||||
"passMarkdownImages": true,
|
|
||||||
"enableAutonomousAgent": true,
|
|
||||||
"enableCustomPromptTemplating": true,
|
|
||||||
"enableSemanticSearchV3": false,
|
|
||||||
"enableLexicalBoosts": true,
|
|
||||||
"suggestedDefaultCommands": true,
|
|
||||||
"autonomousAgentMaxIterations": 4,
|
|
||||||
"autonomousAgentEnabledToolIds": [
|
|
||||||
"localSearch",
|
|
||||||
"readNote",
|
|
||||||
"webSearch",
|
|
||||||
"pomodoro",
|
|
||||||
"youtubeTranscription",
|
|
||||||
"writeToFile",
|
|
||||||
"replaceInFile",
|
|
||||||
"updateMemory"
|
|
||||||
],
|
|
||||||
"reasoningEffort": "low",
|
|
||||||
"verbosity": "medium",
|
|
||||||
"memoryFolderName": "copilot/memory",
|
|
||||||
"enableRecentConversations": true,
|
|
||||||
"maxRecentConversations": 30,
|
|
||||||
"enableSavedMemory": true,
|
|
||||||
"quickCommandIncludeNoteContext": true,
|
|
||||||
"autoIncludeTextSelection": false,
|
|
||||||
"enableInlineCitations": true,
|
|
||||||
"autoAddActiveContentToContext": true,
|
|
||||||
"autoCompactThreshold": 128000,
|
|
||||||
"autoAddSelectionToContext": false,
|
|
||||||
"autoAcceptEdits": false,
|
|
||||||
"chatHistorySortStrategy": "recent",
|
|
||||||
"projectListSortStrategy": "recent",
|
|
||||||
"userSystemPromptsFolder": "copilot/system-prompts"
|
|
||||||
}
|
|
||||||
Vendored
+4243
-2777
File diff suppressed because one or more lines are too long
-13
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "copilot",
|
|
||||||
"name": "Copilot",
|
|
||||||
"version": "3.2.2",
|
|
||||||
"minAppVersion": "0.15.0",
|
|
||||||
"description": "Your AI Copilot: Chat with Your Second Brain, Learn Faster, Work Smarter.",
|
|
||||||
"author": "Logan Yang",
|
|
||||||
"authorUrl": "https://twitter.com/logancyang",
|
|
||||||
"fundingUrl": {
|
|
||||||
"Buy Me a Coffee": "https://www.buymeacoffee.com/logancyang",
|
|
||||||
"GitHub Sponsor": "https://github.com/sponsors/logancyang"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
-27
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"renderNullAs": "\\-",
|
|
||||||
"taskCompletionTracking": true,
|
|
||||||
"taskCompletionUseEmojiShorthand": true,
|
|
||||||
"taskCompletionText": "completion",
|
|
||||||
"taskCompletionDateFormat": "yyyy-MM-dd",
|
|
||||||
"recursiveSubTaskCompletion": true,
|
|
||||||
"warnOnEmptyResult": true,
|
|
||||||
"refreshEnabled": true,
|
|
||||||
"refreshInterval": 2500,
|
|
||||||
"defaultDateFormat": "MMMM dd, yyyy",
|
|
||||||
"defaultDateTimeFormat": "h:mm a - MMMM dd, yyyy",
|
|
||||||
"maxRecursiveRenderDepth": 4,
|
|
||||||
"tableIdColumnName": "File",
|
|
||||||
"tableGroupColumnName": "Group",
|
|
||||||
"showResultCount": true,
|
|
||||||
"allowHtml": true,
|
|
||||||
"inlineQueryPrefix": "=",
|
|
||||||
"inlineJsQueryPrefix": "$=",
|
|
||||||
"inlineQueriesInCodeblocks": true,
|
|
||||||
"enableInlineDataview": true,
|
|
||||||
"enableDataviewJs": true,
|
|
||||||
"enableInlineDataviewJs": true,
|
|
||||||
"prettyRenderInlineFields": true,
|
|
||||||
"prettyRenderInlineFieldsInLivePreview": true,
|
|
||||||
"dataviewJsKeyword": "dataviewjs"
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "dataview",
|
|
||||||
"name": "Dataview",
|
|
||||||
"version": "0.5.68",
|
|
||||||
"minAppVersion": "0.13.11",
|
|
||||||
"description": "Complex data views for the data-obsessed.",
|
|
||||||
"author": "Michael Brenan <blacksmithgu@gmail.com>",
|
|
||||||
"authorUrl": "https://github.com/blacksmithgu",
|
|
||||||
"helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
{
|
|
||||||
"Tabout": true,
|
|
||||||
"SelectionEnhance": true,
|
|
||||||
"IntrinsicSymbolPairs": true,
|
|
||||||
"BaseObEditEnhance": true,
|
|
||||||
"FW2HWEnhance": true,
|
|
||||||
"BetterCodeEdit": true,
|
|
||||||
"BetterBackspace": true,
|
|
||||||
"AutoFormat": true,
|
|
||||||
"ExcludeFiles": "",
|
|
||||||
"ChineseEnglishSpace": true,
|
|
||||||
"ChineseNumberSpace": true,
|
|
||||||
"EnglishNumberSpace": true,
|
|
||||||
"ChineseNoSpace": true,
|
|
||||||
"QuoteSpace": true,
|
|
||||||
"PunctuationSpace": true,
|
|
||||||
"AutoCapital": true,
|
|
||||||
"AutoCapitalMode": "typing",
|
|
||||||
"PunctuationSpaceMode": "typing",
|
|
||||||
"InlineCodeSpaceMode": 1,
|
|
||||||
"InlineFormulaSpaceMode": 1,
|
|
||||||
"InlineLinkSpaceMode": 1,
|
|
||||||
"InlineLinkSmartSpace": true,
|
|
||||||
"UserDefinedRegSwitch": true,
|
|
||||||
"UserDefinedRegExp": "{{.*?}}|++\n<.*?>|--\n\\[\\!.*?\\][-+]{0,1}|-+\n(file:///|https?://|ftp://|obsidian://|zotero://|www.)[^\\s()《》。,,!?;;:“”‘’\\)\\(\\[\\]\\{\\}']+|--\n\n[a-zA-Z0-9_\\-.]+@[a-zA-Z0-9_\\-.]+|++\n(?<!#)#[\\u4e00-\\u9fa5\\w-\\/]+|++",
|
|
||||||
"debug": false,
|
|
||||||
"userSelRepRuleTrigger": [
|
|
||||||
"-",
|
|
||||||
"#"
|
|
||||||
],
|
|
||||||
"userSelRepRuleValue": [
|
|
||||||
{
|
|
||||||
"left": "~~",
|
|
||||||
"right": "~~"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"left": "#",
|
|
||||||
"right": " "
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"userDeleteRulesStrList": [
|
|
||||||
[
|
|
||||||
"demo|",
|
|
||||||
"|"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"userConvertRulesStrList": [
|
|
||||||
[
|
|
||||||
":)|",
|
|
||||||
"😀|"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"userSelRuleSettingsOpen": true,
|
|
||||||
"userDelRuleSettingsOpen": true,
|
|
||||||
"userCvtRuleSettingsOpen": true,
|
|
||||||
"StrictModeEnter": false,
|
|
||||||
"StrictLineMode": "enter_twice",
|
|
||||||
"EnhanceModA": false,
|
|
||||||
"TryFixChineseIM": true,
|
|
||||||
"PuncRectify": false,
|
|
||||||
"FixMacOSContextMenu": false,
|
|
||||||
"TryFixMSIME": false,
|
|
||||||
"CollapsePersistentEnter": false
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "easy-typing-obsidian",
|
|
||||||
"name": "Easy Typing",
|
|
||||||
"version": "6.0.9",
|
|
||||||
"minAppVersion": "0.15.0",
|
|
||||||
"description": "This plugin aims to enhance and optimize the editing experience in Obsidian",
|
|
||||||
"author": "yaozhuwa",
|
|
||||||
"authorUrl": "https://github.com/Yaozhuwa",
|
|
||||||
"isDesktopOnly": false,
|
|
||||||
"fundingUrl": "https://www.buymeacoffee.com/yaozhuwa"
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "highlightr-plugin",
|
|
||||||
"name": "Highlightr",
|
|
||||||
"version": "1.2.2",
|
|
||||||
"minAppVersion": "0.12.8",
|
|
||||||
"description": "A minimal and aesthetically pleasing highlighting menu that makes color-coded highlighting much easier with a configurable assortment of highlight colors 🎨.",
|
|
||||||
"author": "chetachi",
|
|
||||||
"authorUrl": "https://github.com/chetachiezikeuzor",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"openFileOnWrite": true,
|
|
||||||
"openDailyInNewPane": true,
|
|
||||||
"openFileOnWriteInNewPane": true,
|
|
||||||
"openFileWithoutWriteInNewPane": false,
|
|
||||||
"idField": "id",
|
|
||||||
"useUID": false,
|
|
||||||
"addFilepathWhenUsingUID": false,
|
|
||||||
"allowEval": false,
|
|
||||||
"includeVaultName": true,
|
|
||||||
"vaultParam": "name",
|
|
||||||
"linkFormats": [
|
|
||||||
{
|
|
||||||
"name": "Markdown",
|
|
||||||
"format": "[{{name}}]({{uri}})"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
+9
-9
File diff suppressed because one or more lines are too long
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-advanced-uri",
|
|
||||||
"name": "Advanced URI",
|
|
||||||
"description": "Control various aspects through URIs, including opening files, creating new files, and executing commands.",
|
|
||||||
"isDesktopOnly": false,
|
|
||||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
|
||||||
"version": "2.0.0",
|
|
||||||
"author": "Vinzent",
|
|
||||||
"authorUrl": "https://github.com/Vinzent03",
|
|
||||||
"minAppVersion": "1.5.7"
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
.advanced-uri-data-section {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advanced-uri-data-input {
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100%;
|
||||||
|
max-width: none;
|
||||||
|
margin-bottom: var(--size-4-4);
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal .advanced-uri-mode-option.setting-item:hover {
|
||||||
|
background: var(--background-modifier-hover);
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<claude-mem-context>
|
|
||||||
# Recent Activity
|
|
||||||
|
|
||||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
|
||||||
|
|
||||||
*No recent activity*
|
|
||||||
</claude-mem-context>
|
|
||||||
@@ -1,820 +0,0 @@
|
|||||||
{
|
|
||||||
"copyLinkToElemenetAnchorTo100": false,
|
|
||||||
"copyFrameLinkByName": false,
|
|
||||||
"disableDoubleClickTextEditing": false,
|
|
||||||
"folder": "Excalidraw",
|
|
||||||
"cropFolder": "",
|
|
||||||
"annotateFolder": "",
|
|
||||||
"embedUseExcalidrawFolder": false,
|
|
||||||
"templateFilePath": "Excalidraw/Template.excalidraw",
|
|
||||||
"scriptFolderPath": "Excalidraw/Scripts",
|
|
||||||
"fontAssetsPath": "Excalidraw/CJK Fonts",
|
|
||||||
"loadChineseFonts": false,
|
|
||||||
"loadJapaneseFonts": false,
|
|
||||||
"loadKoreanFonts": false,
|
|
||||||
"compress": true,
|
|
||||||
"decompressForMDView": false,
|
|
||||||
"onceOffCompressFlagReset": true,
|
|
||||||
"onceOffGPTVersionReset": true,
|
|
||||||
"autosave": true,
|
|
||||||
"autosaveIntervalDesktop": 60000,
|
|
||||||
"autosaveIntervalMobile": 30000,
|
|
||||||
"drawingFilenamePrefix": "Drawing ",
|
|
||||||
"drawingEmbedPrefixWithFilename": true,
|
|
||||||
"drawingFilnameEmbedPostfix": " ",
|
|
||||||
"drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss",
|
|
||||||
"useExcalidrawExtension": true,
|
|
||||||
"cropSuffix": "",
|
|
||||||
"cropPrefix": "cropped_",
|
|
||||||
"annotateSuffix": "",
|
|
||||||
"annotatePrefix": "annotated_",
|
|
||||||
"annotatePreserveSize": false,
|
|
||||||
"previewImageType": "SVGIMG",
|
|
||||||
"renderingConcurrency": 3,
|
|
||||||
"allowImageCache": true,
|
|
||||||
"allowImageCacheInScene": true,
|
|
||||||
"displayExportedImageIfAvailable": false,
|
|
||||||
"previewMatchObsidianTheme": false,
|
|
||||||
"width": "400",
|
|
||||||
"height": "",
|
|
||||||
"overrideObsidianFontSize": false,
|
|
||||||
"dynamicStyling": "colorful",
|
|
||||||
"isLeftHanded": false,
|
|
||||||
"desktopUIMode": "tray",
|
|
||||||
"tabletUIMode": "compact",
|
|
||||||
"phoneUIMode": "mobile",
|
|
||||||
"iframeMatchExcalidrawTheme": true,
|
|
||||||
"matchTheme": false,
|
|
||||||
"matchThemeAlways": false,
|
|
||||||
"matchThemeTrigger": false,
|
|
||||||
"defaultMode": "normal",
|
|
||||||
"defaultPenMode": "never",
|
|
||||||
"penModeDoubleTapEraser": true,
|
|
||||||
"penModeSingleFingerPanning": true,
|
|
||||||
"penModeCrosshairVisible": true,
|
|
||||||
"panWithRightMouseButton": false,
|
|
||||||
"renderImageInMarkdownReadingMode": false,
|
|
||||||
"renderImageInHoverPreviewForMDNotes": false,
|
|
||||||
"renderImageInMarkdownToPDF": false,
|
|
||||||
"allowPinchZoom": false,
|
|
||||||
"allowWheelZoom": false,
|
|
||||||
"zoomToFitOnOpen": true,
|
|
||||||
"zoomToFitOnResize": false,
|
|
||||||
"zoomToFitMaxLevel": 2,
|
|
||||||
"zoomStep": 0.05,
|
|
||||||
"zoomMin": 0.1,
|
|
||||||
"zoomMax": 30,
|
|
||||||
"linkPrefix": "📍",
|
|
||||||
"urlPrefix": "🌐",
|
|
||||||
"parseTODO": false,
|
|
||||||
"todo": "☐",
|
|
||||||
"done": "🗹",
|
|
||||||
"hoverPreviewWithoutCTRL": false,
|
|
||||||
"linkOpacity": 1,
|
|
||||||
"openInAdjacentPane": true,
|
|
||||||
"showSecondOrderLinks": true,
|
|
||||||
"focusOnFileTab": true,
|
|
||||||
"openInMainWorkspace": true,
|
|
||||||
"showLinkBrackets": true,
|
|
||||||
"syncElementLinkWithText": false,
|
|
||||||
"allowCtrlClick": true,
|
|
||||||
"forceWrap": false,
|
|
||||||
"pageTransclusionCharLimit": 200,
|
|
||||||
"wordWrappingDefault": 0,
|
|
||||||
"removeTransclusionQuoteSigns": true,
|
|
||||||
"iframelyAllowed": true,
|
|
||||||
"pngExportScale": 1,
|
|
||||||
"exportWithTheme": true,
|
|
||||||
"exportWithBackground": true,
|
|
||||||
"exportPaddingSVG": 10,
|
|
||||||
"exportEmbedScene": false,
|
|
||||||
"keepInSync": false,
|
|
||||||
"autoexportSVG": false,
|
|
||||||
"autoexportPNG": false,
|
|
||||||
"autoExportLightAndDark": false,
|
|
||||||
"autoexportExcalidraw": false,
|
|
||||||
"embedType": "excalidraw",
|
|
||||||
"embedMarkdownCommentLinks": true,
|
|
||||||
"embedWikiLink": true,
|
|
||||||
"syncExcalidraw": false,
|
|
||||||
"experimentalFileType": false,
|
|
||||||
"experimentalFileTag": "✏️",
|
|
||||||
"experimentalLivePreview": true,
|
|
||||||
"fadeOutExcalidrawMarkup": false,
|
|
||||||
"loadPropertySuggestions": false,
|
|
||||||
"experimentalEnableFourthFont": false,
|
|
||||||
"experimantalFourthFont": "Virgil",
|
|
||||||
"addDummyTextElement": false,
|
|
||||||
"zoteroCompatibility": false,
|
|
||||||
"fieldSuggester": true,
|
|
||||||
"compatibilityMode": false,
|
|
||||||
"drawingOpenCount": 0,
|
|
||||||
"library": "deprecated",
|
|
||||||
"library2": {
|
|
||||||
"type": "excalidrawlib",
|
|
||||||
"version": 2,
|
|
||||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.18.3",
|
|
||||||
"libraryItems": []
|
|
||||||
},
|
|
||||||
"imageElementNotice": true,
|
|
||||||
"mdSVGwidth": 500,
|
|
||||||
"mdSVGmaxHeight": 800,
|
|
||||||
"mdFont": "Virgil",
|
|
||||||
"mdFontColor": "Black",
|
|
||||||
"mdBorderColor": "Black",
|
|
||||||
"mdCSS": "",
|
|
||||||
"scriptEngineSettings": {},
|
|
||||||
"previousRelease": "2.20.5",
|
|
||||||
"showReleaseNotes": true,
|
|
||||||
"compareManifestToPluginVersion": true,
|
|
||||||
"showNewVersionNotification": true,
|
|
||||||
"latexBoilerplate": "\\color{blue}",
|
|
||||||
"latexPreambleLocation": "preamble.sty",
|
|
||||||
"taskboneEnabled": false,
|
|
||||||
"taskboneAPIkey": "",
|
|
||||||
"pinnedScripts": [],
|
|
||||||
"sidepanelTabs": [],
|
|
||||||
"customPens": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"freedrawOnly": false,
|
|
||||||
"strokeColor": "#000000",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 0,
|
|
||||||
"roughness": 0,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": false,
|
|
||||||
"constantPressure": false,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"options": {
|
|
||||||
"thinning": 0.6,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "easeOutSine",
|
|
||||||
"start": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "highlighter",
|
|
||||||
"freedrawOnly": true,
|
|
||||||
"strokeColor": "#FFC47C",
|
|
||||||
"backgroundColor": "#FFC47C",
|
|
||||||
"fillStyle": "solid",
|
|
||||||
"strokeWidth": 2,
|
|
||||||
"roughness": null,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": true,
|
|
||||||
"constantPressure": true,
|
|
||||||
"hasOutline": true,
|
|
||||||
"outlineWidth": 4,
|
|
||||||
"options": {
|
|
||||||
"thinning": 1,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "linear",
|
|
||||||
"start": {
|
|
||||||
"taper": 0,
|
|
||||||
"cap": true,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"taper": 0,
|
|
||||||
"cap": true,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "finetip",
|
|
||||||
"freedrawOnly": false,
|
|
||||||
"strokeColor": "#3E6F8D",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 0.5,
|
|
||||||
"roughness": 0,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": false,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"constantPressure": true,
|
|
||||||
"options": {
|
|
||||||
"smoothing": 0.4,
|
|
||||||
"thinning": -0.5,
|
|
||||||
"streamline": 0.4,
|
|
||||||
"easing": "linear",
|
|
||||||
"start": {
|
|
||||||
"taper": 5,
|
|
||||||
"cap": false,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"taper": 5,
|
|
||||||
"cap": false,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "fountain",
|
|
||||||
"freedrawOnly": false,
|
|
||||||
"strokeColor": "#000000",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 2,
|
|
||||||
"roughness": 0,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": false,
|
|
||||||
"constantPressure": false,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"options": {
|
|
||||||
"smoothing": 0.2,
|
|
||||||
"thinning": 0.6,
|
|
||||||
"streamline": 0.2,
|
|
||||||
"easing": "easeInOutSine",
|
|
||||||
"start": {
|
|
||||||
"taper": 150,
|
|
||||||
"cap": true,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"taper": 1,
|
|
||||||
"cap": true,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "marker",
|
|
||||||
"freedrawOnly": true,
|
|
||||||
"strokeColor": "#B83E3E",
|
|
||||||
"backgroundColor": "#FF7C7C",
|
|
||||||
"fillStyle": "dashed",
|
|
||||||
"strokeWidth": 2,
|
|
||||||
"roughness": 3,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": false,
|
|
||||||
"constantPressure": true,
|
|
||||||
"hasOutline": true,
|
|
||||||
"outlineWidth": 4,
|
|
||||||
"options": {
|
|
||||||
"thinning": 1,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "linear",
|
|
||||||
"start": {
|
|
||||||
"taper": 0,
|
|
||||||
"cap": true,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"taper": 0,
|
|
||||||
"cap": true,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "thick-thin",
|
|
||||||
"freedrawOnly": true,
|
|
||||||
"strokeColor": "#CECDCC",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 0,
|
|
||||||
"roughness": null,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": true,
|
|
||||||
"constantPressure": true,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"options": {
|
|
||||||
"thinning": 1,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "linear",
|
|
||||||
"start": {
|
|
||||||
"taper": 0,
|
|
||||||
"cap": true,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": true,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "thin-thick-thin",
|
|
||||||
"freedrawOnly": true,
|
|
||||||
"strokeColor": "#CECDCC",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 0,
|
|
||||||
"roughness": null,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": true,
|
|
||||||
"constantPressure": true,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"options": {
|
|
||||||
"thinning": 1,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "linear",
|
|
||||||
"start": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": true,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": true,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"freedrawOnly": false,
|
|
||||||
"strokeColor": "#000000",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 0,
|
|
||||||
"roughness": 0,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": false,
|
|
||||||
"constantPressure": false,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"options": {
|
|
||||||
"thinning": 0.6,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "easeOutSine",
|
|
||||||
"start": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"freedrawOnly": false,
|
|
||||||
"strokeColor": "#000000",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 0,
|
|
||||||
"roughness": 0,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": false,
|
|
||||||
"constantPressure": false,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"options": {
|
|
||||||
"thinning": 0.6,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "easeOutSine",
|
|
||||||
"start": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"freedrawOnly": false,
|
|
||||||
"strokeColor": "#000000",
|
|
||||||
"backgroundColor": "transparent",
|
|
||||||
"fillStyle": "hachure",
|
|
||||||
"strokeWidth": 0,
|
|
||||||
"roughness": 0,
|
|
||||||
"penOptions": {
|
|
||||||
"highlighter": false,
|
|
||||||
"constantPressure": false,
|
|
||||||
"hasOutline": false,
|
|
||||||
"outlineWidth": 1,
|
|
||||||
"options": {
|
|
||||||
"thinning": 0.6,
|
|
||||||
"smoothing": 0.5,
|
|
||||||
"streamline": 0.5,
|
|
||||||
"easing": "easeOutSine",
|
|
||||||
"start": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
},
|
|
||||||
"end": {
|
|
||||||
"cap": true,
|
|
||||||
"taper": 0,
|
|
||||||
"easing": "linear"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"numberOfCustomPens": 0,
|
|
||||||
"pdfScale": 4,
|
|
||||||
"pdfBorderBox": true,
|
|
||||||
"pdfFrame": false,
|
|
||||||
"pdfGapSize": 20,
|
|
||||||
"pdfGroupPages": false,
|
|
||||||
"pdfLockAfterImport": true,
|
|
||||||
"pdfNumColumns": 1,
|
|
||||||
"pdfNumRows": 1,
|
|
||||||
"pdfDirection": "right",
|
|
||||||
"pdfImportScale": 0.3,
|
|
||||||
"gridSettings": {
|
|
||||||
"DYNAMIC_COLOR": true,
|
|
||||||
"COLOR": "#000000",
|
|
||||||
"OPACITY": 50,
|
|
||||||
"GRID_DIRECTION": {
|
|
||||||
"horizontal": true,
|
|
||||||
"vertical": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"laserSettings": {
|
|
||||||
"DECAY_LENGTH": 50,
|
|
||||||
"DECAY_TIME": 1000,
|
|
||||||
"COLOR": "#ff0000"
|
|
||||||
},
|
|
||||||
"embeddableMarkdownDefaults": {
|
|
||||||
"useObsidianDefaults": false,
|
|
||||||
"backgroundMatchCanvas": false,
|
|
||||||
"backgroundMatchElement": true,
|
|
||||||
"backgroundColor": "#fff",
|
|
||||||
"backgroundOpacity": 60,
|
|
||||||
"borderMatchElement": true,
|
|
||||||
"borderColor": "#fff",
|
|
||||||
"borderOpacity": 0,
|
|
||||||
"filenameVisible": false
|
|
||||||
},
|
|
||||||
"markdownNodeOneClickEditing": false,
|
|
||||||
"canvasImmersiveEmbed": true,
|
|
||||||
"startupScriptPath": "",
|
|
||||||
"aiEnabled": false,
|
|
||||||
"openAIAPIToken": "",
|
|
||||||
"openAIDefaultTextModel": "gpt-3.5-turbo-1106",
|
|
||||||
"openAIDefaultTextModelMaxTokens": 4096,
|
|
||||||
"openAIDefaultVisionModel": "gpt-4o",
|
|
||||||
"openAIDefaultImageGenerationModel": "dall-e-3",
|
|
||||||
"openAIURL": "https://api.openai.com/v1/chat/completions",
|
|
||||||
"openAIImageGenerationURL": "https://api.openai.com/v1/images/generations",
|
|
||||||
"openAIImageEditsURL": "https://api.openai.com/v1/images/edits",
|
|
||||||
"openAIImageVariationURL": "https://api.openai.com/v1/images/variations",
|
|
||||||
"modifierKeyConfig": {
|
|
||||||
"Mac": {
|
|
||||||
"LocalFileDragAction": {
|
|
||||||
"defaultAction": "image-import",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-import"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "link"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-url"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "embeddable"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"WebBrowserDragAction": {
|
|
||||||
"defaultAction": "image-url",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-url"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "link"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "embeddable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-import"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"InternalDragAction": {
|
|
||||||
"defaultAction": "link",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "link"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": true,
|
|
||||||
"result": "embeddable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": true,
|
|
||||||
"result": "image-fullsize"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"LinkClickAction": {
|
|
||||||
"defaultAction": "new-tab",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "active-pane"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "new-tab"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "new-pane"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "popout-window"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": true,
|
|
||||||
"result": "md-properties"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Win": {
|
|
||||||
"LocalFileDragAction": {
|
|
||||||
"defaultAction": "image-import",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-import"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "link"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-url"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "embeddable"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"WebBrowserDragAction": {
|
|
||||||
"defaultAction": "image-url",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-url"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "link"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "embeddable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-import"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"InternalDragAction": {
|
|
||||||
"defaultAction": "link",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "link"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "embeddable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "image-fullsize"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"LinkClickAction": {
|
|
||||||
"defaultAction": "new-tab",
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": false,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "active-pane"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "new-tab"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "new-pane"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": true,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": true,
|
|
||||||
"meta_ctrl": false,
|
|
||||||
"result": "popout-window"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"shift": false,
|
|
||||||
"ctrl_cmd": true,
|
|
||||||
"alt_opt": false,
|
|
||||||
"meta_ctrl": true,
|
|
||||||
"result": "md-properties"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"slidingPanesSupport": false,
|
|
||||||
"areaZoomLimit": 1,
|
|
||||||
"longPressDesktop": 500,
|
|
||||||
"longPressMobile": 500,
|
|
||||||
"doubleClickLinkOpenViewMode": true,
|
|
||||||
"isDebugMode": false,
|
|
||||||
"rank": "Bronze",
|
|
||||||
"modifierKeyOverrides": [
|
|
||||||
{
|
|
||||||
"modifiers": [
|
|
||||||
"Mod"
|
|
||||||
],
|
|
||||||
"key": "Enter"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"modifiers": [
|
|
||||||
"Mod"
|
|
||||||
],
|
|
||||||
"key": "k"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"modifiers": [
|
|
||||||
"Mod"
|
|
||||||
],
|
|
||||||
"key": "G"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"showSplashscreen": true,
|
|
||||||
"pdfSettings": {
|
|
||||||
"pageSize": "A4",
|
|
||||||
"pageOrientation": "portrait",
|
|
||||||
"fitToPage": 1,
|
|
||||||
"paperColor": "white",
|
|
||||||
"customPaperColor": "#ffffff",
|
|
||||||
"alignment": "center",
|
|
||||||
"margin": "normal"
|
|
||||||
},
|
|
||||||
"disableContextMenu": false
|
|
||||||
}
|
|
||||||
+14
-9
File diff suppressed because one or more lines are too long
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-excalidraw-plugin",
|
|
||||||
"name": "Excalidraw",
|
|
||||||
"version": "2.26.4",
|
|
||||||
"minAppVersion": "1.8.7",
|
|
||||||
"description": "Sketch Your Mind. Edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
|
|
||||||
"author": "Zsolt Viczian",
|
|
||||||
"authorUrl": "https://excalidraw-obsidian.online",
|
|
||||||
"fundingUrl": "https://ko-fi.com/zsolt",
|
|
||||||
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
+1
-1
File diff suppressed because one or more lines are too long
-68
@@ -1,68 +0,0 @@
|
|||||||
{
|
|
||||||
"commitMessage": "vault backup: {{date}}",
|
|
||||||
"autoCommitMessage": "vault backup: {{date}}",
|
|
||||||
"commitMessageScript": "",
|
|
||||||
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
|
||||||
"autoSaveInterval": 0,
|
|
||||||
"autoPushInterval": 0,
|
|
||||||
"autoPullInterval": 0,
|
|
||||||
"autoPullOnBoot": true,
|
|
||||||
"autoCommitOnlyStaged": false,
|
|
||||||
"disablePush": false,
|
|
||||||
"pullBeforePush": true,
|
|
||||||
"disablePopups": false,
|
|
||||||
"showErrorNotices": true,
|
|
||||||
"disablePopupsForNoChanges": false,
|
|
||||||
"listChangedFilesInMessageBody": false,
|
|
||||||
"showStatusBar": true,
|
|
||||||
"updateSubmodules": false,
|
|
||||||
"syncMethod": "merge",
|
|
||||||
"mergeStrategy": "none",
|
|
||||||
"customMessageOnAutoBackup": false,
|
|
||||||
"autoBackupAfterFileChange": false,
|
|
||||||
"treeStructure": false,
|
|
||||||
"refreshSourceControl": true,
|
|
||||||
"basePath": "",
|
|
||||||
"differentIntervalCommitAndPush": false,
|
|
||||||
"changedFilesInStatusBar": false,
|
|
||||||
"showedMobileNotice": true,
|
|
||||||
"refreshSourceControlTimer": 7000,
|
|
||||||
"showBranchStatusBar": true,
|
|
||||||
"setLastSaveToLastCommit": false,
|
|
||||||
"submoduleRecurseCheckout": false,
|
|
||||||
"gitDir": "",
|
|
||||||
"showFileMenu": true,
|
|
||||||
"authorInHistoryView": "hide",
|
|
||||||
"dateInHistoryView": true,
|
|
||||||
"diffStyle": "split",
|
|
||||||
"hunks": {
|
|
||||||
"showSigns": false,
|
|
||||||
"hunkCommands": false,
|
|
||||||
"statusBar": "colored"
|
|
||||||
},
|
|
||||||
"lineAuthor": {
|
|
||||||
"show": false,
|
|
||||||
"followMovement": "inactive",
|
|
||||||
"authorDisplay": "initials",
|
|
||||||
"showCommitHash": false,
|
|
||||||
"dateTimeFormatOptions": "date",
|
|
||||||
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
|
|
||||||
"dateTimeTimezone": "viewer-local",
|
|
||||||
"coloringMaxAge": "1y",
|
|
||||||
"colorNew": {
|
|
||||||
"r": 255,
|
|
||||||
"g": 150,
|
|
||||||
"b": 150
|
|
||||||
},
|
|
||||||
"colorOld": {
|
|
||||||
"r": 120,
|
|
||||||
"g": 160,
|
|
||||||
"b": 255
|
|
||||||
},
|
|
||||||
"textColorCss": "var(--text-muted)",
|
|
||||||
"ignoreWhitespace": false,
|
|
||||||
"gutterSpacingFallbackLength": 5,
|
|
||||||
"lastShownAuthorDisplay": "initials",
|
|
||||||
"lastShownDateTimeFormatOptions": "date"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+147
-147
File diff suppressed because one or more lines are too long
-10
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"author": "Vinzent",
|
|
||||||
"authorUrl": "https://github.com/Vinzent03",
|
|
||||||
"id": "obsidian-git",
|
|
||||||
"name": "Git",
|
|
||||||
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
|
||||||
"isDesktopOnly": false,
|
|
||||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
|
||||||
"version": "2.39.0"
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
"settings": {
|
|
||||||
"migrated": 6,
|
|
||||||
"iconPacksPath": ".obsidian/icons",
|
|
||||||
"fontSize": 16,
|
|
||||||
"emojiStyle": "twemoji",
|
|
||||||
"iconColor": null,
|
|
||||||
"recentlyUsedIcons": [],
|
|
||||||
"recentlyUsedIconsSize": 5,
|
|
||||||
"rules": [],
|
|
||||||
"extraMargin": {
|
|
||||||
"top": 0,
|
|
||||||
"right": 4,
|
|
||||||
"bottom": 0,
|
|
||||||
"left": 0
|
|
||||||
},
|
|
||||||
"iconInTabsEnabled": true,
|
|
||||||
"iconInTitleEnabled": true,
|
|
||||||
"iconInTitlePosition": "above",
|
|
||||||
"iconInFrontmatterEnabled": true,
|
|
||||||
"iconInFrontmatterFieldName": "icon",
|
|
||||||
"iconColorInFrontmatterFieldName": "iconColor",
|
|
||||||
"iconsBackgroundCheckEnabled": true,
|
|
||||||
"iconsInNotesEnabled": true,
|
|
||||||
"iconsInLinksEnabled": true,
|
|
||||||
"iconIdentifier": ":",
|
|
||||||
"lucideIconPackType": "native",
|
|
||||||
"debugMode": false,
|
|
||||||
"useInternalPlugins": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-icon-folder",
|
|
||||||
"name": "Iconize",
|
|
||||||
"version": "2.14.7",
|
|
||||||
"minAppVersion": "0.9.12",
|
|
||||||
"description": "Add icons to anything you desire in Obsidian, including files, folders, and text.",
|
|
||||||
"author": "Florian Woelki",
|
|
||||||
"authorUrl": "https://florianwoelki.com/",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
-4
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"show-checkboxes": true,
|
|
||||||
"hide-card-count": true
|
|
||||||
}
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-kanban",
|
|
||||||
"name": "Kanban",
|
|
||||||
"version": "2.0.51",
|
|
||||||
"minAppVersion": "1.0.0",
|
|
||||||
"description": "Create markdown-backed Kanban boards in Obsidian.",
|
|
||||||
"author": "mgmeyers",
|
|
||||||
"authorUrl": "https://github.com/mgmeyers/obsidian-kanban",
|
|
||||||
"helpUrl": "https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"port": 27124,
|
|
||||||
"insecurePort": 27123,
|
|
||||||
"enableInsecureServer": false,
|
|
||||||
"apiKey": "42359fe39a30914c696c6b3c195c079b9f3456fa556025460b7b63ab22af4ef3",
|
|
||||||
"crypto": {
|
|
||||||
"cert": "-----BEGIN CERTIFICATE-----\r\nMIIDRTCCAi2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDExdPYnNp\r\nZGlhbiBMb2NhbCBSRVNUIEFQSTAeFw0yNjAxMDUwMzQ2MTJaFw0yNzAxMDUwMzQ2\r\nMTJaMCIxIDAeBgNVBAMTF09ic2lkaWFuIExvY2FsIFJFU1QgQVBJMIIBIjANBgkq\r\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuoGB8e0u7TS6/+H9L3J1dvsQfxyAVO/s\r\ntBhKesB0FihWbYDED6kDz9ehwpG4fh3sMwLAAwtFPYFOa49s+F0ObQx8k95IncC4\r\ns5V5x/+HDFNHomRCl5IZs06NuBMW3FJbkHi8UhlubSRUuWNIR6QPYX+bANW7cMls\r\ni/DNKom7t+vM3gHYbmAsiV01GQb0qRalqjMZDNVMhlDkAJxPNYkIWuLfLaCFWAEU\r\n9PkrVVJkzNkeAJvzbEd1lWPugWp4dllsUTv89Oz5wSWSv9A5URlQ2alPNksQviUE\r\n1HVaQUXnH0Ial517yNKuCwhA7FRByk5yBkQM/aXyYWOLM+h7+74qvQIDAQABo4GF\r\nMIGCMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLEMDsGA1UdJQQ0MDIG\r\nCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcD\r\nCDARBglghkgBhvhCAQEEBAMCAPcwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0B\r\nAQsFAAOCAQEAAbPV6SLkMhUH7lV2YOBFQQBLBfllH1MVwxYV1paEAj7yBPgctoBQ\r\nVWaXf6aiI3H7+rMDFjz14oPbHqYWbfwnECxiuywwiXC0eRPB3gw+GhkNaiJz2Dy/\r\nAOOVkZo2jVK+wkY/jCyF+k1XjXedgl+NPQGmpaiAmwOXAbFN/Ul8+hxla/ILcWTy\r\nq77qAQAfvwrJYbVlDMePygYNUCqHoCpgBGbtlJ5SBzRbe/St/05+bunyZCBRbRQ/\r\nFj0qYjl3B8u0fasK9TQqasA4jIurnzz4bGo0UO5Dj9eQ3JlF7w+8eiL3WX9JiRFt\r\nbWQ1Tmt7GnTNVU0pLUOa+A9v7HwwtcIQBQ==\r\n-----END CERTIFICATE-----\r\n",
|
|
||||||
"privateKey": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCAQEAuoGB8e0u7TS6/+H9L3J1dvsQfxyAVO/stBhKesB0FihWbYDE\r\nD6kDz9ehwpG4fh3sMwLAAwtFPYFOa49s+F0ObQx8k95IncC4s5V5x/+HDFNHomRC\r\nl5IZs06NuBMW3FJbkHi8UhlubSRUuWNIR6QPYX+bANW7cMlsi/DNKom7t+vM3gHY\r\nbmAsiV01GQb0qRalqjMZDNVMhlDkAJxPNYkIWuLfLaCFWAEU9PkrVVJkzNkeAJvz\r\nbEd1lWPugWp4dllsUTv89Oz5wSWSv9A5URlQ2alPNksQviUE1HVaQUXnH0Ial517\r\nyNKuCwhA7FRByk5yBkQM/aXyYWOLM+h7+74qvQIDAQABAoIBAAFnLRvT9F4JFpk+\r\nfganXdONdlNbibcCZPtgdAD7oWtmpwy6M/ByjaHwFvxrJB365eEzwlgPQG3Poxir\r\n4ak6curRD4OXDr59dq21tKyTgh0oNMKq1LfhwBGC7q/2oO7Y8H5/2kkXOacfTe3L\r\nbtMVaVIkoSfMs9DUT52d0mFL9VK1Ymknp4tWYrldDTdNXMzTCHpGXVaVaN30Sjth\r\nUE0AYBTlL8kLVlPJ4sBz9B6Mkqsr2cqpqiRW2M8hJkxzF4Dj6tUZHVCdFlu3k+00\r\np5db64ui1vCzaMmAP7hdUcymNBaAeKJrcLsm+Z2adDD/IHTkYM59QRgOTpuiSiRK\r\nKJOMwlkCgYEA9xRwt9gj5+CFbz9S50K/EeP6T7CE8WKFF5Qh60s8AwEUh/VAogHW\r\nXfD69WcANAwZlk2cdxfOncHruYwcLTFuC+97+wPt6rxmYcwbllJQUPpPSssb1iXi\r\n2QMkEUAf3ZH4+kfeosrsj4NUXrrq4bYPR/uofLemFDgCd6ngP0o5q7UCgYEAwT07\r\nKCei74mJMdXoGPf3aSO50pY/CeMPHAPBfpaZ5XVBnbotCIt+9b0NPXekLgekWWIw\r\nwGkcBNlMR+TgYBm7miY4J+JVvr+dmVAbjdiNu7EB6ZZD7WcO1QSFaS4CrtO+UeVq\r\nbOwEIaO3AHcV+Rw3bZQVLCgFUknVb6FzSAAJN+kCgYBO29pCAx0qo9FSuV5Ha1k6\r\nZ437ozY7KJub8+6Df6auusiHwDIZwwZdQ02Fx5McCYSdITZAGHwcg8ktlldj4TPj\r\nYVMrwYxM8EapDhD8AFecENf/4iWHSt5FLyhyzQmemTljAE9BnAy2nU7vUS8oTQhB\r\njEOxUpgSOfInqTNmX9VaRQKBgFQpFd2sPaNz1EPXNOnC/YdWHvVfqH7m3ErIO/ql\r\nHsu34OcQEdL55kaimuSdeezuOR8Qy8jRPnnCJh3dyfcw3esKIEUGp2+XRs1h/U4u\r\n9bO8KOgSIO2BiA0wleY0OsjnwakrcMmVlUsNYYObWf+P0XgxGXOMzpyDOakPuQSv\r\nt1QZAoGBAPQKorkBHgcvkTyR0YiC8XpjckladcK66qZkPO8oyS38ORK9gH+cXwB0\r\nu1vcmmu6Pd19uyYEt3JIFvQPRTsOuOeONKFHBf4JUi2s80cWisW0DpPcqLnFhIuZ\r\n9tasyT6Wfo8zXwz/j9BDBJ2lF8x56DVpiVc5XRSTvG2ZtfiPjmsy\r\n-----END RSA PRIVATE KEY-----\r\n",
|
|
||||||
"publicKey": "-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuoGB8e0u7TS6/+H9L3J1\r\ndvsQfxyAVO/stBhKesB0FihWbYDED6kDz9ehwpG4fh3sMwLAAwtFPYFOa49s+F0O\r\nbQx8k95IncC4s5V5x/+HDFNHomRCl5IZs06NuBMW3FJbkHi8UhlubSRUuWNIR6QP\r\nYX+bANW7cMlsi/DNKom7t+vM3gHYbmAsiV01GQb0qRalqjMZDNVMhlDkAJxPNYkI\r\nWuLfLaCFWAEU9PkrVVJkzNkeAJvzbEd1lWPugWp4dllsUTv89Oz5wSWSv9A5URlQ\r\n2alPNksQviUE1HVaQUXnH0Ial517yNKuCwhA7FRByk5yBkQM/aXyYWOLM+h7+74q\r\nvQIDAQAB\r\n-----END PUBLIC KEY-----\r\n"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+29272
-23958
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-local-rest-api",
|
|
||||||
"name": "Local REST API with MCP",
|
|
||||||
"version": "5.1.0",
|
|
||||||
"minAppVersion": "1.13.1",
|
|
||||||
"description": "A secure REST API and Model Context Protocol (MCP) server for your vault.",
|
|
||||||
"author": "Adam Coddington",
|
|
||||||
"authorUrl": "https://adamcoddington.net/",
|
|
||||||
"isDesktopOnly": true
|
|
||||||
}
|
|
||||||
@@ -30,6 +30,7 @@ div.obsidian-local-rest-api-content pre {
|
|||||||
background-color: var(--background-modifier-cover);
|
background-color: var(--background-modifier-cover);
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
user-select: all;
|
user-select: all;
|
||||||
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.obsidian-local-rest-api-content p {
|
div.obsidian-local-rest-api-content p {
|
||||||
@@ -104,6 +105,13 @@ div.obsidian-local-rest-api-content div.certificate-regeneration-recommended {
|
|||||||
border: 2px solid #ffff00;
|
border: 2px solid #ffff00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Informational, not a warning: the certificate still works, an update exists. */
|
||||||
|
div.obsidian-local-rest-api-content div.certificate-update-available {
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
div.obsidian-local-rest-api-content table.api-urls tr {
|
div.obsidian-local-rest-api-content table.api-urls tr {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-mind-map",
|
|
||||||
"name": "Mind Map",
|
|
||||||
"version": "1.1.0",
|
|
||||||
"description": "A plugin to preview notes as Markmap mind maps",
|
|
||||||
"isDesktopOnly": false,
|
|
||||||
"js": "main.js"
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "obsidian-style-settings",
|
|
||||||
"name": "Style Settings",
|
|
||||||
"version": "1.0.9",
|
|
||||||
"minAppVersion": "0.11.5",
|
|
||||||
"description": "Offers controls for adjusting theme, plugin, and snippet CSS variables.",
|
|
||||||
"author": "mgmeyers",
|
|
||||||
"authorUrl": "https://github.com/mgmeyers/obsidian-style-settings",
|
|
||||||
"isDesktopOnly": false
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
{
|
|
||||||
"presets": {
|
|
||||||
"this_file": "path includes {{query.file.path}}",
|
|
||||||
"this_folder": "folder includes {{query.file.folder}}",
|
|
||||||
"this_folder_only": "filter by function task.file.folder === query.file.folder",
|
|
||||||
"this_root": "root includes {{query.file.root}}",
|
|
||||||
"hide_date_fields": "# Hide any values for all date fields\nhide due date\nhide scheduled date\nhide start date\nhide created date\nhide done date\nhide cancelled date",
|
|
||||||
"hide_non_date_fields": "# Hide all the non-date fields, but not tags\nhide id\nhide depends on\nhide recurrence rule\nhide on completion\nhide priority",
|
|
||||||
"hide_query_elements": "# Hide postpone, edit and backinks\nhide postpone button\nhide edit button\nhide backlinks",
|
|
||||||
"hide_everything": "# Hide everything except description and any tags\npreset hide_date_fields\npreset hide_non_date_fields\npreset hide_query_elements"
|
|
||||||
},
|
|
||||||
"globalQuery": "",
|
|
||||||
"globalFilter": "",
|
|
||||||
"removeGlobalFilter": false,
|
|
||||||
"taskFormat": "tasksPluginEmoji",
|
|
||||||
"setCreatedDate": false,
|
|
||||||
"setDoneDate": true,
|
|
||||||
"setCancelledDate": true,
|
|
||||||
"autoSuggestInEditor": true,
|
|
||||||
"autoSuggestMinMatch": 0,
|
|
||||||
"autoSuggestMaxItems": 20,
|
|
||||||
"provideAccessKeys": true,
|
|
||||||
"useFilenameAsScheduledDate": false,
|
|
||||||
"filenameAsScheduledDateFormat": "",
|
|
||||||
"filenameAsDateFolders": [],
|
|
||||||
"recurrenceOnNextLine": false,
|
|
||||||
"removeScheduledDateOnRecurrence": false,
|
|
||||||
"statusSettings": {
|
|
||||||
"coreStatuses": [
|
|
||||||
{
|
|
||||||
"symbol": " ",
|
|
||||||
"name": "Todo",
|
|
||||||
"nextStatusSymbol": "x",
|
|
||||||
"availableAsCommand": true,
|
|
||||||
"type": "TODO"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": "x",
|
|
||||||
"name": "Done",
|
|
||||||
"nextStatusSymbol": " ",
|
|
||||||
"availableAsCommand": true,
|
|
||||||
"type": "DONE"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"customStatuses": [
|
|
||||||
{
|
|
||||||
"symbol": "/",
|
|
||||||
"name": "In Progress",
|
|
||||||
"nextStatusSymbol": "x",
|
|
||||||
"availableAsCommand": true,
|
|
||||||
"type": "IN_PROGRESS"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": "-",
|
|
||||||
"name": "Cancelled",
|
|
||||||
"nextStatusSymbol": " ",
|
|
||||||
"availableAsCommand": true,
|
|
||||||
"type": "CANCELLED"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"features": {
|
|
||||||
"INTERNAL_TESTING_ENABLED_BY_DEFAULT": true
|
|
||||||
},
|
|
||||||
"generalSettings": {},
|
|
||||||
"headingOpened": {
|
|
||||||
"核心状态": true,
|
|
||||||
"自定义状态": true,
|
|
||||||
"Core Statuses": true,
|
|
||||||
"Custom Statuses": true
|
|
||||||
},
|
|
||||||
"debugSettings": {
|
|
||||||
"ignoreSortInstructions": false,
|
|
||||||
"showTaskHiddenData": false,
|
|
||||||
"recordTimings": false
|
|
||||||
},
|
|
||||||
"loggingOptions": {
|
|
||||||
"minLevels": {
|
|
||||||
"": "info",
|
|
||||||
"tasks": "info",
|
|
||||||
"tasks.Cache": "info",
|
|
||||||
"tasks.Events": "info",
|
|
||||||
"tasks.File": "info",
|
|
||||||
"tasks.Query": "info",
|
|
||||||
"tasks.Task": "info"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+86
-78
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user