Skip to content

Enhance custom commands#13

Closed
ezynda3 wants to merge 2 commits into
anomalyco:devfrom
mark3labs:enhance-custom-commands
Closed

Enhance custom commands#13
ezynda3 wants to merge 2 commits into
anomalyco:devfrom
mark3labs:enhance-custom-commands

Conversation

@ezynda3
Copy link
Copy Markdown
Contributor

@ezynda3 ezynda3 commented May 15, 2025

No description provided.

@ezynda3 ezynda3 closed this May 15, 2025
@adamdotdevin
Copy link
Copy Markdown
Member

haha, sorry, i already pulled your commit over!

andreipromarketing-dev pushed a commit to andreipromarketing-dev/opencode that referenced this pull request Apr 7, 2026
fix: remove malformed workflow and fix hooks.json regex escaping
csr-reboot added a commit to dostack-ai/opencode that referenced this pull request Apr 15, 2026
Signals build_status to the DOstack platform so the frontend knows when
a build is in progress vs. complete, fixing the premature deploy race
condition (issue anomalyco#13).

- 'building' sent on first file write (debounced — one call per cycle)
- 'complete' sent when AI declares build done AFTER verification passed
  (verificationInjected is true and no files written since)
- Status resets when verification re-arms (file write after complete)
- Complete signal retries once on failure; building is fire-and-forget
- API failures never crash the build

New file: src/build-status.ts — stateful reporter with dedup and retry
Hook changes: after-response gets reportBuilding, text-complete gets
  reportComplete + isVerificationComplete for the two-phase signal

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rwanbt added a commit to Rwanbt/opencode that referenced this pull request Apr 19, 2026
…eader

stop_local_server previously called child.kill() and dropped the Child
without wait(). On Unix the process lingered as a zombie and — the real
leak — the BufReader<ChildStderr> running in the dedicated stderr
thread stayed blocked inside `.lines()` forever, holding the pipe fd.
Repeated stop/start cycles on a long mobile session accumulated
parked threads + dangling fds.

Now we take() the Child out of the shared guard, call kill(), and poll
try_wait() for up to 2 seconds. That lets the kernel reap the zombie
and closes the stderr pipe, so the reader thread naturally exits on
EOF and drops its fd.

Closes anomalyco#13/21.
aleygey pushed a commit to aleygey/my_opencode that referenced this pull request Apr 21, 2026
…, usage

- Event retention: 500-row hard cap per workflow with protected-kind
  allowlist so forensic / terminal events never prune (P3 anomalyco#11).
- Pending-commands queue with stable-fingerprint dedup, ACK path for
  runtime command_ids, and 1h TTL on timed_out_at entries (P1/P3).
- Legal state-machine transitions for node status, with runtime-source
  bypass for stall / limit-reach forced moves (P0/P2).
- Structured open_need / fulfill_need lifecycle replacing free-form
  blocker text; auto-waits the node and wakes master on fulfill (P2).
- Workflow.Summary zod schema (.loose + .meta ref) plus matching
  WorkflowSummary type on the sql layer — legacy rows still parse (P3 anomalyco#13).
- Per-node usage accumulation from assistant message tokens/cost with
  message-id dedup; workflow Runtime.usage rolls up across nodes;
  advisory limits from workflow.config.limits emit one-shot
  node.budget_exceeded (P3 anomalyco#15).
- workflow_need_fulfill registered in ToolRegistry; control HTTP route
  returns { ok, deduped, command_id } so the master sees dedup signal.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Jaiminp007 referenced this pull request in Jaiminp007/finny May 2, 2026
Fixes all 17 Copilot comments:

Telemetry opt-out (#1, #2, #3, #9, #16):
- tracker.ts now reads FINNY_TELEMETRY=0 / OPENCODE_TELEMETRY=0 at module
  load, so the opt-out applies in every entrypoint (TUI worker, server,
  CLI), not just the bootstrap path.
- Email dialog auto-prompt and /subscribe slash command also gated on
  Analytics.isEnabled() — email POST goes to the same Convex deployment.

Tracker correctness (#5, #14, #17):
- drain() now also waits for the DeviceProfile.userId() resolution promise,
  not just the post-send promise.
- worker rpc.shutdown() and main-thread thread.ts both call
  Analytics.drain() before tearing down — neither beforeExit nor SIGTERM
  fire on worker.terminate() / process.exit(0).
- beforeExit handler runs at most once per process, preventing an infinite
  drain loop when a hung telemetry request later resolves and re-empties
  the loop.

Privacy (#10, #11, #12):
- Drop process.argv from tui.worker.booted (could include --prompt text
  and project paths).
- error.surfaced now sends only error.name; error messages frequently
  embed user prompt content and local file paths.
- Don't persist the submitted email address to local KV (no reader, just
  unnecessary PII retention).

Email dialog state machine (#4, #6, #8):
- Wait for kv.ready before evaluating the prompt gate so we don't re-show
  the dialog to users who already submitted/skipped.
- Conditional dismiss handler — only marks "skipped" when no terminal
  status has been set, so a successful submit isn't overwritten by the
  dismiss callback that fires on dialog.clear() and isn't suppressed by
  another dialog replacing this one.

Server-side validation (#15):
- subscribe mutation now rejects empty / oversized / regex-failing emails
  with a ConvexError, so the public Convex client can't bypass the TUI
  regex.

Command coverage (#13):
- Hook Analytics.track() in DialogCommand.trigger() instead of the bus
  event handler. trigger() is the central activation point for palette,
  slash, keybind, plugin, and bus paths — single hook, full coverage,
  no double-counting.

Comment wording (#7):
- bootstrap.ts: "opt-in by default" → "enabled by default" (correct
  description of opt-out semantics).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rwanbt added a commit to Rwanbt/opencode that referenced this pull request May 5, 2026
…eader

stop_local_server previously called child.kill() and dropped the Child
without wait(). On Unix the process lingered as a zombie and — the real
leak — the BufReader<ChildStderr> running in the dedicated stderr
thread stayed blocked inside `.lines()` forever, holding the pipe fd.
Repeated stop/start cycles on a long mobile session accumulated
parked threads + dangling fds.

Now we take() the Child out of the shared guard, call kill(), and poll
try_wait() for up to 2 seconds. That lets the kernel reap the zombie
and closes the stderr pipe, so the reader thread naturally exits on
EOF and drops its fd.

Closes anomalyco#13/21.
bussard76 pushed a commit to bussard76/openwork that referenced this pull request May 12, 2026
aleygey pushed a commit to aleygey/my_opencode that referenced this pull request May 12, 2026
…as/refiner

UI fixes:
- anomalyco#15 Remove the gear-icon "Tweaks" popover (theme + collapse) — user
  reported it as useless chrome. Theme falls back to saved pref / system,
  rail collapse stays on the rail's own chevron toggle.
- anomalyco#7 Task names now follow each session's title (auto-generated or user-
  renamed). Root cause: `newWorkflowTask` was pre-setting `title:
  "Workflow"` on session.create, which blocked the backend's title agent
  from auto-generating (the agent only fires when title matches the
  default ISO placeholder). New sessions now leave title unset →
  ensureTitle fires → each task gets a distinct name. Rail and Tasks
  drawer show "Untitled" for sessions that still have the default
  placeholder; node-tab labels prefer the bound child session's title.
- Rail's sub-task list capped at 8 visible rows with internal scroll
  (was squeezing all tasks into the visible rail height).
- anomalyco#14 Per-slave model picker: clear `local.model` before opening the
  picker so picking the SAME model as master still routes (previously
  the on(key) effect required a key change to fire, so same-model picks
  silently no-op'd — the user's "选其他不生效" complaint).
- anomalyco#10 Canvas bottom-half occluded: `.wf-canvas-host` was `position:
  relative` only, so its `flex: 1` child `.wf-r2-canvas` had no flex
  parent to grow into. Made the host a flex column so the canvas
  actually fills its allotted height.
- anomalyco#11 React production error anomalyco#409 fixed by un-nesting the drill-in
  button: the outer node card was a `<button>` wrapping an inner
  drill-in `<button>` — invalid HTML that React surfaces as anomalyco#409.
  Switched the outer to `div role="button"` with Enter/Space handling.

Refiner:
- anomalyco#13 Refiner no longer observes user messages addressed to the
  orchestrator agent (workflow planning commands aren't generalisable
  experiences). Gate added in `extractUserMessage`.
- anomalyco#5 Archived experiences are now discoverable: new "已归档 (N)" chip
  in the Knowledge substrip when N > 0, toggles `includeArchived`.
  Archived rows already had an "Unarchive" button in the card menu —
  this just makes finding them obvious.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants