Skip to content

Add documentation website that dogfoods all Sailkit packages#6

Open
joshribakoff wants to merge 44 commits intointegrationfrom
docs-website
Open

Add documentation website that dogfoods all Sailkit packages#6
joshribakoff wants to merge 44 commits intointegrationfrom
docs-website

Conversation

@joshribakoff
Copy link
Owner

Summary

  • Creates a full Astro documentation site in docs/ that demonstrates all 5 Sailkit packages working together
  • Includes 16 documentation pages with nested navigation structure
  • Uses wiki-style [[magic-links]] throughout all content

🤖 Generated with Claude Code

joshribakoff and others added 30 commits December 14, 2025 23:40
Creates a full Astro documentation site in docs/ that demonstrates:

- Compass: Sidebar navigation structure + prev/next links
- Teleport: Vim keybindings (j/k, h/l, Ctrl+d/u)
- Lantern: Dark/light theme toggle with flash prevention
- Lighthouse: Smart 404 with fuzzy URL matching
- Atlas: Wiki-style [[magic-links]] throughout content

Includes 16 documentation pages covering:
- Introduction and getting started guides
- Individual package documentation
- Task-based guides (vim-navigation, theming, magic-links, smart-404)
- Architecture overview

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add hamburger button that toggles sidebar on mobile breakpoint
- Add overlay that closes sidebar when clicked
- Auto-expand collapsed nav sections when vim j/k navigation enters them
- Update installation docs to reflect packages not yet published to npm

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add spyglass.md: Site search UI layer (adapts Fuse.js/MiniSearch/Pagefind)
- Add scribe.md: Documentation testing (extract and verify code blocks)
- Update packages.md: Now 7 packages (5 implemented, 2 planned)
- Update navigation.ts: Add spyglass and scribe to sidebar
- Update comparison table with status column

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Extracts TypeScript/JavaScript code blocks from markdown
- Executes code and checks exit codes for pass/fail
- Parallel execution with configurable concurrency
- TTY detection for interactive vs CI output
- Vitest-style progress display with spinners

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace child process spawning with in-process execution:
- Use esbuild transform for TypeScript transpilation
- Execute code in vm sandbox with captured console output
- Reduces test time from ~62s to ~0.26s

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use commander for CLI argument parsing
- Make path argument required (like ESLint/Prettier)
- Add IO interface for testability (mock stdout/stderr)
- Add vitest with 8 unit tests using mock IO
- Fix parser to handle info strings with 'scribe' marker

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove scribe marker requirement - all JS/TS blocks tested by default
- Add nocheck marker to skip specific blocks (```ts nocheck)
- Add vitest.config.ts to exclude dist folder from tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…key binding DSL

Add validation for parseKey() to reject invalid key binding syntax with clear
error messages. Includes tests for: empty strings, whitespace, leading/trailing/
consecutive plus signs, unrecognized modifiers, duplicate modifiers, modifier-only
bindings, and suspicious multi-character keys.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add initial playwright test setup for teleport package:
- playwright.config.ts configuration
- e2e scroll tests with fixture HTML files
- Basic teleport spec placeholder

Tests are a work in progress and not yet passing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…w the single source of truth

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update package names and all import references across compass and lantern packages.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add createTeleport() that scans DOM, uses Compass internally, handles highlighting
- Simplify Teleport.astro to thin wrapper around createTeleport()
- Update README with design philosophy: drop-in, framework-agnostic
- Add toggleSidebar binding (t key)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add sidebarSelector to detect when sidebar is hidden
- Add whenHidden option: 'ignore' (default) or 'show-sidebar'
- j/k/Enter now respect sidebar visibility state
- Document why Teleport exists vs mousetrap in README

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove highlightVisible state tracking. Teleport now simply adds a
CSS class to the current item - visibility is the consumer's concern
via their own CSS styling.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When sidebar is hidden and whenHidden='ignore', navigation keys (j/k/arrows)
now scroll the content instead of doing nothing. Scroll amount is 1/4
viewport height (smaller than Ctrl+D/U which uses 1/2).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When sidebar is hidden with whenHidden='ignore' (default):
- Arrow keys pass through to browser for native scroll feel
- j/k/Enter do nothing (sidebar navigation doesn't apply)
- Press t to toggle sidebar back for navigation

This works the same whether sidebar is hidden due to responsive
breakpoint or user toggle.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- gg (two g's in quick succession) goes to first item
- G (Shift+g) goes to last item
- Sequence detection with 500ms timeout between keypresses
- Added tests for new bindings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add breakpoint config: 'desktop' mode passes arrows through for native scroll
- Teleport.astro uses matchMedia to detect breakpoint dynamically
- Change gg/G to scroll page content instead of navigating sidebar
- Use instant scroll on initial page load (no animation jumping)
- Add tests for desktop/mobile breakpoint behavior

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
joshribakoff and others added 14 commits December 19, 2025 20:59
Remove hardcoded .teleport-highlight styles from library.
Consumer is now responsible for styling the highlight class.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement @sailkit/teleport vim-style keyboard navigation
- Update all package.json names to @sailkit/ scope
- Update all source imports and README references
- Fix teleport.md: remove hallucinated createDOMNavigator API, use correct
  createTeleport with proper callback names (onDown/onUp not onNextItem/onPrevItem)
- Fix scribe.md: update to actual exports (parseMarkdown, filterTestableBlocks,
  runBlocks), remove outdated "Planned" status, document nocheck marker

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update runner.ts to use esbuild build (not transform) for proper bundling
- Resolve imports from workspace root node_modules
- Add global assert to sandbox
- Add nocheck to docs with browser APIs (document, window) or partial examples

Scribe now validates 10/10 testable blocks in compass, lantern, lighthouse docs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Auto-detects document/window/localStorage usage via regex and injects
JSDOM globals into the VM sandbox. Enables testing of browser API examples.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update all package.json names and dependencies
- Update imports in source files, docs, and config
- Replace npm install instructions with git URL method
- Packages not published to npm yet, use github:sailkit-dev/sailkit#main

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Teleport component to index.astro
- Add nav-item class to CTA buttons and package cards
- Add teleport-highlight styles

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Individual package lock files are redundant with root workspace lock.
The file also had outdated @sailkit/* naming.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant