Commit Graph

54 Commits

Author SHA1 Message Date
joshp123 71b85a7188 feat: support locked runtime plugin sources
What:
- add runtimePluginSources for exact npm and ClawHub runtime plugin packages with lib.fakeHash source hashes
- resolve arbitrary npm/ClawHub package specs through fixed-output Nix builds and reuse the runtime plugin validator
- keep the public source API minimal while validating source conflicts, HTTPS URLs, and optional dependency materialization
- rewrite runtime plugin docs around upstream install surfaces and Nix equivalents

Why:
- let nix-openclaw users install upstream-style npm and ClawHub runtime plugins declaratively
- keep package resolution out of Home Manager activation and OpenClaw runtime
- preserve the Nix convention of fake hash first, then npmDepsHash only when shrinkwrap requires it

Tests:
- node --check nix/scripts/openclaw-runtime-plugin-fetch-source.mjs && node --check nix/scripts/openclaw-runtime-plugin-install.mjs && node --check nix/scripts/openclaw-runtime-plugin-prepare-npm.mjs && node --check nix/scripts/check-openclaw-runtime-plugin-installer.mjs
- node nix/scripts/check-openclaw-runtime-plugin-installer.mjs nix/scripts/openclaw-runtime-plugin-install.mjs
- git diff --check
- nix build --accept-flake-config --no-link .#checks.aarch64-darwin.default-instance
- nix build --accept-flake-config --no-link .#checks.x86_64-linux.default-instance
- nix build --accept-flake-config --impure --no-link --expr '<arbitrary npm diagnostics-prometheus source build>'
- nix build --accept-flake-config --impure --no-link --expr '<arbitrary ClawHub whatsapp shrinkwrap source build>'
- nix build --accept-flake-config --no-link .#checks.aarch64-darwin.ci
- nix build --accept-flake-config --no-link .#checks.x86_64-linux.ci
2026-06-06 13:27:35 +02:00
joshp123 c27f68401b docs: mark runtime plugin RFC implementing 2026-06-06 13:27:35 +02:00
joshp123 071e60066d docs: clarify runtime plugin packaging surfaces
What:
- rewrite runtime plugin docs around upstream install commands and equivalent Nix config
- harden bundled dependency admission by requiring declared dependency roots in bundled node_modules
- retry remote JSON fetches during lock updates and clarify bundled-root validation names

Why:
- make PR #99 human-readable for users comparing upstream OpenClaw installs to nix-openclaw
- keep the public API at runtimePlugins ids while making maintainer diagnostics precise
- reduce flaky maintainer lock refreshes from transient npm or ClawHub connection failures

Tests:
- node --check nix/scripts/update-openclaw-runtime-plugin-locks.mjs: passed
- node --check nix/scripts/openclaw-runtime-plugin-install.mjs: passed
- git diff --check: passed
- ./nix/scripts/update-openclaw-runtime-plugin-locks.mjs --check: passed, 34 supported and 4 skipped
- nix build --accept-flake-config --no-link .#checks.aarch64-darwin.runtime-plugin-locks .#checks.aarch64-darwin.config-validity: passed
- nix build --accept-flake-config --no-link .#checks.aarch64-darwin.ci: passed before the final README wording-only fix
2026-06-06 13:27:35 +02:00
joshp123 005fe37406 feat: support packageable shrinkwrapped runtime plugins
What:
- promote shrinkwrapped catalog artifacts that materialize offline, including Matrix, Tlon, and WhatsApp
- normalize shrinkwrap dependency specs only to versions already selected by the lock
- update runtime plugin docs and RFCs to describe the catalog-id support contract and remaining packageability diagnostics

Why:
- users should enable upstream catalog runtime plugins declaratively with runtimePlugins ids, not source-specific install strings
- packageable shrinkwrapped artifacts should be supported instead of documented as unsupported
- remaining skipped rows should point maintainers to concrete upstream publish fixes

