summaryrefslogtreecommitdiff
path: root/Omni
AgeCommit message (Collapse)Author
6 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.
6 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>
6 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>
7 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>
7 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>
7 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.
2025-06-13Add Open Web UI AI Chat Container and Nginx ProxyBen Sima (aider)
Introduce a new container definition for the Open Web UI AI Chat service in `OpenWebui.nix`, specifying its Docker image, volume, and environment variables. This change includes the addition of a new port in `Ports.nix` to facilitate communication with the service. Furthermore, configure Nginx to serve the AI Chat application by adding a new virtual host entry in `Web.nix`, ensuring SSL is enforced and websocket support is enabled. This setup allows for a seamless integration of the AI Chat service into the existing infrastructure, improving accessibility and security.
2025-06-13Remove mail.bensima.com from allowed hosts listBen Sima
This change removes "mail.bensima.com" from the list of allowed hosts in the Web.nix configuration. The removal is likely due to a decision to restrict access or because the mail service is no longer in use. This helps to tighten security and ensure that only necessary hosts are permitted.
2025-06-13Fix admin xmpp usernameBen Sima
This was the old username.
2025-06-13Add nix-community.cachix substituter everywhereBen Sima
Not sure if this will help but I figure one more substituter can't hurt.
2025-06-13Disable timeout for CI buildsBen Sima
Basically every time I try to run CI it times out, so just disable timeout on CI jobs for now.
2025-05-22Add TestCase to Omni.TestBen Sima
Also improves the Example.py a bit with a real test case and example of how to use Omni.Test.
2025-05-22Solidify Kensington trackball settingsBen Sima
I have this script I have to run on startup that sets these interactively, which is fine, but I haven't changed this script in like 3 years so lets just make it permanent at this point.
2025-05-19Add obs-do and remove helvumBen Sima
obs-do is a command line tool fro controlling obs over a socket, I plan to use it for keyboard-driven automations. Helvum is just not necessary, qpwgraph is better anyway.
2025-05-09Reduce mic capture channelsBen Sima
I think this was causing feedback from my microphone.
2025-05-07Live audio setupBen Sima
This does all of the audio routing stuff that I need to combine my mic audio with application audio into a virtual source that meeting software or OBS can select as an input source. This way I can share what I'm listening to or watching in a meeting. I think the routes are not quite correct, and I'm not sure that the `context.exec` is even a reliable way to setup the routes. I've also been using `qpwgraph` to visually setup the routes, and that's helpful. I'll tweak this as needed over time.
2025-05-07Add my user to audio and videoBen Sima
This is needed to use the OBS virtual camera thing.
2025-05-07Switch Python to unstable and add pydantic-aiBen Sima
Pydantic-ai is an agent framework that seems simple and good: well-typed with pydantic, tool usage is just an `@tool` decorator on a function, and so on. While building these I realized there were some deps they needed that were already in nixpkgs unstable, so I just switched to that instead of trying to backport all the versions and stuff.
2025-05-01Enable OBS Studio with virtual cameraBen Sima
This adds a kernel module that allows the virtual camera to work. https://nixos.wiki/wiki/OBS_Studio
2025-05-01Enable pcscdBen Sima
I need this to make my yubikey work.
2025-04-15Enable dmarc reportingBen Sima
Trying to learn about dmarc and improve my mail setup some more, I also added the `rua` to my DNS entry so hopefully I get some reports.
2025-04-15Fix regex patterns in email block listBen Sima
I guess GPT-4 or whatever assistant I used got the wrong syntax the first time.
2025-04-15Enable syncthing on Beryllium tooBen Sima
This moves syncthing from the cloud only, and onto Beryllium as well. Also it gets rid of the nginx config because I don't really need access to it remotely like that.
2025-04-15Fix super call in LowerFormatterBen Sima
I'm honestly not sure what the correct call is here, I guess what I had was Python 2 syntax? And Python 3 doesn't need arguments? Anyway this broke during one of the nixpkgs updates and this seems to have fixed it.
2025-04-11Add Nginx virtualHost for Syncthing GUIBen Sima (aider)
This commit configures Nginx as a reverse proxy for the Syncthing web interface, making it accessible via syncthing.bensima.com with SSL encryption. The configuration includes proper header forwarding and WebSocket support for the Syncthing GUI. Additionally, this commit explicitly opens the required firewall ports for Syncthing's operation, including the GUI port, sync port (22000), and discovery broadcast port (21027).
2025-04-11Move Syncthing configuration to dedicated moduleBen Sima (aider)
Moved Syncthing configuration from Lithium's configuration file to a dedicated module in Cloud directory. This change improves organization by placing the service with other cloud-related configurations. The new module includes comprehensive Syncthing setup with proper user configuration, firewall rules, and default settings. It's now imported in Cloud.nix to make it available to the cloud infrastructure.
2025-04-11Factor out radicale and fix shared calendarBen Sima
Having this in its own file makes it easier to work on. Then I was able to figure out (with lots of debugging and trial+error with Claude) the actual permissions settings that result in a shared calendar. It's very fiddly because it is matching on usernames and directories using regex, and I think it's order-dependent as well.
2025-04-11Switch from simatime.com to bensima.comBen Sima
This does the full transition: web server, mail server, xmpp. I expect some disruption, but hopefully this is everything and it just switches over without any problem.
2025-04-11Enable eternal-terminal everywhereBen Sima
I prefer et over mosh, so I tend to reach for it. Might as well just enable it everywhere, at the Os/Base.nix level rather than individual systems.
2025-04-11Block optaltechtld.com domain to prevent spam emailsBen Sima (aider)
Added header checks for optaltechtld.com domain to block incoming spam emails claiming to be from MetaMask. The configuration includes checks for Received, From, Return-Path, and Sender headers containing this domain, rejecting any matching messages at the mail server level.