- Annotation Engine (MVP)
- Data Model: Registered
kb_noteCPT and implemented JSON-based target storage (Source UUID + Selector). - Frontend Selection: Implemented Text Selection API with popover controls.
- Sidebar View: Created a slide-in sidebar to list all notes for the current article version.
- Highlight Persistence: Implemented
restoreHighlightsto re-apply text highlights on page load using exact text matching. - Interaction: Linked highlights to sidebar notes (click to focus).
- Bug Fix: Resolved issue where Note Popover disappeared on click (event conflict).
- Note Modes: Replaced "Add Selection" button with persistent dropdown (Just Highlight, Excerpt, Copy).
- UX Persistence: Implemented local storage for user's preferred Note Mode.
- Visuals: Added blockquote styling for quoted text in Sidebar.
- Refinement: Modified Note Mode to apply excerpt/copy actions only on submission (keeping textarea clean).
- Navigation: Implemented bidirectional navigation (Article Highlight ↔ Sidebar Note).
- Management: Added Edit and Delete capabilities for notes.
- Tagging:
- Implemented live hashtag extraction from note content.
- Added responsive "search-as-you-type" for tag input.
- Implemented source-aware tag removal (handling manual vs. text-embedded tags).
- Indicators:
- Implemented Note Count Indicator (badge) on Article Cards in Archive/Search views.
- Optimized performance with cached metadata (
_kb_note_count) to avoid N+1 queries. - Elementor Controls: Added full styling controls for Note Count Indicators (Typography, Color, Background, Border, Padding, Margin) to both Archive and Search widgets.
- Search Widget Fix: Resolved issue where Search Widget ignored Note Count position settings by passing options correctly to AJAX handler.
- Formatting: Improved excerpt rendering with contiguous blue line and robust whitespace handling.
- Metadata: Added Author Name, Avatar, and Time to Note display.
- Security: Restricted Note creation/viewing and Article Re-check features to logged-in users.
- Data Model: Registered
- Data Integrity & Deduplication (Phase 7.5)
- Concurrency Locking: Implemented transient-based atomic locking (60s) to prevent race conditions during parallel ingestion of the same URL.
- Global Hash Check: Implemented global content hash verification (Layer 2) to detect and link "Near Duplicates" (same content, different URL) to existing articles.
- Canonical Resolution: Implemented HTTP HEAD/GET based canonical URL resolution (Layer 1) to normalize redirects (e.g.,
flip.it) before ingestion. - Data Cleanup: Created and ran
merge_duplicates.phpto consolidate 7 sets of duplicate articles/versions caused by race conditions. - Documentation: Updated deduplication strategy docs and plan.
- Documentation & Release Prep
- Installation Guide: Finalized comprehensive guide including prerequisites, manual/dev installation, first-run initialization, and troubleshooting.
- Mobile/Touch Design: Updated documentation to reflect "Touch-First" philosophy, interaction delays, and specific mobile behaviors (tap-to-reveal).
- Performance Optimization
- Search Index: Optimized for >10k items by increasing search limit to 1000 and verifying database index usage.
- Re-check Capability
- Added "Re-check" button to Knowledge Search Widget (hover state) with full styling controls.
- Added "Re-check" button to Knowledge Archive Widget (hover state) with full styling controls.
- Implemented priority queue handling in backend (re-checks move to top of queue).
- Ensured Re-check button persists across AJAX pagination (Load More / Infinite Scroll).
- Search Widget UX Enhancements
- Enabled Archive-style display controls (grid, image, summary, etc.) for Standard Search mode.
- Implemented "Results Divider" with customizable style, color, and spacing.
- Positioned Results Divider below the search results area.
- Added "Show Other Content" toggle to automatically hide/show page content (e.g., existing archives) when searching.
- Added AJAX support for Standard Search to render results dynamically without page reload.
- Transient Caching: Implement caching for external API calls (AI providers, extraction services).
- Elementor Widgets: Documented all settings for Archive and Search widgets (including new Search modes, Re-check button, and Results Divider).
- Version Bump: Update plugin version in main file and
package.json. - Release Package: Create a build script or manual process for generating the distribution zip.
- Regression Testing: Verify Standard Search and AI Chat modes on mobile devices.
- Cross-Browser Testing: Check "Show Other Content" toggle behavior on Safari/Firefox.