Commit Graph

1655 Commits

Author SHA1 Message Date
Jamie Pine
388b4dde28 cargo fmt 2026-01-24 16:14:21 -08:00
Jamie Pine
0bee40bcce refactor(network): update connection handling in ListLibraryDevicesQuery
- Modified the connection type retrieval to use the .borrow() method for improved compatibility with the updated Iroh API.
- Enhanced the logic for determining device connection status, ensuring accurate online/offline state updates based on current network conditions.
- Added a TODO comment regarding the potential removal of the is_online column for better clarity in future refactoring.
2026-01-24 16:08:48 -08:00
Jamie Pine
c09cc5942d refactor(network): update to use EndpointId and EndpointAddr
- Replaced NodeId with EndpointId in various components to align with the new Iroh v0.95+ API.
- Updated connection handling to utilize EndpointAddr instead of NodeAddr, reflecting changes in the underlying library.
- Adjusted discovery and connection logic to accommodate the immutability of EndpointAddr, enhancing overall network functionality.
2026-01-24 15:41:10 -08:00
tembo[bot]
d4d912bc3f chore(iroh): upgrade to v0.95.1 with breaking changes and migration steps 2026-01-24 21:58:43 +00:00
Jamie Pine
7a6d79011a refactor(device): improve device data handling and UI components
- Enhanced the device model to handle null values more gracefully during data extraction, ensuring robust error handling for OS version, hardware model, CPU details, and other attributes.
- Updated the DevicePanel to include new connection status icons and tooltips for better user experience.
- Integrated TooltipProvider in the Shell component for consistent tooltip functionality across the interface.
- Minor documentation updates in the getting started guide to reflect the latest version and supported platforms.
2026-01-24 13:23:41 -08:00
Jamie Pine
67ce501b4d fixed the infinite loop bug. The bidirectional
registration now only triggers when a new device is created
  (messaging.rs:395-448), not when updating an existing device.

  What changed:
  - Moved the tokio::spawn block from after the entire match
  existing statement into the Ok(None) branch (new device
  creation)
  - When a device is updated (already exists), it no longer sends
   a registration request back
