| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(mobile): record source and size of offline copies (#3173) Offline library entries now remember whether they were saved by the user or downloaded automatically, and their approximate size. Copies saved by older versions count as manual, and reconciling backfills their size. Removals trim the MMKV file once they settle. Also sets up vitest for the mobile app. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): add semantic search mode selector | 2 个月前 | |
feat(mobile): show and download bookmark attachments | 20 天前 | |
fix(mobile): fix formsheet colors | 2 个月前 | |
fix(mobile): respect archiveDisplayBehaviour setting in lists and tags (#2499) * fix(mobile): respect archiveDisplayBehaviour setting in lists and tags The mobile app was not respecting the user's archiveDisplayBehaviour setting when displaying bookmarks in home, tags, and lists views. This fix adds the user settings query to these views and applies the setting to filter archived bookmarks accordingly. - When archiveDisplayBehaviour is "show", archived bookmarks are included - When archiveDisplayBehaviour is "hide", archived bookmarks are filtered out - Applied to home screen, tags view, and lists view This brings the mobile app in line with the web app's behavior. refactor(mobile): extract archive filter logic to shared hook Created a reusable `useArchiveFilter` hook to centralize the logic for determining whether to show archived bookmarks based on user settings. This eliminates code duplication across home, tags, and lists views. Benefits: - Single source of truth for archive filtering logic - Easier to maintain and update - Consistent behavior across all bookmark views - Cleaner component code * fix * revert the fix for home tab --------- Co-authored-by: Claude <noreply@anthropic.com> | 7 个月前 | |
feat(mobile): tablet/iPad UI polish for toolbar and FAB (#2788) * Set max width for reader toolbar on tablets * fix(mobile): remove FAB bottom inset on iPad iPad's tab bar geometry doesn't need the extra 57–60pt lift the iPhone FAB uses. * fix(mobile): give reader toolbar icons proper spacing on iPad Replace the inner row's width/maxWidth + space-between approach with an intrinsic gap. The earlier cap caused the row to collapse to its natural icon width inside the hug-fit GlassView, leaving icons cramped against each other. Using `gap: 28` gives each icon real breathing room and lets the pill size to its contents naturally. | 5 个月前 | |
feat(mobile): add parent list picker | 2 个月前 | |
fix(mobile): ignore unreliable Android internet reachability (#3127) - Use network connection state for online manager status - Leave server reachability checks to useConnectionStatus | 27 天前 | |
feat(mobile): add offline download preferences and manager (#3176) Per-account download preferences (recent articles and their count, kept lists, storage budget, Wi-Fi only, excluded articles) are stored in their own MMKV instance. Nothing downloads automatically until the settings UI turns this on. refreshOfflineDownloads runs one pass at a time for the signed-in account. It fetches every page of the kept lists (treating a deleted or unshared list as empty, and deselecting it) and the recent unarchived articles, counting only those that can be downloaded, then hands them to the sync engine. Before each network step it stops for cancellation, no connection, or cellular when Wi-Fi only is set. A refresh requested during a pass runs once it ends. Automatic refreshes are throttled to every 5 minutes unless the last pass was interrupted. The pass status is kept in memory for the UI and persisted. Exclusions no longer in any selection are dropped. Saving an article by hand lifts its exclusion, and removing one excludes it from automatic downloads. Logging out stops the running pass without letting it write, and clears the preferences. Exports getTRPCClient from shared-react so the manager can build a client outside React. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): record source and size of offline copies (#3173) Offline library entries now remember whether they were saved by the user or downloaded automatically, and their approximate size. Copies saved by older versions count as manual, and reconciling backfills their size. Removals trim the MMKV file once they settle. Also sets up vitest for the mobile app. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): add offline download settings (#3178) Rewrites Settings > Downloads around automatic downloads: - Automatic downloads: a recent articles toggle with a count, and the lists to keep offline. - Storage & network: storage limit and Wi-Fi only. - Status: progress, space used, last check, notes about failed downloads or a full budget, and "Download now". - On this device: the downloaded articles, and "Remove all offline content", which also turns automatic downloads off. New screens list the downloaded articles (removing one excludes it from automatic downloads) and pick the lists to keep offline. Both are registered with the other settings screens. Adds a menu-backed SettingsMenuRow, moves byListPathName into the list picker so it can be shared, and drops useOfflineLibrarySize now that usage is computed from the library itself. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): add offline download preferences and manager (#3176) Per-account download preferences (recent articles and their count, kept lists, storage budget, Wi-Fi only, excluded articles) are stored in their own MMKV instance. Nothing downloads automatically until the settings UI turns this on. refreshOfflineDownloads runs one pass at a time for the signed-in account. It fetches every page of the kept lists (treating a deleted or unshared list as empty, and deselecting it) and the recent unarchived articles, counting only those that can be downloaded, then hands them to the sync engine. Before each network step it stops for cancellation, no connection, or cellular when Wi-Fi only is set. A refresh requested during a pass runs once it ends. Automatic refreshes are throttled to every 5 minutes unless the last pass was interrupted. The pass status is kept in memory for the UI and persisted. Exclusions no longer in any selection are dropped. Saving an article by hand lifts its exclusion, and removing one excludes it from automatic downloads. Logging out stops the running pass without letting it write, and clears the preferences. Exports getTRPCClient from shared-react so the manager can build a client outside React. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): add offline download preferences and manager (#3176) Per-account download preferences (recent articles and their count, kept lists, storage budget, Wi-Fi only, excluded articles) are stored in their own MMKV instance. Nothing downloads automatically until the settings UI turns this on. refreshOfflineDownloads runs one pass at a time for the signed-in account. It fetches every page of the kept lists (treating a deleted or unshared list as empty, and deselecting it) and the recent unarchived articles, counting only those that can be downloaded, then hands them to the sync engine. Before each network step it stops for cancellation, no connection, or cellular when Wi-Fi only is set. A refresh requested during a pass runs once it ends. Automatic refreshes are throttled to every 5 minutes unless the last pass was interrupted. The pass status is kept in memory for the UI and persisted. Exclusions no longer in any selection are dropped. Saving an article by hand lifts its exclusion, and removing one excludes it from automatic downloads. Logging out stops the running pass without letting it write, and clears the preferences. Exports getTRPCClient from shared-react so the manager can build a client outside React. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): add the offline download sync engine (#3175) Platform-independent logic for automatic offline downloads, with no React Native dependencies so it can be unit tested: - selectCandidates orders what should be kept: articles in kept lists first, then recent ones, newest first, without duplicates, exclusions or assets. Articles still being crawled are marked not ready. - synchronizeOfflineCopies downloads the missing copies within a storage budget. A copy is downloaded once and not refreshed. Manual copies are never touched. It evicts lower priority automatic copies only when that makes enough room, saves before evicting, and shrinks to a lowered budget. It remembers sizes that didn't fit. Copies that left the selection are pruned, keeping one per failed download so a flaky pass doesn't shrink the library. - A crawl can succeed, or fail, without reader content. Such articles don't count as failed, and are tried again on the next pass. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): add the offline download sync engine (#3175) Platform-independent logic for automatic offline downloads, with no React Native dependencies so it can be unit tested: - selectCandidates orders what should be kept: articles in kept lists first, then recent ones, newest first, without duplicates, exclusions or assets. Articles still being crawled are marked not ready. - synchronizeOfflineCopies downloads the missing copies within a storage budget. A copy is downloaded once and not refreshed. Manual copies are never touched. It evicts lower priority automatic copies only when that makes enough room, saves before evicting, and shrinks to a lowered budget. It remembers sizes that didn't fit. Copies that left the selection are pruned, keeping one per failed download so a flaky pass doesn't shrink the library. - A crawl can succeed, or fail, without reader content. Such articles don't count as failed, and are tried again on the next pass. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): run offline downloads while the app is open (#3177) A headless OfflineDownloadSync component, mounted in the app providers, starts a download pass on launch, on return to the foreground and, while the app stays open, once the last pass is 5 minutes old. It restarts the pass shortly after a connectivity change that matters to it or a download settings change. Going to the background cancels the running pass; a change that comes due meanwhile is picked up on return. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat: Add unified reader settings with local overrides (#2230) * Add initial impl * fix some format inconsistencies, add indicator in user settings when local is out of sync * Fix sliders in user settings, unify constants and formatting * address CodeRabbit suggestions * add mobile implementation * address coderabbit nitpicks * fix responsiveness of the reader settings popover * Move more of the web UI strings to i18n * update translations for more coverage * remove duplicate logic/definitions * fix android font family * add shared reading setting hook between web and mobile * unify reader settings context for both web and mobile * remove unused export * address coderabbit suggestions * fix tests | 10 个月前 | |
feat(mobile): adapt layouts for tablets (#3167) * feat(mobile): adapt layouts for tablets - Show bookmarks and highlights in a multi-column grid on wide screens. The column count comes from the measured width of a wrapper View, so it follows rotation and iPad split view. - Cap single-column screens (lists, tags, search history, sign-in, text bookmarks) and the reader to a readable width, centered. * fix(mobile): skip item layout animations in multi-column lists Reanimated only supports itemLayoutAnimation on single-column Animated.FlatLists. | 13 天前 | |
feat(mobile): add offline download preferences and manager (#3176) Per-account download preferences (recent articles and their count, kept lists, storage budget, Wi-Fi only, excluded articles) are stored in their own MMKV instance. Nothing downloads automatically until the settings UI turns this on. refreshOfflineDownloads runs one pass at a time for the signed-in account. It fetches every page of the kept lists (treating a deleted or unshared list as empty, and deselecting it) and the recent unarchived articles, counting only those that can be downloaded, then hands them to the sync engine. Before each network step it stops for cancellation, no connection, or cellular when Wi-Fi only is set. A refresh requested during a pass runs once it ends. Automatic refreshes are throttled to every 5 minutes unless the last pass was interrupted. The pass status is kept in memory for the UI and persisted. Exclusions no longer in any selection are dropped. Saving an article by hand lifts its exclusion, and removing one excludes it from automatic downloads. Logging out stops the running pass without letting it write, and clears the preferences. Exports getTRPCClient from shared-react so the manager can build a client outside React. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
feat(mobile): streamline settings screens | 1 个月前 | |
fix(mobile): change default layout to be list layout | 5 个月前 | |
feat(mobile): customizable reader toolbar (#2527) * feat(mobile): add auto-hiding reader toolbar with customizable actions and overflow menu Redesign the bookmark reader bottom bar with configurable toolbar actions, an overflow ellipsis menu using native MenuView, and auto-hide on scroll. Add toolbar settings page for reordering visible/overflow actions. Support iOS 26 glass pill styling and transparent headers with edge-to-edge content. * Update apps/mobile/components/bookmarks/BottomActions.tsx Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * fix comment * fix(mobile): address PR review findings for reader toolbar - Fix silent fall-through when sharing non-image/non-pdf assets - Pass contentInsetTop to browser/archive WebViews for iOS 26 - Auto-inject missing action IDs into overflow on settings load - Extract NAV_BAR_HEIGHT constant to replace magic number 44 - Remove unused ownerOnly/linkOnly from ToolbarActionMeta - Extract triggerHaptic() helper to handle async catch - Deduplicate image/PDF share logic with finally cleanup - Add console.warn for unknown menu action events - Simplify headerPlatformOptions to plain isIOS26 ternary - Fix inaccurate comment about top/bottom padding * remove margin around text view * fix bottom inset * fix reading progress bar regression, add small gap * Add redesigned reading progress pill, blur effect for iOS 18 and lower * small review fixes * fix icon colors in dark mode * Add missing @/lib/ios module for isIOS26 platform detection * downgrade expo-blur to match expo * Update to stable expo-glass-effect version * fix(mobile): close reader view after archiving bookmark * chore(mobile): remove auto-hiding header/footer and pill redesign from toolbar PR Split these concerns out so this branch lands only the customizable toolbar. Auto-hiding native header, auto-hiding bottom toolbar, and the redesigned continue-reading pill will return together in a follow-up reader-chrome PR, where they belong architecturally as a single feature. * fix footer padding on iOS 26 * unify handling of archive and fav in bottom actions * abstract share logic * dynamic labels depending on bookmark state * fix overflow submenu in android * review comments | 5 个月前 | |
feat(mobile): add offline download settings (#3178) Rewrites Settings > Downloads around automatic downloads: - Automatic downloads: a recent articles toggle with a count, and the lists to keep offline. - Storage & network: storage limit and Wi-Fi only. - Status: progress, space used, last check, notes about failed downloads or a full budget, and "Download now". - On this device: the downloaded articles, and "Remove all offline content", which also turns automatic downloads off. New screens list the downloaded articles (removing one excludes it from automatic downloads) and pick the lists to keep offline. Both are registered with the other settings screens. Adds a menu-backed SettingsMenuRow, moves byListPathName into the list picker so it can be shared, and drops useOfflineLibrarySize now that usage is computed from the library itself. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 13 天前 | |
[mobile] Upgrade mobile app to Expo SDK 56 (#2946) | 3 个月前 | |
fix(mobile): handle upload errors and forward Android shares (#3154) | 14 天前 | |
fix(mobile): prevent pagination from cancelling refetches | 1 个月前 | |
[mobile] Upgrade mobile app to Expo SDK 56 (#2946) | 3 个月前 | |
feat(mobile): offline reading (#2957) | 2 个月前 | |
fix(mobile): fix alignment of the header menu in the list page | 7 个月前 | |
feat(mobile): add custom headers configuration in sign-in screen (#2103) * feat(mobile): add custom headers configuration in sign-in screen Add ability for mobile app users to configure custom HTTP headers that are sent with every API request. This enables users to add authentication headers, proxy headers, or other custom headers required by their server setup. Changes: - Add customHeaders field to mobile app settings schema - Create CustomHeadersModal component for managing headers - Update sign-in screen with link to configure custom headers - Modify tRPC provider to merge custom headers with Authorization header The custom headers are stored securely in the app settings and persist across sessions. * fix keyboard * add custom headers to other callsites --------- Co-authored-by: Claude <noreply@anthropic.com> | 11 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 13 天前 | ||
| 2 个月前 | ||
| 20 天前 | ||
| 2 个月前 | ||
| 7 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 27 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 10 个月前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 13 天前 | ||
| 3 个月前 | ||
| 14 天前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 7 个月前 | ||
| 11 个月前 |