Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
Convert Web Annotation TextQuoteSelectors to URL Text Fragment directives
Translation pending
Developer toolsJavaScriptGitHub @BigBlueHatOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Convert Web Annotation TextQuoteSelectors into
Text Fragment URLs (#:~:text=prefix-,start,end,-suffix), and parse them back.
Zero dependencies; ESM; browser and Node >= 18.
No existing library did this (see apache/incubator-annotator#60, which describes the idea without shipping it).
import { textQuoteToUrl, annotationToUrl, urlToSelectors } from 'annotation-text-fragment';
textQuoteToUrl('https://example.com/a', { type: 'TextQuoteSelector', exact: 'brown fox', prefix: 'quick ', suffix: ' jumps' });
// https://example.com/a#:~:text=quick-,brown%20fox,-jumps
annotationToUrl(annotation); // first target with a TextQuoteSelector, or null
urlToSelectors(url); // text directives -> TextQuoteSelector / RangeSelector
Also exported: textQuoteToDirective(selector) (just the text=... term) and parseTextDirectives(url).
Existing #fragment and :~: directives on the URL are preserved; multiple selectors become &text= terms.
-, , and & are percent-encoded as the spec requires (encodeURIComponent misses -).normalize: false to disable). Lone surrogates are made well-formed.exact/prefix/suffix marks a block boundary, which one term cannot span: exact becomes textStart,textEnd; context is cut at the boundary.exact longer than maxLength (300) becomes start,end using ~edgeLength (50) characters at each end; prefix/suffix are trimmed to maxContext (64).Intl.Segmenter (so CJK/Thai work), with a whitespace fallback. Pass locale as a hint.start,end matches the first end after the first start; keep prefix to disambiguate.urlToSelectors is only an approximation of how the browser would anchor it.'fragmentDirective' in document.npm test runs the tests.