Commit graph

141 commits

Author SHA1 Message Date
Railly
5857a50e16
chore(deps): bump next to 16.2.6 (CVE-2026-44578 + May 2026 release) 2026-05-16 19:17:29 -05:00
Railly
79ece59025
chore: release 0.7.4 — round 2 scanner cleanup + attestation workflow
Round 2 of Obsidian scanner fixes:
- Timer functions: window.setTimeout/clearTimeout (per scanner) instead of activeWindow.*
- utils/shell.ts: window.require instead of globalThis.require for Electron access
- Rename options.global -> options.globalInstall to bypass false-positive linter warning
- CSS: remove 8 !important rules via specificity bumps; merge 3 duplicate selectors
- eslint config: hoist ignores block (web/, assets/, scripts/, main.js)

Release workflow:
- .github/workflows/release.yml triggers on semver tag push
- Builds, signs main.js/manifest.json/styles.css with GitHub OIDC attestation
- Creates or updates release with the three signed assets

Surface deep link as primary install path:
- README + landing CTAs: "Open in Obsidian" (obsidian://show-plugin?id=agentfiles) primary, community page secondary
- Docs Installation: deep link first, community page as scorecard-first alternative
2026-05-12 18:16:27 -05:00
Railly
7e7e29e09c
docs: link Add to Obsidian via new Community directory
- README: surface community.obsidian.md/plugins/agentfiles + website + latest release at the top
- Replace "coming soon" install section with the new Add to Obsidian flow + deep link + manual fallback
- Landing CTAs now point to the canonical community page (scorecard + Add to Obsidian button)
- Docs Installation section rewritten around the community page, deep link, then manual
- Fix stale obsidian-agent-skills references in nav, footer, docs, and changelog
- Add 0.7.3 changelog entry
2026-05-12 17:55:18 -05:00
Railly
00ce6e3634
chore: release 0.7.3 — fix all scanner issues
- Bump minAppVersion to 1.7.2 (Workspace.revealLeaf requirement)
- Type all JSON.parse + GitHub/skills.sh API responses
- Fix discriminated union narrowing in store filters (skill + conversation)
- Replace electron shell imports with typed utils/shell.ts helper
- Use createSvg instead of document.createElementNS for SVG creation
- Use activeWindow.setTimeout/clearTimeout and activeDocument for popout window compat
- Replace setTimeout(...,0) bootstrap with workspace.onLayoutReady
- Fix updateMenuBtn typo (renamed to updateMenuBtnState)
- onOpen/onClose return Promise<void> to match ItemView API
- Add createSvg/activeWindow/activeDocument to eslint globals
2026-05-12 11:51:18 -05:00
Railly
46a3c11f6b chore: release 0.7.2 — avoid fetch global in landing 2026-04-08 01:14:22 -05:00
Railly
d71ad7d187 fix: safe frontmatter stringify + ignore web/ in eslint
- src/views/detail.ts: handle object/string/number/boolean explicitly to avoid [object Object]
- eslint.config.mjs: re-enable no-base-to-string, ignore web/**
- bump to 0.7.1
2026-04-06 23:05:14 -05:00
Railly
f285e8117c feat: add logo icon to nav header 2026-04-06 15:10:21 -05:00
Railly
f1244a58db fix: replace default favicon with generated brand icon 2026-04-06 15:00:58 -05:00
Railly
41ee0d2776 feat: add Vercel Analytics 2026-04-06 14:59:27 -05:00
Railly
c92c26e99b fix: exclude scripts from tsconfig 2026-04-06 14:30:55 -05:00
Railly
93cc24926f feat: generate OG images and favicon with brand assets 2026-04-06 14:30:02 -05:00
Railly
ab0247ca03 feat(web): update headline, subheadline, SEO metadata, and real-time star count 2026-04-06 12:52:25 -05:00
Railly
18600427ab feat: add landing page, docs, and changelog site 2026-04-06 11:58:19 -05:00
Railly
95f093e9ca chore: bump to 0.7.0 2026-04-05 22:35:37 -05:00
Railly
d4019be977 chore: rebuild 2026-04-05 22:33:02 -05:00
Railly
f4d728f16a chore: switch to eslint-plugin-obsidianmd, add codemirror dev deps 2026-04-05 22:32:49 -05:00
Railly
9b1caa08c6 fix: remove unnecessary type assertions, use explicit type annotations instead 2026-04-05 22:32:49 -05:00
Railly
3b320433ec fix: replace innerHTML with DOM API and setIcon for Obsidian review compliance 2026-04-05 22:32:49 -05:00
Railly
c67db45fb9 chore: add @codemirror/lang-markdown dep and rebuild 2026-04-05 22:32:49 -05:00
Railly
63c6412078 refactor: replace textarea editor with CodeMirror 6 EditorView
Swap plain textarea for standalone CM6 instance with line numbers,
syntax highlighting, fold gutters, and spec-compliant frontmatter
linting. Proper lifecycle cleanup on skill switch to prevent DOM leaks.
2026-04-05 22:32:40 -05:00
Railly
73b548f280 feat: add CodeMirror 6 editor engine with Obsidian theme, frontmatter linter, and fold service
Standalone EditorView factory with markdown syntax highlighting,
YAML frontmatter validation (Agent Skills spec), and foldable
frontmatter blocks. Theme uses Obsidian CSS variables for native
dark/light mode integration.
2026-04-05 22:32:40 -05:00
Yisu Wang
bdaf05baa6
fix: add pnpm, Volta, Yarn, fnm, asdf, proto to skillkit discovery (#20)
Both findSkillkitBin() and buildPath() now search additional package
manager directories. A dynamic fallback (pnpm/yarn/npm bin -g) runs
only when static paths find nothing, keeping the common case zero-cost.

Closes #18

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 22:32:29 -05:00
Railly
013e7edaea chore: bump to 0.6.0 2026-04-03 21:18:15 -05:00
Railly
eb464691ff fix: filter MCP calls and built-in tools from dashboard stats
- Add isRealSkillName filter in skillkit.ts (blocks mcp__*, shell, update_plan, etc.)
- Apply filter in getSkillkitStats, getSkillkitStatsWithDaily, and async variant
- Filter top_skills in dashboard render, correct invocation/unique counts
2026-04-03 21:18:10 -05:00
Railly
7ebf889673 refactor: unify skill list buttons with shared icon-btn component
- Replace old deep-toggle and menu-btn with shared as-conv-icon-btn
- Convert native Menu to custom dropdown with sort/filter sections
- Add has-active filled state for toggle feedback
- Remove dead CSS for as-deep-toggle and as-list-menu-btn
2026-04-03 21:18:03 -05:00
Railly
43cf7ed8a7 feat: conversation filters — sort, date range, tag dropdown
- Add sort toggle (recent/messages) and date range filter (1d/7d/30d/90d/all)
- Add tag multi-select dropdown with outside-click dismiss
- Move tag filtering from sidebar to inline toolbar
- Remove sidebar Tags section (now accessible via dropdown)
- Default to "today" date range on open
- Fix layout shift: render all 3 action buttons always, disable tag when loading
- Fix dropdown mutex: only one dropdown open at a time
2026-04-03 21:17:52 -05:00
Railly
bacc25ee08 docs: fix manual install instructions with release link 2026-04-03 02:11:30 -05:00
Railly
b5242b2246 chore: 0.5.0 — conversation explorer, streamlined README
- Conversation Explorer by @victorgalvez56 (async, streaming, secure)
- README rewritten: concise install + feature overview
- Version bump to 0.5.0
2026-04-03 02:07:58 -05:00
Railly
2a5a5cbcf0 fix: add border separators between conversation cards 2026-04-03 01:59:04 -05:00
Railly
22f9a2a6e2 feat: conversation explorer — credit original author
Co-authored-by: victorgalvez56 <victor.galvez56@gmail.com>
2026-04-03 01:54:27 -05:00
Railly
fc2026b670 fix: conversation cards match skill card design pattern 2026-04-03 01:51:31 -05:00
Railly
57621cab3a fix: progressive message pagination (show next N + show all) 2026-04-03 01:46:29 -05:00
Railly
41ab7b9c9c fix: address all review issues for conversation explorer
Critical fixes:
- Async parser with streaming for large files (>5MB use readline)
- 500 line cap per file, batched processing (20 concurrent)
- Path traversal guard in saveToVault (resolve + startsWith check)
- sanitizeFilename strips '..' sequences
- renderComponent moved to instance field (no module-level leak)

Behavior fixes:
- Search now includes message content
- messageCount counts all messages, not just human turns
- Save requires message selection (no silent 10-msg fallback)
- readableProjectName uses last 2 path segments (more robust)
- Loading state shown during async refresh
- promptAddTag uses createEl instead of document.createElement
- typescript tag uses /typescript/i instead of /.ts\b/
- Removed dead firstMessage field from ConversationItem
2026-04-03 01:41:00 -05:00
victorgalvez56
6d9ce025e4 chore: rebuild production bundle 2026-04-03 01:37:39 -05:00
victorgalvez56
fa988709b3 feat: add conversation explorer styles
Add CSS for conversation UI components: date group headers, conversation
cards with project badges and tag pills, message bubbles with role
indicators, selection state, tool call badges, save-to-vault bar,
resume command block, and custom tag input. Follows existing design
system using Obsidian CSS variables.
2026-04-03 01:37:33 -05:00
victorgalvez56
67ccd762f1 feat: integrate conversation explorer into main layout
- main-view: add wrapper-based panel swapping to reuse grid cells for
  both skill and conversation panels. Wire ConversationStore lifecycle,
  toggle method, and event subscriptions
- sidebar: add Conversations entry to library section with message-circle
  icon. Render project and tag filters when in conversation mode. Handle
  mutual exclusion with dashboard and marketplace views
2026-04-03 01:36:58 -05:00
victorgalvez56
43986c0771 feat: add conversation list and detail view panels
- ConversationListPanel: searchable list grouped by date with project
  badges, auto-tags, favorite indicators, and message count
- ConversationDetailPanel: full message preview with markdown rendering,
  per-message selection checkboxes for export, custom tag management,
  save-to-vault action, and copy-resume-command button
2026-04-03 01:35:37 -05:00
victorgalvez56
137f6619d7 feat: add conversation data layer
- parser: reads ~/.claude/projects/*/*.jsonl files, extracts human and
  assistant messages with timestamps and tool calls, deduplicates by
  content hash
- tagger: auto-generates tags from user messages based on technology
  mentions (3+ hits required), task type patterns (2+ hits), and MCP
  tool calls. Strips <system-reminder> blocks to avoid false positives.
  Only analyzes first 5 user messages to prevent meta-discussion noise
- store: reactive ConversationStore extending Obsidian Events with
  filtering by project/tag/favorites/search. Persists custom tags and
  favorites to ~/.claude/agentfiles-conversations.json
- note-exporter: generates Obsidian-compatible markdown notes with
  YAML frontmatter, selected message snippets, and resume command
2026-04-03 01:35:37 -05:00
victorgalvez56
4a65465f93 feat: add conversation explorer type definitions
Add TypeScript interfaces for the conversation explorer feature:
- ConversationItem: represents a parsed Claude Code session
- ConversationMessage: individual message with role, text, timestamp
- ConversationFilter: union type for sidebar filtering
- ConversationTagData: persistence model for custom tags and favorites
2026-04-03 01:35:37 -05:00
Railly
0d8d9ed4f1 chore: bump version to 0.4.4 2026-04-03 01:29:57 -05:00
Railly
c0c41f0e99 fix: redesign search toolbar — merge filter+sort into native Menu
- Replace 3 confusing icon buttons with 2 clear controls
- Deep search toggle: uses safe "file-search" icon, clear active state
- Filter+sort merged into one "sliders-horizontal" button that opens
  Obsidian's native Menu with checkmarks for sort mode and filter
- Button highlights when filter or non-default sort is active
- Removes custom dropdown CSS in favor of native Menu component
- Fixes invisible icon bug (arrow-down-a-z not in all Obsidian versions)
2026-04-03 01:27:53 -05:00
Railly
ca52be54a9 feat: redesign Create modal as stepped wizard + add Amp/Antigravity icons
Create modal now uses a 3-step flow:
1. Tool grid with real SVG icons and brand colors
2. Type cards (skill/command/agent) - skipped if tool has only one type
3. Name input with tool badge, monospace input, colored submit button

Also adds Amp (3 lightning bolts from official press kit) and
Antigravity (Google "A" arch shape) SVG icons to tool-icons.
2026-04-03 00:56:32 -05:00
Railly
371e5bea47 feat: Create Skill button with template scaffolding
- New "Create" button in sidebar below Marketplace
- Modal with name input + target dropdown (agent + type)
- Creates SKILL.md in directory for skills, flat .md for commands
- Auto-refreshes store and selects the new skill after creation
- Slugifies name for filesystem, validates for duplicates

Closes #17
2026-04-03 00:42:42 -05:00
Railly
e59abf3d40 fix: sidebar pointed to wrong skillkit npm package (#15)
The sidebar install prompt said `npm i -g skillkit` which installs
rohitg00's security scanner instead of `@crafter/skillkit` (our
analytics CLI). This caused `skillkit scan` to fail on Windows
because the wrong package requires a <path> argument.
2026-04-03 00:35:22 -05:00
Railly
46698badb8 fix: scan nested skill directories up to 3 levels deep
scanDirectoryWithSkillMd only checked one level, missing grouped
structures like ~/.agents/skills/<group>/skills/<name>/SKILL.md

Now recurses into subdirs that don't contain SKILL.md, up to depth 3.

Also includes skillkit binary validation (isCrafterSkillkit).

Closes #16
2026-04-03 00:17:38 -05:00
Railly
feab7dce60 fix: void unhandled promise for Obsidian plugin review 2026-04-02 01:33:17 -05:00
Railly
aeb27163b7 chore: bump version to 0.4.1 2026-04-02 01:25:22 -05:00
Railly
b55a3d11a3 fix: commands use filename instead of heading for display name 2026-04-02 01:05:35 -05:00
Railly
29f70a5aff fix: install individual skills instead of entire repo 2026-04-02 01:02:01 -05:00
Railly
c390b6f532 chore: bump version to 0.4.0 2026-04-02 00:52:35 -05:00