Tests:
- node --check nix/scripts/update-openclaw-runtime-plugin-locks.mjs && node --check nix/scripts/check-openclaw-runtime-plugin-locks.mjs && node --check nix/scripts/openclaw-runtime-plugin-install.mjs && node --check nix/scripts/openclaw-runtime-plugin-prepare-npm.mjs && git diff --check
- ./nix/scripts/update-openclaw-runtime-plugin-locks.mjs --check
- nix build --accept-flake-config --no-link .#packages.aarch64-darwin.openclaw-runtime-plugin-acpx .#packages.aarch64-darwin.openclaw-runtime-plugin-codex .#packages.aarch64-darwin.openclaw-runtime-plugin-copilot .#packages.aarch64-darwin.openclaw-runtime-plugin-matrix .#packages.aarch64-darwin.openclaw-runtime-plugin-memory-lancedb .#packages.aarch64-darwin.openclaw-runtime-plugin-tlon .#packages.aarch64-darwin.openclaw-runtime-plugin-whatsapp
- nix build --accept-flake-config --no-link .#checks.aarch64-darwin.runtime-plugin-locks .#checks.aarch64-darwin.config-validity .#checks.aarch64-darwin.gateway-smoke .#checks.aarch64-darwin.default-instance
- nix build --accept-flake-config --no-link .#checks.aarch64-darwin.ci
2026-06-06 13:27:35 +02:00
joshp123 edbd2cb9cc docs: explain runtime plugin install surfaces 2026-06-06 13:27:35 +02:00
joshp123 0cd051058a feat: materialize shrinkwrapped runtime plugins
What:
- add shrinkwrap-mode runtime plugin builds using fetchNpmDeps and npmConfigHook
- resolve ClawHub npm-pack artifacts at lock update time and fail closed when offline materialization fails
- regenerate runtime plugin locks so acpx, codex, copilot, and memory-lancedb are supported catalog ids
- document the packageability boundary without adding npm or ClawHub user config knobs

Why:
- let nix-openclaw support more upstream OpenClaw runtime plugins declaratively through runtimePlugins
- keep mutable plugin installs out of Home Manager activation and gateway runtime
- make unsupported ClawHub/shrinkwrap rows maintainer diagnostics instead of user-facing API choices

Tests:
- node --check nix/scripts/update-openclaw-runtime-plugin-locks.mjs && node --check nix/scripts/check-openclaw-runtime-plugin-locks.mjs && node --check nix/scripts/openclaw-runtime-plugin-install.mjs && node --check nix/scripts/openclaw-runtime-plugin-prepare-npm.mjs
- ./nix/scripts/update-openclaw-runtime-plugin-locks.mjs --check
- nix build .#checks.aarch64-darwin.runtime-plugin-locks
- nix build .#packages.aarch64-darwin.openclaw-runtime-plugin-memory-lancedb
- nix build .#packages.aarch64-darwin.openclaw-runtime-plugin-acpx .#packages.aarch64-darwin.openclaw-runtime-plugin-codex .#packages.aarch64-darwin.openclaw-runtime-plugin-copilot
- nix build .#packages.aarch64-darwin.openclaw-runtime-plugin-slack .#packages.aarch64-darwin.openclaw-runtime-plugin-discord
- nix build .#checks.aarch64-darwin.config-validity .#checks.aarch64-darwin.gateway-smoke
- nix build .#checks.aarch64-darwin.ci
2026-06-06 13:27:35 +02:00
joshp123 85ac5a06bc Replace documents with workspace bootstrap files 2026-06-05 22:47:02 +02:00
joshp123 22f0267ee3 support OpenClaw catalog runtime plugins
Generate pinned runtime-plugin locks and packages from the pinned OpenClaw catalogs.

Route supported ids through programs.openclaw.runtimePlugins only, reject mutable install/source escape hatches, and isolate stale plugin registry state in wrappers.

Harden lock freshness, NPM integrity, host compatibility, and generated-lock validation; collapse the RFC/docs to one catalog-id model.

Tests: node --check nix/scripts/update-openclaw-runtime-plugin-locks.mjs nix/scripts/check-openclaw-runtime-plugin-locks.mjs nix/scripts/check-config-validity.mjs nix/scripts/gateway-smoke.mjs

Tests: node nix/scripts/update-openclaw-runtime-plugin-locks.mjs && node nix/scripts/update-openclaw-runtime-plugin-locks.mjs --check

Tests: nix build .#checks.aarch64-darwin.default-instance .#checks.x86_64-linux.default-instance .#checks.aarch64-darwin.bin-surface .#checks.x86_64-linux.bin-surface --no-link

