DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Web PDF reader for studying from the books of the Perruccio/Learn repository (private), with:
<subject>/state.json, synced. GitHub is not needed while studying.flashcards/*.tsv files in the private repository; the cards of a session unlock when the session is marked as done in PROGRESS.md (also from the Mark session as done button on the session page). ERR-* (error log) and HL-* (PDF highlights) files are always active. Review state is in flashcards/progress.json, synced like annotations.App: https://perruccio-learn.github.io/Learn-app/
This repository (public) contains only the code. PDFs and annotations live in the private repository, and the app reads and writes them through the GitHub API with a personal token saved in the browser.
For every book folder/name.pdf the annotations are in folder/name.annotations.json. The file is readable JSON: one annotation per block, with page, color, highlighted text, note and position (as fractions of the page, so independent of zoom).
Direct link to a book and a page:
https://perruccio-learn.github.io/Learn-app/#read=math/books/axler-ladr-4ed.pdf&page=20
Other routes: #path (progress), #review (flashcards), #doc=<file.md>, #setup. The old #percorso and #ripasso still work and redirect to #path and #review.
Learn.On iPhone and Android: in the browser use Share → Add to Home Screen. The app opens full screen, like a regular app.
The site and this repository are public, but they contain only code: no data, no secrets. Anyone opening the app without a token sees only the connection screen and cannot read anything. PDFs, annotations and flashcards live in the private Learn repository, reachable only with the token, which stays in the browser of your devices. The code being readable weakens nothing: security does not rely on keeping it hidden.
| Risk | Countermeasure |
|---|---|
| Token theft through injected code (PDFs, cards, annotations) | Strict CSP, no external scripts, content validated and inserted only as text (details below) |
| The app embedded in a malicious page (clickjacking) | The app refuses to run inside a frame |
| Shared, lost or stolen device | "Remember on this device" option can be turned off; token with expiration; immediate revocation on github.com → Settings → Fine-grained tokens |
| Token theft: possible damage | The token is valid for one repository and only for its contents: no settings, no other repos |
| Other GitHub Pages sites of the same account | All perruccio.github.io/* sites share the same origin and therefore the same browser storage. Do not publish other Pages sites with third-party scripts, or move the app to a dedicated origin (see below) |
| GitHub account compromise (whoever gets it can change the app's code) | Two-factor authentication on the GitHub account (essential) |
Dedicated origin (recommended). To isolate the app completely, create a free GitHub organization (for example perruccio-learn) and transfer Learn-app there. The app will be on perruccio-learn.github.io, an origin used only by it.
A PDF is an untrusted file, so the reader applies these defenses:
isEvalSupported: false (the attack class of CVE-2024-4367) and with XFA forms disabled. The bundled version (4.10.38) is not among those affected by CVE-2026-16633 (5.6.83–6.2.107), which in any case requires scripting to be enabled.unsafe-inline or unsafe-eval, and the only reachable server is api.github.com. Even if a PDF or an annotation file managed to inject code, the browser would not run it and it could not send data anywhere else.noopener and noreferrer. javascript: links are discarded.javascript:/data: links in the files stay text. Links to other files of the repository stay inside the app. Every content link opens in a new tab: app routes (same-origin #… hashes) keep the opener, so a token kept only for the tab is copied to the new tab; external links get noopener and noreferrer.<b>, <i>, <u>, <code> and <br> are allowed, rebuilt without attributes. Formulas go through KaTeX with trust: false (no \href or HTML). The only exception in the CSP is style-src-attr 'unsafe-inline', needed by KaTeX to lay out formulas: style attributes cannot run code..annotations.json, state.json and progress.json files are read with a whitelist: unknown fields dropped, colors and types checked, coordinates numeric only, texts with a maximum length. All text is inserted as text, never as HTML.s= value in the address is used only if it names a folder with a PROGRESS.md in the repository; anything else falls back to the home. Subject names read from README.md are inserted as text.%PDF- header, and a file that is not a PDF is not opened.Static site, no build: HTML, CSS and JavaScript modules in js/. Libraries bundled in vendor/: PDF.js 4.10.38 (legacy build, Apache-2.0), KaTeX 0.18.11 (MIT, loaded only when formulas are shown), ts-fsrs 5.4.2 (MIT).
python -m http.server 8000 # then open http://localhost:8000
Before every commit: python scripts/stamp.py. It adds a content-derived version (?v=…) to modules and stylesheets and updates version.json. GitHub Pages lets files be cached for about 10 minutes: with the version, browsers load the new code right away and an open app notices the update on its own.
End-to-end tests with Playwright in tests/ (details in tests/README.md): reader, security (hostile PDFs and markdown, CSP), review, course pages, automatic update. The GitHub API is mocked and the content is synthetic (tests/fixtures/): nothing from the private repo enters the public repo.
cd tests && npm ci && npx playwright install chromium && npm test
CI (.github/workflows/ci.yml) runs the tests on every push and pull request and publishes to GitHub Pages only from main and only if the tests pass. It also checks that scripts/stamp.py was run. Actions are pinned to commit SHAs.