commit 9c26ce6f794248678b0c0cedaad700107f0bfaed
parent 8dfa7726ec4b30498110e1563ca653eafee24bfb
Author: alltheseas <alltheseas@users.noreply.github.com>
Date: Fri, 2 Jan 2026 17:38:48 -0600
docs: add profiling annotation guidance
Document the use of #[profiling::function] attribute for marking
performance-critical functions that should be visible in puffin.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat:
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/AGENTS.md b/AGENTS.md
@@ -77,7 +77,8 @@ This document captures the current architecture, coding conventions, and design
- Rust 2021, edition-lints are strict; clippy `disallowed_methods` is denied at crate root to enforce API hygiene (`crates/notedeck/src/lib.rs`).
- Prefer module-level organization over monolithic files; each feature (accounts, decks, timelines, media) lives in its own module tree.
-- Use `tracing` macros for structured logging and `profiling` scopes where hot paths exist (Columns’ relay/event loop).
+- Use `tracing` macros for structured logging and `profiling` scopes where hot paths exist (Columns' relay/event loop).
+- Mark performance-critical functions with `#[profiling::function]` for visibility in the puffin profiler.
- UI code embraces egui idioms: builder chains, closures returning `Response`, `ui.vertical`/`horizontal` for layout.
- Persist state via `TimedSerializer::try_save` to avoid blocking the frame; batch mutations with `SettingsHandler::update_batch`.
- Tests live alongside modules (e.g., `JobPool`), often using `#[tokio::test]` when async behavior is involved.