Tests: nix build .#checks.aarch64-darwin.runtime-plugin-locks .#checks.x86_64-linux.runtime-plugin-locks --no-link

Tests: nix build .#checks.aarch64-darwin.config-validity .#checks.x86_64-linux.config-validity .#checks.aarch64-darwin.gateway-smoke .#checks.x86_64-linux.gateway-smoke --no-link

Tests: nix build all generated runtime-plugin packages plus openclaw packages for aarch64-darwin and x86_64-linux --no-link

Tests: nix flake check --all-systems --no-build
2026-05-30 01:28:17 +02:00
joshp123 ee0c3cca01 docs: draft remaining runtime plugin source RFCs
What:
- add a source-artifact RFC for pinned git, path, archive, and npm-pack-adjacent runtime plugin sources
- add a compatible bundle and marketplace RFC to keep Claude/Codex/Cursor bundle imports separate from native runtimePlugins

Why:
- cover the remaining OpenClaw plugin install source classes without turning arbitrary npm support into a catch-all
- preserve clear Nix boundaries around pinned artifacts, mutable marketplace state, live local links, and compatible bundle capability mapping

Tests:
- git diff --check: pass
- nix flake check --all-systems --no-build --show-trace: pass
2026-05-29 04:01:27 +02:00
joshp123 7a387856cd docs: draft user-pinned npm plugin RFC
Add the arbitrary npm runtime-plugin RFC. The design keeps runtimePlugins as the selection surface, uses closed data-only npm selectors, makes nix-openclaw call the approved builder, rejects mutable npm/install-record paths, and gates README docs on proof.

Validation: git diff --check; nix flake check --no-build; adversarial RFC review passed.
2026-05-29 03:42:08 +02:00
joshp123 ac9af8aa92 docs: draft catalog-pinned external plugin RFC
Add the next runtime-plugin source RFC for OpenClaw catalog-pinned external npm plugins. Keep the current pin report-only because WeCom, Yuanbao, and Weixin have runtime dependencies without package-owned locks or bundled node_modules.

Validation: git diff --check; nix flake check --no-build.
2026-05-29 03:06:15 +02:00
joshp123 8a1e5d013d docs: draft ClawHub runtime plugin RFC
Add the next runtime-plugin source RFC for official ClawHub artifacts, including deterministic source selection, exact-version ClawHub resolver endpoints, fixed-output artifact locking, drift checks, trust gates, and user-facing install docs.

Validation: git diff --check; nix flake check --no-build; adversarial RFC review passed.
2026-05-29 02:40:28 +02:00
joshp123 33ac483a5b docs: draft runtime plugin dependency materialization RFC
Add the next-slice RFC for official runtime plugins whose published tarballs are shrinkwrapped but not self-contained. Clarify that memory-lancedb can be the first materialized candidate, codex remains skipped behind lifecycle/runtime proof, and ACPX stays on the bundled dist-runtime path.

Also tighten the prior runtime plugin RFCs so ACPX is no longer treated as a materialization candidate and cold discovery uses plugins list --json.

Validation: git diff --cached --check; git diff --check; nix flake check --no-build; adversarial review agents passed with no blocking findings.
2026-05-29 02:19:53 +02:00
joshp123 8932e63dbe docs: draft official runtime plugin coverage RFC 2026-05-29 01:27:31 +02:00
joshp123 7b32a9c71d Add declarative runtime plugin support
Package curated OpenClaw runtime plugins from pinned release-matched npm tarballs and expose them through runtimePlugins.

Wire selected plugins through OpenClaw load paths and entries, reject the old customPlugins npm bridge, and document the supported split between OpenClaw runtime plugins and nix-openclaw plugins.

Tests: nix build --no-link .#openclaw-runtime-plugin-slack .#openclaw-runtime-plugin-discord .#openclaw-runtime-plugin-brave .#openclaw-runtime-plugin-diagnostics-prometheus; nix build --no-link .#checks.aarch64-darwin.default-instance .#checks.aarch64-darwin.config-validity .#checks.aarch64-darwin.gateway-smoke; nix flake show --json; nix flake check --no-build; git diff --cached --check
2026-05-29 01:01:46 +02:00
Peter Steinberger d4fb1516fc docs: add README banner 2026-05-28 19:44:09 +01:00
joshp123 544b2f877f fix: expose Nix-managed skills through load paths
What:
- wire nix-openclaw plugin skills and declarative skills through OpenClaw skills.load.extraDirs
- stop materializing Nix-managed skills into instance workspace/skills
- reconcile old manifest-owned workspace skill copies during activation
- add regression checks for custom plugin skills, multi-agent workspaces, raw skills, and stale workspace cleanup

