Scrolling to the bookmark doesn't yet work, so the IndexedDB usage is moot until that is fixed.
IndexedDB access should be moved into a service layer before merging.
- Change minEventCount to 1 to display all tags regardless of occurrence count
- Add radio buttons to sort tags by count (default) or alphabetically
- Add "Invert Selection" checkbox to toggle all tags at once
- Fix tag sorting implementation with proper Svelte @const placement
These changes provide better control over tag visibility and organization,
making it easier to explore and filter the visualization by tags.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove entire Graph Traversal section from Settings panel including:
- "Search through already fetched" toggle
- "Append mode" toggle and clear graph button
- Remove expansion depth control from Tag Anchor Controls in Legend
- Make entire header sections clickable for better accessibility:
- Main panel headers (Legend/Settings) are fully clickable
- Section headers within panels are fully clickable
- Add hover effects for visual feedback
- Use pointer-events-none on arrow icons
This simplifies the UI by removing unused features and improves
accessibility by making larger click targets for toggling panels.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Previously, only certain node types (person anchors, tag anchors, and 30040 events) would remain fixed after dragging, while other event types like kind 1 would snap back to their force-simulated positions.
Now all event nodes remain fixed in their dragged position, giving users full control over the graph layout. This applies to both regular force simulation and star visualization modes.
Changes:
- Modified setupDragHandlers to keep all nodes fixed after drag ends
- Modified createStarDragHandler to keep all nodes fixed after drag ends
- Removed special cases that only fixed certain node types
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added visual indicators in the legend to explain the different colored edges:
- Green edges: Person authored the event (signed-by connection)
- Blue edges: Event references the person (referenced connection)
These edge colors only appear when the Person Visualizer is active and help users understand the different types of connections between people and events.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implements a checkbox option for kinds 30041 and 30818 that allows users to display all loaded content events instead of being limited by the number input.
Changes:
- Added showAll property to EventKindConfig interface
- Added toggleShowAllContent method to visualization store
- Updated EventTypeConfig UI to show "All" checkbox for content kinds
- Modified display filtering to respect showAll setting
- Disabled number input when showAll is checked
This improves the user experience by making it easy to show all content when working with publications and wiki pages.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Give disconnected nodes (like kind 0) random initial positions so they appear in the graph
- Add center and radial forces to keep disconnected nodes visible within the viewport
- Update filterByDisplayLimits to respect per-kind limits from visualization config
- Now properly limits kind 0 profiles to the configured display limit (e.g., 5 of 7 fetched)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use total pubkeys size instead of newly fetched profile events length
- This accounts for profiles that were already cached
- Update both initial fetch and missing events fetch
The issue was that when profiles were already cached, profileEvents.length
was 0, making it look like no profiles were fetched even though they were
available from cache.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove entire Display Limits section as it duplicates Event Configuration
- Remove related state variables and functions
- Remove unused imports (displayLimits store and Label component)
- Simplify Settings panel to focus on unique functionality
The Event Configuration panel now handles all event limits, making the
Display Limits section unnecessary and confusing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change default follow list limit from 1 to 0
- Add explicit check to skip fetching when limit is 0
- This prevents unnecessary profile fetching on initial load
- When users change limit to >0, then all follow list profiles are fetched
This provides the optimal default behavior:
- Initial load only fetches profiles from event authors
- Users can opt-in to social graph by increasing follow list limit
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Person anchors now maintain their fixed position after being dragged
- Exclude person anchors from gravity forces (like tag anchors)
- Update both regular and star force simulations to handle person anchors
- Ensure person anchors are draggable but stay anchored at their new position
This ensures person nodes behave as true anchors in the visualization,
maintaining their position in the graph even after user interaction.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Only fetch profiles from event authors when follow list limit is 0
- Color person nodes differently based on their source:
- Green (#10B981) for authors of displayed events
- Kind 3 color for people from follow lists
- Track isFromFollowList flag through person extraction and display
- Update Legend to show colored diamonds matching the graph visualization
This helps distinguish between actual content authors and social graph connections.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fetch ALL configured event kinds regardless of enabled/disabled state
- Store complete dataset in memory (allEvents)
- Filter display based on enabled kinds only
- Toggle operations now just change visibility without re-fetching
- Update documentation to mark Phase 5 as complete
This completes the event types panel redesign, providing instant toggles
and preventing UI freezing on state changes.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add allEventCounts derived from allEvents (not filtered events)
- Pass allEventCounts through components to show true fetch status
- This ensures kind 0 shows as green when profiles are fetched
The issue was that event counts were derived from filtered events,
so if kind 0 was disabled, it would show as 0 even if profiles were fetched.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update batchFetchProfiles to return fetched profile events
- Add fetched profile events to allEvents array
- Update profile stats to show actual count of fetched profiles
- Profile events are now properly tracked in event counts
This ensures kind 0 events show as green (loaded) and can be visualized in the graph.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add profileStats reactive state to track total fetched profiles and display limit
- Pass profileStats through EventNetwork -> Settings -> EventTypeConfig
- Update EventTypeConfig UI to show 'X of Y fetched' format for kind 0 profiles
- Profile fetching now extracts all pubkeys from loaded events first
- Display limit for profiles controls visualization, not fetching
This completes Phase 4 of the event types panel redesign.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>