TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证On-device fauna/flora ID with CLIP and AR camera overlay; offline PWA.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗English · Română · Français · Italiano · Español · Português · Deutsch · Magyar
Version: 20.2.0 · Last updated: 2026-10-27
Status: experimental · Offline: complete only after the first use: it needs internet once for the models (huggingface.co) and the ONNX Runtime (cdn.jsdelivr.net), then works from the cache
Interface languages: Română, English, Français, Italiano, Español, Português (PT), Deutsch, Magyar
Live / demo: https://chiuta.github.io/VietAR/
A PWA in a single index.html (+ vendor/, sw.js, manifest.webmanifest): it recognises animals and plants from a photo, the camera ("AR" overlay) or sound, gives an indicative check of the C2PA provenance signals of images, and keeps a local field journal (filterable and printable). The local engine (CLIP, 519 Romanian taxa) runs in the browser; an optional "online AI" mode is also available.
Warning: automatic identification can be wrong. Do not eat plants or mushrooms on the basis of this application; some species are toxic or deadly. The results are indicative, not scientific determinations.
Open the published page (GitHub Pages) or serve the folder with a static HTTP server (for example python3 -m http.server). From file:// the browser blocks ES modules: the interface, the journal and the export remain usable, and the application shows a clear message that identification cannot start (instead of a console error). Choose the engine (Local·RO, General, Online AI), then: "Live AR" (camera), "Image", "Sound" or "Journal".
Every saved observation now keeps its confidence level (good / fair / weak match; "indicative" for fungi, with no percentage), the close alternatives from the same result (up to 3, with a percentage only when the engine provides one) and the reasons they may be confused: same genus, same category, close score, identified only at group level. The reasons are computed from the app's own data (scientific name, category, score) and do not describe the actual features of the species. You can add your own note, filter by level and export everything to CSV/GeoJSON (the new columns come last). Older entries stay valid. The warning stays: do not eat or touch anything based on an automatic identification; confirm with a specialist.
The application works offline only after the models have been downloaded for the first time. It is not 100% local:
huggingface.co (weights of tens to hundreds of MB; the server sees the request, the IP address and the user agent, not your images). They are then kept in the browser cache.transformers.js from cdn.jsdelivr.net (see VENDOR-README-VietAR.md). The transformers.js and c2pa libraries are included locally in vendor/.contentcredentials.org (allowed in the CSP).api.anthropic.com or api.openai.com (or an OpenAI-compatible endpoint, subject to the CSP), after an explicit confirmation. The API key is kept in localStorage unless you tick "session only"; use only keys with a spending limit.localStorage/IndexedDB); it can be exported as CSV/GeoJSON.version.json (skipped on file://).'unsafe-inline' for scripts (the author's own script is accepted by SHA-256 hash); connect-src remains deliberately broad, see below.Xenova/clip-vit-base-patch16); engine "general" = Xenova/vit-base-patch16-224; sound = Xenova/ast-finetuned-audioset-10-10-0.4593. All are loaded with transformers.js 3.8.1 (bundled in vendor/) from huggingface.co as ONNX conversions published under the Xenova account; the original authors and the licence of each model must be confirmed on its model card: to be verified.transformers.js keeps the downloaded models in the browser's Cache API (useBrowserCache). New in 20.1.0: after "Prepare offline" the app asks the browser for persistent storage (navigator.storage.persist()), so the cache is less likely to be evicted; the browser may refuse, and the "clear caches" button still removes everything. No dependency added; nothing leaves the browser.The author's code and own texts: TRADE-FREE + MIT (the header of index.html; see LICENSE). The libraries in vendor/ (transformers.js, c2pa-web, c2pa), the ONNX Runtime loaded from jsDelivr, the models downloaded from huggingface.co and the embedded fonts have their own licences and are not covered by CC0; the list and the terms are in NOTICE (to be reconfirmed from the original packages at every update).
The image leaves for third parties only if: (1) you choose the "Online AI" engine, (2) you enter your own API key and (3) you confirm in the "Send to online AI" dialog. The confirmation is remembered in this browser until you press "Forget the key now" in ⚙. The "Local · RO" and "General" engines do not send images anywhere. When the page loads, no external request is made (verified). The CSP remains deliberately broad on connect-src (huggingface.co, jsDelivr, Anthropic/OpenAI/OpenRouter, contentcredentials.org) because each host corresponds to an optional feature described above; contentcredentials.org is not contacted directly by the page's code, only possibly by the C2PA library, which is why I did not remove it.
Audit: 2026-10-10
Documented in NOTICE and here, only as far as it could be verified on the web on 27 Oct 2026:
google/vit-base-patch16-224 (Google) carries the apache-2.0 tag on huggingface.co (verified).MIT/ast-finetuned-audioset-10-10-0.4593; BSD-3-Clause according to a third-party page, not confirmed on the official card.Xenova account; the licence of each conversion was not verified (the Xenova cards could not be opened), so it stays "to be verified".null or non-object entry in the model's “alternatives” no longer throws away the whole result.FFF.dialog) instead of an own copy with a native fallback; browser keys now carry the vietar. prefix (iff_cfg, iff_consent, iff_loc, iff_seen, vietar_lang → vietar.cfg, .consent, .loc, .seen, .lang) and the old ones are migrated automatically at start-up (also after importing an old .fff.json backup), so the saved AI settings, consent and language are kept. The version.json / in-page version check are aligned again.file://, offline, or download/start-up failure — plus technical details and the "↻ Retry analysis" button (tested with the network blocked on a local server).connect-src remains deliberately broad (models, ONNX Runtime, optional online AI).script-src by hash instead of 'unsafe-inline'; verified through a local HTTP server (the module and the interface start without CSP violations).file:// transformers.js is no longer imported statically (CORS error at start-up); it is loaded on demand, the interface stays functional and a visible warning appears with the steps for a local HTTP server.<main> and correct heading order (h2 in dialogs and cards); 0 axe-core violations at 1280 and 360 px.