Skip to content

Fix/493 profile sync on desktop not working with old already existing profiles#504

Merged
felix-schultz merged 10 commits intodevfrom
fix/493-profile-sync-on-desktop-not-working-with-old-already-existing-profiles
Feb 13, 2026
Merged

Fix/493 profile sync on desktop not working with old already existing profiles#504
felix-schultz merged 10 commits intodevfrom
fix/493-profile-sync-on-desktop-not-working-with-old-already-existing-profiles

Conversation

@felix-schultz
Copy link
Copy Markdown
Member

This pull request includes several important improvements across the codebase, focusing on enhanced documentation for contributors, improved dependency security and consistency, and UI/UX enhancements for the desktop app. The most significant changes are a major rewrite of the CONTRIBUTING.md for clarity and onboarding, a switch to Rustls-based TLS for all network dependencies, and improvements to loading/error states and iOS-specific navigation in the desktop app.

Documentation & Contributor Experience:

  • Completely rewrote CONTRIBUTING.md to provide clearer onboarding instructions, project structure overview, contribution areas, workflow, code guidelines, and links to resources. The new guide is more concise, beginner-friendly, and actionable.

Dependency Security & Consistency:

  • Updated all reqwest, lettre, and related dependencies to use rustls-tls instead of native-tls, improving security and cross-platform compatibility. Also updated markitdown, rig-core, and sentry crates to disable default features and enable Rustls-related features. [1] [2] [3] [4] [5] [6] [7]

Desktop App UI/UX Improvements:

  • Added a skeleton loading state (TableViewLoadingState) for the table view and improved error handling for table counts in apps/desktop/app/library/config/explore/page.tsx, resulting in a smoother user experience during data loads. [1] [2] [3]
  • Implemented iOS Tauri-specific swipe gesture for opening the config menu and improved detection of iOS desktop environments in apps/desktop/app/library/config/layout.tsx. [1] [2]
  • Refined logic for determining the "use app" route, ensuring only active events/routes are considered and improving fallback behavior.

Desktop App Platform Hardening:

  • Added IOSWebviewHardening component and new data-desktop-app="true" attributes in apps/desktop/app/layout.tsx to improve platform detection and security for iOS webviews. [1] [2] [3]

Build & Debug Configuration:

  • Introduced a new [profile.dev] section in Cargo.toml to reduce debug info and optimize build size for Android APKs, helping avoid ZIP32 limits.

…t and improve filename generation

feat(api): enhance profile synchronization to allow media backfill for missing icons and thumbnails

fix(ui): adjust mobile header and sidebar padding for safe area insets

feat(ui): add remote execution support indicators in model cards and detail sheets

style(ui): improve global CSS for iOS Tauri app compatibility and scroll containment

refactor(oauth): streamline OAuth service to handle API proxying for web platforms and improve error handling
…APIs

- Moved the "url" and "path" properties within their respective objects to improve clarity and structure in the desktop and macOS schemas.
- Updated descriptions for "url" and "path" properties to maintain consistency.
- Reintroduced the "ShellScopeEntryAllowedArgs" definition to ensure command argument validation is properly documented and structured.
… components

- Changed sticky top positioning from var(--fl-safe-top) to 0 in PatManagementPage, layout, and runtime-vars page components for consistent behavior.
- Adjusted padding in AppSidebar components to account for safe bottom variable.
- Updated AppSidebar to include safe area insets for mobile devices.
- Modified getProfileBits method to include profile ID in the API call and handle cases where the profile ID is not available.
- Added auth_method configuration to flow-like.config.json for better OAuth flexibility.
- Implemented new route for retrieving profile bits in the API.
- Enhanced OAuth token exchange to support both Basic JSON and Form POST methods based on provider configuration.
- Introduced a new caching mechanism for profile bits retrieval to improve performance.
- Updated UI components to handle new state management for bit selection and chat interfaces.
- Improved styling and layout for mobile headers and sidebars to accommodate safe area insets.
- Added support for Tauri in multiple Cargo.toml files across the project.
- Updated `write_cell.rs` and `write_cell_html.rs` to utilize a cached workbook approach for improved performance and reduced memory usage.
- Implemented `flush_workbook` function to handle workbook saving more efficiently.
- Enhanced `insert_db.rs` to support Arrow-based batch inserts from TDMS files, including new iterator structures for reading TDMS channel data.
- Refined metadata handling in `metadata.rs` to align with the new TDMS library structure.
- Added error handling improvements across ONNX nodes to provide clearer execution failure messages.
- Introduced a safe conversion function in `markitdown.rs` to handle potential panics during document conversion.
- Updated LanceDB integration to support record batch insertion, improving database interaction efficiency.
- Renamed Blog.css to blog.css for consistency.
- Enhanced blog post layout with improved header and content sections.
- Added responsive design adjustments for better viewing on various devices.
- Updated structured data scripts to use inline attributes for better performance.
- Improved accessibility by adding alt text to images.
- Refined tag and RSS feed presentation for clarity and usability.
- Fixed minor CSS issues to ensure consistent styling across blog components.
…lt features

feat: add loading state to TableView component in explore page

feat: enhance package.json scripts for Android development

chore: update @xyflow/react to version 12.10.0 across multiple packages

chore: update blog post for new features and improvements

fix: adjust Cargo.toml for various packages to use rustls variants

fix: modify log aggregation state to include loading state management

style: improve global CSS for safe area insets

refactor: update IMAP and SMTP connections to use tokio-rustls
- Android App Setup
- Fixed IOS App Save Spaces
- Added Data Deletion Page on Website
- Performance Improvements for Embedding, Chunking and Chat
"Content-Type": file.type || "application/octet-stream",
};

if (url.includes(".blob.core.windows.net")) {

Check failure

Code scanning / CodeQL

Incomplete URL substring sanitization High

'
.blob.core.windows.net
' can be anywhere in the URL, and arbitrary hosts may come before or after it.

Copilot Autofix

AI about 2 months ago

In general, to fix this kind of issue you should parse the URL and inspect its host (and optionally protocol) instead of checking for a substring on the full URL. That way, .blob.core.windows.net appearing in the path or query string does not affect the logic, and you can ensure the host truly is (or ends with) the Azure Blob Storage domain.

The best fix here is to parse the url with the standard URL constructor available in the browser, retrieve hostname, and only add the x-ms-blob-type header when the hostname is exactly an Azure Blob host or a subdomain under blob.core.windows.net. This preserves the current intended behavior (“apply Azure-specific header for Azure Blob URLs”) while avoiding matches on arbitrary hosts that merely contain the substring.

Concretely, in apps/web/app/settings/profiles/page.tsx within uploadToSignedUrl, replace the if (url.includes(".blob.core.windows.net")) check with code that:

  1. Safely constructs a URL object from the string.
  2. Extracts hostname.
  3. Checks hostname === "blob.core.windows.net" or hostname.endsWith(".blob.core.windows.net").
  4. Only then sets headers["x-ms-blob-type"] = "BlockBlob".

If parsing fails (malformed URL), we can simply skip setting the Azure-specific header and let the upload proceed with generic headers, which is safer than guessing based on a substring. No new imports are necessary; the global URL API is available in the browser environment where this code runs ("use client" React component).


Suggested changeset 1
apps/web/app/settings/profiles/page.tsx

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/apps/web/app/settings/profiles/page.tsx b/apps/web/app/settings/profiles/page.tsx
--- a/apps/web/app/settings/profiles/page.tsx
+++ b/apps/web/app/settings/profiles/page.tsx
@@ -138,8 +138,17 @@
 		"Content-Type": file.type || "application/octet-stream",
 	};
 
