| Age | Commit message (Collapse) | Author |
|
RSS feed already generates personalized titles from user email.
Remove unused hardcoded values and change author to PodcastItLater.
|
|
- Remove audio player from Recent Episodes (use podcast app instead)
- Move RSS feed link from user info card to Recent Episodes section -
Fix audio playback interruption on refresh - Simplify user info card
to just show email and logout button
This fixes the UX issue where dashboard refresh would interrupt
playing audio.
Completes task t-17Z0069
|
|
- Apply Bootstrap 5 CSS and icons to all pages (Web.py, Admin.py) -
Convert all components to use Bootstrap classes instead of inline
styles - Add dev mode banner showing demo@example.com for instant
login - Implement secure demo account (demo@example.com) with
auto-approval - Fix HTMX loading issue when load_styles=False -
Update Database.create_user() to accept optional status parameter -
Add Bootstrap tables, cards, badges, and button groups throughout -
All tests passing
Completes task t-144drAE
Amp-Thread-ID:
https://ampcode.com/threads/T-8feaca83-dcc2-46cb-8f71-d0785960a2f7
Co-authored-by: Amp <amp@ampcode.com>
|
|
Changed epic display in tree view from:
t-PpXWsU [Epic] [ ] Task Manager Improvements
To:
t-PpXWsU [6/11] Task Manager Improvements
The [6/11] shows completed/total child tasks, giving immediate visual
feedback on epic progress. Regular tasks still use checkbox indicators:
[ ] open, [~] in-progress, [✓] done.
|
|
Changed tree output format from:
t-abc123 [ ] Task title [Omni/Task.hs]
To:
t-abc123 [ ] [Omni/Task.hs] Task title
This makes the namespace more prominent and groups all metadata
(status + namespace) together before the title.
|
|
Changes: 1. Remove [Task] label - only show [Epic] for epics, cleaner
output 2. Truncate long titles to fit 80 columns with ... ellipsis
3. Better spacing with type label included in layout calculation
Created task for future improvement: prettier box-drawing characters
(├──, └──) which would require Data.Tree library
investigation.
Current output is clean and readable within standard terminal width.
|
|
Add 'task tree' command to show hierarchical task structure:
Usage:
task tree # Show all epics with their children task tree <id> #
Show specific epic/task with children
Features: - Visual status indicators: [ ] open, [~] in-progress,
[✓] done - Shows task type: [Epic] or [Task] - Indented display
for hierarchy - Shows namespace associations
Example output:
t-PpXWsU [Epic] [ ] Task Manager Improvements [Omni/Task.hs]
t-PpYZt2 [Task] [ ] Implement child ID generation t-PpZGVf [Task]
[✓] Add filtering by type and parent
Updated AGENTS.md with usage examples.
Closes task t-PpZlbL
|
|
Added documentation explaining that git hooks are in Omni/Ide/hooks/
and version-controlled, not in .git/hooks/.
This prevents confusion about where to add/modify hooks and ensures
all team members use the same hooks.
|
|
Cleaned up duplicate hooks in .git/hooks that were running by mistake:
- Removed pre-commit, post-checkout, post-merge, pre-push - These
hooks had incomplete implementations with TODOs - Real hooks are
already in Omni/Ide/hooks/ (version controlled)
Git is configured via 'core.hooksPath = Omni/Ide/hooks' to use the
repository-tracked hooks.
Added README.md in .git/hooks/ to prevent future confusion and remind
developers to edit hooks in Omni/Ide/hooks/ instead.
The task export functionality is already properly implemented in
Omni/Ide/hooks/pre-commit and working correctly.
|
|
Implemented proper pre-commit hook that: - Calls 'task export --flush'
to consolidate tasks - Auto-stages .tasks/tasks.jsonl if modified -
Runs before every commit
Added reminder message after 'task update' to inform users that task
changes will be committed on next git commit.
Updated AGENTS.md to document the auto-commit behavior.
This fixes the bug where task status updates (e.g., marking tasks as
Done) were not being committed to git.
|
|
Add critical documentation about using test database to protect
production task data during development and testing.
Key points: - Set TASK_TEST_MODE=1 to use .tasks/tasks-test.jsonl -
Test suite automatically uses test mode - Never run destructive tests
on production database
This prevents accidental data loss like we experienced earlier when
test runs overwrote the production tasks.jsonl file.
|
|
Implement --status and --namespace filters for task list:
New filters: - --status: Filter by open, in-progress, or done -
--namespace: Filter by namespace (e.g., Omni/Task)
All filters can be combined: - task list --parent=t-abc123
--status=open - task list --type=epic --status=done - task list
--namespace="Omni/Task" --status=open
Updated listTasks signature to accept all filter parameters and apply
them in sequence. Updated AGENTS.md with examples.
Closes task t-PpZGVf
|
|
Test database was modified during bild --test runs to validate enhanced
dependency types and test isolation.
|
|
Created epic t-PpXWsU for Task Manager Improvements with subtasks:
Completed (Milestones 1-2): - t-PqLLXk: Implement epic and task
types ✓ - t-PqMc17: Add enhanced dependency types ✓ - t-PqMBuS:
Protect production database from tests ✓ - t-PqN0Uu: Add migration
support ✓
Remaining (Milestones 3-4): - t-PpYZt2: Implement child ID generation
(t-abc123.1) - t-PpZ6JC: Add child_counters storage - t-PpZe3X: Update
createTask to auto-generate child IDs - t-PpZlbL: Implement task tree
visualization - t-PpZsm4: Implement task stats command - t-PpZzBA:
Implement epic progress tracking - t-PpZGVf: Add filtering improvements
These tasks were lost when the production database was overwritten
during testing. Now properly tracked in the task system.
|
|
Found that commit 6a4afe9 had more recent task status updates than
3bf1691. Three tasks that were marked Done got reverted to Open: -
t-s9T0u1: instruct agents to include tests (Done) - t-v2w3x4: instruct
agents to run bild/lint (Done) - t-1lhJhgS: Remove old aider config
(Done)
Restored from the most recent complete version in git history.
|
|
- Add TASK_TEST_MODE environment variable to use separate test database
- All file operations now use getTasksFilePath to respect test mode -
Tests use .tasks/tasks-test.jsonl instead of production database -
Add automatic migration from old task format (taskProject field)
to new format - Migrated tasks convert taskProject to WorkTask type
with empty parent - Old [Text] dependencies converted to [Dependency]
with Blocks type - Restore actual tasks from commit 3bf1691 (were
lost during testing)
This prevents accidental data loss when running tests and provides
backward compatibility for existing task databases.
|
|
Implement four dependency types based on beads patterns: - Blocks:
Hard dependency, blocks ready work queue (default) - DiscoveredFrom:
Work discovered during implementation (doesn't block) - ParentChild:
Epic/task relationships (blocks ready work) - Related: Soft
relationships (doesn't block)
Key changes: - New Dependency data type with depId and depType fields
- New DependencyType enum with four relationship types - Updated CLI
with --dep-type and --discovered-from flags - Enhanced getReadyTasks
to respect only blocking dependency types - Added comprehensive tests
for all dependency behaviors - Updated AGENTS.md with usage examples
and patterns
The discovered-from pattern is especially important for AI agents to
maintain context of work found during implementation while keeping
it immediately available in the ready work queue.
Amp-Thread-ID:
https://ampcode.com/threads/T-178b273a-3ac7-416c-a964-db89bac3c8f7
Co-authored-by: Amp <amp@ampcode.com>
|
|
Major refactoring of task data model: - Added TaskType enum (Epic |
WorkTask) - Replaced taskProject with taskType and taskParent fields -
Epics are containers for tasks (hierarchical organization) - Tasks can
have optional parent epics - Updated createTask signature to accept
type and parent - Updated CLI: --type=epic|task and --parent=<id>
options - Updated list command to filter by type and parent - Updated
printTask to display type and parent info - Fixed naming collision
(WorkTask instead of Task constructor)
Example usage:
task create "Auth System" --type=epic task create "Design API"
--type=task --parent=t-abc123 task list --type=epic task list
--parent=t-abc123
Completed task: t-8WR5Zg
Amp-Thread-ID:
https://ampcode.com/threads/T-85f4ee29-a529-4f59-ac6f-6ffec75b6a56
Co-authored-by: Amp <amp@ampcode.com>
|
|
Updated namespace handling to use the Omni.Namespace module: - Import
Omni.Namespace in Task CLI - Parse and validate namespace strings
using fromHaskellModule - Convert to proper path format using toPath -
Ensures namespaces are well-formed (e.g., Omni/Task -> Omni/Task.hs)
Example:
task create "Fix bug" project --namespace="Omni/Task" # Creates
task with validated namespace Omni/Task.hs
This provides type safety and ensures all task namespaces correspond
to actual code namespaces in the monorepo.
Amp-Thread-ID:
https://ampcode.com/threads/T-85f4ee29-a529-4f59-ac6f-6ffec75b6a56
Co-authored-by: Amp <amp@ampcode.com>
|
|
Tasks can now be associated with specific namespaces in the monorepo:
- Added taskNamespace (Maybe Text) field to Task data type - Updated
createTask to accept optional namespace parameter - Added --namespace
CLI option to task create command - Display namespace in task list
output (e.g., [Omni/Task]) - Updated tests to pass Nothing for
namespace - Updated AGENTS.md documentation
Example usage:
task create "Fix bug" project --namespace="Omni/Task"
Completed task: t-j0k1L2
Amp-Thread-ID:
https://ampcode.com/threads/T-85f4ee29-a529-4f59-ac6f-6ffec75b6a56
Co-authored-by: Amp <amp@ampcode.com>
|
|
Removed all .aider* files and directories as we're using Amp going
forward.
Files removed: - .aider.tags.cache.v3/ - .aider.tags.cache.v4/ -
.aider.conf.yml - .aider.chat.history.md - .aider.input.history
Completed task: t-1lhJhgS
Amp-Thread-ID:
https://ampcode.com/threads/T-85f4ee29-a529-4f59-ac6f-6ffec75b6a56
Co-authored-by: Amp <amp@ampcode.com>
|
|
- Add coding convention: always include tests with new features and
bug fixes - Add 'Required Checks Before Completing Tasks' section -
Instruct agents to run 'bild --test' and 'lint' on modified namespaces
- Require fixing all errors before marking tasks complete
Completed tasks: - t-s9T0u1: Add testing guidance - t-v2w3x4: Add
build/lint instructions
Amp-Thread-ID:
https://ampcode.com/threads/T-85f4ee29-a529-4f59-ac6f-6ffec75b6a56
Co-authored-by: Amp <amp@ampcode.com>
|
|
Implemented a dependency-aware task tracker inspired by beads: - Task
CRUD operations (create, list, update, ready) - Dependency tracking
and ready work detection - JSONL storage with git sync via hooks -
Export/import for cross-machine synchronization - Short base62-encoded
task IDs (e.g., t-1ky7gJ2)
Added comprehensive AGENTS.md documentation: - Task manager usage and
workflows - Development tools (bild, lint, repl.sh) - Git-branchless
workflow guidelines - Coding conventions
Integrated with git hooks for auto-sync: - post-merge/post-checkout:
import tasks - pre-commit/pre-push: export tasks
Also includes beads design analysis document for reference.
Completed tasks: - t-a1b2c3: Show help text when invoked without args
- t-d4e5f6: Move dev instructions to AGENTS.md - t-g7h8i9: Implement
shorter task IDs - t-p6q7r8: Add git-branchless workflow docs
https: //ampcode.com/threads/T-85f4ee29-a529-4f59-ac6f-6ffec75b6a56
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID:
https://ampcode.com/threads/T-85f4ee29-a529-4f59-ac6f-6ffec75b6a56
|
|
|
|
Remove unnecessary updated_at timestamp reset during job status update
to improve performance and reduce database writes
|
|
Without this, my custom git commit template will get mangled
into the commit message with the call to fmt. I guess git strips
all of this stuff *after* it runs the commit-msg hook. Oy vey.
diff --git a/Omni/Ide/hooks/commit-msg b/Omni/Ide/hooks/commit-msg
index c15b4a1..bfbb06f 100755 --- a/Omni/Ide/hooks/commit-msg +++
b/Omni/Ide/hooks/commit-msg @@ -1,6 +1,7 @@
#!/usr/bin/env bash temp=$(mktemp)
-fmt -w 72 -u "$1" > "$temp" +# strip comment lines and everything
after >8 cut line +sed '/^#/d; /^# -\+ >8 -\+/,$d' "$1" | fmt -w 72
-u > "$temp"
mv "$temp" "$1" if ! gitlint --ignore-stdin --staged --msg-filename
"$1" run-hook; then
backup="$CODEROOT"/.git/COMMIT_EDITMSG.backup
|
|
Check to prevent processing of large articles, truncate oversized
content, defer jobs during high memory usage, use streaming TTS
generation and upload to minimize memory consumption.
|
|
This avoids nginx's DNS caching, which might be causing 10 minutes
of 502 errors on deploy.
|
|
This commit adds robust shutdown handling for the PodcastItLater
worker process. Key improvements include:
- Introduce ShutdownHandler to manage graceful signal handling -
Add checkpoints in job processing to support interruption - Reset
stale jobs stuck in processing state on startup - Modify systemd
service configuration for better process management - Implement
interruptible sleep in main loop - Ensure current job can complete
or be reset during shutdown
|
|
The -s and -u flags tell fmt to fill the paragraph by merging
lines. Without this, fmt might just add line breaks, and this is
no good.
|
|
Implement a new `format_duration` function to convert seconds into a
human-readable time format. The function handles various duration
scenarios,
including minutes, hours, and mixed time representations. Added
comprehensive
test cases to validate the formatting logic, including edge cases
and rounding
behavior.
|
|
Implement periodic dashboard updates using HTMX to refresh queue
status and recent episodes. This improves user experience by
automatically updating content without full page reloads. Added a
new endpoint `/dashboard-updates` to fetch and render updated
dashboard components efficiently.
|
|
Modify the admin queue status view to exclude completed queue
items. This
change ensures that admins only see active queue items, reducing
clutter and
focusing on pending tasks. The filtering is done in-memory to
maintain the
existing database query method.
|
|
This fixes a bug where the 'pending' notification didn't show up in
the main UI
when a new user tried to register.
|
|
|
|
Moved the Admin related stuff to a separate file. Removed the
repetitive
`db_path` arg everywhere and replaced it with correct assumptions,
similar to
whats in other apps.
|
|
Implement a migration to add default titles to queue items with NULL
titles. This ensures that every queue item has a meaningful title,
improving user experience and data consistency. The migration updates
items with 'Untitled Article' when no title is present.
|
|
When I deploy, I get an error like this:
Error: Failed to open dbus connection
Caused by: Failed to connect to socket /run/user/1000/bus:
Connection refused
According to Claude, this is because dbus is trying to do stuff while
I'm running the `systemd-run` command, but that loses my user context so
dbus errors out, and I can disable dbus by setting this variable to
nothing. I guess we'll see if it works!
|
|
Implement user status tracking with pending, active, and disabled
states. This allows administrators to control user access and provides
a mechanism for approving new users before granting full system
access. Added database migration, admin interface, and authentication
checks to support this feature.
|
|
Improve user experience by automatically selecting the URL input
when focused and clearing the input field after a successful
submission. This reduces manual interaction and provides clearer
feedback on successful form submission.
|
|
Enhance episode tracking by adding support for author and original
article URL. This allows users to see more context about each podcast
episode, improving the overall user experience and providing additional
information about the source material.
|
|
Sometimes aider will write commit messages without wrapping them at 80 chars,
and then the commit fails the gitlint hook, and aider can't finish the commit.
To fix this I can just auto-wrap before we check it.
|
|
Implement user-initiated job cancellation for pending queue items. This
includes adding a cancel button to pending jobs, creating a new endpoint to
handle cancellation, updating the queue status view, and adding comprehensive
tests to ensure proper functionality and security.
|
|
This commit adds support for extracting title and author metadata from URLs when
adding articles to the podcast queue. It includes database schema changes,
migration logic, and UI updates to display the extracted metadata.
|
|
|
|
Implement admin access control by introducing an email whitelist and
restricting admin-only pages. Added an `is_admin()` function to check
user permissions and modified admin queue status view to only allow
whitelisted users. Includes error handling for unauthorized access.
|
|
|
|
|
|
According to Claude, the nixos-unstable branch has more stuff in it's binary
cache than nixos-unstable-small. Idk, let's try it and find out.
|
|
This requires either setting up my mailserver or signing up with Mailgun, and
honestly I don't need either of those things right now. Just use the web
submission, I can add the email submission feature later.
|