Ngày hiệu lực: .
Phạm vi và cookie
Trang này mô tả mã trang chủ và trang học /hoc được đối chiếu. Mã trang chủ không đọc/ghi localStorage, sessionStorage hay IndexedDB và không tự đặt cookie bằng JavaScript. Không thấy tích hợp quảng cáo hoặc phân tích hành vi của bên thứ ba trong các phần mã đã kiểm tra.
Cookie được trình duyệt gửi cùng yêu cầu HTTP theo phạm vi cookie. localStorage, sessionStorage và IndexedDB là các kho khác, không tự động gửi toàn bộ nội dung đi; mã đăng nhập hoặc đồng bộ có thể đọc và sử dụng dữ liệu như mô tả dưới đây. Không có tên cookie do ứng dụng tự đặt để liệt kê trong mã đã kiểm tra; điều này không khẳng định trang đăng nhập Google hoặc hạ tầng máy chủ không dùng cookie.
Lưu trữ đang dùng
Trên màn hình nhỏ, vuốt ngang trong bảng để đọc đủ các cột; có thể dùng phím Tab tới bảng và phím mũi tên để cuộn.
| Kho | Tên khoá / cơ sở dữ liệu | Mục đích | Thời hạn / khi đăng xuất | Có gửi máy chủ không? |
|---|---|---|---|---|
| localStorage | ni-theme | Lựa chọn sáng/tối cũ, dùng dự phòng khi chưa có theme mới. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Không; chỉ dùng trên thiết bị. |
| localStorage | ni-learning-theme | Lựa chọn sáng/tối của trang học. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Có thể đồng bộ giá trị sáng/tối trong tùy chọn tiến độ theo tài khoản. |
| localStorage | ni-learning-theme-mode | Giá trị system để theo giao diện hệ điều hành. | Giữ khi đăng xuất; xoá khi chọn sáng/tối cụ thể; không có hạn tự hết. | Không; chỉ dùng trên thiết bị. |
| localStorage | ni-learning-font | Cỡ chữ small, normal, large, xlarge. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Cỡ cụ thể ở thiết bị; trạng thái chữ lớn largeText có thể đồng bộ theo tài khoản. |
| localStorage | ni-learning-motion, ni-learning-sfx | Bật/tắt chuyển động và âm thanh hiệu ứng. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Không; chỉ dùng trên thiết bị. |
| localStorage | ni-learning-speech-rate | Tốc độ đọc. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Không; chỉ dùng trên thiết bị. |
| localStorage | ni-learning-path-view | Kiểu xem lộ trình: bản đồ hoặc danh sách. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Không; chỉ dùng trên thiết bị. |
| localStorage | ni-learning-goal | Mục tiêu XP mỗi ngày; độc lập với tiến độ đồng bộ. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Không; chỉ dùng trên thiết bị. |
| localStorage | ni-learning-onboarded, ni-learning-reason | Đã hoàn tất/bỏ qua hướng dẫn và lý do học đã chọn. | Không có hạn tự hết; giữ khi đăng xuất, tới khi đổi hoặc xoá dữ liệu trang web. | Không; chỉ dùng trên thiết bị. |
| localStorage | ni-account-pending-delete-v1 | UID và createdAt để tiếp tục xác thực xoá tài khoản; chặn ghi đồng bộ khi đang chờ. | Hợp lệ 10 phút; quá hạn/lỗi không tự xoá. Xoá khi hoàn tất xoá tài khoản hoặc đăng xuất thành công trong trạng thái chờ xoá. | Không tải bản ghi này lên; UID dùng để kiểm tra đúng tài khoản cho thao tác xoá dữ liệu/tài khoản có xác thực. |
| sessionStorage | ni-account-sign-in-return-v1 | Đường dẫn và createdAt để trở lại trang học sau đăng nhập. | Hợp lệ 10 phút; xoá khi đọc kết quả, hoàn tất/huỷ đăng nhập hoặc bắt đầu chuyển hướng xoá. Đăng xuất không có bước xoá riêng; nếu còn thì theo phiên tab. | Không; chỉ dùng trên thiết bị. |
| Firebase Auth: IndexedDB, dự phòng localStorage/sessionStorage | firebaseLocalStorageDb / store firebaseLocalStorage (keyPath fbase_key); khoá firebase:authUser:[API_KEY]:[APP_NAME] | Duy trì phiên đăng nhập. SDK ưu tiên IndexedDB, rồi localStorage, rồi sessionStorage; cuối cùng dùng RAM nếu không kho nào khả dụng. | Xoá bản ghi người dùng khi đăng xuất/xoá tài khoản; DB/store có thể còn. IndexedDB/localStorage duy trì qua lần mở trình duyệt; sessionStorage theo phiên tab. | Có: token dùng với Firebase/Google và xác thực yêu cầu tới máy chủ dịch vụ; refresh token dùng làm mới phiên. |
| Firebase Auth: sessionStorage | firebase:pendingRedirect:[API_KEY]:[APP_NAME] | Cờ có thao tác xác thực chuyển hướng đang chờ. | Xoá khi đọc kết quả chuyển hướng; đăng xuất không xoá cờ này riêng. Nếu còn thì theo phiên tab. | Cờ chỉ được SDK kiểm tra cục bộ để xử lý chuyển hướng; không tải cờ lên máy chủ. |
| Firebase Auth: sessionStorage | firebase:redirectUser:[API_KEY]:[APP_NAME] | Thông tin người dùng để nối tiếp xác thực qua chuyển hướng. | Xoá sau kết quả thành công hoặc đăng xuất; nếu còn thì theo phiên tab. | Có: thông tin xác thực được dùng trong luồng Firebase/Google; không tự gửi toàn bộ bản ghi như cookie. |
| Firebase SDK: IndexedDB | firebase-heartbeat-database / store firebase-heartbeat-store; khoá [APP_NAME]![APP_ID] | Heartbeat kỹ thuật: ngày UTC, thông tin thư viện/phiên bản Firebase và ngày tạo header gần nhất. | Giữ khi đăng xuất; không có hạn tự hết theo thời gian. Tối đa một bản/ngày, 30 bản ghi; bỏ bản có ngày sớm nhất khi vượt giới hạn. Gỡ bản đưa vào header lúc tạo, giữ phần còn lại và ngày tạo header. | Có: Firebase Auth gửi dữ liệu heartbeat tới Firebase qua header X-Firebase-Client khi có dữ liệu. |
| Firebase SDK: kiểm tra IndexedDB | validate-browser-context-for-indexeddb-analytics-module | Thử mở IndexedDB khi khởi tạo SDK, kể cả Auth; không ghi bản ghi. Tên này không chứng minh có Firebase Analytics. | Đóng sau khi mở thành công; yêu cầu xoá nếu vừa tạo mới, giữ DB đã có. Không có bước dọn riêng khi đăng xuất. | Không gửi nội dung kho thử. |
| Firebase Auth: thử khả năng lưu trữ | __sak (localStorage/sessionStorage hoặc bản ghi trong store IndexedDB của Auth) | Kiểm tra có thể lưu phiên trong trình duyệt. | Ghi rồi xoá ngay trong phép thử; không chờ đăng xuất. | Không gửi giá trị thử lên máy chủ. |
| Bộ nhớ của trang (RAM) | Không có khoá lưu bền cho tiến độ hiện tại | Tiến độ/SRS, từ đã lưu, đề đã tải, kết quả và bài làm dở của phiên hiện tại. | Xoá/đặt lại dữ liệu tài khoản trong RAM khi đăng xuất/đổi tài khoản; bộ nhớ đề được dọn khi đóng thành phần. Không xoá bản đã đồng bộ trên máy chủ. | Có: tiến độ, từ đã lưu, kết quả/bài làm dở đồng bộ theo tài khoản; đề thi được tải từ máy chủ. |
Các phần [API_KEY], [APP_NAME], [APP_ID], [PROJECT_ID] và [encodeURIComponent(uid)] là mẫu tên kỹ thuật, không phải dữ liệu cần điền; tên ứng dụng có dạng ni-account-[PROJECT_ID]. Dấu * biểu thị phần tên thay đổi; các biểu thức có ^, $, .* và \d+ mô tả chính xác cách mã nhận diện tên khoá cũ. Mã trang học còn có hàng đợi nhật ký ôn thẻ trong bộ nhớ, với deviceId ngẫu nhiên cho phiên; cấu hình hiện tại chỉ gửi nhật ký này cho tài khoản quản trị tới máy chủ dịch vụ. Đây là dữ liệu vận hành học tập, không phải tích hợp phân tích của bên thứ ba.
Dữ liệu còn lại từ phiên bản cũ
Các mục dưới đây chỉ có thể còn trên trình duyệt từng dùng phiên bản cũ. Không mô tả chúng như kho ghi tiến độ hiện tại.
| Kho | Tên khoá / cơ sở dữ liệu | Mục đích | Thời hạn / khi đăng xuất | Có gửi máy chủ không? |
|---|---|---|---|---|
| localStorage/sessionStorage cũ | ni-study-progress-v1, ni-study-progress-hsk3-2025-v1, ni-hsk1-deck-v1, ni-hsk1-hsk3-2025-deck-v1; nhận diện bằng ^ni-study-progress.*-v\d+$, ^ni-hsk1.*-deck-v\d+$ | Tiến độ và bộ thẻ cũ. Chỉ đọc localStorage để chuyển; dọn tên khớp trong cả hai kho. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. | Có: tiến độ hợp lệ, tương thích và đủ điều kiện sở hữu được gộp vào tài khoản; không tải nguyên bản sao thô của các khoá lên. |
| localStorage/sessionStorage cũ | ni-account-last-uid-v1 | Dấu UID cũ để xác định quyền nhận dữ liệu; không phải phiên đăng nhập hiện tại. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. | Không tải dấu này lên; dùng cục bộ để xét dữ liệu nào được chuyển. |
| localStorage/sessionStorage cũ | ni-app-progress-device-v1, nishishei.quanTri.seen.* | Tên dữ liệu/dấu cũ được mã hiện tại nhận diện để dọn; không còn đường ghi đang dùng. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. | Không có đường tải các mục này lên trong mã đã đối chiếu. |
| localStorage/sessionStorage cũ | tu-dien-da-luu-v1, tu-dien-da-luu-v1-owners | Từ đã lưu cũ và hồ sơ/dấu sở hữu; chỉ đọc localStorage để chọn dữ liệu đúng tài khoản. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. | Có: các bản ghi từ đã lưu đủ điều kiện được chuyển; không tải toàn bộ hồ sơ sở hữu lên. |
| IndexedDB cũ | ni-learning-v1: store state (khoá local-profile, account-backup-pins-v1), legacy-backups (ID bản sao), quarantine (thời điểm + UUID/số ngẫu nhiên) | Tiến độ cũ, bản sao và dữ liệu cách ly; bước chuyển đọc local-profile và kiểm tra thêm migration nếu có. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. Lease giữ bản sao có hạn 24 giờ; đây không phải hạn tự xoá toàn DB. | Có: tiến độ hợp lệ, đủ điều kiện từ hồ sơ được chuyển; không tải kho pin, bản sao thô hoặc dữ liệu cách ly lên. |
| IndexedDB cũ | ni-app-progress-v1: store progress (khoá profile, migration), backups (ID bản sao) | Tiến độ ứng dụng cũ và thông tin sở hữu/chuyển dữ liệu; bản sao dự phòng. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. | Có: hồ sơ tiến độ hợp lệ, đủ điều kiện được chuyển; không tải nguyên metadata hoặc kho bản sao lên. |
| IndexedDB cũ | tu-dien-da-luu-v1-lock: store lock, khoá tu-dien-da-luu-v1 | Khoá đồng bộ ghi từ đã lưu của adapter cũ; không phải dữ liệu học. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. | Không. |
| IndexedDB cũ | ni-private-mock-tests-v1 / ni-private-mock-tests-[encodeURIComponent(uid)]: stores downloads, summaries, khoá ID đề; dọn nhóm ni-private-mock-tests-* | Bản đề và tóm tắt tải cũ; ứng dụng hiện tại dùng RAM, không mở các bản cũ này để chuyển. | Giữ khi đăng xuất nếu chưa chuyển xong; dọn sau khi máy chủ xác nhận tiến độ và từ đã lưu đủ điều kiện. | Không tải nội dung từ các kho cũ này lên. |
| IndexedDB: kết quả cũ theo tài khoản | ni-private-mock-results-[encodeURIComponent(uid)]: store results (keyPath id), attempts (keyPath examId) | Đọc kết quả và bài dở của đúng UID đang xác thực để chuyển lên máy chủ. | Giữ khi đăng xuất nếu chưa chuyển xong; sau xác nhận tài liệu đã gộp của UID hiện tại, dọn toàn nhóm ni-private-mock-results-*. Có thể cần đóng tab cũ. | Có: kết quả/bài làm dở hợp lệ của UID đang xác thực được gộp và đồng bộ; không đọc tài khoản khác để tải lên. |
Google Fonts
Trang chủ và các trang pháp lý tải phông Be Vietnam Pro và Nunito từ fonts.googleapis.com và fonts.gstatic.com. Khi trình duyệt kết nối để tải phông, địa chỉ IP của bạn được gửi tới Google. Bản tải có thể được trình duyệt lưu đệm; thời hạn phụ thuộc phản hồi máy chủ và trình duyệt.
Cách xoá và quản lý
Trong cài đặt trình duyệt, mở phần quyền riêng tư hoặc dữ liệu trang web, tìm nishishei.vn rồi xoá dữ liệu trang web và bộ nhớ đệm nếu cần. Tên mục khác nhau theo trình duyệt. Đăng xuất để kết thúc phiên Firebase Auth; xoá dữ liệu trang web có thể làm mất các tùy chọn, đăng xuất và xoá bản cũ chưa chuyển xong.
Đóng tab kết thúc sessionStorage theo cơ chế phiên của trình duyệt; chức năng khôi phục phiên có thể giữ lại phiên tab. Việc xoá dữ liệu trình duyệt không xoá dữ liệu trên máy chủ hoặc tài khoản Google. Để yêu cầu xoá tài khoản/dữ liệu đã đồng bộ, xem Xoá tài khoản và Chính sách quyền riêng tư.
Đơn vị chịu trách nhiệm: nishishei.vn. Liên hệ: info.upsoftware@gmail.com.
Cookies and browser storage (English)
Effective date: .
Scope and cookies
This page describes the homepage and /hoc source reviewed. The homepage code does not read/write localStorage, sessionStorage or IndexedDB and does not set cookies with JavaScript. No advertising or third-party behavioral analytics integration was found in the reviewed source.
Browsers send cookies with HTTP requests within their cookie scope. localStorage, sessionStorage and IndexedDB are different stores and do not automatically upload their entire contents; sign-in or synchronization code may read and use data as described below. No application-defined cookie name was found in the reviewed code; this does not assert that Google sign-in pages or server infrastructure use no cookies.
Current browser storage
On small screens, swipe horizontally inside a table to read all columns; keyboard users can Tab to a table and use arrow keys to scroll.
| Store | Key / database | Purpose | Retention / sign-out | Sent to a server? |
|---|---|---|---|---|
| localStorage | ni-theme | Legacy light/dark choice, used as a fallback when no newer theme is set. | No automatic expiry; kept on sign-out until changed or site data is cleared. | No; device use only. |
| localStorage | ni-learning-theme | Learning-site light/dark choice. | No automatic expiry; kept on sign-out until changed or site data is cleared. | The light/dark value may synchronize as an account learning preference. |
| localStorage | ni-learning-theme-mode | The value system follows the operating-system appearance. | Kept on sign-out; removed when an explicit light/dark choice is made; no automatic expiry. | No; device use only. |
| localStorage | ni-learning-font | Text size: small, normal, large, xlarge. | No automatic expiry; kept on sign-out until changed or site data is cleared. | Exact size stays on the device; the largeText boolean may synchronize with the account. |
| localStorage | ni-learning-motion, ni-learning-sfx | Motion and sound-effect switches. | No automatic expiry; kept on sign-out until changed or site data is cleared. | No; device use only. |
| localStorage | ni-learning-speech-rate | Reading speed. | No automatic expiry; kept on sign-out until changed or site data is cleared. | No; device use only. |
| localStorage | ni-learning-path-view | Learning-path map or list view. | No automatic expiry; kept on sign-out until changed or site data is cleared. | No; device use only. |
| localStorage | ni-learning-goal | Daily XP target; independent of synchronized progress. | No automatic expiry; kept on sign-out until changed or site data is cleared. | No; device use only. |
| localStorage | ni-learning-onboarded, ni-learning-reason | Completed/skipped onboarding and the selected study reason. | No automatic expiry; kept on sign-out until changed or site data is cleared. | No; device use only. |
| localStorage | ni-account-pending-delete-v1 | UID and createdAt for resuming account-deletion authentication; blocks synchronization writes while pending. | Valid for 10 minutes; expired/invalid entries are not automatically removed. Removed on completed deletion or successful sign-out while deletion is pending. | The record is not uploaded; the UID checks the correct account for authenticated data/account deletion. |
| sessionStorage | ni-account-sign-in-return-v1 | Return path and createdAt for returning to study after sign-in. | Valid for 10 minutes; removed on result reading, sign-in completion/cancellation or starting a deletion redirect. No separate sign-out cleanup; otherwise follows the tab session. | No; device use only. |
| Firebase Auth: IndexedDB, with localStorage/sessionStorage fallback | firebaseLocalStorageDb / store firebaseLocalStorage (keyPath fbase_key); key firebase:authUser:[API_KEY]:[APP_NAME] | Maintains sign-in state. The SDK prefers IndexedDB, then localStorage, then sessionStorage; finally RAM if none is available. | User record removed on sign-out/account deletion; the DB/store may remain. IndexedDB/localStorage survives browser reopening; sessionStorage follows the tab session. | Yes: tokens are used with Firebase/Google and to authenticate service-server requests; refresh tokens renew the session. |
| Firebase Auth: sessionStorage | firebase:pendingRedirect:[API_KEY]:[APP_NAME] | Flag for a pending redirect authentication operation. | Removed when the redirect result is read; sign-out does not separately remove this flag. Otherwise follows the tab session. | The SDK checks the flag locally to process redirects; the flag is not uploaded. |
| Firebase Auth: sessionStorage | firebase:redirectUser:[API_KEY]:[APP_NAME] | User information for continuing redirect authentication. | Removed after a successful result or sign-out; otherwise follows the tab session. | Yes: authentication information is used in the Firebase/Google flow; the whole record is not automatically sent as a cookie. |
| Firebase SDK: IndexedDB | firebase-heartbeat-database / store firebase-heartbeat-store; key [APP_NAME]![APP_ID] | Technical heartbeat: UTC dates, Firebase library/version information and the most recent header-generation date. | Kept on sign-out; no time-based automatic expiry. At most one entry per day, up to 30 records; the earliest-dated record is evicted when exceeded. Entries included in a header are removed when generated; remaining entries and the header date are kept. | Yes: Firebase Auth sends available heartbeat data to Firebase in the X-Firebase-Client header. |
| Firebase SDK: IndexedDB check | validate-browser-context-for-indexeddb-analytics-module | Tests opening IndexedDB on SDK initialization, including Auth; writes no records. This name does not establish Firebase Analytics use. | Closed after a successful open; deletion requested if newly created, existing DB retained. No separate sign-out cleanup. | No test-database contents are sent. |
| Firebase Auth: storage-availability probe | __sak (localStorage/sessionStorage or a record in the Auth IndexedDB store) | Checks whether the browser can persist a session. | Written and immediately removed by the probe; does not wait for sign-out. | The test value is not uploaded. |
| Page memory (RAM) | No persistent key for current progress | Current-session progress/SRS, saved words, downloaded exams, results and unfinished attempts. | Account data in RAM is cleared/reset on sign-out/account change; exam memory is cleared when its component closes. Synchronized server data is retained. | Yes: progress, saved words and results/drafts synchronize with the account; exam content is downloaded from the server. |
[API_KEY], [APP_NAME], [APP_ID], [PROJECT_ID] and [encodeURIComponent(uid)] are technical naming patterns, not fields to complete; the app name follows ni-account-[PROJECT_ID]. An asterisk denotes a variable name segment; expressions with ^, $, .* and \d+ show the exact legacy-key matching rules. The learning code also has an in-memory card-review log queue with a random session deviceId; its current configuration sends these logs only for administrator accounts to the service server. This is functional learning data, not a third-party analytics integration.
Data remaining from older versions
The following items may remain in browsers that used earlier versions. They are not described as current progress-write stores.
| Store | Key / database | Purpose | Retention / sign-out | Sent to a server? |
|---|---|---|---|---|
| Legacy localStorage/sessionStorage | ni-study-progress-v1, ni-study-progress-hsk3-2025-v1, ni-hsk1-deck-v1, ni-hsk1-hsk3-2025-deck-v1; matched by ^ni-study-progress.*-v\d+$, ^ni-hsk1.*-deck-v\d+$ | Older progress and decks. Migration reads localStorage only; cleanup matches names in both stores. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. | Yes: valid, compatible progress with eligible ownership is merged into the account; raw copies of the keys are not uploaded. |
| Legacy localStorage/sessionStorage | ni-account-last-uid-v1 | Older UID marker for data-claim eligibility; not the current sign-in session. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. | The marker is not uploaded; it determines migration eligibility locally. |
| Legacy localStorage/sessionStorage | ni-app-progress-device-v1, nishishei.quanTri.seen.* | Older data/marker names recognized for cleanup; no current write path. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. | No upload path for these entries was found in the reviewed code. |
| Legacy localStorage/sessionStorage | tu-dien-da-luu-v1, tu-dien-da-luu-v1-owners | Older saved words and ownership profiles/markers; localStorage alone is read to select the correct account's data. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. | Yes: eligible saved-word records are migrated; the entire ownership manifest is not uploaded. |
| Legacy IndexedDB | ni-learning-v1: store state (keys local-profile, account-backup-pins-v1), legacy-backups (backup IDs), quarantine (timestamp + UUID/random number) | Older progress, backups and quarantined data; migration reads local-profile and also checks migration if present. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. Backup-pin leases expire after 24 hours; this is not automatic expiry of the entire DB. | Yes: eligible, valid profile progress is migrated; pin storage, raw backups and quarantined data are not uploaded. |
| Legacy IndexedDB | ni-app-progress-v1: store progress (keys profile, migration), backups (backup IDs) | Older app progress and ownership/migration metadata; backup copies. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. | Yes: eligible, valid profile progress is migrated; raw metadata and the backup store are not uploaded. |
| Legacy IndexedDB | tu-dien-da-luu-v1-lock: store lock, key tu-dien-da-luu-v1 | Old adapter's saved-word write lock; not learning data. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. | No. |
| Legacy IndexedDB | ni-private-mock-tests-v1 / ni-private-mock-tests-[encodeURIComponent(uid)]: stores downloads, summaries, keyed by exam ID; cleanup group ni-private-mock-tests-* | Older downloaded exams and summaries; the current application uses RAM and does not open these older copies for migration. | Kept on sign-out if migration is unfinished; cleaned after server acknowledgement of eligible progress and saved words. | No content from these legacy stores is uploaded. |
| IndexedDB: older account results | ni-private-mock-results-[encodeURIComponent(uid)]: store results (keyPath id), attempts (keyPath examId) | Reads results and unfinished attempts for the authenticated UID for server migration. | Kept on sign-out if migration is unfinished; after acknowledgement of the current UID's merged document, the entire ni-private-mock-results-* group is cleaned. Older tabs may need closing. | Yes: valid results/drafts for the authenticated UID are merged and synchronized; other accounts are not read for upload. |
Google Fonts
The homepage and legal pages load Be Vietnam Pro and Nunito from fonts.googleapis.com and fonts.gstatic.com. When the browser connects to fetch fonts, your IP address is sent to Google. Downloads may be cached by the browser; retention depends on the server response and browser.
Removal and controls
In browser settings, open privacy or site data, find nishishei.vn and clear its site data and cache as needed. Labels vary by browser. Sign out to end the Firebase Auth session; clearing site data may remove preferences, sign you out and erase older data before migration is complete.
Closing a tab ends sessionStorage according to the browser session mechanism; session restoration may retain a tab session. Clearing browser data does not delete server data or your Google account. For account/synchronized-data deletion, see Account deletion and the Privacy policy.
Responsible entity: nishishei.vn. Contact: info.upsoftware@gmail.com.