2026-01-24 12:37:44 -08:00
Jamie Pine
cb51a6c1fb add better ConnectionInfo 2026-01-24 12:13:26 -08:00
Jamie Pine
26a730c0f2 add sd sync partners CLI 2026-01-24 11:09:09 -08:00
Jamie Pine
eb1de30d26 remove pairing expiration 2026-01-24 11:06:02 -08:00
Jamie Pine
8eca2d2bc0 chore(migration): simplify device table updates by dropping unused columns
- Updated the migration to leverage SQLite's ALTER TABLE DROP COLUMN feature, eliminating the need for table recreation.
- Removed the last_sync_at, last_state_watermark, and last_shared_watermark columns from the devices table, as they are no longer utilized.
- This change streamlines the database schema and improves migration efficiency.
2026-01-22 19:37:58 -08:00
Jamie Pine
37d19adb08 chore(sync): remove legacy last_sync_at column and related functionality
- Removed the last_sync_at field from the device model and related structures, as it is now superseded by per-peer watermark tracking in sync.db.
- Updated various components, including device registration, sync setup, and messaging protocols, to eliminate references to last_sync_at.
- Introduced a migration to drop the obsolete last_sync_at column from the devices table.
- Adjusted tests and helper functions to reflect the removal of last_sync_at, ensuring they align with the new sync architecture.
2026-01-22 19:37:43 -08:00
Jamie Pine
5673bd0eb4 feat(device): enhance device registration with comprehensive hardware specifications
- Added new fields for device OS, hardware model, CPU details, memory, and storage specifications to the device registration process.
- Updated the LibraryManager to handle the new device attributes during device creation and updates.
- Modified the sync setup action to include full device information when registering devices with remote peers.
- Enhanced the messaging protocol to support the transmission of detailed hardware specs during device registration.
- Introduced a new test for transitive sync backfill to validate the complete sync process across multiple devices.
2026-01-22 18:02:07 -08:00
Jamie Pine
5f1cc9b539 dman it 2026-01-22 15:55:50 -08:00
Jamie Pine
5df40abd07 chore(migration): remove obsolete device sync migration
- Deleted the migration file for transitioning device sync to shared resources as it is no longer needed.
2026-01-22 15:54:11 -08:00
Jamie Pine
966b7fea7a feat(sync): transition device sync to shared resources
- Updated device versioning to use the `updated_at` timestamp for conflict resolution.
- Refactored sync methods to support shared changes with HLC-based conflict resolution.
- Implemented automatic device discovery via shared sync, allowing devices to propagate changes to all members in the library.
- Added migration to transition existing devices to shared sync.
- Enhanced documentation to reflect changes in device ownership and sync methods.
2026-01-22 15:52:42 -08:00
Jamie Pine
33070761d2 Update core/src/service/network/protocol/pairing/vouching_queue.rs
Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
2026-01-22 15:00:18 -08:00
Jamie Pine
1d11e121dc feat(pairing): enhance proxy pairing functionality and add tests
- Introduced new event types for proxy pairing confirmation and vouching readiness in the event summarization.
- Implemented a reload mechanism for protocol configurations to support dynamic updates during runtime.
- Enhanced the PairingProtocolHandler to manage joiner pairing handshakes and improve session handling.
- Added comprehensive unit tests for proxy pairing, covering session creation, state transitions, and vouching logic.
- Updated configuration structures to include default proxy pairing settings for better integration.
2026-01-22 14:55:58 -08:00
Jamie Pine
c6ada5a07a refactor(pairing): update proxy pairing configuration and serialization methods
- Changed the import path for ProxyPairingConfig to app_config for better organization.
- Replaced bincode serialization with encode_to_vec for improved error handling in vouch payload signing and validation.
- Updated references to AcceptedDevice and RejectedDevice to remove unnecessary super:: prefix.
- Adjusted the vouching queue to return rows_affected as a method call for consistency.
- Enhanced TestConfigBuilder to include default proxy pairing configuration.
2026-01-22 13:21:13 -08:00
Jamie Pine
38922c2765 refactor(app): improve code readability and structure in UpdateAppConfigAction
- Reformatted the valid themes array for better readability.
- Enhanced the downcast reference for PairingProtocolHandler to improve clarity.
- Streamlined the event emission for config changes to enhance code consistency.
2026-01-22 12:56:35 -08:00
Jamie Pine
f41b54fe26 Merge branch 'main' into cursor/device-proxy-pairing-651c 2026-01-22 12:46:15 -08:00
Cursor Agent
2f7a88a625 refactor useNormalizedQuery to accept query name
Co-authored-by: ijamespine <ijamespine@me.com>
2026-01-22 07:00:52 +00:00
Jamie Pine
0264add338 feat(mobile): add GlassSearchBar and JobManagerPanel components, update Xcode scheme
- Introduced GlassSearchBar component for enhanced search functionality in the mobile app.
- Added JobManagerPanel component to manage and display job statuses.
- Updated Xcode scheme to use Debug configuration and LLDB debugger for improved development experience.
- Enhanced OverviewScreen to integrate the new components, improving user interaction and job visibility.
2026-01-21 16:15:58 -08:00
Jamie Pine
59184f8849 feat(mobile): integrate LiquidGlass for enhanced UI and add sidecar statistics
- Added LiquidGlass dependency to enhance visual effects in the GlassButton component.
- Updated GlassButton to support LiquidGlass effects based on device compatibility.
- Introduced PageIndicator component for improved navigation feedback in BrowseScreen.
- Enhanced OverviewScreen and HeroStats to display sidecar statistics, including count and size.
- Updated related files and dependencies to reflect these changes.
2026-01-21 14:58:12 -08:00
Jamie Pine
0f65d672ff feat(overview, mobile): Themes and improved OverviewScreen
- Introduced a new GlassButton component for enhanced UI interactions.
- Updated OverviewScreen to include animated blur effects and improved header behavior during scrolling.
- Added expo-blur dependency to enhance visual effects in the mobile application.
- Adjusted Podfile.lock and package.json to reflect new dependencies and ensure compatibility.
2026-01-21 12:26:34 -08:00
Cursor Agent
7070f0a597 fix: unique proxy keys and auto vouch
Co-authored-by: ijamespine <ijamespine@me.com>
2026-01-21 01:51:29 +00:00
Cursor Agent
4e78a0cb6b feat: add proxy pairing flow
Co-authored-by: ijamespine <ijamespine@me.com>
2026-01-21 00:47:31 +00:00
Jamie Pine
1b04b3b431 feat(sync): implement batch event emission for applied UUIDs during backfill
This commit enhances the BackfillManager by collecting successfully applied UUIDs during the backfill process and emitting batch resource events for UI reactivity. It also updates the protocol handler to emit resource events for insert and update changes, ensuring that the UI reflects the latest state. Additionally, a new test is added to verify that volume ResourceChanged events are emitted correctly during synchronization, improving the overall synchronization experience.
2026-01-20 14:55:31 -08:00
Jamie Pine
b9bfa5463c feat(sync): enhance foreign key handling and mime type synchronization
This commit introduces improvements to the synchronization process by adding foreign key conversion to UUIDs for cross-device compatibility. It also implements batch syncing of mime types before content identities to ensure proper dependency resolution. Additionally, the content identity model is updated to include mime type and kind ID handling, enhancing data integrity during sync operations. Debugging information is added to track registered models and their sync types, improving traceability in the sync process.
2026-01-20 14:00:27 -08:00
Jamie Pine
f2dc233f93 feat(file-explorer): enhance file handling and search functionality
This commit introduces several improvements to the file explorer and search functionalities. It adds a new `getFileKindForIcon` utility for better icon resolution based on file content kind. The search input validation now allows empty queries when sorting by `IndexedAt`, and the search query execution has been optimized to handle empty queries more efficiently. Additionally, the `ContentKind` utility has been refactored and centralized in the `ts-client`, improving code organization and reusability across components. Updates to various components ensure consistent usage of the new utilities, enhancing the overall user experience.
2026-01-20 10:36:18 -08:00
Jamie Pine
ebe7d36ed5 feat(recents): add RecentsView for displaying recently indexed files
This commit introduces the RecentsView component, which allows users to view recently indexed files sorted by the indexed_at timestamp. The view integrates seamlessly with existing components, ensuring consistent interactions such as keyboard navigation and drag-to-select. Additionally, it updates the Explorer context to support entering and exiting recents mode, enhancing the overall file browsing experience.
2026-01-20 10:35:48 -08:00
Jamie Pine
118baf6ec2 fix(location, volume): update device_id parameter for query methods and enhance filtering logic
This commit modifies the `query_for_sync` methods in both the Location and Volume models to rename the `_device_id` parameter to `device_id` for consistency. Additionally, it enhances the filtering logic to ensure proper device ownership checks during database queries, improving data integrity and synchronization processes. The comments have also been updated to reflect these changes.
2026-01-19 14:20:45 -08:00
Jamie Pine
df1ee8aec5 feat(overview): add ActionButtons component and integrate into OverviewScreen
This commit introduces a new ActionButtons component to the OverviewScreen, providing quick access to device pairing, sync setup, and storage addition functionalities. The component enhances user interaction by allowing users to perform these actions directly from the overview interface. Additionally, updates to the DevicePanel and HeroStats components improve overall functionality and UI consistency.
2026-01-18 06:21:02 -08:00
Jamie Pine
1f4f2f0e82 Merge branch 'main' into tembo/ios-volume-detection-implementation 2026-01-17 08:05:20 -08:00
Jamie Pine
f6a68d3724 feat(settings): enhance settings UI and add device configuration updates
This commit introduces several improvements to the settings interface, including the addition of device name and slug fields in the GeneralSettings component. It also refactors the settings structure to utilize a more consistent context for state management. The UI has been updated with animations and improved styling for a better user experience. Additionally, the app now supports logging configuration updates and integrates React Query Devtools for enhanced debugging capabilities.
2026-01-17 07:39:54 -08:00
tembo[bot]
96aa593f29 feat(volume): Add iOS volume detection implementation 2026-01-17 15:00:48 +00:00
Jamie Pine
6d51ba6cec Merge branch 'main' into cursor/settings-screen-implementation-98d1 2026-01-16 14:04:22 -08:00
Jamie Pine
ff2d631a29 refactor(logging): change info logs to debug level for improved log granularity
This commit updates several logging statements across various modules, changing them from `info` to `debug` level. This adjustment aims to reduce log verbosity during normal operations while retaining detailed logs for debugging purposes. The changes enhance the overall logging strategy, allowing for better performance and easier troubleshooting without cluttering the log output in production environments.
2026-01-16 08:26:00 -08:00
Jamie Pine
1b8e39d16b feat(volume): add volume eject functionality and update context menu
This commit introduces a new feature for safely ejecting removable volumes, enhancing the volume management capabilities. It adds the `VolumeEjectAction`, `VolumeEjectInput`, and `VolumeEjectOutput` structures to handle the eject operation. Additionally, the context menu in the UI is updated to include an option for ejecting volumes, improving user experience. The volume display logic is also refined to ensure accurate representation of volume properties. These changes collectively enhance the overall functionality and usability of the volume management system.
2026-01-16 07:13:22 -08:00
Jamie Pine
bfc4cc639b feat(volume): introduce debug volume detection example and enhance fingerprinting methods
This commit adds a new example for debugging volume detection, showcasing how to detect and display various volume properties, including auto-track eligibility and primary volume identification. Additionally, it refactors the VolumeFingerprint struct to provide stable fingerprinting methods for primary, external, and network volumes, improving the reliability of volume identification across different scenarios. These changes enhance the overall volume management capabilities and provide a clearer debugging interface for developers.
2026-01-16 06:40:53 -08:00
Jamie Pine
7a466e5dfa refactor(volume): update volume handling and output structure
This commit refactors the volume management system by replacing the VolumeItem struct with the Volume struct in the VolumeListOutput, streamlining the data representation. It enhances the volume display logic to utilize display names and adds helper functions to skip serializing unknown disk and volume types. Additionally, the JobManager is updated to include a new field for event emission control, improving job tracking and management. These changes improve overall clarity and efficiency in volume handling and job management.
2026-01-16 03:30:56 -08:00
Jamie Pine
45fb1f2e9b feat(ephemeral): add entry counting and snapshot saving enhancements
This commit introduces a new method to count entries under a specific path prefix in the EphemeralIndex, improving the ability to query indexed paths. Additionally, it adds a new snapshot saving method that includes the root path, enhancing the restoration process for indexed data. The VolumeItem struct is updated to include a total file count from the ephemeral index, and the VolumeListQuery is modified to retrieve this count for indexed volumes, improving overall data management and user experience.
2026-01-16 01:30:02 -08:00
Jamie Pine
3e5640524c refactor(ephemeral): update indexing structure to use EntryId for UUID and content kind mappings
This commit refactors the EphemeralIndex and IndexSnapshot structures to replace PathBuf keys with EntryId keys in the entry_uuids and content_kinds HashMaps. This change enhances memory efficiency and aligns the indexing system with the new EntryId management strategy. Additionally, it updates related methods to ensure proper handling of UUIDs and content kinds based on EntryId, improving overall performance and consistency in the indexing process.
2026-01-15 10:24:07 -08:00
Jamie Pine
635f4e54b3 feat(ephemeral): add detailed memory breakdown and UUID management for indexing
This commit introduces a detailed memory breakdown feature for the ephemeral indexing process, allowing users to view memory usage by component. It also enhances UUID management by implementing lazy generation and assignment of UUIDs during indexing and searching operations. These changes improve memory tracking and optimize UUID handling, contributing to better performance and user experience in the indexing system.
2026-01-15 09:58:26 -08:00
Jamie Pine
57a8180277 feat(daemon): refactor daemon build process to skip if already running
This commit modifies the daemon startup logic to check if the daemon is already running before attempting to build it. If the daemon is active, the build process is skipped, and the existing instance is used. This change improves efficiency by avoiding unnecessary builds and enhances the user experience during development. Additionally, the build process logging has been retained for clarity when a build is performed.
2026-01-15 09:58:09 -08:00
Jamie Pine
fc6a0dadac feat(job): disable auto-subscription for job activity and enhance job context management
This commit removes the auto-subscription feature for job activity, streamlining the job registration process. Additionally, it enhances the JobManager by adding fields for job name and action context, allowing for better tracking and management of job-related information. These changes improve the overall clarity and efficiency of job handling within the system.
2026-01-15 07:53:01 -08:00
Jamie Pine
564928060b feat(indexing): improve ephemeral indexing with batch processing and event emission control
This commit enhances the ephemeral indexing process by introducing batch processing for entries, which reduces lock contention and improves performance. It also adds a new parameter to control event emissions based on the indexing context (volume indexing vs. directory browsing). Additionally, the progress reporting mechanism is updated to reflect actual file counts, ensuring more accurate completion metrics during indexing operations. These changes optimize the overall efficiency and user experience of the indexing system.
2026-01-15 07:52:41 -08:00
Jamie Pine
860c491ca9 feat(job): add event emission control for job dispatching
This commit introduces a new method, `should_emit_events`, to the job traits, allowing jobs to specify whether they should emit progress events. The JobManager is updated to utilize this new method, ensuring that event emissions are controlled based on job type (e.g., background jobs). This enhancement improves the flexibility of job handling and optimizes event management during job execution, particularly for ephemeral and volume indexing jobs.
2026-01-15 05:47:36 -08:00
Jamie Pine
cd73d9b7cb feat(indexing): enhance indexing configuration to support volume indexing
This commit updates the IndexerJobConfig to include a new parameter for volume indexing, allowing for more accurate progress tracking during indexing operations. The changes ensure that both directory browsing and volume indexing can be handled appropriately, with modifications made to related components to accommodate this new functionality. Additionally, progress reporting is improved to reflect the total volume capacity when applicable, enhancing the user experience during indexing tasks.
2026-01-15 05:31:24 -08:00
Jamie Pine
ae512d8c0b feat(snapshot): implement snapshot persistence for ephemeral indexes
This commit introduces a new snapshot mechanism for ephemeral indexes, allowing for fast restoration between sessions. The snapshot functionality utilizes zero-copy binary serialization with zstd compression, significantly reducing load times from over 10 minutes to just 1-2 seconds. The implementation includes methods for saving and loading snapshots, as well as enhancements to the existing indexing structure to support this feature. Additionally, the codebase is updated to ensure compatibility with the new snapshot format, improving overall performance and user experience.
2026-01-15 02:09:06 -08:00
Jamie Pine
b3398de08b feat(migration): fix FTS5 search index to include directories
This commit introduces a new migration that updates the FTS5 search index by removing filters that excluded directories. It drops and recreates triggers for insert, update, and delete operations without kind filters, ensuring that directories are included in the search index. Additionally, existing directories are added to the index, improving search functionality. The migration also includes a rollback mechanism to revert to the previous state if needed.
2026-01-14 18:10:29 -08:00