Skip to content

feat: make shell logging on navigation events configurable#113

Merged
sassman merged 15 commits intomainfrom
feat/configurable-shell-logging
Apr 25, 2026
Merged

feat: make shell logging on navigation events configurable#113
sassman merged 15 commits intomainfrom
feat/configurable-shell-logging

Conversation

@sassman
Copy link
Copy Markdown
Owner

@sassman sassman commented Apr 25, 2026

Summary

  • Add [logging] config section with project_loading and project_unloading keys ("off" | "short" | "verbose")
  • Extract Sync handler rendering into SyncOutcome with builder pattern — update() stays pure, rendering happens in effect processing
  • Introduce Echo enum (Silent | Line) and Effect::RenderSync / Effect::PrintLines — composite effects fold into terminal effects via execute_effects recursion
  • Add PrecedenceDiff::unload_summary() with user-friendly labels: "added" (profile takes over) / "unloaded" (gone)
  • Fix serde rename_all_fieldsrename_all on LogVerbosity so lowercase TOML values actually deserialize

Test plan

  • Set project_loading = "short" in config, cd into trusted project — expect one-liner
  • Set project_unloading = "off", cd out — expect silence
  • Omit [logging] section entirely — expect verbose (default) behavior unchanged

Closes #109

github-actions Bot added a commit that referenced this pull request Apr 25, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 25, 2026

🔍 Website Preview: https://amoxide.rs/_preview/113/

Preview will be removed when this PR is merged or closed.

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Apr 25, 2026

Codecov Report

❌ Patch coverage is 76.19048% with 110 lines in your changes missing coverage. Please review.
✅ Project coverage is 75.17%. Comparing base (7f833ba) to head (bc805f0).

Files with missing lines Patch % Lines
crates/am/src/sync_outcome.rs 82.70% 29 Missing and 3 partials ⚠️
crates/am/src/bin/am.rs 0.00% 29 Missing ⚠️
crates/am/src/update.rs 53.70% 23 Missing and 2 partials ⚠️
crates/am/src/trust.rs 83.52% 13 Missing and 1 partial ⚠️
crates/am/src/effects.rs 82.22% 6 Missing and 2 partials ⚠️
crates/am/src/config.rs 90.90% 0 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #113      +/-   ##
==========================================
+ Coverage   74.78%   75.17%   +0.38%     
==========================================
  Files          47       48       +1     
  Lines       12152    12494     +342     
  Branches    12152    12494     +342     
==========================================
+ Hits         9088     9392     +304     
- Misses       2890     2919      +29     
- Partials      174      183       +9     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

github-actions Bot added a commit that referenced this pull request Apr 25, 2026
github-actions Bot added a commit that referenced this pull request Apr 25, 2026
@sassman sassman added this to the v0.8.0 milestone Apr 25, 2026
@sassman sassman merged commit 1c53544 into main Apr 25, 2026
33 checks passed
@sassman sassman deleted the feat/configurable-shell-logging branch April 25, 2026 20:39
github-actions Bot added a commit that referenced this pull request Apr 25, 2026
@github-actions github-actions Bot mentioned this pull request Apr 25, 2026
sassman pushed a commit that referenced this pull request Apr 27, 2026
## 🤖 New release

* `amoxide`: 0.7.0 -> 0.8.0 (⚠ API breaking changes)
* `amoxide-tui`: 0.7.0 -> 0.8.0

### ⚠ `amoxide` breaking changes