Why:
- separate agent workspaces must be able to discover Nix-managed plugin skills
- OpenClaw owns workspace skill loading and generated plugin skill state; nix-openclaw should pass stable load roots instead of copying skills into one workspace
- old nix-openclaw-managed workspace copies must not shadow the new load-path based config

Tests:
- nix build .#checks.aarch64-darwin.ci: passed
- nix build .#checks.aarch64-darwin.default-instance: passed
- nix build .#checks.aarch64-darwin.workspace-materializer: passed
- nix fmt -- --fail-on-change: passed
- git diff --cached --check && git diff --check: passed
2026-05-28 12:09:25 +02:00
joshp123 d28ddb1c42 docs: clarify plugin support boundary
What:
- distinguish OpenClaw runtime plugins from nix-openclaw plugins near the front of the README
- remove public npm runtime plugin install guidance
- mark the npm runtime bridge as implementation-only until structural plugin support is fixed

Why:
- prevent users from treating nix-openclaw plugin docs as support for ClawHub/npm/channel plugins
- keep the current supported plugin surface explicit

Tests:
- git diff --check: passed
- nix build --accept-flake-config .#checks.aarch64-darwin.ci --no-link: passed
2026-05-27 21:24:16 +02:00
joshp123 11d69d8a1c feat: package npm runtime plugins for Nix
Add a hash-backed npm runtime plugin path that lowers OpenClaw-style npm sources into immutable plugin roots and wires them through the existing Home Manager plugin resolver. Keep flake-backed customPlugins unchanged and document the boundary for agents and maintainers.

Tests: nix build .#checks.aarch64-darwin.default-instance --no-link; nix flake check --no-build; git diff --check

Co-authored-by: Codex <noreply@openai.com>
2026-05-08 18:29:45 +08:00
joshp123 faaf1021c3 fix: separate plugin discovery from enablement
Align the openclawPlugin.plugins contract with OpenClaw itself: load paths control discovery, while plugins.entries.<id>.enabled controls activation.

Rename the contract field to enabled, reject the accidental enable spelling, and keep plugin roots on plugins.load.paths even when their generated activation default is false.

Extend the eval fixture to prove enabled=false defaults, user overrides from true to false, and user overrides from false to true.

Tests: nix build --accept-flake-config .#checks.x86_64-linux.default-instance --no-link --print-out-paths; nix eval --accept-flake-config --raw .#checks.aarch64-darwin.package-contents.drvPath; nix build --accept-flake-config .#checks.aarch64-darwin.package-contents --no-link --dry-run; nix build --impure --accept-flake-config .#darwinConfigurations.mac-mini.system --no-link --override-input nix-openclaw path:/Users/josh/code/nix/nix-openclaw --dry-run

Upstream review: fetched openclaw/openclaw origin/main at 36f847a60e and checked plugin discovery/config semantics before finalizing the contract.

Co-authored-by: Codex <noreply@openai.com>
2026-05-08 12:10:32 +08:00
joshp123 e7d60654b8 fix: package OpenClaw runtime plugin tree
Install and validate OpenClaw's dist-runtime tree so bundled runtime plugins such as ACPX are present in the Nix gateway output.

Extend the existing plugin flake contract with immutable OpenClaw plugin roots, wire those roots into generated config, and add eval fixtures proving default enablement, user overrides, and disabled entries.

Document the boundary: curated plugin artifacts are CI/Garnix-cached by nix-openclaw, while arbitrary npm or ClawHub specs need deterministic lock/hash-backed Nix artifacts cached by the user's store/cache instead of runtime npm installs.

Tests: nix build --accept-flake-config .#checks.x86_64-linux.default-instance --no-link --print-out-paths; nix eval --accept-flake-config --raw .#checks.aarch64-darwin.package-contents.drvPath; nix build --accept-flake-config .#checks.aarch64-darwin.package-contents --no-link --dry-run; nix build --impure --accept-flake-config .#darwinConfigurations.mac-mini.system --no-link --override-input nix-openclaw path:/Users/josh/code/nix/nix-openclaw --dry-run

