Tập Nhạc

Quyền riêng tư

Tập Nhạc ưu tiên dữ liệu trên thiết bị. Thư viện, các đoạn luyện và lịch sử luyện tập của bạn nằm trên chính máy của bạn, và không gì rời khỏi đó trừ khi bạn đăng nhập và dùng một tính năng cần đám mây.

Trang này mô tả điều ứng dụng làm hôm nay. Nó được viết từ mã nguồn, không phải từ một mẫu có sẵn.

Điều gì ở lại trên thiết bị của bạn

Mặc định là mọi thứ. Bản nhạc, đoạn luyện, lịch sử luyện tập, cài đặt, số ngón, bộ sưu tập và bản nháp trong trình soạn nhạc được lưu trong cơ sở dữ liệu IndexedDB của trình duyệt, tên primavista, qua Dexie. Một lượng nhỏ trạng thái giao diện (giao diện sáng/tối, tên đăng nhập được ghi nhớ, những hướng dẫn đã xem, cờ chào mừng) nằm trong localStorage.

Một số thứ không bao giờ đồng bộ: bộ nhớ đệm ảnh thu nhỏ được dựng lại từ bản nhạc của bạn, danh mục gói nhạc cụ, ba cài đặt mô tả riêng một thiết bị (thiết bị MIDI, độ lệch độ trễ, giữ cho màn hình thức), bản nháp và phiên bản trong trình soạn nhạc, bộ nhớ đệm soundfont và khắc nhạc, và bộ nhớ đệm của service worker.

Bạn có thể dùng cả vòng lặp luyện tập (nhập bản nhạc, chọn đoạn, luyện) mà không cần tài khoản và không cần kết nối. Sau khi ứng dụng đã tải, nó chạy offline.

Tài khoản tuỳ chọn

Tài khoản là tuỳ chọn và chỉ cần cho đồng bộ, chia sẻ, lớp học và Compose with Claude. Tài khoản có một tên đăng nhập do bạn chọn và một passkey (WebAuthn). Không có địa chỉ email, không mật khẩu và không số điện thoại.

Máy chủ lưu tên đăng nhập, nửa công khai của passkey cùng bộ đếm chữ ký của nó, và một thử thách dùng một lần trong lúc đăng nhập. Đăng nhập thành công sẽ đặt một cookie phiên tên pv_session: httpOnly, SameSite=Lax, 30 ngày, và Secure khi phục vụ qua HTTPS. Đó là cookie duy nhất ứng dụng đặt.

Đồng bộ đám mây và bản sao lưu

Khi đã đăng nhập, thiết bị của bạn đẩy những dòng đã thay đổi và kéo mọi thứ mới hơn con trỏ cuối cùng. Những gì được tải lên:

  • Các bài nhạc, kể cả tệp bản nhạc và thông tin mô tả.
  • Các đoạn luyện (khoảng ô nhịp bạn luyện) và tiến độ của chúng.
  • Lịch sử luyện tập, gói một dòng cho mỗi bài mỗi ngày thay vì một dòng cho mỗi nốt.
  • Các buổi luyện, số ngón, bộ sưu tập và ghi chú ô nhịp của riêng bạn.
  • Cài đặt, trừ ba trường chỉ thuộc thiết bị nêu ở trên.

Các dòng được lưu trong Cloudflare D1. Tệp bản nhạc được lưu trong Cloudflare R2 theo mã băm nội dung, dưới mã người dùng của bạn. Mọi lần đọc và ghi trên máy chủ đều giới hạn trong tài khoản đang đăng nhập; máy chủ kiểm tra từng dòng và không xem nội dung âm nhạc.

Xoá. Xoá một bài, một đoạn hoặc một dòng đã đồng bộ sẽ ghi lại một dấu xoá, để lệnh xoá đến được các thiết bị khác. Một tác vụ hằng ngày lúc 03:17 UTC xoá các dấu xoá cũ hơn 90 ngày, và xoá những tệp bản nhạc không còn bài nào dùng tới khi chúng đã cũ hơn 30 ngày. Một thiết bị offline lâu hơn mức đó sẽ đồng bộ lại từ đầu.

Đăng xuất để nguyên bản sao trên đám mây. Bạn cũng có thể tích vào "Xoá cả thư viện khỏi thiết bị này" để xoá bản cục bộ. Hôm nay ứng dụng chưa có nút xoá tài khoản, nên đăng xuất (kể cả khi đã xoá thư viện cục bộ) không xoá bản trên đám mây.

Các phiên bản cũ của ứng dụng còn tải lên một tệp sao lưu cả thư viện cho mỗi tài khoản. Phiên bản hiện tại đọc nó một lần để chuyển dữ liệu và không ghi nữa.