```text
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field Config.logging in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/config.rs:30
  field Config.logging in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/config.rs:30

--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---

Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
        ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/derive_trait_impl_removed.ron

Failed in:
  type Effect no longer derives Clone, in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/effects.rs:35
  type Effect no longer derives Clone, in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/effects.rs:35

--- failure enum_struct_variant_changed_kind: An enum struct variant changed kind ---

Description:
A pub enum's struct variant with at least one pub field has changed to a different kind of enum variant, breaking access to its pub fields.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_struct_variant_changed_kind.ron

Failed in:
  variant ProfileAction::Use in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/cli.rs:162
  variant Commands::Use in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/cli.rs:94

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_variant_added.ron

Failed in:
  variant Commands:Sync in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/cli.rs:125
  variant Effect:PrintLines in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/effects.rs:55
  variant Effect:RenderSync in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/effects.rs:56
  variant Effect:PrintLines in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/effects.rs:55
  variant Effect:RenderSync in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/effects.rs:56
  variant Message:Sync in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/messages.rs:38
  variant Message:EnableProfiles in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/messages.rs:41
  variant Message:DeactivateProfiles in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/messages.rs:42
  variant Message:Sync in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/messages.rs:38
  variant Message:EnableProfiles in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/messages.rs:41
  variant Message:DeactivateProfiles in /tmp/.tmpZfglXO/amoxide-rs/crates/am/src/messages.rs:42

--- failure enum_variant_missing: pub enum variant removed or renamed ---

Description:
A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_variant_missing.ron

Failed in:
  variant Message::Hook, previously in file /tmp/.tmpcLonDb/amoxide/src/messages.rs:38
  variant Message::Reload, previously in file /tmp/.tmpcLonDb/amoxide/src/messages.rs:39
  variant Message::Hook, previously in file /tmp/.tmpcLonDb/amoxide/src/messages.rs:38
  variant Message::Reload, previously in file /tmp/.tmpcLonDb/amoxide/src/messages.rs:39
  variant Commands::Hook, previously in file /tmp/.tmpcLonDb/amoxide/src/cli.rs:133
  variant Commands::Reload, previously in file /tmp/.tmpcLonDb/amoxide/src/cli.rs:142

--- failure function_missing: pub fn removed or renamed ---

Description:
A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/function_missing.ron

Failed in:
  function amoxide::init::generate_force_init, previously in file /tmp/.tmpcLonDb/amoxide/src/init.rs:102
  function amoxide::hook::generate_hook, previously in file /tmp/.tmpcLonDb/amoxide/src/hook.rs:13
  function amoxide::trust::render_unload_message, previously in file /tmp/.tmpcLonDb/amoxide/src/trust.rs:88
  function amoxide::subcommand::group_by_program, previously in file /tmp/.tmpcLonDb/amoxide/src/subcommand.rs:93
  function amoxide::group_by_program, previously in file /tmp/.tmpcLonDb/amoxide/src/subcommand.rs:93
  function amoxide::init::generate_reload, previously in file /tmp/.tmpcLonDb/amoxide/src/init.rs:134
  function amoxide::trust::render_load_message, previously in file /tmp/.tmpcLonDb/amoxide/src/trust.rs:54
  function amoxide::hook::generate_hook_with_security, previously in file /tmp/.tmpcLonDb/amoxide/src/hook.rs:37

--- failure inherent_method_missing: pub method removed or renamed ---

Description:
A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/inherent_method_missing.ron

Failed in:
  SecurityConfig::save, previously in file /tmp/.tmpcLonDb/amoxide/src/security.rs:67
  Session::save, previously in file /tmp/.tmpcLonDb/amoxide/src/session.rs:38
  Session::save, previously in file /tmp/.tmpcLonDb/amoxide/src/session.rs:38
  ProfileConfig::save, previously in file /tmp/.tmpcLonDb/amoxide/src/profile.rs:174
  ProfileConfig::save, previously in file /tmp/.tmpcLonDb/amoxide/src/profile.rs:174
  Config::save, previously in file /tmp/.tmpcLonDb/amoxide/src/config.rs:56
  Config::save, previously in file /tmp/.tmpcLonDb/amoxide/src/config.rs:56

--- failure module_missing: pub module removed or renamed ---

Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/module_missing.ron

Failed in:
  mod amoxide::hook, previously in file /tmp/.tmpcLonDb/amoxide/src/hook.rs:1

--- failure pub_module_level_const_missing: pub module-level const is missing ---

Description:
A public const is missing or renamed
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/pub_module_level_const_missing.ron

Failed in:
  AM_PROJECT_ALIASES in file /tmp/.tmpcLonDb/amoxide/src/env_vars.rs:7
  AM_PROFILE_ALIASES_LEGACY in file /tmp/.tmpcLonDb/amoxide/src/env_vars.rs:21
```

<details><summary><i><b>Changelog</b></i></summary><p>

## `amoxide`

<blockquote>

##
[0.8.0](v0.7.0...v0.8.0) -
2026-04-27

### Bug Fixes

- Apply_import was overwriting the user's real config on every cargo
test ([#111](#111))
- Hook reload local aliases when individual aliases changes
([#107](#107))

### Features

- Add explicit enable/disable flags to am use
([#115](#115))
- Make shell logging on navigation events configurable
([#113](#113))
- Precedence engine with unified am sync, replaces am hook/reload
([#108](#108))

### Miscellaneous Tasks

- Bump clap from 4.6.0 to 4.6.1
([#104](#104))
</blockquote>

## `amoxide-tui`

<blockquote>

##
[0.8.0](v0.7.0...v0.8.0) -
2026-04-27

### Bug Fixes

- Apply_import was overwriting the user's real config on every cargo
test ([#111](#111))
- Hook reload local aliases when individual aliases changes
([#107](#107))

### Features

- Precedence engine with unified am sync, replaces am hook/reload
([#108](#108))
- Add explicit enable/disable flags to am use
([#115](#115))
- Make shell logging on navigation events configurable
([#113](#113))

### Miscellaneous Tasks

- Bump clap from 4.6.0 to 4.6.1
([#104](#104))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.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.

feat: make shell logging on navigation events configurable

2 participants