Co-authored-by: Codex <noreply@openai.com>
2026-05-08 12:00:05 +08:00
joshp123 4ed579792e docs: record OpenClaw plugin investigations
What:
- document the QMD/mcporter packaging decision for maintainers
- capture the native OpenClaw plugin gap and proposed nix-openclaw fix

Why:
- preserve the Discord investigation so the feature work can resume later
- distinguish PR #81's bundled manifest fix from external native plugin support

Tests:
- git diff --check: pass
- nix build .#checks.aarch64-darwin.package-contents --no-link: pass

Co-authored-by: Codex <noreply@openai.com>
2026-05-06 16:37:48 +02:00
joshp123 d56fa8a75c consume QMD through OpenClaw tools
What:
- consume QMD from nix-openclaw-tools instead of a separate upstream flake input
- expose QMD as an internal OpenClaw battery on Darwin and Linux
- add an opt-in Home Manager qmd model prewarm activation
- keep plugin packages off the user's shell PATH by default while preserving the runtime PATH

Why:
- nix-openclaw-tools owns reproducible tool packages and cacheable plugin metadata
- nixos-config should configure OpenClaw, not hand-wire runtime tools

Tests:
- nix build .#checks.aarch64-darwin.package-contents --accept-flake-config --no-link
- nix build .#checks.aarch64-darwin.qmd-runtime --accept-flake-config --no-link
- nix build .#checks.aarch64-darwin.bin-surface .#checks.aarch64-darwin.config-validity .#checks.aarch64-darwin.gateway-smoke --accept-flake-config --no-link
- nix eval .#checks.x86_64-linux.default-instance.drvPath --accept-flake-config
2026-05-06 09:44:37 +02:00
joshp123 5e186c192f docs: split maintainer agent guidance
Move public maintainer policy and automation guidance into maintainers/, shrink root AGENTS.md into an audience router, and ignore internal .agent scratch state.

Delete tracked internal ExecPlans from .agent and scrub personal/private references from public RFC examples.

Checks: git diff --cached --check; scripts/check-flake-lock-owners.sh; node scripts/select-openclaw-release.test.mjs; bash -n scripts/update-pins.sh; ruby -e 'require "yaml"; YAML.load_file(".github/workflows/yolo-update.yml"); YAML.load_file(".github/workflows/ci.yml")'
2026-05-06 09:29:46 +02:00
joshp123 e16f9743fd chore: rename first-party tools flake input
What:
- replace nix-steipete-tools with nix-openclaw-tools across flake wiring
- pass first-party tool packages through the overlay and package set explicitly
- update the bundled plugin catalog for the renamed tool repo

Why:
- keep nix-openclaw aligned with the upstream OpenClaw tool repo rename
- avoid stale steipete naming in package and plugin resolution

Tests:
- git diff --cached --check: passed
- scripts/check-flake-lock-owners.sh: passed
- nix eval --raw .#packages.x86_64-linux.openclaw-tools.name --accept-flake-config: openclaw-tools
- nix eval --json --impure --expr '<overlay toolNames eval>': returned node/pnpm/core plus gogcli, goplaces, summarize, camsnap, sonoscli
2026-05-05 12:29:59 +02:00
joshp123 d9b42b0f77 test: cover OpenClaw plugin surface
Fix the documented minimal Home Manager plugin option to use customPlugins, remove the stale duplicate skill-file builder, and assert duplicate plugin skill paths against the paths Home Manager actually installs.

Add local plugin fixtures so the default-instance check covers the agent-facing customPlugins path and duplicate skill collisions.
2026-05-05 09:29:34 +02:00
joshp123 38edf67292 🤖 refactor: hard-break legacy plugin options and unify bundled catalog
What:
- remove legacy option migrations for programs.openclaw.firstParty/plugins
- add explicit removed-option failures pointing to bundledPlugins/customPlugins
- add plugin-catalog.nix as single source of truth for bundled plugins
- generate bundled option toggles, source map, linux check selection, and tool list from the catalog
- update docs/wording from first-party to bundled plugins