-	if (url.includes(".blob.core.windows.net")) {
-		headers["x-ms-blob-type"] = "BlockBlob";
+	try {
+		const parsedUrl = new URL(url);
+		const hostname = parsedUrl.hostname.toLowerCase();
+		if (
+			hostname === "blob.core.windows.net" ||
+			hostname.endsWith(".blob.core.windows.net")
+		) {
+			headers["x-ms-blob-type"] = "BlockBlob";
+		}
+	} catch {
+		// If the URL cannot be parsed, fall back to generic headers.
 	}
 
 	const response = await fetch(url, {
EOF
@@ -138,8 +138,17 @@
"Content-Type": file.type || "application/octet-stream",
};

if (url.includes(".blob.core.windows.net")) {
headers["x-ms-blob-type"] = "BlockBlob";
try {
const parsedUrl = new URL(url);
const hostname = parsedUrl.hostname.toLowerCase();
if (
hostname === "blob.core.windows.net" ||
hostname.endsWith(".blob.core.windows.net")
) {
headers["x-ms-blob-type"] = "BlockBlob";
}
} catch {
// If the URL cannot be parsed, fall back to generic headers.
}

const response = await fetch(url, {
Copilot is powered by AI and may make mistakes. Always verify output.
@felix-schultz felix-schultz merged commit d6b9d96 into dev Feb 13, 2026
11 of 18 checks passed
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @felix-schultz, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly advances the Flow-Like project by expanding its mobile capabilities, bolstering network security, and refining the user experience. The changes ensure a more consistent and secure environment across platforms, particularly for mobile users, while also streamlining the contribution process for developers.

Highlights

  • Mobile Platform Support: Initial Android build setup has been integrated, alongside comprehensive iOS webview hardening for improved safe area handling, scroll behavior, and deep linking.
  • Dependency Security & Consistency: All network-related Rust dependencies, including reqwest, lettre, sentry, and rig-core, have been migrated to use Rustls-based TLS for enhanced security and cross-platform compatibility.
  • UI/UX Enhancements: Desktop and web applications now feature skeleton loading states for table views, improved error handling for data counts, and refined logic for determining 'use app' routes. iOS-specific swipe gestures have been added for menu navigation.
  • Contributor Experience: The CONTRIBUTING.md document has been completely rewritten to provide clearer onboarding instructions, project structure overview, and contribution guidelines for new developers.
  • Build Optimization: A new [profile.dev] section has been added to Cargo.toml to reduce debug information and optimize build size for Android APKs, addressing potential ZIP32 limits.
  • Data Handling & Storage: TDMS file insertion into LanceDB has been refactored for batch processing using Arrow RecordBatches, and Excel workbook handling now includes caching and robust persistence mechanisms. Profile image uploads and syncing have been improved with better path resolution and media backfill logic.
Changelog
  • CONTRIBUTING.md
    • Rewrote the entire document to provide clearer onboarding instructions, project structure, contribution areas, workflow, and code guidelines.
  • Cargo.lock
    • Updated various Rust dependencies, notably removing async-native-tls and adding rustls, rustls-pemfile, rustls-pki-types, tokio-postgres-rustls, webpki-roots, der_derive, flagset, tls_codec, tls_codec_derive, x509-cert.
    • Removed az, cargo_metadata (older version), command_attr, error-chain, extended, fixed, mini-moka, postgres-native-tls, pulldown-cmark (older version), skeptic, triomphe, typesize, typesize-derive, uwl, hyper-tls (older version).
    • Updated datafusion-table-providers and markitdown git revisions.
    • Downgraded proc-macro-crate and itertools versions.
    • Changed reqwest base64 dependency version.
  • Cargo.toml
    • Switched sea-orm from runtime-tokio-native-tls to runtime-tokio-rustls feature.
    • Configured sentry to use default-features = false and enabled specific features including rustls.
    • Configured rig-core to use default-features = false and enabled reqwest-rustls feature.
    • Switched lettre from tokio1-native-tls to tokio1-rustls-tls feature.
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
    • Updated markitdown git revision, configured to use default-features = false and enabled rustls-tls feature.
    • Added [profile.dev] section to optimize Android APK build size by reducing debug info.
  • apps/backend/docker-compose/api/Cargo.toml
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
  • apps/backend/docker-compose/sink-services/Cargo.toml
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
  • apps/backend/kubernetes/executor/Cargo.toml
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
  • apps/desktop/app/layout.tsx
    • Imported IOSWebviewHardening component.
    • Added data-desktop-app="true" attribute to the html and body tags.
    • Rendered the IOSWebviewHardening component.
  • apps/desktop/app/library/config/explore/page.tsx
    • Added TableViewLoadingState component for displaying a skeleton loading UI.
    • Implemented logic to show TableViewLoadingState when data is loading and not yet available.
    • Improved error handling for table counts, displaying "Error loading count" instead of "Loading..." on failure.
  • apps/desktop/app/library/config/layout.tsx
    • Imported useRef and useMemo.
    • Implemented isIosTauri detection logic to identify iOS Tauri environments.
    • Added a useEffect hook to handle iOS-specific swipe gestures for opening the config menu.
    • Refined the useAppHref logic to consider only active events and routes, and improved fallback behavior.
    • Updated Link components to use the new useAppHref for navigation.
    • Added a floating menu button for iOS Tauri environments.
  • apps/desktop/app/onboarding/layout.tsx
    • Updated CSS padding-top and padding-bottom to use var(--fl-safe-top) and var(--fl-safe-bottom) for safe area insets.
  • apps/desktop/app/settings/profiles/page.tsx
    • Modified the updateProfile function to ensure created and updated timestamps are correctly set for both the main profile and its hub_profile when updates occur.
  • apps/desktop/app/store/components/StoreHero.tsx
    • Removed ring-1 ring-background/40 class from Avatar component.
    • Changed ShareButton variant from outline to default and added shadow-md class.
  • apps/desktop/app/store/components/StoreInfo.tsx
    • Added canUseApp prop to the DetailsCard component.
    • Modified the display logic for action buttons ("Use App", "Get", "Request join") based on canUseApp and visibility status.
  • apps/desktop/app/store/components/useStoreData.ts
    • Imported EVENT_CONFIG.
    • Implemented logic to determine usableEvents and useAppHref based on active events and routes.
    • Updated the onUse callback to navigate using useAppHref.
    • Modified onJoinOrRequest to call onBuy if the app has a price.
    • Added canUseApp to the returned data.
  • apps/desktop/app/store/page.tsx
    • Passed the newly computed canUseApp prop to the DetailsCard component.
  • apps/desktop/app/use/page.tsx
    • Adjusted the redirection logic to /store when no usable events are found, now explicitly checking for events.data and queriesPending to prevent premature redirects.
  • apps/desktop/components/add-profile.tsx
    • Added created and updated timestamps to the hub_profile and the main profile object during creation.
  • apps/desktop/components/app-sidebar.tsx
    • Imported useEffect and useRef.
    • Introduced IOSQuickMenuTrigger component, which includes iOS-specific swipe gesture detection for opening the sidebar.
    • Updated the main and SidebarInset components to use CSS variables (--fl-safe-top, --fl-safe-bottom) for safe area padding.
  • apps/desktop/components/auth-provider.tsx
    • Imported getCurrent from @tauri-apps/plugin-deep-link and useInvalidateInvoke.
    • Introduced AUTH_CHANGED_EVENT and emitAuthChanged for custom auth state change events.
    • Added UserManagerContext to provide the UserManager instance.
    • Refactored OIDC URL handling to support universal links and deep links, including processing startup deep links and closing OIDC flow windows.
    • Implemented an onAuthChanged listener to reload user context upon authentication changes.
    • Added a useEffect hook to invalidate relevant backend states when authentication status changes.
  • apps/desktop/components/ios-webview-hardening.tsx
    • Added a new component IOSWebviewHardening to manage iOS webview behavior.
    • Implements logic for safe area insets, viewport height synchronization, and handling programmatic scrolling to ensure correct UI display on iOS.
  • apps/desktop/components/tauri-provider.tsx
    • Refined isLocalFilePath and introduced isHttpPath, isAssetProxyPath, and shouldReplaceWithServerImage for more robust image path handling.
    • Added requestProfileMediaUploadUrls to facilitate fallback media uploads for profiles.
    • Modified syncProfiles to include logic for backfilling missing icon/thumbnail media for existing profiles that have local files but no remote media.
    • Updated the localProfile.hub_profile.updated logic to ensure correct timestamp updates.
  • apps/desktop/index.html
    • Added data-desktop-app="true" attribute to the html tag.
    • Included an inline JavaScript snippet for early safe-area probe on mobile devices to prevent initial UI shifts.
  • apps/desktop/package.json
    • Added new scripts for Android development and building (dev:android-studio, dev:android, dev:android:host, build:android).
    • Updated @xyflow/react dependency version.
  • apps/desktop/src-tauri/Cargo.toml
    • Added plist dependency for manipulating property lists.
    • Updated flow-like-catalog features to include tauri.
    • Configured sentry, serenity, and teloxide to disable default features and enable specific rustls-related features for TLS.
    • Added objc2 dependency for iOS targets.
  • apps/desktop/src-tauri/Info.plist
    • Updated CFBundleShortVersionString and CFBundleVersion to 0.0.9.
    • Added UIViewControllerBasedStatusBarAppearance key.
    • Included CFBundleURLTypes to register the flow-like URL scheme for deep linking.
  • apps/desktop/src-tauri/build.rs
    • Implemented ensure_ios_deeplink_scheme and ensure_ios_associated_domain functions to programmatically modify Info.plist and entitlements for iOS deep linking and universal links.
    • Added log linking for Android builds.
  • apps/desktop/src-tauri/gen/android/.editorconfig
    • Added a new EditorConfig file for Android project.
  • apps/desktop/src-tauri/gen/android/.gitignore
    • Added a new Gitignore file for Android project.
  • apps/desktop/src-tauri/gen/android/app/.gitignore
    • Added a new Gitignore file for Android app.
  • apps/desktop/src-tauri/gen/android/app/build.gradle.kts
    • Added a new Gradle build script for the Android app.
  • apps/desktop/src-tauri/gen/android/app/proguard-rules.pro
    • Added a new ProGuard rules file for the Android app.
  • apps/desktop/src-tauri/gen/android/app/src/main/AndroidManifest.xml
    • Added a new AndroidManifest.xml file, including deep link intent filters for https://app.flow-like.com and flow-like:// schemes.
  • apps/desktop/src-tauri/gen/android/app/src/main/java/com/flow_like/app/MainActivity.kt
    • Added a new MainActivity.kt file for Android, setting environment variables, handling window insets, and attaching a JavaScript bridge for safe area insets.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
    • Added a new drawable XML for launcher foreground.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml
    • Added a new drawable XML for launcher background.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/layout/activity_main.xml
    • Added a new layout XML for main activity.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
    • Added a new mipmap XML for adaptive launcher icon.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
    • Added a new mipmap XML for adaptive round launcher icon.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/values-night/themes.xml
    • Added a new themes XML for night mode.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/values/colors.xml
    • Added a new colors XML.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/values/strings.xml
    • Added a new strings XML.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/values/themes.xml
    • Added a new themes XML.
  • apps/desktop/src-tauri/gen/android/app/src/main/res/xml/file_paths.xml
    • Added a new file paths XML.
  • apps/desktop/src-tauri/gen/android/build.gradle.kts
    • Added a new Gradle build script for Android.
  • apps/desktop/src-tauri/gen/android/buildSrc/build.gradle.kts
    • Added a new Gradle build script for buildSrc.
  • apps/desktop/src-tauri/gen/android/buildSrc/src/main/java/com/flow_like/app/kotlin/BuildTask.kt
    • Added a new Kotlin BuildTask file.
  • apps/desktop/src-tauri/gen/android/buildSrc/src/main/java/com/flow_like/app/kotlin/RustPlugin.kt
    • Added a new Kotlin RustPlugin file.
  • apps/desktop/src-tauri/gen/android/gradle.properties
    • Added a new Gradle properties file.
  • apps/desktop/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties
    • Added a new Gradle wrapper properties file.
  • apps/desktop/src-tauri/gen/android/gradlew
    • Added a new gradlew script.
  • apps/desktop/src-tauri/gen/android/gradlew.bat
    • Added a new gradlew.bat script.
  • apps/desktop/src-tauri/gen/android/settings.gradle
    • Added a new settings.gradle file.
  • apps/desktop/src-tauri/gen/apple/flow-like-desktop_iOS/Info.plist
    • Updated CFBundleShortVersionString and CFBundleVersion to 0.0.9.
    • Added UIViewControllerBasedStatusBarAppearance key.
    • Included CFBundleURLTypes to register the flow-like URL scheme.
  • apps/desktop/src-tauri/gen/apple/flow-like-desktop_iOS/flow-like-desktop_iOS.entitlements
    • Added com.apple.developer.associated-domains for universal links.
  • apps/desktop/src-tauri/src/deeplink.rs
    • Refactored deep link handling to support universal links (https://app.flow-like.com/...) in addition to custom scheme deep links (flow-like://...).
    • Introduced is_app_universal_link and handle_universal_link functions for better routing.
  • apps/desktop/src-tauri/src/event_bus.rs
    • Modified LogMeta::flush to accept lance_write_options for LanceDB writes.
    • Updated event_bus_dir to check the HOME environment variable as a fallback for cache directory.
  • apps/desktop/src-tauri/src/functions/app/tables.rs
    • Modified db_connection to set write_options for LanceDBVectorStore based on the app state configuration.
  • apps/desktop/src-tauri/src/functions/flow/run.rs
    • Modified LogMeta::flush to accept lance_write_options for LanceDB writes.
  • apps/desktop/src-tauri/src/functions/settings/profiles.rs
    • Added decode_asset_proxy_path and now_iso helper functions for path and timestamp management.
    • Updated add_bit, remove_bit, change_profile_image, and profile_update_app to automatically update the updated timestamp of profiles.
    • Modified read_profile_icon to use decode_asset_proxy_path for resolving asset paths.
    • Modified get_profile_icon_path to correctly handle asset proxy paths and filter out HTTP/HTTPS paths.
  • apps/desktop/src-tauri/src/lib.rs
    • Added harden_ios_webview_scroll and IOS_SAFE_AREA_JS for iOS webview hardening, disabling overscroll and adjusting content insets.
    • Implemented Android-specific environment variable setup for HOME, CACHE_DIR, TMPDIR, and LANCE_CACHE_DIR to ensure correct storage paths.
    • Updated Sentry initialization to be deferred on Android as well, similar to iOS, to improve startup performance.
    • Added delayed calls to harden_ios_webview_scroll and eval(IOS_SAFE_AREA_JS) for iOS, and a similar JS injection for Android, to apply webview hardening after initialization.
  • apps/desktop/src-tauri/src/settings.rs
    • Refactored app_data_root, app_cache_root, default_logs_dir, default_temporary_dir, ensure_app_dirs, and settings_store_path to provide consistent mobile storage roots for both iOS and Android.
  • apps/desktop/src-tauri/tauri.conf.json
    • Updated the application version to 0.0.9.
    • Extended the deep-link plugin configuration for mobile to include https scheme with app.flow-like.com host and various pathPrefixes for universal links.
  • apps/docs/astro.config.mjs
    • Updated the documentation site title to "Flow-Like Docs" and description for better SEO.
    • Added a robots meta tag to improve search engine indexing.
  • apps/docs/public/robots.txt
    • Added a standard robots.txt file to control search engine crawling.
  • apps/docs/src/pages/index.astro
    • Updated the page title and description for improved SEO.
  • apps/embedded/package.json
    • Updated @xyflow/react dependency version.
  • apps/web/app/layout.tsx
    • Updated the title, description, and keywords for improved SEO.
    • Added alternates and googleBot meta tags for better search engine visibility.
  • apps/web/app/library/config/events/page.tsx
    • Modified to dynamically retrieve the OAuth service and API base URL based on the user's profile hub.
  • apps/web/app/library/config/explore/page.tsx
    • Added TableViewLoadingState component for displaying a skeleton loading UI.
    • Implemented logic to show TableViewLoadingState when data is loading and not yet available.
  • apps/web/app/library/config/layout.tsx
    • Refined the useAppHref logic to consider only active events and routes, and improved fallback behavior.
    • Updated Link components to use the new useAppHref for navigation.
  • apps/web/app/library/config/pages/page.tsx
    • Modified to dynamically retrieve the OAuth service and API base URL based on the user's profile hub.
  • apps/web/app/robots.ts
    • Added a new file to dynamically generate robots.txt.
  • apps/web/app/settings/profiles/page.tsx
    • Added helper functions for image handling (getImageExtension, pickImageFile, uploadToSignedUrl).
    • Refactored upsertProfile to use requestProfileUpsert and handle image uploads to signed URLs.
  • apps/web/app/sitemap.ts
    • Added a new file to dynamically generate sitemap.xml.
  • apps/web/app/store/components/StoreInfo.tsx
    • Added canUseApp prop to the DetailsCard component.
    • Modified the display logic for action buttons ("Use App", "Get", "Request join") based on canUseApp and visibility status.
  • apps/web/app/store/components/useStoreData.ts
    • Imported EVENT_CONFIG.
    • Implemented logic to determine usableEvents and useAppHref based on active events and routes.
    • Updated the onUse callback to navigate using useAppHref.
    • Modified onJoinOrRequest to call onBuy if the app has a price.
    • Added canUseApp to the returned data.
  • apps/web/app/store/page.tsx
    • Passed the newly computed canUseApp prop to the DetailsCard component.
  • apps/web/app/use/page.tsx
    • Adjusted the redirection logic to /store when no usable events are found, now explicitly checking for events.data and queriesPending to prevent premature redirects.
  • apps/web/components/app-sidebar.tsx
    • Updated the main and SidebarInset components to use CSS variables (--fl-safe-top, --fl-safe-bottom) for safe area padding.
  • apps/web/components/oauth-callback-handler.tsx
    • Modified processCallback to dynamically retrieve the OAuth service based on the apiBaseUrl from pending authentication.
  • apps/web/lib/oauth/service.ts
    • Added normalizeApiBaseUrl, getDefaultOAuthApiBaseUrl, and getOAuthApiBaseUrl for consistent API base URL handling.
    • Refactored createOAuthService to dynamically determine whether to proxy requests based on the platform and provider requirements.
    • Updated fetchUserInfo, revokeToken, startDeviceAuthorization, and pollDeviceAuthorization to utilize the new proxying logic.
  • apps/web/lib/web-states/bit-state.ts
    • Modified getProfileBits to fetch bits for a specific profileId with a limit, improving efficiency.
  • apps/web/lib/web-states/board-state.ts
    • Updated OAuth checks to use the dynamically retrieved OAuth service and API base URL.
    • Changed the copilot chat API endpoint from /api/v1/chat/copilot to /api/v1/ai/copilot/chat.
  • apps/web/lib/web-states/event-state.ts
    • Updated OAuth checks to use the dynamically retrieved OAuth service and API base URL.
  • apps/web/package.json
    • Updated @xyflow/react dependency version.
  • apps/web/public/.well-known/apple-app-site-association
    • Added a new file for Apple App Site Association, enabling universal links for iOS.
  • apps/web/public/.well-known/assetlinks.json
    • Added a new file for Android Asset Links, enabling deep linking for Android.
  • apps/web/public/_headers
    • Added a new file to set Content-Type headers for .well-known files.
  • apps/website/astro.config.mjs
    • Expanded the list of supported locales for internationalization.
    • Removed the sitemap() integration, likely replaced by manual sitemap generation.
  • apps/website/package.json
    • Modified the build script to include NODE_OPTIONS=--max-old-space-size=8192 to prevent out-of-memory errors during large builds.
  • apps/website/public/robots.txt
    • Added a standard robots.txt file to control search engine crawling.
  • apps/website/src/components/24h/Solution24h.astro
    • Added imports for buildAlternateLinks and getOgLocale for improved SEO.
    • Included alternate links and og:locale meta tags in the HTML head.
  • apps/website/src/components/backend-provider.tsx
    • Expanded EmptyBackend to include more empty state implementations (apiState, apiKeyState, widgetState, pageState, registryState).
    • Improved error handling and robustness in EmptyBackendProvider when loading board data.
  • apps/website/src/components/blog-footer.tsx
    • Added a "Data Deletion" link to the footer.
  • apps/website/src/components/compare/ComparePage.astro
    • Added imports for buildAlternateLinks and getOgLocale for improved SEO.
    • Included alternate links and og:locale meta tags in the HTML head.
  • apps/website/src/components/data-deletion/DataDeletionPage.astro
    • Added a new Astro component for the data deletion policy page, including detailed information on data handling, deletion processes, and user rights.
  • apps/website/src/components/download/DownloadPage.astro
    • Updated the CSS import path from Blog.css to blog.css.
    • Added imports for buildAlternateLinks for SEO.
    • Included canonical, lang, and alternateLinks in the data passed to BlogLayout.
  • apps/website/src/components/download/Hero.astro
    • Introduced studioName constant.
    • Updated the primary download button text to include studioName.
  • apps/website/src/components/footer.tsx
    • Added a "Data Deletion" link to the footer.
  • apps/website/src/components/header.tsx
    • Introduced webAppUrl and studioName constants.
    • Added an "Open Web App" button and updated the "Download" button text to include Studio.
  • apps/website/src/components/post-card.astro
    • Added no-underline class to post links.
  • apps/website/src/components/pricing/PricingPage.astro
    • Added imports for tCommon, buildAlternateLinks, and getOgLocale for improved SEO.
    • Updated the page title and description for better SEO.
    • Included alternate links and og:locale meta tags in the HTML head.
  • apps/website/src/content/blog/2026-02-11-flow-like-on-your-phone.mdx
    • Added a new blog post titled "Your Workflow Engine Runs on Your Phone. No, Really."
  • apps/website/src/content/blog/2026-02-26-alpha-0-0-9.mdx
    • Updated the content of the blog post to include "Android Build", "Node Updates", and "UI / UX Improvements".
  • apps/website/src/i18n/locales/en.ts
    • Updated the main meta title and description for improved SEO, emphasizing local-first, Rust-powered, and type-safe aspects.
    • Revised the hero headline and description to reflect the open-source and trustworthy nature of the engine.
  • apps/website/src/i18n/locales/pages/common-de.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-en.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-es.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-fr.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-it.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-ja.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-ko.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-nl.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-pt.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-sv.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/common-zh.ts
    • Added translation for footer.dataDeletion.
  • apps/website/src/i18n/locales/pages/data-deletion-de.ts
    • Added new German translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-en.ts
    • Added new English translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-es.ts
    • Added new Spanish translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-fr.ts
    • Added new French translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-it.ts
    • Added new Italian translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-ja.ts
    • Added new Japanese translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-ko.ts
    • Added new Korean translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-nl.ts
    • Added new Dutch translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-pt.ts
    • Added new Portuguese translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-sv.ts
    • Added new Swedish translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion-zh.ts
    • Added new Chinese translation file for the data deletion page.
  • apps/website/src/i18n/locales/pages/data-deletion.ts
    • Added new TypeScript file to export data deletion translations.
  • apps/website/src/i18n/locales/pages/index.ts
    • Exported data deletion translations.
  • apps/website/src/layouts/Blog-Layout.astro
    • Updated the CSS import path from Blog.css to blog.css.
    • Significantly refactored SEO meta tags, including author, robots, referrer, alternate links, rss feed, and comprehensive Open Graph and Twitter meta tags.
    • Added JSON-LD structured data for BlogPosting or WebPage.
    • Adjusted main element styling for blog posts.
  • apps/website/src/layouts/home-layout.astro
    • Modified structured data script tags to use is:inline set:html={JSON.stringify(...)} for improved rendering.
  • apps/website/src/lib/seo.ts
    • Added a new TypeScript file containing SEO utility functions, including SEO_LOCALES, buildAlternateLinks, and getOgLocale.
  • apps/website/src/pages/blog/[slug].astro
    • Updated the CSS import path from Blog.css to blog.css.
    • Refactored the blog post layout, including a new header with cover image, improved tag display, and a sticky table of contents.
  • apps/website/src/pages/callback.astro
    • Modified the JavaScript logic to prioritize universal links for iOS devices and include a fallback to legacy deep links.
    • Added pagehide and visibilitychange event listeners to handle page transitions more robustly.
  • apps/website/src/pages/data-deletion.astro
    • Added a new Astro page for the English data deletion policy.
  • apps/website/src/pages/de/data-deletion.astro
    • Added a new Astro page for the German data deletion policy.
  • apps/website/src/pages/desktop/callback.astro
    • Modified the JavaScript logic to prioritize universal links for iOS devices and include a fallback to legacy deep links.
    • Added pagehide and visibilitychange event listeners to handle page transitions more robustly.
  • apps/website/src/pages/es/data-deletion.astro
    • Added a new Astro page for the Spanish data deletion policy.
  • apps/website/src/pages/fr/data-deletion.astro
    • Added a new Astro page for the French data deletion policy.
  • apps/website/src/pages/index.astro
    • Updated SEO meta tags (title, description, keywords) for better search engine optimization.
    • Added JSON-LD structured data for FAQPage.
  • apps/website/src/pages/it/data-deletion.astro
    • Added a new Astro page for the Italian data deletion policy.
  • apps/website/src/pages/ja/data-deletion.astro
    • Added a new Astro page for the Japanese data deletion policy.
  • apps/website/src/pages/ko/data-deletion.astro
    • Added a new Astro page for the Korean data deletion policy.
  • apps/website/src/pages/nl/data-deletion.astro
    • Added a new Astro page for the Dutch data deletion policy.
  • apps/website/src/pages/pt/data-deletion.astro
    • Added a new Astro page for the Portuguese data deletion policy.
  • apps/website/src/pages/rss.xml.js
    • Updated the RSS feed title and description.
    • Modified the link format to include /blog/ prefix.
  • apps/website/src/pages/sv/data-deletion.astro
    • Added a new Astro page for the Swedish data deletion policy.
  • apps/website/src/pages/tags/[tag].astro
    • Updated the CSS import path from Blog.css to blog.css.
    • Refactored the tag-specific blog post layout, including a new header and improved display of posts.
  • apps/website/src/pages/tags/index.astro
    • Updated the CSS import path from Blog.css to blog.css.
    • Refactored the tags index page layout, including a new header and improved display of tags.
  • apps/website/src/pages/thirdparty/callback.astro
    • Modified the JavaScript logic to prioritize universal links for iOS devices and include a fallback to legacy deep links.
    • Added pagehide and visibilitychange event listeners to handle page transitions more robustly.
  • apps/website/src/pages/zh/data-deletion.astro
    • Added a new Astro page for the Chinese data deletion policy.
  • apps/website/src/sections/hero.astro
    • Introduced webAppUrl and studioName constants.
    • Added an "Open Web App" button and updated the "Download" button text to include Studio.
    • Added a new paragraph for hero.enterprise_note.
  • apps/website/src/sections/reading.astro
    • Added an alt attribute to the image for accessibility.
  • apps/website/src/styles/blog.css
    • Removed article from some CSS selectors and adjusted styles for better consistency.
  • bun.lock
    • Updated @xyflow/react and bun-types dependency versions.
  • flow-like.config.json
    • Added auth_method: "basic_json" to the Notion OAuth provider configuration.
  • package.json
    • Added new scripts for Android development and building (dev:android-studio, dev:android, dev:android:host, build:android).
  • packages/api/Cargo.toml
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
  • packages/api/src/openapi.rs
    • Added get_profile_bits to the OpenAPI specification.
  • packages/api/src/routes/oauth.rs
    • Introduced AuthMethod enum to differentiate between OAuth authentication methods (FormPost, BasicJson).
    • Added new API routes for device flow (/device/start/{provider_id}, /device/poll/{provider_id}), user information (/userinfo/{provider_id}), and token revocation (/revoke/{provider_id}).
    • Refactored token_exchange and token_refresh functions to use the new AuthMethod enum and helper functions for robust error handling and configuration retrieval.
  • packages/api/src/routes/profile.rs
    • Added get_profile_bits module.
    • Modified generate_upload_url to ensure .webp extension for DB filenames and handle empty upload extensions.
    • Modified delete_old_image and sign_profile_image to consistently use the .webp extension for image IDs.
    • Added a new route for get_profile_bits.
  • packages/api/src/routes/profile/get_profile_bits.rs
    • Added a new file implementing the API endpoint to retrieve profile bits, including pagination, language filtering, and caching.
  • packages/api/src/routes/profile/sync_profiles.rs
    • Modified sync_profiles to include logic for backfilling missing icon/thumbnail media for existing profiles, even if their updated_at timestamp is older.
  • packages/catalog/Cargo.toml
    • Added tauri feature for flow-like-catalog-llm/tauri.
    • Updated postgres and mysql features to use rustls variants from datafusion-table-providers.
  • packages/catalog/core/Cargo.toml
    • Added tauri feature.
  • packages/catalog/data/Cargo.toml
    • Replaced tdms dependency with tdms-rs (a git dependency).
    • Updated postgres and mysql features to use rustls variants from datafusion-table-providers.
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
  • packages/catalog/data/src/data/db/vector.rs
    • Modified CreateLocalDatabaseNode to set write_options for LanceDBVectorStore based on the execution context's app state configuration.
  • packages/catalog/data/src/data/db/vector/list_tables.rs
    • Modified ListTablesNode to set write_options for LanceDBVectorStore based on the execution context's app state configuration.
  • packages/catalog/data/src/data/excel.rs
    • Introduced CachedExcelWorkbook enum to represent either umya_spreadsheet or calamine workbooks.
    • Added excel_cache_key, get_or_open_workbook, serialize_workbook, and flush_workbook functions for efficient workbook caching and persistence.
  • packages/catalog/data/src/data/excel/copy_worksheet.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/excel/insert_column.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/excel/insert_row.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/excel/new_worksheet.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/excel/read_cell.rs
    • Added calamine_data_to_string and read_cell_from_book helper functions for consistent cell value extraction.
    • Modified the run method to use get_or_open_workbook and handle both umya_spreadsheet and calamine workbooks.
  • packages/catalog/data/src/data/excel/remove_column.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/excel/remove_row.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/excel/write_cell.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/excel/write_cell_html.rs
    • Modified the run method to utilize get_or_open_workbook and flush_workbook for handling Excel workbooks.
  • packages/catalog/data/src/data/tdms/insert_db.rs
    • Significantly refactored the TDMS insertion logic to use Arrow RecordBatches for batch insertion into LanceDB.
    • Introduced several new structs and enums (TdmsSourceFile, TdmsRawTimestamp, TdmsValueIter, TdmsStringIter, TdmsScalar, TdmsColumnBuffer, TdmsChannelState) for efficient TDMS data processing and type conversion.
  • packages/catalog/data/src/data/tdms/metadata.rs
    • Updated to use tdms-rs types and improved formatting for data types and property values.
  • packages/catalog/llm/Cargo.toml
    • Added tauri feature.
  • packages/catalog/llm/src/embedding/text/chunk_text.rs
    • Modified the run method to use tokio::task::spawn_blocking for text chunking, offloading blocking operations from the async runtime.
  • packages/catalog/llm/src/embedding/text/chunk_text_char.rs
    • Modified the run method to use tokio::task::spawn_blocking for text chunking, offloading blocking operations from the async runtime.
  • packages/catalog/llm/src/llm/find_llm.rs
    • Modified get_best_model to get_best_model_filtered and added only_hosted logic, which is true for mobile targets.
  • packages/catalog/onnx/Cargo.toml
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
  • packages/catalog/onnx/src/batch.rs
    • Changed the error message for missing execute feature to use flow_like_types::anyhow!.
  • packages/catalog/onnx/src/ocr.rs
    • Changed the error message for missing execute feature to use flow_like_types::anyhow!.
  • packages/catalog/onnx/src/utils.rs
    • Changed the error message for missing execute feature to use flow_like_types::anyhow!.
  • packages/catalog/processing/src/markitdown.rs
    • Added safe_convert_bytes function to safely call markitdown conversion, catching panics.
    • Modified ExtractDocumentNode, ExtractDocumentAiNode, ExtractDocumentsNode, and ExtractDocumentsAiNode to use safe_convert_bytes.
    • Adjusted ExtractDocumentsNode to flatten results into a single vector of DocumentPage.
  • packages/catalog/std/src/control/while_loop.rs
    • Added a call to InternalNode::trigger_missing_dependencies within the while loop to ensure dependencies are re-triggered.
  • packages/catalog/std/src/utils/string.rs
    • Added escape and unescape modules.
  • packages/catalog/std/src/utils/string/escape.rs
    • Added a new node StringEscapeNode to escape special characters in a string.
  • packages/catalog/std/src/utils/string/replace.rs
    • Added is_regex input pin and logic to support regex-based string replacements.
  • packages/catalog/std/src/utils/string/unescape.rs
    • Added a new node StringUnescapeNode to unescape special character sequences in a string.
  • packages/catalog/web/Cargo.toml
    • Replaced async-native-tls with tokio-rustls, rustls-pki-types, and webpki-roots for TLS handling.
    • Configured serenity and teloxide to use rustls features.
  • packages/catalog/web/src/mail/imap.rs
    • Changed ImapSession type to use tokio_rustls::client::TlsStream.
    • Implemented rustls_connector and NoVerifier for Rustls-based TLS connections, including options for accepting invalid certificates.
  • packages/catalog/web/src/mail/smtp.rs
    • Changed SmtpTransportTls type to use tokio_rustls::client::TlsStream.
    • Implemented rustls_connector for Rustls-based TLS connections, similar to IMAP.
  • packages/core/src/flow/execution.rs
    • Modified LogMeta::flush to include retry logic and handle potential LanceDB table corruption (e.g., due to SELinux restrictions on Android) by dropping and recreating the table.
    • Added write_options parameter to LogMeta::flush for LanceDB write configurations.
  • packages/core/src/models/embedding/local.rs
    • Modified embedding logic to use tokio::task::spawn_blocking for blocking operations, improving async runtime performance.
  • packages/core/src/models/image_embedding/local.rs
    • Modified image embedding logic to use tokio::task::spawn_blocking for blocking operations, improving async runtime performance.
  • packages/core/src/state.rs
    • Added lance_write_options to FlowLikeCallbacks struct.
    • Added register_lance_write_options method to FlowLikeConfig to set LanceDB write options.
  • packages/core/src/utils/cache.rs
    • Added a fallback to check the HOME environment variable for the cache directory.
  • packages/core/src/utils/http.rs
    • Changed the client field to OnceLock<reqwest::Client> for lazy initialization, avoiding early network framework calls on iOS.
  • packages/executor/Cargo.toml
    • Added tauri feature.
    • Configured reqwest to use default-features = false and enabled rustls-tls feature.
  • packages/executor/src/execute.rs
    • Modified the execute function to pass lance_write_options to LogMeta::flush.
  • packages/executor/src/streaming.rs
    • Modified the execute_inner function to pass lance_write_options to LogMeta::flush.
  • packages/model-provider/Cargo.toml
    • Updated target configurations for ort and fastembed to include android and disable download-binaries for mobile targets.
  • packages/storage/Cargo.toml
    • Added lance-io and lance dependencies.
    • Added async-trait dependency.
  • packages/storage/src/android_store.rs
    • Added a new file implementing AndroidSafeObjectStore and AndroidSafeWrapper. These wrap existing ObjectStore implementations to provide Android-safe behavior by avoiding hard_link() calls, which are problematic due to SELinux restrictions.
    • Introduced android_write_options to configure LanceDB writes for Android.
  • packages/storage/src/databases/vector/lancedb.rs
    • Imported RecordBatchIterator.
    • Added write_options field to LanceDBVectorStore and a set_write_options method.
    • Implemented insert_record_batch for batch insertion of Arrow RecordBatches.
    • Modified insert and upsert methods to utilize the configured write_options.
  • packages/storage/src/files/store/local_store.rs
    • Added an android_safe flag to LocalObjectStore and a new_with_android_safe constructor.
    • Modified put_opts, copy_if_not_exists, and rename_if_not_exists to use Android-safe implementations when the android_safe flag is set.
  • packages/storage/src/lib.rs
    • Exported android_store, lance, and lance_io modules.
  • packages/types/Cargo.toml
    • Configured reqwest to use default-features = false and enabled rustls-tls feature, removing default-tls.
  • packages/ui/components/flow/flow-pin/variable-types/bit-select.tsx
    • Imported useCallback and useState.
    • Modified profileBits useInvoke to only refetch when the select dropdown is open.
    • Added handleOpenChange to trigger refetching on dropdown open.
    • Changed SelectItem content to display the bit's English name or ID.
  • packages/ui/components/flow/flow-runs.tsx
    • Imported Loader2Icon.
    • Added isLoading state to useLogAggregation.
    • Display Loader2Icon and a loading message when runs are being fetched.
  • packages/ui/components/interfaces/chat-default.tsx
    • Imported Loader2Icon.
    • Introduced messagesLoaded and hasMessages states for better loading management.
    • Added messagesRef to maintain a stable reference to messages.
    • Display Loader2Icon and a loading message when chat messages are not yet loaded.
    • Updated useEffect dependencies for message handling.
  • packages/ui/components/interfaces/chat-default/chat.tsx
    • Imported useTransition.
    • Added isSendingRef to track sending state and startMessagesTransition for smoother UI updates.
    • Implemented a useEffect hook to reset chat state when switching sessions.
    • Updated useEffect for message syncing to use startMessagesTransition and isSendingRef.
    • Adjusted main and inner div container heights to h-full and max-h-full respectively.
    • Adjusted padding for messages container and chatbox for better mobile responsiveness.
  • packages/ui/components/interfaces/chat-default/chatbox.tsx
    • Updated the placeholder text for the chat input.
    • Changed the rows attribute for the textarea to allow a minimum of 1 row.
    • Adjusted padding for the tool bar and send button sections.
    • Changed the send button size for better touch targets.
  • packages/ui/components/interfaces/chat-default/message.tsx
    • Modified the useEffect hook for the show/hide toggle to use ResizeObserver, providing more accurate and performant detection of content overflow.
  • packages/ui/components/pages/home/tutorial-dialog.tsx
    • Updated the paddingBottom style to use the --fl-safe-bottom CSS variable for safe area insets.
  • packages/ui/components/ui/model-card.tsx
    • Added isEmbeddingBit and supportsRemoteEmbeddingExecution helper functions.
    • Introduced canRunRemotely and isEmbeddingModel props to ModelCardGridVariant and ModelCardListVariant.
    • Added new badges for "Remote" and "Local only" to indicate model execution capabilities.
  • packages/ui/components/ui/model-detail-sheet.tsx
    • Imported isEmbeddingBit and supportsRemoteEmbeddingExecution.
    • Added canRunRemotely and isEmbeddingModel variables.
    • Included new badges for "Remote" and "Local only" in the model detail sheet.
  • packages/ui/components/ui/sidebar.tsx
    • Added paddingTop and paddingBottom styles using var(--fl-safe-top) and var(--fl-safe-bottom) to the Sidebar and inner div elements for safe area handling.
  • packages/ui/global.css
    • Introduced --fl-safe-top and --fl-safe-bottom CSS variables to manage safe area insets.
    • Added desktop app hardening styles for html and body to ensure correct layout and scroll behavior on mobile platforms.
Activity
  • The pull request introduces a wide array of changes across the codebase, indicating a significant development effort.
  • The author has provided a detailed breakdown of changes in the PR description, categorized by area of impact.
  • Numerous file additions and modifications suggest a comprehensive approach to implementing mobile support, security enhancements, and UI/UX improvements.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses desktop profile sync issues with existing/legacy profiles while also hardening cross-platform behavior (iOS/Android/desktop app), standardizing Rust networking dependencies on rustls, and improving UI loading/error states across the UI packages and apps.

Changes:

  • Fix/profile-sync enhancements: media backfill, canonical .webp handling, and a new profile-bits API endpoint consumed by web/UI.
  • Security/consistency: migrate multiple Rust crates from native-tls/default features to rustls-based TLS and adjust platform-specific ML/dependency gating.
  • UX/platform hardening: add safe-area handling, skeleton/loading states, routing fallbacks, and deep link / universal link support.

Reviewed changes

Copilot reviewed 238 out of 262 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
packages/ui/state/log-aggregation-state.ts Add loading state + error-safe refetch behavior for log aggregation.
packages/ui/package.json Bump @xyflow/react.
packages/ui/global.css Desktop-app safe-area + scroll containment hardening CSS.
packages/ui/components/ui/sidebar.tsx Apply safe-area padding to sidebar.
packages/ui/components/ui/model-detail-sheet.tsx Add “Remote” / “Local only” capability badges.
packages/ui/components/pages/home/tutorial-dialog.tsx Use shared safe-area var for padding.
packages/ui/components/interfaces/chat-default/message.tsx Replace timeout-based measurement with ResizeObserver.
packages/ui/components/interfaces/chat-default/chatbox.tsx Tweak placeholder + sizing/spacing for chat input UI.
packages/ui/components/flow/flow-runs.tsx Show loading indicator while runs are being fetched.
packages/ui/components/flow/flow-pin/variable-types/bit-select.tsx Fetch profile bits on-demand when selector opens.
packages/types/Cargo.toml Switch reqwest to rustls (disable default features).
packages/storage/src/lib.rs Export Android store module + expose lance crates.
packages/storage/Cargo.toml Add lance/lance-io deps + async-trait.
packages/model-provider/Cargo.toml Treat Android as “mobile target” for ort download-binary disabling.
packages/executor/src/streaming.rs Pass optional Lance write options into log flushing.
packages/executor/src/execute.rs Pass optional Lance write options into log flushing.
packages/executor/Cargo.toml Add tauri feature + switch reqwest to rustls.
packages/core/src/utils/http.rs Lazily init reqwest client (OnceLock) to avoid iOS runloop issues.
packages/core/src/utils/cache.rs Add $HOME/.cache fallback for cache directory.
packages/core/src/state.rs Add lance_write_options callback registration.
packages/core/src/models/image_embedding/local.rs Move embedding to spawn_blocking to avoid blocking async runtime.
packages/core/src/models/embedding/local.rs Move embedding to spawn_blocking to avoid blocking async runtime.
packages/catalog/web/src/mail/smtp.rs Replace async-native-tls with tokio-rustls for SMTP node.
packages/catalog/web/Cargo.toml Add rustls deps; switch serenity/teloxide to rustls-friendly configs.
packages/catalog/std/src/utils/string/unescape.rs Add new “String Unescape” node.
packages/catalog/std/src/utils/string/replace.rs Add optional regex replace support + node version bump.
packages/catalog/std/src/utils/string/escape.rs Add new “String Escape” node.
packages/catalog/std/src/utils/string.rs Export new string nodes (escape/unescape).
packages/catalog/std/src/control/while_loop.rs Re-trigger missing dependencies inside loop iterations.
packages/catalog/onnx/src/utils.rs Use flow_like_types::anyhow! in non-execute code paths.
packages/catalog/onnx/src/ocr.rs Use flow_like_types::anyhow! in non-execute code paths.
packages/catalog/onnx/src/batch.rs Use flow_like_types::anyhow! in non-execute code paths.
packages/catalog/onnx/Cargo.toml Dev-dep reqwest switched to rustls.
packages/catalog/llm/src/llm/find_llm.rs Restrict to hosted models on mobile / non-tauri builds.
packages/catalog/llm/src/embedding/text/chunk_text_char.rs Run chunking in spawn_blocking.
packages/catalog/llm/src/embedding/text/chunk_text.rs Run chunking in spawn_blocking.
packages/catalog/llm/Cargo.toml Add tauri feature wiring.
packages/catalog/data/src/data/tdms/metadata.rs Switch TDMS implementation to tdms-rs and update parsing logic.
packages/catalog/data/src/data/excel/write_cell_html.rs Use cached workbook helpers instead of re-reading/writing per op.
packages/catalog/data/src/data/excel/write_cell.rs Use cached workbook helpers instead of re-reading/writing per op.
packages/catalog/data/src/data/excel/remove_row.rs Use cached workbook helpers instead of re-reading/writing per op.
packages/catalog/data/src/data/excel/remove_column.rs Use cached workbook helpers instead of re-reading/writing per op.
packages/catalog/data/src/data/excel/new_worksheet.rs Use cached workbook helpers; improve sheet creation behavior.
packages/catalog/data/src/data/excel/insert_row.rs Use cached workbook helpers; keep ref-adjust behavior.
packages/catalog/data/src/data/excel/insert_column.rs Use cached workbook helpers; keep ref-adjust behavior.
packages/catalog/data/src/data/db/vector/list_tables.rs Apply Lance write options when listing tables.
packages/catalog/data/src/data/db/vector.rs Apply Lance write options when creating cached DB.
packages/catalog/data/Cargo.toml Switch TDMS dep; use rustls DB provider feature variants; reqwest rustls dev-dep.
packages/catalog/core/Cargo.toml Add tauri feature wiring.
packages/catalog/Cargo.toml Add tauri feature wiring.
packages/api/src/routes/profile/sync_profiles.rs Add “one-time” media backfill when timestamps prevent metadata updates.
packages/api/src/routes/profile.rs Canonical .webp DB filename handling + add /profile/{id}/bits route.
packages/api/src/openapi.rs Include new profile bits endpoint in OpenAPI.
packages/api/src/routes/profile/get_profile_bits.rs New endpoint: list bits for a profile with language/limit/offset.
packages/api/Cargo.toml Switch reqwest blocking client to rustls.
package.json Add Android dev/build scripts; remove hard-coded ORT path in build:xcode script.
flow-like.config.json Add Notion auth_method.
apps/website/src/sections/reading.astro Improve image alt text for accessibility.
apps/website/src/sections/hero.astro Update CTAs (download, web app link) and messaging.
apps/website/src/pages/zh/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/zh/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/thirdparty/callback.astro Improve desktop/iOS deep link vs universal link fallback behavior.
apps/website/src/pages/tags/index.astro Redesign tags index + rename CSS import casing.
apps/website/src/pages/tags/[tag].astro Redesign tag page + lead/compact post layout.
apps/website/src/pages/sv/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/sv/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/rss.xml.js Brand RSS + fix blog link prefix.
apps/website/src/pages/pt/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/pt/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/nl/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/nl/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/ko/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/ko/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/ja/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/ja/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/it/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/it/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/index.astro Update SEO copy + add FAQ structured data + inline JSON-LD scripts.
apps/website/src/pages/fr/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/fr/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/es/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/es/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/desktop/callback.astro Universal link + legacy deep link fallback for iOS.
apps/website/src/pages/de/index.astro Inline structured data scripts via set:html.
apps/website/src/pages/de/data-deletion.astro Add localized data deletion page.
apps/website/src/pages/data-deletion.astro Add English data deletion page entrypoint.
apps/website/src/pages/callback.astro Universal link + legacy deep link fallback for iOS.
apps/website/src/lib/seo.ts Add alternate hreflang link builder + OG locale helper.
apps/website/src/layouts/home-layout.astro Inline structured data scripts via set:html.
apps/website/src/i18n/locales/pages/index.ts Export data deletion translations.
apps/website/src/i18n/locales/pages/data-deletion.ts Add translation registry + tDataDeletion().
apps/website/src/i18n/locales/pages/common-zh.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-sv.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-pt.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-nl.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-ko.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-ja.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-it.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-fr.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-es.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-en.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/pages/common-de.ts Add footer “data deletion” translation.
apps/website/src/i18n/locales/en.ts Update marketing copy strings.
apps/website/src/content/blog/2026-02-26-alpha-0-0-9.mdx Expand draft release notes.
apps/website/src/components/pricing/PricingPage.astro Add hreflang alternates + OG locale + i18n-based title/desc.
apps/website/src/components/post-card.astro Prevent underline styling on clickable cards.
apps/website/src/components/header.tsx Add “Open Web App” link + “Studio” labeling.
apps/website/src/components/footer.tsx Add data deletion footer link.
apps/website/src/components/download/Hero.astro Add “Studio” naming + styling tweaks.
apps/website/src/components/download/DownloadPage.astro Add hreflang alternates + canonical handling.
apps/website/src/components/compare/ComparePage.astro Add hreflang alternates + OG locale.
apps/website/src/components/blog-footer.tsx Add data deletion footer link.
apps/website/src/components/bi/ModernBI.astro Add hreflang alternates + OG locale.
apps/website/src/components/24h/Solution24h.astro Add hreflang alternates + OG locale.
apps/website/public/robots.txt Add robots + sitemap reference.
apps/website/package.json Increase Node heap for astro build.
apps/website/astro.config.mjs Expand i18n locales; adjust integrations list.
apps/web/public/_headers Set content-types for well-known association files.
apps/web/public/.well-known/assetlinks.json Add Android app links association file.
apps/web/public/.well-known/apple-app-site-association Add Apple universal links association file.
apps/web/package.json Bump @xyflow/react.
apps/web/lib/web-states/event-state.ts Instantiate OAuth service with hub-derived API base URL.
apps/web/lib/web-states/board-state.ts Instantiate OAuth service with hub-derived API base URL; update copilot URL.
apps/web/lib/web-states/bit-state.ts Fetch profile bits via new API endpoint.
apps/web/lib/oauth-service.ts Normalize API base URL and create per-base-url OAuth service instances.
apps/web/components/oauth-callback-handler.tsx Use OAuth service derived from pending callback base URL.
apps/web/components/app-sidebar.tsx Apply safe-area padding to main/inset containers.
apps/web/app/use/page.tsx Improve reroute behavior while queries are pending.
apps/web/app/store/page.tsx Pass canUseApp into Store UI components.
apps/web/app/store/components/StoreInfo.tsx Hide “Use App” when not applicable; refine CTA states/labels.
apps/web/app/sitemap.ts Add static sitemap routes.
apps/web/app/robots.ts Add static robots metadata with sitemap.
apps/web/app/library/config/pages/page.tsx Use hub-derived OAuth service in config pages.
apps/web/app/library/config/layout.tsx Refine “Use App” link logic to consider active routes/events only.
apps/web/app/library/config/explore/page.tsx Add table view skeleton loading state.
apps/web/app/library/config/events/page.tsx Use hub-derived OAuth service in events settings page.
apps/web/app/layout.tsx Improve SEO metadata (title/description/robots/alternates).
apps/embedded/package.json Bump @xyflow/react.
apps/docs/src/pages/index.astro Update docs landing SEO copy.
apps/docs/public/robots.txt Add robots + sitemap reference.
apps/docs/astro.config.mjs Update docs site title/description and add robots meta.
apps/desktop/src-tauri/tauri.conf.json Add universal link deep-link config + bump version.
apps/desktop/src-tauri/src/functions/settings/profiles.rs Fix updated timestamps + handle asset proxy icon paths.
apps/desktop/src-tauri/src/functions/flow/run.rs Pass optional Lance write options into log flush.
apps/desktop/src-tauri/src/functions/app/tables.rs Apply Lance write options for vector DB usage.
apps/desktop/src-tauri/src/event_bus.rs Pass optional Lance write options + add HOME fallback.
apps/desktop/src-tauri/gen/apple/flow-like-desktop_iOS/flow-like-desktop_iOS.entitlements Add associated domains (universal links).
apps/desktop/src-tauri/gen/apple/flow-like-desktop_iOS/Info.plist Bump version + add URL scheme + status bar config.
apps/desktop/src-tauri/gen/android/settings.gradle Android project wiring for Tauri build.
apps/desktop/src-tauri/gen/android/gradlew.bat Add gradle wrapper for Windows.
apps/desktop/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties Configure gradle wrapper distribution.
apps/desktop/src-tauri/gen/android/gradle.properties Android gradle defaults (AndroidX, JVM args, etc.).
apps/desktop/src-tauri/gen/android/buildSrc/src/main/java/com/flow_like/app/kotlin/RustPlugin.kt Custom Gradle plugin to build Rust libs per ABI.
apps/desktop/src-tauri/gen/android/buildSrc/src/main/java/com/flow_like/app/kotlin/BuildTask.kt Gradle task to invoke Tauri CLI for Rust builds.
apps/desktop/src-tauri/gen/android/buildSrc/build.gradle.kts BuildSrc plugin configuration for Android project.
apps/desktop/src-tauri/gen/android/build.gradle.kts Root gradle buildscript for Android.
apps/desktop/src-tauri/gen/android/app/src/main/res/xml/file_paths.xml FileProvider paths for Android.
apps/desktop/src-tauri/gen/android/app/src/main/res/values/themes.xml Android theme including cutout/status bar transparency.
apps/desktop/src-tauri/gen/android/app/src/main/res/values/strings.xml Android app strings.
apps/desktop/src-tauri/gen/android/app/src/main/res/values/colors.xml Android color resources.
apps/desktop/src-tauri/gen/android/app/src/main/res/values-night/themes.xml Night theme variant.
apps/desktop/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp Android launcher assets.
apps/desktop/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp Android launcher assets.
apps/desktop/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp Android launcher assets.
apps/desktop/src-tauri/gen/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml Adaptive icon config.
apps/desktop/src-tauri/gen/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml Adaptive icon config.
apps/desktop/src-tauri/gen/android/app/src/main/res/layout/activity_main.xml Android main activity layout.
apps/desktop/src-tauri/gen/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml Vector foreground icon resource.
apps/desktop/src-tauri/gen/android/app/src/main/AndroidManifest.xml Android manifest including deep links + FileProvider.
apps/desktop/src-tauri/gen/android/app/proguard-rules.pro Proguard rules stub.
apps/desktop/src-tauri/gen/android/app/build.gradle.kts Android app Gradle config + rust plugin wiring.
apps/desktop/src-tauri/gen/android/app/.gitignore Ignore generated Android artifacts.
apps/desktop/src-tauri/gen/android/.gitignore Ignore Android workspace/build artifacts.
apps/desktop/src-tauri/gen/android/.editorconfig Editor config for generated Android project.
apps/desktop/src-tauri/Info.plist Add URL scheme + formatting cleanup.
apps/desktop/src-tauri/Cargo.toml Add plist dep; enable catalog tauri feature; switch sentry to rustls.
apps/desktop/package.json Add Android dev/build scripts; bump @xyflow/react.
apps/desktop/index.html Mark desktop app + add early safe-area probe script.
apps/desktop/components/add-profile.tsx Set created/updated timestamps on profile creation.
apps/desktop/app/use/page.tsx Improve reroute behavior while queries are pending.
apps/desktop/app/store/page.tsx Pass canUseApp into Store UI components.
apps/desktop/app/store/components/StoreInfo.tsx Hide “Use App” when not applicable; refine CTA states/labels.
apps/desktop/app/store/components/StoreHero.tsx UI tweaks for avatar + share button.
apps/desktop/app/settings/profiles/page.tsx Update updated timestamps on local profile edits.
apps/desktop/app/onboarding/layout.tsx Use shared safe-area vars for padding.
apps/desktop/app/library/config/explore/page.tsx Add table view skeleton loading + count error UI.
apps/desktop/app/layout.tsx Add data-desktop-app attribute + iOS webview hardening component.
apps/backend/kubernetes/executor/Cargo.toml Switch reqwest to rustls.
apps/backend/docker-compose/sink-services/Cargo.toml Switch reqwest to rustls.
apps/backend/docker-compose/api/Cargo.toml Switch reqwest to rustls.
Cargo.toml Switch sea-orm runtime to rustls, standardize rustls-based deps, add dev profile tuning for Android APK size/ZIP32.

Comment on lines 264 to +267
let tcp_stream = inner_plain.into_inner();
let tls_stream = tls().connect(&host, tcp_stream).await?;
let connector = rustls_connector(true);
let server_name = rustls_pki_types::ServerName::try_from(host.clone())?;
let tls_stream = connector.connect(server_name, tcp_stream).await?;
Copy link

Copilot AI Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the STARTTLS path, the TLS connector is created with certificate verification disabled (custom NoVerifier). This makes the SMTP connection vulnerable to MITM attacks. Use a verifying rustls config by default (root store + hostname validation) and only allow the insecure mode behind an explicit opt-in input (e.g. accept_invalid_tls, default false) for local/testing use cases.

Copilot uses AI. Check for mistakes.
Comment on lines +108 to +119
let chunks = tokio::task::spawn_blocking(move || -> flow_like_types::Result<Vec<String>> {
if markdown {
let config = ChunkConfig::new(capacity as usize).with_overlap(overlap as usize)?;
let splitter = TextSplitter::new(config);
Ok(splitter
.chunks(&text)
.map(|c| c.to_string())
.collect::<Vec<String>>())
} else {
let config = ChunkConfig::new(capacity as usize).with_overlap(overlap as usize)?;
let splitter = MarkdownSplitter::new(config);
Ok(splitter
Copy link

Copilot AI Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ChunkTextChar uses TextSplitter when markdown is true and MarkdownSplitter when false, which is the opposite of what the pin description says (Markdown-aware splitting when true). Swap the splitter selection so markdown=true uses MarkdownSplitter and markdown=false uses TextSplitter.

Copilot uses AI. Check for mistakes.
Comment on lines +86 to +93
let models = bit::Entity::find()
.filter(bit::Column::Id.is_in(paginated))
.filter(
meta::Column::Lang
.is_null()
.or(meta::Column::Lang.eq(language))
.or(meta::Column::Lang.eq("en")),
)
Copy link

Copilot AI Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The query filters meta.lang to (null | requested | en). With find_with_related, this can exclude an entire bit if it only has metadata in other languages (because no joined rows match the filter). To avoid missing bits, don’t filter the joined metadata rows this way; instead fetch bits first and then fetch/select the best metadata in code (or fetch all meta rows for those bits and pick the best match).

Copilot uses AI. Check for mistakes.
Comment on lines +269 to +270
} else if let Some(home) = std::env::var_os("HOME") {
PathBuf::from(home).join("flow-like").join("event-bus")
Copy link

Copilot AI Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

event_bus_dir() falls back to $HOME/flow-like/event-bus, whereas other cache/data fallbacks use $HOME/.cache/... (e.g. packages/core/src/utils/cache.rs and Android cache root). Consider aligning this fallback to use $HOME/.cache/flow-like/event-bus to avoid cluttering the home directory and to keep cache paths consistent.

Copilot uses AI. Check for mistakes.
Comment on lines +8 to +11
"package_name": "com.flow-like.app",
"sha256_cert_fingerprints": [
"REPLACE_WITH_RELEASE_CERT_SHA256_FINGERPRINT"
]
Copy link

Copilot AI Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assetlinks.json still contains a placeholder SHA-256 cert fingerprint ("REPLACE_WITH_RELEASE_CERT_SHA256_FINGERPRINT"). This will cause Android App Links verification to fail in production. Replace it with the real release keystore fingerprint, or generate this file during deployment so it stays in sync with signing credentials.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is an extensive and high-quality pull request that delivers significant improvements across the entire project. The core fix for profile syncing appears to be correctly implemented by updating timestamps to trigger synchronization. Beyond the main fix, the PR introduces major enhancements including robust Android support, a complete migration from native-tls to rustls for better security and compatibility, and substantial performance and UX improvements for mobile platforms. The refactoring of the OAuth service, Excel node handling, and the TDMS import node are particularly impressive, making the codebase more modular, capable, and efficient. The attention to detail in areas like build automation, SEO, and mobile-specific UI hardening is commendable. I have one medium-severity suggestion regarding a potential limitation in fetching profile bits, but overall, this is an excellent contribution.

Comment on lines 30 to +35
const profileBits = useInvoke(
backend.bitState.getProfileBits,
backend.bitState,
[],
true,
open,
);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This component fetches a list of profile bits to populate the dropdown. However, the underlying API call in both the web and desktop backends appears to be limited to fetching a maximum of 100 bits, and this component doesn't seem to implement any pagination to fetch more.

If a user has more than 100 bits in their profile, this dropdown will be incomplete, preventing them from selecting some of their bits. This could be a frustrating limitation.

To address this, you could either fetch all bits at once (if the number is expected to be reasonably small) or implement a paginated/infinite-scroll mechanism within the SelectContent to load more bits as the user scrolls.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Profile sync on desktop not working with old already existing profiles

3 participants