- server/policy_overrides.mjs: persistent group/action override store - Group toggle: disabling a group forces all its actions to auto-deny without touching individual overrides; re-enabling restores them intact - Action overrides: cycle auto-accept/queue/auto-deny/clear per action - Effective policy resolution in index.mjs: group > action override > hardcoded default - auth.mjs: add check_can_manage_policies (requires canApprove.length > 0) - Three new endpoints: GET /policies, POST /policies/group/:group, POST /policies/action/:action - client/conduit.mjs: get_policies, set_group_policy, set_action_policy - ccc-queue.mjs: policy view (Tab to switch); group/action panel with space/e/←/→ - actions.mjs: group fields on desktop/email/calendar actions; list-actions includes group - config.example.json: add policy_overrides key - Bump version to 1.3.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
Contributing checklist
Use this when adding any non-trivial feature to CCC. Go through every section — skipping docs or config is a common mistake.
Adding a new action (simple — no new service)
- Add the action definition to
server/actions.mjs - Update the actions table in
README.md - If the action has special behavior, add a note under the table
- Update
claude-info/architecture.mdif ctx shape changes
Adding a new injectable service (e.g. a new API integration)
Code
- Create
server/<service>.mjswith a factory functioncreate_<service>(cfg) - Extend
server/config.mjsto read and return the new config block (resolve paths relative to config dir) - Import and instantiate in
server/index.mjs; handle missing config gracefully (warn, set to null) - Add the service to the
make_ctx()return object inindex.mjs - Add actions to
server/actions.mjs; guard withif (!ctx.<service>) throw new Error('<service> not configured') - If setup requires a one-time manual step (OAuth, keygen, etc.) add a bin script in
bin/ - Add new dependencies to
package.jsonand add bin scripts to thebinmap
Config
- Add the new config block to
config.example.json
Documentation
- Update
README.md:- Add new actions to the actions table
- Add a setup section explaining prerequisites and one-time steps
- Update the
ctxcomment in "Adding actions" if ctx changed
- Update
claude-info/architecture.md:- Add the new service to the ctx shape block
- Note any new files in the file layout
- Update the permission model section if a new permission gate was added
- Update or add a plan file in
claude-info/— mark status as implemented - Update
CLAUDE.md— mark the plan entry as done
Git
git status— read every line before staging- Stage files explicitly by name (never
git add -Aorgit add .) - Bump version in
package.jsonif this is a meaningful release - Commit with a clear message describing what was added
- Check git identity is set correctly for this repo (
git config user.name)
After commit
- Tell the user to run
npm installif new dependencies were added - Tell the user about any one-time setup steps required before the feature works