Why:
- enforce forward-only API changes with fail-fast errors
- eliminate duplicated plugin lists drifting across module/check/tool surfaces
- keep consumer configuration mental model simple: bundledPlugins + customPlugins only

Tests:
- nix flake check --no-build (pass)
2026-02-17 19:51:06 -08:00
Josh Palmer 05bcb565f2 Docs: note macOS privacy permissions
Golden paths now explicitly call out that TCC privacy permissions cannot be fully declarative on unmanaged Macs.
2026-02-08 12:30:33 -08:00
Josh Palmer 2cb22671dc Golden paths + safer workspace + mac app Nix mode
- Add golden paths doc and link from README\n- Default workspaceDir to stateDir/workspace and pin agents.defaults.workspace when unset\n- Fix macOS app defaults domain and add openclaw.nixMode toggle
2026-02-08 10:45:22 -08:00
DJTBOT a52fe152e9 docs: standardize OpenClaw casing
What:
- replace "Openclaw" -> "OpenClaw" in user-facing docs, module descriptions, and messages

Why:
- consistent product naming after upstream rename

Tests:
- none (string-only change)
2026-02-05 13:11:45 -08:00
DJTBOT f9ad193d28 chore: remove legacy moltbot/clawdbot compatibility
What:
- drop MOLTBOT_* and CLAWDBOT_* env wiring from HM + wrappers
- update gateway log-dir patch to target current upstream logger.ts
- update config options generator to require OpenClawSchema only
- update hello-world plugin example env var + module path
- rename RFC filename to remove moltbot naming

Why:
- upstream is OpenClaw; keep nix-openclaw opinionated + clean

Tests:
- bash -n scripts/update-pins.sh
2026-02-05 13:05:01 -08:00
DJTBOT f578b82ace 🤖 feat: rename plugin option namespaces
What:
- add bundledPlugins/customPlugins options
- alias firstParty/plugins to new names
- update docs + checks to new naming

Why:
- clearer split between bundled and custom plugins

Tests:
- not run (config/docs change)
2026-02-04 10:27:41 -08:00
DJTBOT 90a1bbfe86 🤖 feat: enable goplaces first-party plugin
What:
- pin nix-steipete-tools to include goplaces plugin
- add goplaces to first-party sources and defaults
- update docs and linux first-party allowlist

Why:
- ship goplaces by default across macOS/Linux
- keep first-party plugin set consistent

Tests:
- nix flake check --accept-flake-config (aborted: offline fetch)
2026-02-03 19:37:30 +01:00
DJTBOT 9d8bafc4a8 🔄 rebrand: moltbot → openclaw
Rename all packages, modules, scripts, docs from moltbot to openclaw.

- Packages: moltbot-gateway → openclaw-gateway, moltbot → openclaw
- Binary: mainProgram now 'openclaw' (matches upstream package.json)
- Modules: homeManagerModules.openclaw, darwinModules.openclaw
- Programs: programs.openclaw
- Paths: ~/.openclaw, /tmp/openclaw, lib/openclaw
- Env vars: OPENCLAW_LOG_DIR, OPENCLAW_RELOAD_HM_CMD
- Launchd: com.steipete.openclaw.*
- Plugin API: openclawPlugin
- Kept: CLAWDBOT_* env vars (upstream still uses these)
- Kept: upstream source patch match string in gateway-postpatch.sh

Tests: not run locally (x86_64-linux; CI will validate)
2026-01-30 14:34:49 +01:00
DJTBOT f0482a8a0c 🤖 rename nix-moltbot surfaces to moltbot
What:
- rename Clawdbot modules/packages/scripts/docs to Moltbot naming
- update yolo updater + config generation for Moltbot schema
- keep Clawdbot app asset names + env exports for upstream compatibility

Why:
- align Nix packaging with moltbot org rename
- fix hourly pin update failures after schema rename

