-
Notifications
You must be signed in to change notification settings - Fork 8
Cross platform #82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
winged-pegasus
wants to merge
1,504
commits into
develop
Choose a base branch
from
cross-platform
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Cross platform #82
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Author
|
@lamat1111 @CassOnMars at some point we should move this to the develop branch and make sure to tag any issues that we have fixed with this PR |
This was referenced Sep 27, 2025
Closed
This was referenced Oct 31, 2025
22e795a to
9c84f33
Compare
Temporary workaround for config sync failing with 400 error. Some accounts have encryption states that grew to ~2MB each, causing the total config payload to exceed API limits (~21MB). This filter skips: - Encryption states that are undefined - Encryption states larger than 100KB (normal is ~10KB) See bug report: .agents/bugs/bloated-encryption-states-sync-failure.md Root cause investigation pending - this can be removed once fixed.
When the space folders feature was introduced, NavMenu switched to using the `items` array for rendering (when present) instead of `spaceIds`. However, SpaceService and InvitationService were only updating `spaceIds`, causing newly created or joined spaces to not appear in the nav menu. Changes: - SpaceService.ts: Create NavItem and add to both spaceIds and items - InvitationService.ts: Same pattern for joining spaces via invite - Updated task documentation with Phase 4.5 describing the fix The fix maintains backwards compatibility by only adding to items when the array already exists (indicating migration has occurred).
- Update INDEX.md with latest documentation structure - Update markdownFiles.json manifest - Verify and update 45+ documentation files in .agents/docs/ - Add verification timestamps to all docs - Fix file path references where needed - Update data-management-architecture-guide.md with DB_VERSION 4
- Add encryption-state-evals-bloat.md bug report - Update invite-system-analysis.md with evals documentation - Add debug utilities for encryption state analysis - Add temp filter for bloated states in ConfigService
- Add optimistic UI update for instant folder deletion - Add two-click confirmation in context menu - Extract shared useDeleteFolder hook - Show folder's actual icon in context menu header - Update help text to clarify spaces are preserved
Remove background-color from CSS transitions to prevent visible color flash when switching between light/dark themes.
Mention processing fixes: - Add protected region detection for code blocks, inline code, links - Fix index misalignment when multiple mentions in same message - Match against processed text to preserve correct indices - Recalculate protected regions after each replacement Code block refactor: - Remove CodeBlockContext (violated React hooks rules) - Use CSS selector .markdown-code:not(pre .markdown-code) instead - Simplify pre/code components, removing context provider - Move inline code styling to Message.scss This reduces JS complexity and fixes ESLint react-hooks/rules-of-hooks error.
Mention processing fixes: - Add protected region detection for code blocks, inline code, links - Fix index misalignment when multiple mentions in same message - Match against processed text to preserve correct indices - Recalculate protected regions after each replacement Code block refactor: - Remove CodeBlockContext (violated React hooks rules) - Use CSS selector .markdown-code:not(pre .markdown-code) instead - Simplify pre/code components, removing context provider - Move inline code styling to Message.scss This reduces JS complexity and fixes ESLint react-hooks/rules-of-hooks error.
- Unify toggle indicator into single element with smooth CSS transitions - Add hover state that works alongside unread indicator - Fix toggle visibility for spaces inside folders (overflow: visible) - Move mention bubbles to bottom-right position - Hide folder indicators when expanded (spaces show their own) - Add consistent toggle indicator to folders matching space style
- Extract magic numbers as named constants (drop zone thresholds, modal delay) - Add proper IconName/FolderColor types to createFolder() - Remove unused unreadCount prop from FolderButton - Update space-folders documentation
…olders Cross platform space folders
space-tags.md: - Made SpaceTag memoization mandatory (renders on every message) - Added auto-refresh stale tag on app startup - Replaced ColorPicker with IconPicker color system - Added BroadcastSpaceTag type for embedded profile data - Added auto-clear tag when leaving space - Updated edge cases and verification tests user-data-backup-restore-feature.md: - Reorganized data location matrix by recoverability - Clarified DM-only backup scope (Space data syncs) - Updated recovery scenarios table
- Hidden isPublic toggle in CreateSpaceModal - Added TODO explaining approval flow not implemented - Updated tooltip text for clarity - Both public/private spaces can generate invite links
- Move spacing from internal padding to external gap between messages - Add .message-row wrapper in MessageList with margin-top for gap - Desktop: 16px gap between messages - Touch: 4px gap + 2px dark border separator + internal padding - First/compact messages get no gap (message-row-first class) - Remove internal pt-2/pt-[8px] padding from Message component - Better visual separation for highlighted messages
- mention-pills-in-message-textarea.md: Updated to reflect POC completion and web-first implementation strategy - Marked cross-platform POC as complete (web validated, mobile created but not tested) - Simplified Phase 2 to web-only implementation based on feature-analyzer recommendations - Removed over-engineered abstractions (PillRenderer, PillTypes, shared utils) - Deferred mobile implementation to Phase 3 after web validation - Added bundle size verification requirement (<10KB, not ~2KB estimate) - Status changed from Pending to In Progress - space-tags.md: Added future enhancement documentation - Documented space profile modal on tag hover/click concept - Explained current limitation (no directory to look up arbitrary spaces) - Deferred implementation until Public Space Directory is available - Added alternative approach for member-only spaces - yaml-frontmatter-knowledge-base.md: Created new task for YAML frontmatter system - Defines schema for frontmatter metadata (type, status, complexity, dates, relationships) - Specifies implementation phases (gray-matter setup, build script, docs-manager updates, migration) - Includes comprehensive metadata extraction logic for migration script - Handles edge cases and ensures backwards compatibility
- Created web POC demo using contentEditable approach - Created mobile POC demo using TextInput + overlay approach - Both demos test all 4 mention types (user, role, channel, everyone) - Both demos support legacy and enhanced mention formats - Integrated into web primitives playground navigation - Integrated into mobile primitives menu screen - Demos validate technical feasibility for Phase 2 implementation
Implemented comprehensive YAML frontmatter metadata system for .agents documentation: Infrastructure: - Installed gray-matter library for frontmatter parsing - Created TypeScript schema (FrontmatterData interface) with type, status, complexity, dates, relationships - Enhanced scanMarkdownFiles.cjs to extract frontmatter at build time - Updated MarkdownFile interface to include all frontmatter fields - Modified useMarkdownFiles hook to prioritize frontmatter over file-based detection Templates: - Updated docs-manager skill with YAML frontmatter templates for bugs, tasks, docs, reports - Added frontmatter fields: type, title, status, complexity, ai_generated, reviewed_by, dates, related_* - Templates support relationship tracking (related_issues, related_docs, related_tasks, related_bugs) Migration: - Created migration script (scripts/add-yaml-frontmatter.cjs) with dry-run and apply modes - Script extracts metadata from existing markdown (status, dates, issues, complexity) - Cross-platform path handling for Windows/Linux compatibility - Tested on 337 files with 0 errors in dry-run mode Ready to migrate all existing .agents files with --apply flag.
Implemented visual mention pills in MessageComposer using contentEditable. - Pills created directly as DOM elements (no separate component) - Integrated with existing useMentionInput hook (zero modifications) - Supports all 4 mention types: users, roles, channels, @everyone - Enhanced format @[Name]<address> for user/channel mentions - Legacy format @<address> and #<id> also supported - Feature flag ENABLE_MENTION_PILLS for safe rollout - Custom backspace/click handling for atomic pill deletion - Copy/paste preserves storage format - Reuses existing message-mentions-* CSS classes - Zero breaking changes to storage or mention system - Created research report documenting industry analysis and POCs - Reorganized task documentation with YAML frontmatter
BREAKING CHANGE: Enhanced format `@[Name]<address>` is no longer supported. App is in beta - no backward compatibility needed. Changes: - MessageComposer: Write legacy-only format (@<address>, #<channelId>) in BOTH pills mode and fallback mode - useMessageFormatting: Reject enhanced format entirely - only render legacy format - Add user mention validation against message.mentions.memberIds (consistent with roles/channels) Security: All mention types now use double-layer validation (display name lookup + message.mentions verification) Files modified: - src/components/message/MessageComposer.tsx - Lines 183-198: extractTextFromEditor() writes legacy-only format - Lines 220-245: insertPill() creates pills without enhanced flag - Lines 408-422: Fallback mode writes legacy-only format (was enhanced) - src/hooks/business/messages/useMessageFormatting.ts - Line 157: User mention regex changed to legacy-only - Lines 160-175: Added validation against message.mentions.memberIds - Line 197: Channel mention regex changed to legacy-only - .agents/tasks/mention-pills-in-message-textarea.md - Updated all references to enhanced format - Clarified Phase 2 should also use legacy-only - Updated security warnings and edge cases Rationale: - Pills provide visual UX - embedded names unnecessary - Simpler format reduces complexity - Beta app allows breaking changes - Consistent storage format across all code paths
- Add FilterableList component with nested folder support - Fix scanMarkdownFiles to preserve full folder paths - Implement 4-status system (open/in-progress/on-hold/done) - Add complexity (tasks) and priority (bugs) taxonomies - Update docs-manager skill with folder-based status rules - Preserve numbering in report titles - Support dot-folder nesting (e.g., messagedb/.done)
- Added icon support to status, complexity, and priority tags - Implemented logical filter ordering (open→in-progress→on-hold→done) - Added border styling to all tags for better visibility - Replaced folder emoji with Icon primitive for consistency - Added icons to both filter buttons and inline tags
Added full mention pill support to message editing for consistency with composer. **Core Implementation**: - Added contentEditable support to MessageEditTextarea (~450 lines of pill logic) - Implemented parseMentionsAndCreatePills() with double-validation security - Integrated mention autocomplete dropdown for all 4 mention types - Added DOM walking algorithm to preserve existing pills when inserting new ones - Implemented pill editing (backspace deletion, click removal, cursor navigation) - Pills convert to legacy storage format on save via extractTextFromEditor() **Bug Fixes**: - Fixed mention extraction on save (channel/role/@everyone now render after edit) - Added mentions field to EditMessage type and MessageService handlers - Fixed role mention regex with negative lookahead to prevent matching @ in @<address> **Component Integration**: - Threaded props through Channel → MessageList → Message → MessageEditTextarea - Added users, roles, groups, canUseEveryone props for autocomplete support **Files Modified**: - MessageEditTextarea.tsx: Main implementation (~790 lines added) - MessageList.tsx: Props interface and threading - Channel.tsx: Data extraction and prop passing - quorumApi.ts: Added mentions field to EditMessage type - MessageService.ts: Updated edit handlers to apply mentions **Additional Documentation**: - Created mention-pills-abstraction-refactor.md task for future code sharing - Updated mention-pills-in-message-textarea.md with Phase 2 completion status - Documented ~270 lines of duplication to be extracted in future refactor
Refactored mention pill functionality into reusable utilities and hook following the Rule of Three principle. Code Changes: - Created mentionPillDom.ts with pure DOM utility functions - Created useMentionPillEditor hook with event delegation pattern - Refactored MessageComposer to use shared hook (~270 lines eliminated) - Refactored MessageEditTextarea to use shared hook (~270 lines eliminated) - Fixed memory leak using event delegation (single listener per editor) - Exported new hook from mentions index Documentation: - Split mention pills documentation into dedicated file - Updated notification system doc with cross-reference - Added bidirectional links between related docs - Moved completed tasks to .done folder - Updated INDEX.md to reflect new structure
- Added cursor: text to message composer textarea and contentEditable - Added cursor: text to message edit textarea - Added cursor: text to message post content for text selection - Improves UX by showing I-beam cursor in text areas
- Add 'archived' status to docs-manager skill and dev docs frontend - Update all .archived folder files from 'on-hold' to 'archived' - Clarify task status rules: open (default), in-progress (actively working), on-hold (blocked), done (complete), archived (obsolete) - Add archived status icon (history) and muted styling in FilterableList - Update task statuses: accessibility/channel tasks to open/on-hold - Update mention docs to remove references to unsupported enhanced mention formats (display names now always looked up from space data) - Move completed tasks to .done folder
- Extract dropdown from MessageComposer and MessageEditTextarea - Add Portal support for fixed positioning in edit mode - Implement Slack-style caret-relative positioning - Add caretCoordinates utility for cursor position detection - Use BEM naming in dedicated MentionDropdown.scss
- Show user display names on reaction hover (max 3 names) - Add "+X more" link that opens ReactionsModal on click - ReactionsModal displays reaction tabs and user avatars - Extract ReactionsList as reusable component from Message - Add clickable prop to Tooltip primitive for interactive content - Support ReactNode content in tooltips (was string-only) - Add .link class styling in tooltip SCSS - Create ReactionsModalProvider for Layout-Level modal access
- Border now always shown by default on all tooltips
- Added noBorder prop to optionally remove border
- Removed deprecated highlighted prop from Tooltip
- Removed highlightedTooltip prop from Button
- Simplified border logic (no longer theme-dependent)
- Updated all tooltip usages to remove highlighted={true}
- Updated primitives API documentation
- Remove internal padding from .message-body, let parent .message-row control all spacing - Increase desktop gap from 16px to 24px to compensate - Remove hasCompactBelow prop (no longer needed) - Fix compact message hover shift: use visibility instead of display for timestamp - Add tooltip-text-large class for nav menu tooltips - Clean up verbose JSDoc comments in Message.tsx
Show dropdown immediately when typing @ or #: - Tier 1 (empty query): alphabetical users (first 10) - Tier 2 (1-2 chars): @everyone + roles + matching users - Tier 3 (3+ chars): full search (existing behavior) Added sortByRelevance helper and Tier2 filter functions. Made dropdown more compact with reduced padding. Removed circular background from channel icons. Updated selected state to use --surface-7 color.
- Use 24h format (HH:mm) instead of 12h with am/pm - Show just time for same-day messages, not 'Today at...' - Compact conversation list format: time for today, 1d-6d for recent, short date for older, year only when different
- Created primitives-optimization.md task with Flex consolidation plan (~222 usages to migrate) - Added primitives-migration-to-quorum-shared.md task for future cross-platform primitive sharing - Created gap analysis report comparing desktop vs mobile primitive implementations - Updated quorum-shared-architecture.md with UI Primitives section documenting planned migration - Updated INDEX.md with new task references
- Replace FlexRow, FlexColumn, FlexBetween, FlexCenter with unified Flex - Flex uses direction prop (row default, column), justify, align, gap - Migrate ~638 component usages across 100+ files - Delete old Flex primitive folders (FlexRow, FlexColumn, etc.) - Add new Flex primitive with web/native implementations - Update playground examples and remove deprecated demos - Add task for ResponsiveContainer removal (future cleanup)
Move main content area positioning styles directly to _base.scss and replace the ResponsiveContainer React component with a simple CSS class. This removes ~100 lines of unnecessary abstraction for a component that was only used in one place (Layout.tsx).
- Remove typography prop from Text primitive types and implementation - Migrate 13 typography usages in modal components to CSS classes - Update KickUserModal, MuteUserModal, LeaveSpaceModal, NewDirectMessageModal, ConfirmationModal to use plain HTML - Remove typography handling from Text.web.tsx and Text.native.tsx - Update playground examples to document CSS class approach - Add task documentation for potential Text removal (not decided) - Update primitives-optimization.md with Phase 5 completion
- Update all primitives docs to use unified Flex primitive - Replace FlexRow/FlexColumn/FlexCenter/FlexBetween references - Remove typography prop documentation from Text primitive - Add CSS class alternative for web-only text styling - Move primitives-optimization task to .done folder - Update INDEX.md with latest documentation structure
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.