feat(installed): Align install and session lifecycle with new schema #225
+328
−358
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Description
SHA256("nori_salt:<hostname>:<username>")and persist it asclient_idin the state file, and add anopt_outboolean to the state schema saved at$NORI_HOME/.nori-install.json.app_install,app_update,user_resurrected(if last launch > 30 days), andsession_start, generate an ephemeralsession_idper run, and use semver comparison (viasemvercrate) to detect upgrades.event,client_id,session_id,timestamp, andproperties(version/os/arch/node_version/is_ci), send toNORI_ANALYTICS_URL(defaulthttps://noriskillsets.dev/api/analytics/track) with a 500ms timeout, fire-and-forget behavior, and silent failure handling.NORI_NO_ANALYTICS=1wins, otherwise theopt_outfield in.nori-install.jsonprevents network sends while still updating local state timestamps atomically (temp file + rename preserved).semveranduuid, updatedinstalledcrate implementation, tests, anddocs.mdto reflect the new schema and event types.Testing
just fmtand lint fixes withjust fix -p nori-installed(ran automatically as part of the change process).cargo test -p nori-installed, and all tests passed (28 passed; 0 failed).Codex Task