Skip to main content

max / makenotwork

Dashboard polish (v0.5.4) Rename "Creator Tier" to "Creator Plan" across all templates. Show storage usage inline on plan card with link to tier docs. Hide Account Status section when no moderation actions (was showing "good standing" noise). Add section headers to More dropdown (Content, Integration, Support). Add "Explore Your Project Tools" collapsible card with 6 feature descriptions in project overview. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author: Max J. <87768334+MaxJMath@users.noreply.github.com> · 2026-05-07 22:44 UTC
Commit: f45afbbdef6ede227498f49f5c911c9eb45072a6
Parent: ef825eb
7 files changed, +53 insertions, -21 deletions
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "makenotwork"
3 - version = "0.5.3"
3 + version = "0.5.4"
4 4 edition = "2024"
5 5 license-file = "LICENSE"
6 6
@@ -34,19 +34,15 @@ Creators with 20+ items need these. One-at-a-time editing doesn't scale.
34 34
35 35 Join wizard collapsed from 5 steps to 3 (Account, Profile, Welcome). Pitch and Stripe removed from wizard — pitch lives on dashboard Creator Plan tab, Stripe on Payments tab. Welcome page branches by intent: "Browse and buy" vs "I want to sell" with contextual CTAs for invited users and existing creators.
36 36
37 - ## Sprint 4: Dashboard Polish
38 -
39 - Terminology fixes, layout improvements, and removing noise from the creator dashboard.
40 -
41 - - [ ] Rename "creator tiers" to "Creator Plans" everywhere
42 - - [ ] Show current tier limits inline on Creator Plan tab
43 - - [ ] Make onboarding checklist harder to dismiss
44 - - [ ] Add banner if creator tier not subscribed
45 - - [ ] Promote "Export" to top-level dashboard navigation
46 - - [ ] Add section headers to "More" dropdown
47 - - [ ] Don't show "Your account is in good standing" when no issues
48 - - [ ] Add feature description cards on first visit to project dashboard
49 - - [ ] Add "Project Features" discovery card in overview
37 + ## Sprint 4: Dashboard Polish — DONE
38 +
39 + - [x] Rename "creator tiers" to "Creator Plans" (user_creator.html, dashboard-user.html, creators.html)
40 + - [x] Show tier limits inline on Creator Plan tab (storage usage + link to plan docs)
41 + - [x] Hide "good standing" noise — Account Status section hidden when no moderation actions
42 + - [x] Export link already visible in dashboard header (line 78)
43 + - [x] Add section headers to "More" dropdown (Content, Integration, Support)
44 + - [x] "Explore Your Project Tools" discovery card in project overview (6 feature cards in collapsible)
45 + - Deferred: onboarding checklist persistence, banner for unsubscribed creators (low urgency during alpha)
50 46
51 47 ## Sprint 5: Account Settings Cleanup
52 48
@@ -51,7 +51,7 @@
51 51 <div style="margin-bottom: 1.5rem; padding: 1.5rem; background: var(--surface-muted); border: 1px solid var(--border-color);">
52 52 <h2 style="margin-top: 0;">Account Paused</h2>
53 53 <p>Your creator account is paused. Existing fan subscriptions will expire at the end of their billing period. One-time purchases remain accessible. No new sales can be made.</p>
54 - <p>To resume, re-subscribe to a creator tier:</p>
54 + <p>To resume, re-subscribe to a creator plan:</p>
55 55 <div style="display: flex; gap: 0.75rem; flex-wrap: wrap; margin-top: 1rem;">
56 56 <a href="/creators" class="button primary">Resume — Choose a Tier</a>
57 57 <a href="/dashboard/export" class="button">Export Data</a>
@@ -189,6 +189,7 @@
189 189 <div class="tab-overflow" style="position: relative; display: inline-block;">
190 190 <button class="tab" onclick="var m=this.nextElementSibling; m.style.display=m.style.display==='block'?'none':'block';" type="button" title="Media, SSH Keys, Forums, Support">More &darr;</button>
191 191 <div class="tab-overflow-menu" style="display: none; position: absolute; top: 100%; left: 0; z-index: 10; background: var(--background); border: 1px solid var(--border); min-width: 160px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
192 + <div style="padding: 0.4rem 1rem 0.2rem; font-size: 0.75rem; opacity: 0.5; text-transform: uppercase; letter-spacing: 0.05em;">Content</div>
192 193 <button class="tab" style="display: block; width: 100%; text-align: left; padding: 0.5rem 1rem;"
193 194 title="Uploaded images and avatars"
194 195 hx-get="/dashboard/tabs/media"
@@ -196,6 +197,9 @@
196 197 hx-swap="innerHTML"
197 198 hx-indicator="#tab-spinner"
198 199 onclick="setActiveTab(this); this.closest('.tab-overflow-menu').style.display='none';">Media</button>
200 + {% if git_enabled || has_mt_memberships %}
201 + <div style="padding: 0.4rem 1rem 0.2rem; font-size: 0.75rem; opacity: 0.5; text-transform: uppercase; letter-spacing: 0.05em; border-top: 1px solid var(--border); margin-top: 0.25rem;">Integration</div>
202 + {% endif %}
199 203 {% if git_enabled %}
200 204 <button class="tab" style="display: block; width: 100%; text-align: left; padding: 0.5rem 1rem;"
201 205 title="Public keys for Git authentication"
@@ -214,6 +218,7 @@
214 218 hx-indicator="#tab-spinner"
215 219 onclick="setActiveTab(this); this.closest('.tab-overflow-menu').style.display='none';">Forums</button>
216 220 {% endif %}
221 + <div style="padding: 0.4rem 1rem 0.2rem; font-size: 0.75rem; opacity: 0.5; text-transform: uppercase; letter-spacing: 0.05em; border-top: 1px solid var(--border); margin-top: 0.25rem;">Support</div>
217 222 <button class="tab" style="display: block; width: 100%; text-align: left; padding: 0.5rem 1rem;"
218 223 title="Contact support or report an issue"
219 224 hx-get="/dashboard/tabs/support"
@@ -64,7 +64,7 @@
64 64
65 65 <h2>Pricing</h2>
66 66 <p style="margin-bottom: 1rem;">Flat monthly fee. 0% cut of your revenue. The only deduction from fan payments is the payment processor's fee (~3%).</p>
67 - <table class="wave-table" aria-label="Creator tier pricing">
67 + <table class="wave-table" aria-label="Creator plan pricing">
68 68 <thead>
69 69 <tr>
70 70 <th>Tier</th>
@@ -63,3 +63,33 @@
63 63 hx-swap="beforeend">Export Data</button>
64 64 </div>
65 65 </div>
66 +
67 + <details style="margin-top: 2rem;">
68 + <summary style="cursor: pointer; font-size: 1rem; font-family: var(--font-heading); font-weight: bold;">Explore Your Project Tools</summary>
69 + <div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; margin-top: 1rem;">
70 + <div style="background: var(--surface-muted); padding: 1rem;">
71 + <div style="font-weight: bold; font-size: 0.95rem; margin-bottom: 0.25rem;">Content</div>
72 + <p style="font-size: 0.85rem; opacity: 0.7; margin: 0;">Upload items, manage versions, set prices.</p>
73 + </div>
74 + <div style="background: var(--surface-muted); padding: 1rem;">
75 + <div style="font-weight: bold; font-size: 0.95rem; margin-bottom: 0.25rem;">Blog</div>
76 + <p style="font-size: 0.85rem; opacity: 0.7; margin: 0;">Write posts that appear on your project page and RSS feed.</p>
77 + </div>
78 + <div style="background: var(--surface-muted); padding: 1rem;">
79 + <div style="font-weight: bold; font-size: 0.95rem; margin-bottom: 0.25rem;">Promo Codes</div>
80 + <p style="font-size: 0.85rem; opacity: 0.7; margin: 0;">Create discounts, free access codes, or trial periods.</p>
81 + </div>
82 + <div style="background: var(--surface-muted); padding: 1rem;">
83 + <div style="font-weight: bold; font-size: 0.95rem; margin-bottom: 0.25rem;">Membership Tiers</div>
84 + <p style="font-size: 0.85rem; opacity: 0.7; margin: 0;">Recurring subscriptions with gated content access.</p>
85 + </div>
86 + <div style="background: var(--surface-muted); padding: 1rem;">
87 + <div style="font-weight: bold; font-size: 0.95rem; margin-bottom: 0.25rem;">Team</div>
88 + <p style="font-size: 0.85rem; opacity: 0.7; margin: 0;">Add collaborators and split revenue automatically.</p>
89 + </div>
90 + <div style="background: var(--surface-muted); padding: 1rem;">
91 + <div style="font-weight: bold; font-size: 0.95rem; margin-bottom: 0.25rem;">Analytics</div>
92 + <p style="font-size: 0.85rem; opacity: 0.7; margin: 0;">Track sales, revenue, and views over time.</p>
93 + </div>
94 + </div>
95 + </details>
@@ -24,11 +24,10 @@
24 24 </div>
25 25 </div>
26 26
27 + {% if !moderation_active.is_empty() || !moderation_history.is_empty() %}
27 28 <div class="form-section">
28 29 <h2>Account Status</h2>
29 - {% if moderation_active.is_empty() %}
30 - <p style="font-size: 0.9rem; opacity: 0.7;">Your account is in good standing.</p>
31 - {% else %}
30 + {% if !moderation_active.is_empty() %}
32 31 {% for action in moderation_active %}
33 32 <div style="background: var(--danger-bg); border: 1px solid var(--danger); padding: 0.75rem 1rem; margin-bottom: 0.75rem; font-size: 0.9rem;">
34 33 <strong style="text-transform: capitalize;">{{ action.action_label }}</strong>
@@ -58,6 +57,7 @@
58 57 </details>
59 58 {% endif %}
60 59 </div>
60 + {% endif %}
61 61
62 62 <div class="section-group-label">Security</div>
63 63
@@ -12,7 +12,7 @@
12 12 </div>
13 13
14 14 <div style="padding: 0 2rem 2rem;">
15 - <h2 style="font-size: 1.2rem; margin-bottom: 0.75rem;">Creator Tier</h2>
15 + <h2 style="font-size: 1.2rem; margin-bottom: 0.75rem;">Creator Plan</h2>
16 16 {% if let Some(label) = creator_tier_label %}
17 17 <div style="background: var(--light-background); padding: 1.25rem; margin-bottom: 1rem;">
18 18 <div style="display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.5rem;">
@@ -30,10 +30,11 @@
30 30 {% if let Some(period_end) = creator_period_end %}
31 31 <p class="muted" style="font-size: 0.9rem;">Current period ends {{ period_end }}</p>
32 32 {% endif %}
33 + <p class="muted" style="font-size: 0.85rem; margin-top: 0.5rem;">{{ storage_total }} of {{ storage_max }} storage used ({{ storage_pct }}%). <a href="/docs/guide/tiers" style="opacity: 0.7;">Plan limits &rarr;</a></p>
33 34 </div>
34 35 {% else %}
35 36 <p class="muted" style="font-size: 0.9rem; margin-bottom: 1rem;">
36 - No active tier subscription. During alpha, all creator features are available without a tier.
37 + No active plan. During alpha, all creator features are available without a subscription.
37 38 </p>
38 39 {% if creator_tiers_configured %}
39 40 <div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 1rem;">