- Add "Set Visibility" dialog for meeting members who need visibility settings
- Filter members to show only those not in contacts or without seesMe set
- Implement checkbox selection with "Select All" functionality
- Add reactive checkbox behavior with proper state management
- Default all checkboxes to checked when dialog opens
- Implement "Set Visibility" action to add contacts and set seesMe property
- Add success notifications with count of affected members
- Disable "Set Visibility" button when no members are selected
- Use notification callbacks for data refresh
- Hide "Set Visibility" buttons when no members need visibility settings
- Add proper dialog state management and cleanup
- Ensure dialog closes before triggering data refresh to prevent stale states
The implementation provides a smooth user experience for managing member visibility settings with proper state synchronization between components.
- Mirrored "Refresh" and "Visibility" buttons on top and bottom of member list
- Added back info icons for list actions
- When clicked, Person icon shows informative notification
- Add overflow-hidden, text-ellipsis and truncate classes to long text elements in list items and views to prevent text overflow
- Ensure proper text wrapping and ellipsis display for long content
- Add user-scalable=no and interactive-widget=overlays-content to viewport meta tag
- Implement iOS viewport height fixes to prevent keyboard-related layout shifts
- Use dynamic viewport height (100dvh) for better mobile support
- Add fixed positioning and overflow controls to prevent viewport changes
- Enable scrolling only within #app container for better UX
- Remove conditional notification logic in NewActivityView
- Remove redundant notification in RecentOffersToUserView and RecentOffersToUserProjectsView
- Standardize to single notification message format
- iOS, Android, and Electron build scripts now load .env.development, .env.test, .env.production files
- Previously only loaded generic .env file which doesn't exist
- Ensures consistent image server URL across all build targets
- Fixes issue where build:ios:dev used production image URL instead of test URL
- Aligns with web build script behavior for environment variable precedence
Resolves inconsistent VITE_DEFAULT_IMAGE_API_SERVER values between build targets.
- Fix 't is not a function' error during image upload by properly initializing notification helpers
- Move notification helper initialization from class-level to lifecycle methods (created/mounted)
- Affected components: ImageMethodDialog, SeedBackupView, QuickActionBvcBeginView, HelpNotificationsView
- Ensures $notify is available when createNotifyHelpers() is called
- Resolves notification errors in image upload functionality
- Delete active-identity-upgrade-plan.md (390 lines)
- Delete active-pointer-smart-deletion-pattern.md (392 lines)
- Delete activeDid-migration-plan.md (559 lines)
- Delete migration-004-complexity-resolution-plan.md (198 lines)
- Delete verification-party-system-plan.md (375 lines)
These documents were created during migration development phases
and are no longer needed after successful implementation. Removing
them reduces repository clutter and eliminates outdated information.
Total cleanup: 1,914 lines of obsolete documentation removed.
- Remove isDevelopment environment checks and migrationLog variable
- Replace conditional logging with consistent logger.debug() calls
- Remove development-only validation restrictions
- Maintain all error handling and warning messages
- Let existing logger handle development mode behavior automatically
This simplifies the migration service logging while preserving all
functionality. The existing logger already handles development vs
production mode appropriately.
- Remove explicit transaction wrapping in migration service that caused
"cannot start a transaction within a transaction" errors
- Fix executeSet method call format to include both statement and values
properties as required by Capacitor SQLite plugin
- Update CapacitorPlatformService to properly handle multi-statement SQL
using executeSet for migration SQL blocks
- Ensure migration 004 (active_identity_management) executes atomically
without nested transaction conflicts
- Remove unnecessary try/catch wrapper
Fixes iOS simulator migration failures where:
- Migration 004 would fail with transaction errors
- executeSet would fail with "Must provide a set as Array of {statement,values}"
- Database initialization would fail after migration errors
Tested on iOS simulator with successful migration completion and
active_identity table creation with proper data migration.
- Single SQL source: Define MIG_004_SQL constant to eliminate duplicate SQL definitions
- Atomic execution: Add BEGIN IMMEDIATE/COMMIT/ROLLBACK around migration execution
- Name-only check: Skip migrations already recorded in migrations table
- Guarded operations: Replace table-wide cleanups with conditional UPDATE/DELETE
Changes:
- migration.ts: Extract migration 004 SQL into MIG_004_SQL constant
- migration.ts: Use guarded DELETE/UPDATE to prevent accidental data loss
- migrationService.ts: Wrap migration execution in explicit transactions
- migrationService.ts: Reorder checks to prioritize name-only skipping
Benefits:
- Prevents partial migration failures from corrupting database state
- Eliminates SQL duplication and maintenance overhead
- Maintains existing APIs and logging behavior
- Reduces risk of data loss during migration execution
Test results: All migration tests passing, ID generation working correctly
- Phase 1: Simplify Migration Definition ✅
* Remove duplicate SQL definitions from migration 004
* Eliminate recovery logic that could cause duplicate execution
* Establish single source of truth for migration SQL
- Phase 2: Fix Database Result Handling ✅
* Remove DatabaseResult type assumptions from migration code
* Implement database-agnostic result extraction with extractSingleValue()
* Normalize results from AbsurdSqlDatabaseService and CapacitorPlatformService
- Phase 3: Ensure Atomic Execution ✅
* Remove individual statement execution logic
* Execute migrations as single atomic SQL blocks only
* Add explicit rollback instructions and failure cause logging
* Ensure migration tracking is accurate
- Phase 4: Remove Excessive Debugging ✅
* Move detailed logging to development-only mode
* Preserve essential error logging for production
* Optimize startup performance by reducing logging overhead
* Maintain full debugging capability in development
Migration system now follows single-source, atomic execution principle
with improved performance and comprehensive error handling.
Timestamp: 2025-09-17 05:08:05 UTC