feat(status): show tier + expiry date in scripts/status.sh output#51
Merged
saurabhjain1592 merged 2 commits intomainfrom May 5, 2026
Merged
feat(status): show tier + expiry date in scripts/status.sh output#51saurabhjain1592 merged 2 commits intomainfrom
saurabhjain1592 merged 2 commits intomainfrom
Conversation
Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com>
Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com>
755d65e to
0bcd4ba
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
V1 SaaS Plugin Pro tier-line surface parity (#1886 sub-item, Session E4 of the V1 launch). The
scripts/status.shoutput'stierline now parses the JWTexpclaim from the configured Pro license token and renders one of three shapes:tier Pro (expires 2026-08-03, 90 days remaining)— paid Pro tier activetier Free (Pro expired 2026-02-04 — visit https://getaxonflow.com/pro to renew)— token configured but itsexpis in the past (the plugin will not forward an expired token)tier Free (no Pro license configured)— no token loadedtier Pro (expires UNKNOWN — could not parse token)The standalone
upgradeline is now suppressed for active-Pro and Pro-expired users (the renew URL is embedded in the tier line itself for the expired case; active-Pro users don't need the line in their face).Updates
skills/axonflow-status/SKILL.mdto document the three new shapes and the renew workflow.Display only — JWT signature validation remains the platform's job.
Self-review (5-question protocol per hunk)
Walked every hunk against (a) commit message accuracy, (b) template / boilerplate residue, (c) env / secret / path correctness, (d) tests exercise the claimed behavior, (e) byte-shippable to a customer.
scripts/status.sh— addedextract_jwt_exp()+format_unix_to_date()helpers (portablebase64 -d/-D,date -d @<epoch>/-r <epoch>); refactored the binaryTIERflag intoTIER_LINE/TIER_KIND/PRO_EXPIRED_FLAGso the formatter can branch cleanly. Token-leak guard preserved (codex#41 redaction shape). Theupgradeline is now conditional onTIER_KIND="free"— extra Pro-expired help block prints the renew CTA inline.skills/axonflow-status/SKILL.md— added "Tier line shape" section describing the four output shapes (Pro / Pro-could-not-parse / Pro-expired / Free). All references stay cursor-specific (/recover-credentialsnot/axonflow-recover).tests/install-smoke/run.sh— addedmint_axon_jwt()helper, then 3 new assertion blocks asserting the regex shape of each tier-line variant. Pre-existing assertions (token leak guard, last-4 redaction, tenant_id surfacing, recovery hint) preserved.CHANGELOG.md— single Unreleased entry under "Added", no version bump.Test plan
CI:
ci.yml— lint + jest (matrix node 20, 22)install-to-use-smoke.yml— exercisestests/install-smoke/run.sh(27 assertions, all 3 tier-line shapes covered)definition-of-done.yml(HARD RULE #0 gate)Local runtime evidence (3 cases, captured against this PR's branch):
tests/install-smoke/run.shlocally: 27 PASS / 0 FAIL.Notes for the orchestrator
package.json/plugin.jsonchanges — code merge only perfeedback_releases_require_approval.md.