summaryrefslogtreecommitdiff
path: root/Omni
AgeCommit message (Collapse)Author
47 hoursFix prompt preservation and cleanup extra lines at endBen Sima
- Add initial newline to preserve terminal prompt - Clear each line individually at end instead of just moving cursor - This prevents extra blank lines from remaining on screen
47 hoursFix blank lines in parallel build outputBen Sima
- Remove initial blank line before build starts - Remove trailing blank line after build completes - Remove newlines from status indicators in releaseLine - Status lines now stay on their reserved lines without extra spacing
48 hoursClean up build output and add [+] for analyzing phaseBen Sima
- Remove all label prefixes from build logs (bild:, nix:, etc) - Show [+] Namespace when first reserving a line (analyzing) - Show [~] Namespace: output when building with subprocess output - Show [✓] Namespace (green) on success - Show [x] Namespace (red) on failure
48 hoursRemove info and good log messages from parallel build outputBen Sima
- Remove Log.info from analyze function - Remove Log.info from build target compilers (Guile, NixBuild, Rustc, Sbcl) - Remove Log.good from proc and nixBuild success handlers - Remove 'info: bild:' prefix from streaming subprocess output - Output now shows only [✓]/[x]/[~] status lines with subprocess stdout
48 hoursFix parallel build output format with status indicators and colorsBen Sima
- Add initial line break to preserve terminal prompt - Change format to [✓]/[x]/[~] Namespace: output - Add colors: green for success, red for failure - Fix extra lines by adding newlines in releaseLine - Fix currentLine initialization to 0 instead of maxLines Amp-Thread-ID: https://ampcode.com/threads/T-39671965-c412-4a2e-8084-9d09128fd865 Co-authored-by: Amp <amp@ampcode.com>
2 daysAdd ansi-terminal dep and Omni/Log/Concurrent to Bild.nixBen Sima
- 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.
2 daysComplete multi-line concurrent logging integrationBen Sima
- 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
2 daysIntegrate LineManager with logging systemBen Sima
- 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
2 daysThread LineManager through build functionsBen Sima
- Reserve line for each concurrent build - Release line on completion with success/failed state - Fix hlint eta reduce warning Task: t-1a1E3j1
2 daysCreate Omni/Log/Concurrent module for multi-line outputBen Sima
- 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
2 daysAdd bounded parallel target buildsBen Sima
- 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
2 daysBild: breadth-first search and ghc-pkg cachingBen Sima
Replaced the old slow depth-first search with a breadth-first search for detecting imports. This should be way faster when building a single namespace because it doesn't have to visit the same file multiple times. The ghc-pkg caching means we only have to run ghc-pkg once per bild invocation.
3 daysFix Python import detection to handle transitive dependenciesBen Sima
detectPythonImports now recursively analyzes imported modules to find transitive dependencies, matching the behavior of detectHaskellImports. Previously it only detected direct imports, which caused build failures when Python modules had nested dependencies. - Changed signature from [Text] -> IO (Set FilePath) to Analysis -> [Text] -> IO (Set FilePath) - Added filepaths, findDeps, and onlyPython helper functions - Recursively calls analyze() on imported modules to find transitive deps - Updated tests to pass empty Analysis map
3 daysCleanup some logging setup codeBen Sima
I think the calls to Log.setup() were accidentally creating multiple loggers, hopefully this fixes the problem.
4 daysFix billing migration to work with SQLite ALTER TABLE limitationsBen Sima
- Remove UNIQUE constraints from ALTER TABLE statements (SQLite doesn't support adding constraints via ALTER TABLE) - Add better logging for migration failures (debug level) - Rely on application logic to ensure uniqueness instead of DB constraint - This fixes the silent failure where stripe_customer_id and stripe_subscription_id columns weren't being added
4 daysAdd complete Stripe billing integration to PodcastItLaterBen Sima
- Implement Biz.PodcastItLater.Billing with checkout sessions, billing portal, webhook handling - Add subscription database schema: plan_tier, stripe fields, period dates, stripe_events table - Three-tier pricing: free (10/month), personal (/month, 50 articles), pro (9/month, unlimited) - Usage tracking and enforcement with tier-based limits - Full billing UI with plan display, usage stats, pricing cards, upgrade buttons - Dashboard shows current tier with billing button - Update Web.nix with Stripe environment variables - Fix POST redirects to Stripe with 303 status code for CloudFront compatibility Amp-Thread-ID: https://ampcode.com/threads/T-c139e5b5-1901-4cd6-8030-5623bfe1df35 Co-authored-by: Amp <amp@ampcode.com>
4 daysFix exit condition for run.shBen Sima
Without this, run.sh would continue if bild failed, and you might end up running an out of date artifact.
7 daysfeat: Add stripe to Python deps and document dependency processBen Sima
- Add stripe to Omni/Bild/Deps/Python.nix (alphabetically sorted) - Fix all type annotations in Billing.py for mypy - Document how to add Python packages in AGENTS.md - Add billing routes to Web.py (checkout, portal, webhook) This enables Stripe integration in PodcastItLater. Related to task t-144e7lF
7 daysShow epic progress count instead of Epic label and checkboxBen Sima
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.
7 daysMove namespace label between status and title in tree viewBen Sima
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.
7 daysImprove task tree visualization displayBen Sima
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.
7 daysImplement task tree visualization commandBen Sima
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
7 daysFix task auto-commit with pre-commit hookBen Sima
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.
7 daysAdd enhanced filtering to task list commandBen Sima
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
7 daysProtect production task database from tests and add migrationBen Sima
- 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.
7 daysAdd enhanced dependency types to task managerBen Sima
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>
7 daysImplement epic and task types to replace project fieldBen Sima
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>
8 daysUse Omni.Namespace for validated namespace argumentsBen Sima
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>
8 daysAdd optional namespace field to tasksBen Sima
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>
8 daysAdd task manager for AI agentsBen Sima
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
2025-09-05Strip comment lines and diff in commit-msg hookBen Sima
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
2025-09-05Enhance worker memory managementBen Sima
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.
2025-09-05Fix fmt spacingBen Sima
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.
2025-09-04Refactor Admin and Database path stuffBen Sima
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.
2025-09-04Disable dbus connection attempt during deploymentBen Sima
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!
2025-09-04Wrap all commit messages with fmtBen Sima
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.
2025-08-30Switch to nixos-unstable branchBen Sima
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.
2025-08-28Prototype PodcastItLaterBen Sima
This implements a working prototype of PodcastItLater. It basically just works for a single user currently, but the articles are nice to listen to and this is something that we can start to build with.
2025-08-28Fix boolean in ai linterBen Sima
If there are no lints to fix, this should just exit without starting aider.
2025-08-28Add typecheck.sh with Python supportBen Sima
This runs a repl and calls mypy to typecheck the given target. Not only is this *much* faster than using bild to typecheck stuff, but it also produces less noise in the logs, so I can have aider call this and the output won't overwhelm the llm.
2025-08-28Include summary in mypy build outputBen Sima
This is actually useful because nix only shows the last 25 log lines, so I'd like to know how deep the problems go with a summary.
2025-08-28Don't put colored output in bild mypy checkBen Sima
The colored output is not decoded by the nix log accumulator, so you just get these control characters. Get rid of them for more readable output.
2025-07-28Package kerykeion and swiss ephemerisBen Sima
This took quite a bit of work to package, and it's not a perfect package, but I think it will do to get Biz/Astrologer.py working.
2025-07-26Add dmarc@ mailboxBen Sima
This needs to be a separate mailbox so I don't get a bunch of dmarc reports in my inbox.
2025-07-26Don't prune the bitcoin blockchainBen Sima
I think storage is not a problem, and not having all the transactions means I might not get the correct balance if the wallet has really old transactions (I think).
2025-07-26Add ailint scriptBen Sima
This just fixes my lint errors for me which is awesome. Very useful.
2025-06-14Add ailint scriptBen Sima
This just fixes my lint errors for me which is awesome. Very useful.
2025-06-13Add systemd service and timer for open-webui updatesBen Sima
Introduce a new systemd service that pulls the latest open-webui Docker image and restarts the associated container. This ensures that the application is always running the most recent version. Additionally, a timer is added to schedule this update process to occur every Sunday at 3 AM, automating the maintenance of the service without manual intervention. This change enhances the reliability and freshness of the application deployment.
2025-06-13Remove syncthing subdomainBen Sima
This domain is not actually useful.
2025-06-13Re-enable datasette, llm, and aiderBen Sima
I had to update nixos-unstable-small and nixos-24_11 and disable a bunch of tests, and then re-compile like the whole world, but aider is actually working, finally.