max / makenotwork
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 ↓</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 →</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;"> |