Chia sẻ và liên kết lớp

Một bản nhạc mặc định là riêng tư và không bao giờ rời khỏi thiết bị của bạn. Xuất bản một bản nhạc sẽ tải lên một ảnh chụp: một dòng trong D1 và tệp MusicXML trong R2.

  • Công khai: ai có liên kết cũng mở được, và công cụ tìm kiếm có thể lập chỉ mục.
  • Không niêm yết: ai có liên kết cũng mở được, nhưng trang yêu cầu công cụ tìm kiếm không lập chỉ mục.
  • Riêng tư: bản nhạc ở lại trên thiết bị của bạn. Một liên kết thiếu, của người khác, riêng tư hoặc chưa xuất bản đều trả về cùng một câu "không tìm thấy", nên không thể dò mã.

Bỏ xuất bản sẽ xoá tệp bản nhạc và liên kết ngừng hoạt động. Bình luận trên một bản chia sẻ mặc định tắt; chủ sở hữu có thể bật "Hiện bình luận" và "Cho phép bình luận". Nội dung bình luận là văn bản thuần, và tên người bình luận hiện ra khi bình luận được hiện.

Liên kết lớp. Giáo viên tạo một lớp và nhận một liên kết mời. Máy chủ chỉ lưu mã băm của token mời, nên liên kết chỉ hiện một lần và có thể đổi hoặc tắt. Học sinh mở liên kết sẽ thấy nội dung đồng ý trước khi tham gia: giáo viên sẽ thấy số phút luyện, độ chính xác và mức ghi nhớ của các bài được giao.

Điều giáo viên nhận được chỉ là số liệu tổng hợp theo từng bài được giao: số phút, độ chính xác, số đoạn đã học, mức ghi nhớ, tốc độ và lần luyện gần nhất. Lược đồ tiến độ chặt chẽ và từ chối các lần chấm nốt thô, và API lớp học không có đường nào tới các dòng đồng bộ của học sinh. Bản nhạc của lớp nằm trong R2 và chỉ trả về cho giáo viên và những thành viên được giao đúng bài đó.

Liên kết phụ huynh chỉ đọc, dành cho một học sinh, và chỉ hiện số liệu tổng hợp cùng tên bài: không có bản nhạc và không có học sinh khác. Liên kết hết hạn sau 90 ngày theo mặc định, có thể thu hồi, và kết thúc khi học sinh rời lớp. Rời lớp hoặc bị xoá khỏi lớp sẽ kết thúc quyền truy cập ngay lập tức và xoá các luồng riêng của học sinh đó.

Compose with Claude

Bảng "Compose with Claude" trong trình soạn nhạc cần kết nối và một tài khoản đã đăng nhập. Không gì được gửi đi đâu trừ khi bạn dùng nó.

Khi bạn dùng, câu lệnh của bạn và phần văn bản bản nhạc mà mô hình đọc được gửi từ trình duyệt đến Worker của chính ứng dụng, rồi Worker chuyển tiếp đến Messages API của Anthropic. Khoá API ở lại trên máy chủ: nó không bao giờ đến trình duyệt và không bao giờ được ghi vào log (một lần gọi lỗi chỉ ghi mã trạng thái).

Tập Nhạc không giữ bản sao cuộc trò chuyện. Ứng dụng chỉ lưu số lần gọi trong D1, dùng cho giới hạn 60 lần gọi mỗi người dùng mỗi ngày. Việc Anthropic xử lý yêu cầu tuân theo điều khoản của chính Anthropic.

Không quảng cáo, không cookie theo dõi

Không có quảng cáo và không theo dõi xuyên trang. Lượt xem trang được đếm bằng Cloudflare Web Analytics, công cụ không đặt cookie và không theo bạn qua các trang khác. Cookie duy nhất ứng dụng đặt là cookie phiên nêu ở trên, và chỉ khi bạn đã đăng nhập.

Khi ứng dụng gặp lỗi, nó gửi một báo cáo nhỏ: nội dung lỗi, mẫu đường dẫn (đã bỏ mã định danh và mã mời), phiên bản ứng dụng và họ trình duyệt (ví dụ "chrome"). Báo cáo không kèm tài khoản, địa chỉ IP hay bất cứ thứ gì trong bản nhạc của bạn, và chỉ được lưu dưới dạng số lần xuất hiện của mỗi lỗi theo giờ.

Phông chữ, soundfont piano và các bản nhạc có sẵn được phục vụ từ chính ứng dụng, không từ CDN của bên thứ ba. localStorage giữ tuỳ chọn giao diện và các cờ, không giữ mã định danh dùng để theo dõi bạn.