You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(telemetry): emit error events at ERROR severity and declutter slash menu (#129)
* docs: add CLAUDE.md importing AGENTS.md and AGENTS.local
Claude Code does not read AGENTS.md automatically. Add a CLAUDE.md that
imports the tracked repo rules (AGENTS.md) and the machine-local overlay
(AGENTS.local) so Claude Code sessions get the same guidance Pythinker
injects via PYTHINKER_AGENTS_MD.
* fix(telemetry): emit error events at ERROR severity with canonical attributes
track("error"/"crash"/"api_error") forwarded every event to OTel logs at the
emit_log() default of INFO, so error/crash telemetry was indistinguishable from
product analytics — SigNoz severity filters and the error saved views found
nothing, and the views' error_type filter never matched (call sites flatten it
to property.error_type / property.exc_class).
- Map known error event names to severity in EventSink: error/crash/api_error ->
ERROR, session_load_failed -> WARN; everything else stays INFO.
- Add canonical error.type/error.site/error.expected/error.kind attributes for
error-like events so dashboards query one set of keys regardless of whether
the call site emitted error_type or exc_class. Original property.* preserved.
- Factor OTel emission into emit_events_to_otel() and have flush_sync() drain the
pre-sink _event_queue, so a startup crash before attach_sink() still reaches
SigNoz (Bugsink already captured it).
- Docs: correct the stale claim that report_handled_error always calls Sentry;
expected errors are withheld from Bugsink.
Tests cover severity mapping, canonical attributes, and crash-safe flush.
* feat(ui/shell): declutter and space out the slash command menu
Add a blank gap line between the input row and the slash command popup,
drop the redundant [command]/[shell] tag (keeping the distinguishing
[skill]/[flow] tags), and add a persistent footer legend set off by its
own separator line. When the list overflows, the footer folds in a
'+N more' count instead of silently hiding entries; the menu height
adapts to the terminal and is capped to leave room for the chrome rows.
* fix(telemetry): surface swallowed errors in crash-safe flush
Address CodeRabbit review feedback on PR #129:
- flush_sync(): replace the blanket `suppress(Exception)` around the
pre-sink queue drain with an explicit try/except that logs at debug
and only clears `_event_queue` after a successful emit, so a failed
hand-off no longer silently drops startup-crash telemetry.
- emit_events_to_otel(): log the OTel import failure (with event count)
before dropping events instead of returning silently.
- test_slash_completer: build the selection marker via chr(0x276F)
instead of the literal glyph to satisfy the ambiguous-character lint.
- Add a test asserting the queue is retained when the crash-safe emit
raises.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,7 @@ GitHub Releases page; `0.8.0` is the new starting line.
24
24
-**Login selector polish.** Configured `/login` providers render with distinct success/state styling; the background working indicator uses the braille spinner, and working tips wrap with a hanging indent under the verb.
25
25
-**Scratch cleanup on exit.** Sessions that end via an exception now clean up their scratch files instead of orphaning them.
26
26
-**Readable diff context.** Unchanged context lines in file-edit diff snippets now render in the normal body-text color instead of muted grey, so edited-file previews are easier to read; added/removed lines are unchanged.
27
+
-**Cleaner slash command menu.** The slash command popup now has a blank line separating it from the input row, drops the repetitive `[command]`/`[shell]` tag (keeping the distinguishing `[skill]`/`[flow]` ones), and gains a persistent footer (`Enter to select · ↑/↓ to navigate · Esc to cancel`) set off by its own separator line. When the list scrolls, the footer folds in a `+N more` count instead of silently hiding entries, and the menu height adapts to the terminal.
0 commit comments