Successfully implemented proper Asciidoctor tree processor extension for NKBIP-01
hierarchical parsing with comprehensive test coverage and future integration plan.
Features:
- Real Asciidoctor tree processor extension using registry.treeProcessor()
- NKBIP-01 compliant hierarchical structure (30040 index + 30041 content events)
- Parse levels 2-5 with different event granularities:
* Level 2: One 30041 per level 2 section (contains all nested content)
* Level 3+: Mix of 30040 (sections with children) + 30041 (content sections)
- Content preserved as original AsciiDoc markup
- Comprehensive test suite validating all parse levels and event structures
Implementation:
- src/lib/utils/publication_tree_processor.ts: Core tree processor extension
- src/lib/utils/asciidoc_publication_parser.ts: Unified parser interface
- tests/unit/publication_tree_processor.test.ts: Complete test coverage
- HIERARCHY_VISUALIZATION_PLAN.md: Next phase integration plan
Next: Integrate into ZettelEditor with visual hierarchy indicators
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Complete the AST-based parsing migration by removing all deprecated manual
parsing functions. The codebase now exclusively uses Asciidoctor's AST
for document processing.
- Remove parseAsciiDocWithMetadata, parseAsciiDocIterative, generateNostrEvents
- Delete 484 lines of legacy parsing code from asciidoc_metadata.ts
- Clean up imports and formatting across affected files
- Fix import paths to use consistent module resolution
- Remove unused UI imports from compose page
This completes the transition to AST-based PublicationTree architecture.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use SvelteKit context instead of stores to share NDK instance (see https://svelte.dev/docs/svelte/context)
- Clean up some dead code
- Move some standalone CSS into `app.css`
- Eliminate a component that is no longer needed.
- Reduce duplicate code.
- Tidy up code along the way.
- Ran `deno fmt` to auto-format code (hence the large diff).
- Fix {@const} placement errors by using Svelte 5 snippets
- Add proper TypeScript types to levelColors objects
- Rename and fix test file from .js to .ts with proper typing
- Remove indent guides from editor text area for cleaner writing
- Improve preview layout with proper indentation and spacing
- Add continuous vertical guides in preview that don't overlap text
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add My Notes navigation link
- Create My Notes page with 30041 event fetching
- Implement tag filtering system with sidebar
- Add AsciiDoc rendering for note content
- Include Playwright tests for layout validation
- Fix NDKFilter import issues (type imports)
- Update layout to prevent horizontal scroll
- Add publisher service for note publishing
- Moved tag type selection, expansion depth, and requirePublications to Legend component
- Used native HTML button instead of flowbite Toggle to avoid rendering issues
- Removed tag anchor controls from Settings panel
- Added proper prop bindings between components
- Fixed TypeScript type error in networkBuilder.ts
This provides better UI organization with tag-related controls now grouped together in the Legend.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>