Tests:
- not run (blocked on updated nix-moltbot remote for full nixos-config build)
2026-01-28 12:21:06 +01:00
DJTBOT 4263c570c1 RFC: document plugin system and maintainer memo 2026-01-11 16:40:49 +01:00
DJTBOT b66501789e nix: collapse tools into single package 2026-01-07 15:54:02 +01:00
DJTBOT 97127c98fe Rename clawdis to clawdbot everywhere 2026-01-04 13:00:10 +01:00
DJTBOT 82ee44aea4 Rename to nix-clawdbot and update references 2026-01-04 12:56:07 +01:00
DJTBOT a1fa532d72 🇺🇸 DJTBOT: update comic to 2x2 layout with fixed speech bubbles
Rearranged from 4x1 to 2x2 grid for better readability.
Fixed 'Me neither.' bubble to have spiky edges matching other responses.

Co-Authored-By: DJTBOT <clawdis@local>
2026-01-03 22:42:18 +01:00
DJTBOT 4259edd5a8 🇺🇸 DJTBOT: add 'On declarative build systems' comic to README
Tremendous meme based on the classic howfuckedismydatabase.com comic.
Explains the Nix installation experience PERFECTLY - believe me!

Co-Authored-By: DJTBOT <clawdis@local>
2026-01-03 22:29:03 +01:00
DJTBOT 35cdacc550 🤖 codex: nix-clawdis plugins + docs 2026-01-03 21:42:41 +01:00
DJTBOT 796a8fce08 🇺🇸 DJTBOT: rewrite README, fix template, add batteries package
- README: clean, confident, agent-first positioning
- Bulletproof/declarative messaging (no JS shade)
- Template has all required Home Manager fields
- Added clawdis-batteries and clawdis-app packages
- Extended tools with safe null checks

Co-Authored-By: DJTBOT <clawdis@local>
2026-01-02 21:17:07 +01:00
Josh Palmer 80c87822c7 🤖 codex: WIP agent-first templates (n/a)
What:
- add agent-first templates and human/agent steps
- embed full onboarding in README as single source of truth
- remove indirection docs and template step files

Why:
- make onboarding executable for zero-context agents

Tests:
- not run (docs/templates only)
2026-01-02 16:56:31 +01:00
Josh Palmer 13c0bfd00c 🤖 codex: rebuild agent-first docs + flake (n/a)
What:
- add agent-first guide + operator reference docs
- restore flake with package/app outputs and lockfile
- align HM module defaults and sources with public repo

Why:
- make the repo agent-first and fully declarative per RFC

Tests:
- nix flake lock
2026-01-02 16:19:28 +01:00
Josh Palmer 8cf422e7db 🤖 codex: reset docs to agent-first RFC (n/a)
What:
- remove non-RFC docs and flake scaffolding for a clean restart
- rewrite README and RFC around agent-first, declarative bootstrap
- clarify scope boundaries between public repo and personal configs

Why:
- eliminate snippet-driven docs and align with agent-first success criteria

Tests:
- not run (docs cleanup)
2026-01-02 16:05:05 +01:00
Josh Palmer 16340048ac 🤖 codex: clarify zero-to-clawdis scope (n/a)
What:
- note that zero-to-clawdis creates a new local flake, not a personal nixos-config

Why:
- reinforce separation between public docs and private machine configs

Tests:
- not run (docs only)
2026-01-02 15:55:37 +01:00
Josh Palmer 72e6889485 🤖 codex: clarify scope boundaries (n/a)
What:
- add explicit RFC + README scope boundaries
- replace personal launchd label with neutral com.nix-clawdis.gateway
- switch docs to <user> placeholders and matching launchctl commands

Why:
- avoid confusion between RFC, public repo, and personal nixos-config

Tests:
- not run (docs/config updates only)
2026-01-02 15:54:42 +01:00
Josh Palmer 28ea46ecd9 🤖 codex: add RFC DoD + verification steps (n/a)
What:
- add Definition of Done to RFC and align Telegram-first scope
- replace status/health checks with launchd/log verification
- update quickstart, zero-to-clawdis, and agent copypasta

Why:
- match current gateway-only implementation and make verification explicit

Tests:
- not run (docs updates only)
2026-01-02 15:51:26 +01:00
Josh Palmer 58d48e1bc5 🤖 codex: remove setup/doctor apps (n/a)
What:
- drop clawdis-setup/doctor packages and references
- simplify HM package list and RFC outputs
- trim docs mentioning setup/doctor

Why:
- keep onboarding agent-first and avoid extra CLI tooling

Tests:
- not run (docs/config changes only)
2026-01-02 15:45:52 +01:00