| Age | Commit message (Collapse) | Author |
|
Amp-Thread-ID:
https://ampcode.com/threads/T-4aeb1055-1271-41f4-ad2b-39d49b75c355
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
- Update showTaskDetailed to display taskNamespace - Fix namespace
for account management tasks in tasks.jsonl
|
|
- Updated Omni/Task/Core.hs to filter parent tasks from 'task ready'
- Broke down 'PodcastItLater: Path to Paid Product' into 5 subtasks -
Broke down 'General Code Quality Refactor' into 3 subtasks - Broke down
'Complete comprehensive test suite' into 2 subtasks - Fixed namespace
naming in tasks.jsonl
|
|
- Remove Log.wipe from --plan output path - Add isPlanMode parameter
to analyzeAll to skip LogC.withLineManager when planning - Update all
analyzeAll call sites to pass isPlanMode flag - Remove grep workaround
from repl.sh (no longer needed)
Now 'bild --plan' outputs clean JSON that can be piped directly to jq.
This fixes typecheck.sh and other tools that rely on clean JSON output.
Amp-Thread-ID:
https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Implement Haskell typechecking using 'ghc -fno-code' - Use repl.sh
to provision correct GHC environment with dependencies - Follows same
pattern as Python typechecking (via repl.sh) - Typechecks without
generating code (fast feedback)
Now typecheck.sh supports both Python (.py) and Haskell (.hs) files.
Amp-Thread-ID:
https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
- Add progress display to 'task show' for epics (X/Y with percentage)
- Add progress display to 'task list --type=epic' showing [X/Y]
- Progress already shown in 'task tree' as [X/Y] - Calculate
completed/total child tasks for epics - Clean up test tasks
accidentally created in production database
All 31 tests passing.
Amp-Thread-ID:
https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Add 'task stats' command to show task statistics - Display total
tasks, status breakdown (open/in-progress/done) - Show epic count,
ready vs blocked tasks - Show task counts by priority (P0-P4) and
namespace - Support both human-readable and JSON output (--json flag)
- Add tests for stats command and stats --json - TaskStats data type
with ToJSON/FromJSON instances
All 31 tests passing.
Amp-Thread-ID:
https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8
Co-authored-by: Amp <amp@ampcode.com>
|
|
The test database file should not be tracked in git. Only the
production database (.tasks/tasks.jsonl) should be committed.
Amp-Thread-ID:
https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8
Co-authored-by: Amp <amp@ampcode.com>
|
|
Amp-Thread-ID:
https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Implement box-drawing characters (├──, └──, │) for
task tree visualization - Fix 'task create' flag ordering by using
[options] in docopt (same as 'task list') - Document TASK_TEST_MODE
environment variable in AGENTS.md Testing section - Add test case for
multi-flag ordering on 'task create' - Clean up test tasks polluted
in production database
All 29 tests passing.
Amp-Thread-ID:
https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
|
|
|
|
|
|
- Fix get_usage() to count from user_episodes table instead of
episodes.user_id
- Now correctly tracks when episodes are added to user's feed -
Handles shared/existing episodes properly (count against the user
who added them)
- Add comprehensive test suite for usage limits (TestUsageLimits):
- test_usage_counts_episodes_added_to_feed -
test_usage_counts_existing_episodes_correctly -
test_free_tier_limit_enforcement (10 articles) -
test_can_submit_blocks_at_limit - test_paid_tier_unlimited
- Billing.can_submit() now properly enforces 10 article limit
for free tier - Usage tracking via user_episodes.added_at ensures
accurate billing
Completes t-144eKR1
|
|
- Added Core.Database.get_metrics_summary() for aggregate stats -
Added Core.Database.get_episode_metric_events() for raw event data -
Created MetricsDashboard component with summary cards and top episodes
tables - Added /admin/metrics route with admin authentication -
Added metrics link to admin dropdown menu - Added comprehensive tests
for metrics functionality - Fixed type errors in Admin.py by adding
MetricCardAttrs - All tests passing (48 tests total in Web.py) -
Completed epic t-ga8V8O (24/24 tasks)
|
|
- Enhanced Worker.py to extract publication date and author from
articles - Added intro TTS with metadata (title, author, publication
date) - Added outro TTS with attribution - Combined intro, pauses,
content, and outro in Worker.py - Added comprehensive tests for public
feed, deduplication, metrics, and intro/outro
All tests passing (Worker: 30 tests, Web: 43 tests)
Tasks completed: - t-gcNemK: Extract metadata in Worker.py - t-gcPraJ:
Add intro TTS generation - t-gcRCzw: Add outro TTS generation -
t-gcTPQn: Combine audio segments - t-gcW6zN: Tests for public feed
- t-gdlWtu: Tests for deduplication - t-gdoeYo: Tests for metrics
tracking - t-gdqsl7: Tests for audio intro/outro
|
|
The issue was that bild --plan outputs progress indicators before the
JSON, causing jq to fail parsing. Fixed by: - Using grep to extract
only lines starting with '{' (the JSON output) - This filters out
progress lines like '[…] target' - Restored typecheck.sh to use
repl.sh for proper environment setup
Now typecheck.sh correctly provisions the environment via repl.sh
instead of trying to use bild or raw python.
|
|
- Episode pages now show 'Add to feed' button for logged-in users
who don't have the episode - Added POST /episode/{id}/add-to-feed
endpoint - Tracks 'added' metric when user adds episode to their feed -
Added Database.track_episode_metric() function for metrics tracking -
Fixed typecheck.sh to use bild instead of broken repl.sh approach
Tasks completed: t-gc9aud, t-gcbqDl
|
|
- Add /public route showing public episodes - Add /public.rss RSS
feed for public episodes - Update home page to show public feed when
not logged in - Use user_episodes junction table instead of user_id
filtering - All tests passing
|
|
- Check for existing episodes by URL hash before processing - Reuse
existing episodes when user submits duplicate URL - Add episode
to user's feed if they don't have it - Track 'added' metrics when
episode added to feed - Worker now creates user_episodes link and
tracks metrics - Show appropriate messages for already-in-feed vs
newly-added episodes
|
|
- Add is_public column to episodes table - Add user_episodes
junction table for many-to-many relationship - Add episode_metrics
table for tracking engagement - Add original_url_hash column for
deduplication - Add Core.py functions for public episodes (mark_public,
get_public_episodes) - Add Core.py functions for user_episodes
(add_episode_to_user, user_has_episode, get_user_episodes) -
Add Core.py functions for metrics tracking (track_episode_event,
get_episode_metrics) - Add URL normalization and hashing utilities -
All tests passing
|
|
- Add ansi-terminal to ghcPackageSetBild dependencies - Add
Omni/Log/Concurrent.hs to source fileset - Fix unused mLineNum warning
in buildTarget - Alphabetize deps list (hostname moved up)
Parallel builds now fully functional with proper Nix dependencies.
|
|
Updated PARALLEL_BUILDS_PLAN.md with: - Implementation status (all
phases complete) - Global state approach details - Testing results -
Future enhancement ideas
Task: t-1a1ELGl, Epic: t-19ZF6A8 (complete)
|
|
- Fix BuildStatus to use newtype with single field - Clean up unused
imports and fields - logs function now uses updateCurrentLine
for LineManager support - Fallback to single-line output when no
LineManager
All tests passing. Ready to test with different terminal types.
Tasks: t-1a1Eiay
|
|
- Add global IORef for currentLineManager and namespaceLines
mapping - Update logs function to use LogC.updateCurrentLine -
Add updateCurrentLine and releaseCurrentLine helpers - Fallback to
normal printing when no LineManager active - Simplify buildTarget to
use global helpers instead of threading
Tasks: t-1a1EaJy
|
|
- Reserve line for each concurrent build - Release line on completion
with success/failed state - Fix hlint eta reduce warning
Task: t-1a1E3j1
|
|
- Implement LineManager abstraction with IORef state - Line
reservation/update/release functions - ANSI cursor positioning for
concurrent updates - Terminal capability detection (ANSI vs dumb) -
Graceful fallback for non-ANSI terminals
Tasks: t-1a1DzES, t-1a1DGY0, t-1a1DOev, t-1a1DVM5
|
|
- Add mapConcurrentlyBounded using QSemN for bounded parallelism -
Refactor build function to extract buildTarget worker - Build up to
--jobs targets concurrently - Preserves all existing functionality -
Output will be interleaved (will fix with LineManager next)
Related tasks: - t-1a0OVBs: mapConcurrentlyBounded helper - t-1a16ame:
refactor build function - t-1a1DdSB: replace forM with concurrent map
|
|
Change 'Manage Subscription' from HTMX link to regular form POST.
HTMX AJAX requests can't follow redirects to external domains like
Stripe.
|
|
- Remove user-facing error messages for portal configuration -
Just log the error server-side and return 500 status - Use Bootstrap
card-header class for proper padding on section headers - This fixes
icons touching the card borders
Portal errors will now be logged but won't break the UI.
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Catch Stripe exceptions when portal not configured - Redirect to
account page with user-friendly error message - Display error alert
on account page when present - Change portal return URL to /account
instead of /
Fixes issue when Stripe billing portal settings haven't been configured
in test/production dashboard.
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Display account information (email, creation date) - Show
subscription details (plan, status, features) - Display cancellation
warning if subscription ending - Add Upgrade button for free users -
Add Manage Subscription button for paid users (goes to Stripe portal) -
Add logout button in Actions section - Replace Coming Soon placeholder
with functional UI
Addresses account management epic tasks.
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Add 'Remove' button for non-pending queue items (error, processing,
cancelled) - Keep 'Cancel' button for pending items - Update
delete_queue_item to check referer and return appropriate response -
Use HX-Trigger for queue updates from user page, HX-Redirect for admin
- Add confirmation dialog for remove action - Allow admins to delete
any job, users can only delete their own
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Remove 'Logged in as' user email display - Convert button-styled
links to standard Bootstrap nav-link style - Left-align navigation
links (removed me-auto from wrapper) - Remove logout button from navbar
(will be in account page) - Use proper ul/li structure for navbar items
The navbar is now cleaner and follows Bootstrap navbar conventions.
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Add mx-1 (horizontal margin) to code element for better text spacing
- Pre-fill email input with demo@example.com in dev/test mode -
Makes it faster to test login flow in development
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
- Add explicit type annotations to TIER_LIMITS dict - Add type
annotation to tier_info dict in get_tier_info - Remove unnecessary
type: ignore comments - Use .get() consistently for dict access
Improves type safety and removes 3 type: ignore suppressions.
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
Moved format_duration function from Web.py to UI.py for better code
organization. This is a UI utility function used for displaying
episode durations, so it belongs in the shared UI module rather than
the web-specific module.
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Replace Exception with httpx.HTTPError, httpx.TimeoutException,
re.error in extract_og_metadata - Replace Exception with ValueError,
KeyError in auth verification - Replace Exception with httpx errors
and ValueError in submit_article - Replace Exception with ValueError,
KeyError, AttributeError in RSS feed generation - Replace Exception
with ValueError, KeyError in cancel/retry/delete job handlers
Improves error handling specificity and removes BLE001 linter
suppressions.
Amp-Thread-ID:
https://ampcode.com/threads/T-8edacbeb-b343-49ca-b524-1c999272acb6
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
- Remove /billing page and BillingPage component - Add callout box
on home page showing articles remaining for free users - Upgrade Now
button goes directly to Stripe checkout - Change tier from 'pro'
to 'paid' throughout - Update redirect URLs to go to / instead of
/billing - Remove Billing button from navbar, add Manage Account
link for all users - Add /account route with coming soon page -
Hide payment banner for paid users
Amp-Thread-ID:
https://ampcode.com/threads/T-7de89e42-947c-4243-be19-0cb75be607e7
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
- Set all CSS variables on :root instead of html/body - Added RGB
variants needed by Bootstrap - Added secondary, tertiary, and border
color variants - Removed unnecessary light mode media query
This should now properly apply dark theme when system prefers dark
mode.
|
|
- Removed JavaScript theme switcher (not needed) - Removed toggle
buttons from all pages - Added automatic dark mode CSS based on
prefers-color-scheme media query - Added color-scheme meta tag
for native UI hints - Uses inline CSS instead of external file
(build system constraint) - Zero JavaScript - pure CSS solution -
Automatically follows system/browser dark mode preference
Task: t-64tkB5
|
|
- Added theme switcher script with localStorage persistence -
Respects system dark mode preference (prefers-color-scheme) - Added
theme toggle button to HomePage and BillingPage - Uses Bootstrap 5.3
data-bs-theme attribute for dark mode - Theme persists across page
loads - Icon changes between moon (light) and sun (dark)
Task: t-64tkB5
|
|
- Implemented complete Stripe integration (Billing.py)
- Checkout sessions for subscription upgrades - Billing portal for
subscription management - Webhook handling for subscription events
- Usage tracking with tier-based limits (free: 10, personal: 50,
pro: unlimited)
- Added billing page UI (BillingPage component)
- Current plan display with usage stats - Pricing cards for all
tiers with upgrade buttons - Manage subscription button for paid
users - Success/error messaging
- Database migrations for billing
- Added plan_tier, stripe_customer_id, stripe_subscription_id - Added
subscription_status, period dates, cancel_at_period_end - Created
stripe_events table for webhook idempotency - Added get_usage()
method for usage tracking
- Made UI mobile-friendly and responsive
- Added viewport meta tags to all pages - Replaced pages.HtmlPage
with raw html.html for meta tag control - Responsive button layouts
with flexbox wrapping - Responsive pricing cards (1 col mobile,
2 col tablet, 3 col desktop) - Touch-friendly forms and buttons
(44px minimum) - Responsive padding and containers - Admin tables
with horizontal scroll
- Added Stripe testing guide (STRIPE_TESTING.md)
- Fixed CSS bug in pricing cards (cardh-100 text rendering) - Updated
tasks: completed t-144e7lF, t-1pIV0ZF, t-1s8ADC0
Amp-Thread-ID:
https://ampcode.com/threads/T-42fd5fb3-3dc5-4cbc-a9a3-78db9e13187e
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Document using 'task create' instead of TODO/FIXME comments -
Document using Omni/Ide/typecheck.sh for fast Python typechecking -
Create task t-1pIV0ZF for billing page UI implementation
|