mirror of
https://github.com/karakeep-app/karakeep.git
synced 2026-04-25 16:06:04 +03:00
Closed
opened 2026-03-02 11:52:46 +03:00 by kerem
·
17 comments
No Branch/Tag specified
main
refactor/use-npm-singlefile
onetab
claude/issue-2596-20260321-1401
claude/fix-docs-button-responsive-V3aBQ
claude/review-import-backpressure-D4ArJ
claude/fix-archived-bookmarks-mobile-P9OJW
claude/issue-1189-20260211-1601
claude/fix-nested-smart-lists-3uFkt
claude/issue-2298-20251223-1704
feat/import-v3
claude/add-cli-search-subcommand-6kIe0
claude/add-bookmark-indexing-timestamps-96bPj
claude/auto-disable-failing-feeds-fkDhP
claude/add-tag-search-aliases-HzESD
feat/docker-compose-dev
claude/add-attachedby-tags-endpoint-01WYfemMGHJJjXsPYLvUJAno
claude/fix-crawler-memory-leaks-NE7Ct
bookmark-debugger
claude/issue-2352-20260106-1120
claude/issue-1977-20260102-2348
claude/add-banner-rendering-JeLUk
claude/add-descendant-qualifier-cUm26
claude/skip-metadata-refresh-archives-CAo4Y
claude/fix-archive-pending-banner-pAyGM
claude/add-embeddings-support-h2swV
claude/nested-manage-lists-QVV85
claude/privacy-type-system-MG1bT
claude/add-action-menu-icons-6hNKw
claude/issue-2299-20251223-1711
claude/bookmark-indexing-progress-QwZSI
claude/migrate-bookmark-attachments-3O2te
claude/add-2025-wrapped-feature-tIUIh
claude/improve-ai-settings-design-639tq
claude/add-youtube-metascraper-plugin-0lWC7
claude/add-problem-reporting-gSSEV
claude/add-mobile-list-menus-spcS7
claude/shadcn-bookmark-cards-WWHzP
claude/add-extensions-link-HTeXc
claude/add-onboarding-screens-hsYMO
claude/fix-settings-switch-overflow-nlzM4
claude/clamp-bookmark-titles-diAEz
claude/port-stats-mobile-expo-MuXAn
claude/whats-new-base-version-vrv8C
claude/fix-settings-auth-checks-jgyD8
claude/add-server-version-display-3sGa2
claude/fix-tag-editor-scrolling-rzdbG
claude/add-company-pricing-card-y5mHY
claude/audit-optimize-transactions-xpDVc
codex/ensure-consistent-ui-experience-across-app-pages
claude/plan-opentelemetry-integration-01Jx183mz1Ev8h8JoYj97Auw
libsql
db-indicies
claude/export-import-lists-01UuCWwdaqduAd35NppvjnMD
claude/configurable-worker-timeout-0198GQh6YrrRzqG62xnogyrz
claude/check-import-quota-01CPdxTpHp18Ba62bYcBTVbA
claude/scraper-worker-thread-01FEHen6MGrQHmdBstJSuiyA
claude/customize-dialog-styling-01CVjEv2KgyZJSpCg3mqkvR7
claude/add-asset-cache-headers-0175WhNcqwiwurrmjj52jnLT
claude/add-db-search-plugin-017Xxd4Jq3MfjWT788vgfbaq
benchmarks-2
claude/add-filtered-deletion-01DTxWNcg3hhqdNpeNLa3s6L
claude/actionbutton-loading-spinner-015DY5ZTvgPgFAXTZz3UGaYv
claude/add-broken-links-qualifier-01S31X1LsKiYb9gE1dXTKvi3
claude/docker-release-tag-trigger-01UmzFXEumhK2jdmRGtMcueo
claude/spread-feed-fetch-scheduling-01EihUtmZSyqeE1HfRMessxW
restate-idempotency
claude/align-android-ios-colors-01GJfkhEyZVBReohVioPa8ok
claude/improve-mobile-app-colors-0155LzHfkd5HyJr6YyZMsus5
codex/add-autocomplete-for-search-query-language
claude/add-bookmark-backups-016L2A8Z94n7tDgDdMPdFuAd
claude/restrict-binary-user-permissions-01FSGyy2RXGZvE26YbAejzGi
effect-ts
claude/prepare-trpc-npm-publish-0193EjfwpxSNVNcLXqXjs6Ln
shared-list-sidebar
claude/lazy-load-tiktoken-017UTNpJPTcMMQvNEBa1aFwo
codex/fix-asset-pre-processing-worker-abort-signals
add-groupid
claude/add-bookmark-list-button-01VF7uXYNLsVDzqdozWMXP5M
claude/extract-shared-ui-components-01DSVfaCr6WRqAyx1vJTZk9r
claude/migrate-shadcn-sidebar-01DKjpg9MD5PJ2potemSnbvW
claude/add-collaborators-rate-limits-01VjXyRWWPUkGQKa8d8D8qKj
claude/modernize-dark-mode-01FRfE81PAY5C44pFu1cYocf
claude/add-signed-url-bookmark-01PjYT1ZhvLK2FPJNTAhJsWf
restate-group-id
claude/add-highlights-page-012vhHpn8fVNp3gf7gBeW14s
claude/disable-shared-bookmark-features-01B9fiGUdu6NyWaxSQFsQBxP
claude/mobile-bookmark-grid-layouts-018cGBBMhPJVq6PJVRBpqT2r
claude/add-mobile-bookmark-summary-01494LYoh4sJW5Fj4GPm62Vj
claude/add-mobile-tags-screen-01WRADt4ZzvXVew1Y9vqF8SV
claude/add-highlight-notes-01LpanRLS4a2YMnT1qB5GTqX
claude/add-search-bar-014k2ngaqjwYRVSvqmbuECqr
claude/hide-collaborator-emails-01TQrkkMupC7CR9BTuDkireg
claude/list-invitation-approval-0129V89M1riXW6JqmoF74VfM
claude/add-bookmark-archive-sort-018VbGPGvtmsGgXFEERoAX7B
claude/add-mobile-smart-lists-01251tYo9u1SywE6XFezAv9e
claude/bookmark-drag-drop-01DmWq286ogHpDGHKcXjKr3z
claude/add-rss-import-01DH1Q2axcDeq8nQJR5MWjPJ
claude/mobile-inapp-browser-auth-01KiT6bwyntRPQ1X4oTtAveC
claude/offline-mode-react-query-01D1rE2bdBEPw2teGqunr5Gd
claude/add-singlefile-extension-support-01BEB9QQZABzwfZDvR9Bz5b2
claude/custom-list-slugs-01VxcfkNUXZ97FNpNVURopMq
claude/issue-2148-20251118-1133
claude/add-groupid-queue-fairness-011CV1r8Wb46HuGAg5o95i3m
claude/hide-viewer-shared-lists-01Fst6NBvdxrXXnDhUmjsNDP
claude/collaborative-lists-013AvDvMqkoszDVcSoCYgBcM
claude/implement-feature-01LT5XzGsbEhZkYXNEjEwdui
claude/fix-bookmark-loading-state-01AgF4H2drxwuTCJDB2Xgiu4
claude/admin-user-edit-013tbiRmb1KX2fhSYqmGKCu8
claude/expose-all-api-01YTruEW72WQYMtq4iZoaPkA
claude/add-doc-link-main-016NYLxShpKuH6R8XCBgeZtc
claude/fix-issue-2133-019JLvdSRAUbU4FtjQztcM6S
claude/explore-effect-ts-integration-01F7xb1dWwP1ma4LnLbFGfDD
claude/optimize-dockerfile-build-011CV5gDnPZbdbbVSPDofC4e
claude/add-custom-headers-guide-011CV249t16aWDRb1mCrzQdC
claude/mobile-app-signup-011CUxPtCXgU6U3T8GShTR2Q
claude/crawler-worker-fetch-browser-011CUvcRc24XEr9DTWDW6MX8
claude/fix-issue-784-011CUvubQrcZHG9S3KjpCKbK
codex/add-user-settings-for-inference-language-and-screenshots
claude/fix-mobile-signin-server-address-011CUnaUWwY2Fhq5Xbwhgr8H
better-auth-2
claude/issue-2028-20251012-1429
claude/issue-1010-20251012-1154
codex/update-feed-refresh-job-idempotency-key
restate
import-v2
fix-public-lists
recurse-delete-list
abort-dangling-processing
tag-pagination
ratelimit-plugin
claude/issue-1937-20250914-0912
codex/implement-title-search-query-qualifier
copilot/add-edit-button-for-notes
cookie-path
ai-tag-cleanup
codex/add-allowlist-and-blocklist-env-variables
mobile-retheme
expo-next-upgrade
opencode/issue1788-20250727215611
fix-trailing-slash-deduplication
edit-bookmark-dialog
bookmark-embeddings
rag
nextjs-15
bookmark-hover-bar
sapling-pr-archive-MohamedBassem
track-bookmark-assets
json-cli
admin-settings
mobile-dark-mode
android/v1.9.2-0
ios/v1.9.1-1
android/v1.9.1-0
ios/v1.9.1-0
ios/v1.9.0-2
ios/v1.9.0-1
android/v1.9.0-1
extension/v1.2.9
cli/v0.31.0
sdk/v0.31.0
mcp/v0.31.0
android/v1.9.0-0
ios/v1.9.0-0
v0.31.0
android/v1.8.5-0
cli/v0.30.0
sdk/v0.30.0
ios/v1.8.4-0
android/v1.8.4-0
v0.30.0
cli/v0.29.1
v0.29.3
v0.29.2
v0.29.1
sdk/v0.29.0
cli/v0.29.0
mcp/v0.29.0
ios/v1.8.3-0
android/v1.8.3-0
extension/v1.2.8
v0.29.0
android/v1.8.2-2
android/v1.8.2-1
ios/v1.8.2-0
android/v1.8.2-0
extension/v1.2.7
android/v1.8.1-0
ios/v1.8.1-0
v0.28.0
cli/v0.27.1
cli/v0.27.0
v0.27.1
sdk/v0.27.0
v0.27.0
android/v1.8.0-1
ios/v1.8.0-1
mcp/v0.26.0
sdk/v0.26.0
v0.26.0
cli/v0.25.0
ios/v1.7.0-1
mcp/v0.25.0
v0.25.0
extension/v1.2.6
ios/v1.7.0-0
android/v1.7.0-0
v0.24.1
v0.24.0
mcp/v0.23.10
mcp/v0.23.9
mcp/v0.23.8
extension/v1.2.5
mcp/v0.23.7
mcp/v0.23.6
mcp/v0.23.5
mcp/v0.23.4
sdk/v0.23.2
cli/v0.23.0
extension/v1.2.4
android/v1.6.9-1
ios/v1.6.9-1
v0.23.2
v0.23.1
sdk/v0.23.0
v0.23.0
ios/v1.6.9-0
sdk/v0.22.0
v0.22.0
android/v1.6.8-0
ios/v1.6.8-0
sdk/v0.21.2
sdk/v0.21.1
sdk/v0.21.0
v0.21.0
cli/v0.20.0
v0.20.0
ios/v1.6.7-4
android/v1.6.7-4
ios/v1.6.7-3
android/v1.6.7-3
android/v1.6.7-2
ios/v1.6.7-2
android/v1.6.7-1
ios/v1.6.7-1
ios/v1.6.7-0
android/v1.6.7-0
v0.19.0
android/v1.6.6-0
android/v1.6.5-0
ios/v1.6.5-0
ios/v1.6.4-0
android/v1.6.4-0
v0.18.0
v0.17.1
v0.17.0
ios/v1.6.3-0
android/v1.6.3-0
extension/v1.2.3
ios/v1.6.2-1
android/v1.6.2-1
ios/v1.6.2-0
android/v1.6.2-0
v0.16.0
ios/v1.6.1-3
android/v1.6.1-3
ios/v1.6.1-2
android/v1.6.1-2
android/v1.6.1-1
ios/v1.6.1-1
android/v1.6.1-0
ios/v1.6.1-0
extension/v1.2.2
android/v1.6.0-1
ios/v1.6.0-1
ios/v1.6.0
android/v1.6.0
cli/v0.13.7
cli/v0.13.6
v0.15.0
cli/v0.13.5
extension/v1.2.1
v0.14.0
cli/v0.13.3
cli/v0.13.2
cli/v0.13.1
cli/v0.13.0
v0.13.1
v0.13.0
mobile-v1.5.0
mobile-v1.4.0
v0.12.2
v0.12.1
v0.12.0
v0.11.1
v0.11.0
v0.10.1
v0.10.0
v0.9.0
v0.8.0
v0.7.0
v0.6.0
v0.5.0
v0.4.1
v.0.4.0
v.0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.0
Labels
Clear labels
Mirrored from GitHub Pull Request
UI/UX
android
bug
dependencies
documentation
documentation
extension
feature request
feature request
good first issue
ios
long-term
performance
pri/high
pri/low
pri/medium
pull-request
Mirrored from GitHub Pull Request
question
status/approved
status/icebox
status/pending_clarification
status/untriaged
No labels
UI/UX
android
bug
dependencies
documentation
documentation
extension
feature request
feature request
good first issue
ios
long-term
performance
pri/high
pri/low
pri/medium
pull-request
question
status/approved
status/icebox
status/pending_clarification
status/untriaged
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
starred/karakeep#795
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @thiswillbeyourgithub on GitHub (Apr 8, 2025).
Original GitHub issue: https://github.com/karakeep-app/karakeep/issues/1220
Describe the feature you'd like
Hi!
Karakeep was very promising last time I checked but now is clearly awesome!
I am still missing one crucial feature for my workflow: the ability to create new highlights on android. I am willing to bounty $50 to whoever pulls this off :)
As far as I am concerned, to earn the bounty, this can be either from the android app or the browser, including in "desktop mode" of the android browser. I also can accept minimal highlights like only text highlights, no color selectors, no area highlighter etc.
Also I was surprised to not find any issue already tracking this feature, I apologize if it exists already but I couldn't find it in issues, PR nor discussions.
Describe the benefits this would bring to existing Hoarder users
Can the goal of this request already be achieved via other means?
No, I tried adding highlights from the android app, from the brave browser, and from the brave browser with desktop mode enabled.
Have you searched for an existing open/closed issue?
Additional context
Sort of related to #620 and #1014
@Mxrk commented on GitHub (Apr 13, 2025):
As I would also like to have this feature, I found a good fix which also supports mobile browsers:
https://github.com/user-attachments/assets/a7d8ecd8-84d4-4652-8bfc-40157fb5a412
I will check if that’s enough and won’t break anything else, but seems working so far. Is this how it should be on mobile or would you prefer something else?
@thiswillbeyourgithub commented on GitHub (Apr 13, 2025):
Hi!
Thanks for the reply. I'm not sure I understood. Did you find a workaround to make the highlighting work from android or did you code it yourself? I do believe it is fair that only the latter qualifies for the bounty. We can debate this of course!
Regarding the video example: it seems alright but on android I don't know if the fact that it highlights the text right away is the way to go, normally there is a contextual menu that appears so we can copy the text, do a web search on it etc. Would we be losing that if we added your fix?
And to clarify, it does work on the android app as well as on the browser, correct?
FYI I have a track record of being honest in my bounties, see that one for example
edit: oh I didn't see you were a contributor, then you probably coded it I guess?
@thiswillbeyourgithub commented on GitHub (Apr 18, 2025):
Hi @Mxrk any update on this?
@Mxrk commented on GitHub (Apr 19, 2025):
Yeah, it needs UI updates as it seems buggy in certain scenarios. So no, I don't have a complete solution. I will add my current knowledge and ideas soonish as it could need some discussion with others.
@Mxrk commented on GitHub (Apr 20, 2025):
First off, why doesn't this feature work on mobile? Currently inside BookmarkHtmlHighlighter.tsx we can see the following line:
github.com/karakeep-app/karakeep@1d9fc9bbd3/apps/web/components/dashboard/preview/BookmarkHtmlHighlighter.tsx (L336)onMouseUpdoesn't perfectly work on mobile and is easily fixable using onPointerUp. This introduces some other nitpicks but it seems to be working fine on the devices and emulators I tested, at least to trigger the current highlight menu. I know that some browsers have internal fixes to support mouseup but pointer is probably the way to go.Now the current "problem" where I need input. On mobile we always have the native context menu popping up above the selected text on iOS and android (maybe there are some android versions where it's somewhere else but most have it above). Easy fix would be to either move the highlight menu above the context menu, or below the selected text. I have implemented the same feature in another app and there was no problem with having it below - but it could maybe lead to accessibility issues. Besides that, we would also have to adjust the web UI or simply have that it opens above on web and below on mobile. Or keep it for both, but again - would be a design change.
We could also just block the whole context menu but this seems weird and I don't think this is the way to go.
Another idea would be to have an icon in the menu bar. This would add a new design element and would change the design for mobile and web, not sure if that's too much. In general the apps also have other possibilities, but (again) not sure if that's something we should aim for as the design would greatly differ to the web version.
Maybe there are also other ideas I didn't think about yet.
@MohamedBassem commented on GitHub (Apr 20, 2025):
@Mxrk Thanks for the detailed summary! I think showing the highlight menu at the bottom on mobiles sounds like a simple way around the problem? Do we have a reliable way of detecting that the client is a mobile phone?
@Mxrk commented on GitHub (Apr 20, 2025):
Could simply use the window width or height? Should be one hook and it would be available everywhere. Could also use a conditional check inside that component if resize events aren't important.
https://stackoverflow.com/questions/39435395/reactjs-how-to-determine-if-the-application-is-being-viewed-on-mobile-or-deskto
@MohamedBassem commented on GitHub (Apr 20, 2025):
@Mxrk sure, looks good to me 👍
@thiswillbeyourgithub commented on GitHub (Apr 20, 2025):
Great to see this moving forward! Thank you both a lot.
Regarding the phone detection, have you thought about if this won't cause issue for vertical computer screens or phone in landscape mode? I would have thought user agents might be more reliable no?
Also would the code change make the highlight available on the android app OR the android browser or both? Because I just opened issue #1285 to track the current state of screen utilization on android browser, which might impact the highlighting UI if addressed.
@Mxrk commented on GitHub (Apr 20, 2025):
User agent check would lead to the same problem if a touch device is being used with a non mobile user agent. Using a max width from e.g. the biggest iPad / Android tablet should include most devices, same with the user agent. There will probably always be some edge cases I think.
Maybe checking for touch device would be smart as we don’t care about the size but the input device? (pointer: coarse)
@thiswillbeyourgithub commented on GitHub (Apr 20, 2025):
Possibly relevant: https://stackoverflow.com/questions/4817029/whats-an-optimal-or-efficient-way-to-detect-a-touch-screen-device-using-javas
@Mxrk commented on GitHub (Apr 20, 2025):
These answers are what I mean in my last paragraph - checking for input device. With this check we would also adjust the UI for desktop devices using a touchscreen.
@thiswillbeyourgithub commented on GitHub (May 2, 2025):
Hi!
I was wondering if there was any news on this front as I have tons of reading to catch up in the summer :)
Thanks!
PS: Of course the bounty is still up
@Mxrk commented on GitHub (May 2, 2025):
Hi!
As mentioned here https://github.com/karakeep-app/karakeep/issues/1220#issuecomment-2817100002, it's in theory really easy to add that feature to the web version, it's only left how to decide when we switch between showing the box above or below.
But the main problem are the mobile apps as this whole "engine" isn't existing there. In my opinion the best way to do that would be to have a separate js package which builds e.g. the highlighting engine which then can be injected into the Webview in the apps and can be used in the web package. That would imo. be a clean solution and is extendable with other features.
Having two "engines" would imo be bad for future bug fixes or even feature extensions. It would still be possible to have e.g. mobile only features which can be injected besides the main stuff.
@thiswillbeyourgithub commented on GitHub (May 2, 2025):
Note: for some reason I think I sound pushy and entitled in this message but I'm really not I promise. And the bounty thing is not me being disrespectful of anyone's time I swear!
Thanks for the quick and helpful reply.
I'm not sure I understand what you mean by "having two engines": do you mean that we should not implement touch highlights to the web version until the mobile app has its own highlight engine?
So yeah in conclusion I did not understand if your message roughly states "Once I know wether to put the box above or below I will make a PR for the web version and we'll see later for the mobile app" or "I don't think it's wise to allow touch highlighting on devices in the web version and we should rather wait to have a proper highlight engine on the mobile app".
Have a nice day.
@thiswillbeyourgithub commented on GitHub (May 3, 2025):
Thanks a lot @Mxrk for the PR. It looks really nice. Unfortunately I was not able to quickly get the branch to build so if I don't find the time to make it work I'll have to wait for the next release. Do you mind waiting until I get to try it until I give you the bounty? I would also gladly add $10-20 to any substantial progress on #1285
Edit: I now have seriously tried to make the docker build work but it's beyond me so I really won't be able to check it out before the next release.
@thiswillbeyourgithub commented on GitHub (May 18, 2025):
This is done thanks to #1348 by @Mxrk , the bounty will be sent to them. I am not rich but I know I needed that feature, let that be a good example of how to support the open source ecosystem :)