{"id":"paseo-be-concise","repo":"yannelli/paseo-plugin-concise","url":"https://github.com/yannelli/paseo-plugin-concise","name":"paseo-be-concise","description":"Live be-concise activity, configuration, and hook previews inside Paseo","categories":["productivity"],"platforms":[],"caveats":[],"images":["https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/github-banner.png","https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/composer-on.png","https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/activity-desktop.png","https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/configuration-light.png","https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/playground.png","https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/compact.png","https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/composer-off.png","https://raw.githubusercontent.com/yannelli/paseo-plugin-concise/0596439e33bb79454c365b1fb796f1b560ba815c/docs/images/activity-filtered.png"],"themes":[],"health":{"manifestValid":true,"hasReadme":true,"hasLicense":true,"hasTests":true,"hasTypecheckScript":true,"updatedRecently":true},"scannedAt":"2026-10-15T12:30:51.660Z","addedAt":"2026-09-10T18:09:18+03:00","version":"2.5.0","security":{"status":"passed","blockingFindings":0,"advisoryFindings":0,"scannedAt":"2026-10-15T12:14:24.405Z","commit":"0596439e33bb79454c365b1fb796f1b560ba815c"},"license":"MIT","paseoVersionRequirement":">=0.9.0","descriptionNodes":[{"type":"text","text":"Live be-concise activity, configuration, and hook previews inside Paseo"}],"caveatNodes":[],"manifest":{"id":"paseo-be-concise","requirements":{"paseo":">=0.9.0"}},"repoMeta":{"stars":3,"defaultBranch":"main","pushedAt":"2026-10-10T06:29:35Z"},"owner":{"login":"yannelli","avatarUrl":"https://avatars.githubusercontent.com/u/59575788?v=4"},"installNotesHtml":"<p>Requires Paseo 0.9.0 or newer (tested against the 0.10.2 plugin SDK) and be-concise 0.7.0 or newer on the daemon machine. The adapter uses the configuration, monitoring, and preview APIs shipped with be-concise 0.7.0. The dictionary and the writing tuner need be-concise 0.10.0; controls for settings that the installed version lacks are hidden. Repository groups and hidden missing projects need 0.11.0. omp needs 0.12.0. The scan controls and the <code>code</code> dictionary scope need 0.14.0. Tested with be-concise 0.15.0. See <a href=\"docs/be-concise-0.10.md\">be-concise 0.10 to 0.15 support</a>. Paseo supplies all runtime dependencies.</p>\n<p>Install the npm release:</p>\n<pre><code class=\"language-sh\">paseo plugin add npm:@yannelli/paseo-be-concise\npaseo plugin ls\n</code></pre>\n<p><code>paseo plugin update paseo-be-concise</code> shows the installed and proposed revisions before it updates. To pin a version, add it to the source, for example <code>npm:@yannelli/paseo-be-concise@2.3.0</code>.</p>\n<p>Plugins must be enabled in Paseo Settings → Plugins. Installation runs trusted code with the daemon user’s access.</p>\n<p>The plugin detects installed be-concise versions in the Claude, Codex, and omp caches, respecting <code>CLAUDE_CONFIG_DIR</code>, <code>CODEX_HOME</code>, and <code>XDG_DATA_HOME</code>. It reads the omp cache in <code>~/.omp</code>, in each <code>~/.omp/profiles/&#x3C;name></code>, and in <code>$XDG_DATA_HOME/omp</code>. For a source checkout or custom installation, set <code>PASEO_CONCISE_ROOT</code> in the daemon environment to the repository or <code>plugins/concise</code> directory, then reload this plugin.</p>\n<h3>Older Paseo versions</h3>\n<p>Paseo installs…</p>","readmeText":"![Be Concise for Paseo: stop wordy agent edits.](docs/images/github-banner.png)\n\n# Be concise for Paseo\n\nA native companion to [be-concise](https://github.com/yannelli/be-concise) for Claude Code, Codex, and omp (oh-my-pi). Open **Be concise** in Paseo's sidebar, workspace panels, or Command Center. The composer pill shows the rejected and flagged total when enforcement is on and **Off** when disabled. Open it for decision details and the workspace enforcement toggle.\n\n- Live hook decisions, searchable by tool, file, session, project, and reason. The project picker groups projects by repository and hides projects whose folder is gone. Pause the feed or open an event’s request and response.\n- A compact composer pill with the Be concise logo and one number. The number combines rejected and flagged decisions; the popup shows each decision count and a 30-minute chart. Turning enforcement off displays **Off** and sets the workspace's `softFail` override; flagged actions are allowed while hooks and test-output filtering remain active. Turn it on to restore enforcement. Agent environment overrides apply separately.\n- Call counts, interventions, sessions, average hook duration, and a 30-minute activity chart.\n- User, project, and `BEC_CONFIG_PATH` configuration with sections for limits, checks, scanned text, style, dictionary, exceptions, and logging, plus a JSON view and test filter settings. List controls follow the be-concise merge rule for each key.\n- A dictionary editor for terms to flag, with match rules, fixes, and hook and scope limits. Entries from other files can be turned off or copied in.\n- A writing tuner that scans pasted samples and proposes settings they pass. Apply the proposal to a draft, review it, then save.\n- An isolated playground for file writes, Codex and omp patches, shell commands, and final replies. Previews show the decision, reason, and findings of each hook without executing the pasted command or writing the target file.\n- A Plugin tab that installs, updates, downgrades, and removes be-concise for Claude Code, Codex, and omp from the be-concise GitHub releases.\n\n## Screenshots\n\nAll images are 1920×1080. They come from the Paseo 0.11.0-beta.3 web app in light mode with this plugin installed, using sample activity on a separate test daemon. The first five frame real captures with a headline. See [capture details](docs/composer-pill.md#screenshots).\n\n### Composer pill\n\n![Be concise pill showing 5 next to the logo, with its popup open above the agent composer](docs/images/composer-on.png)\n\n### Live activity\n\n![Activity dashboard with the newest rejected file write expanded](docs/images/activity-desktop.png)\n\n### Configuration\n\n![User and project configuration layers](docs/images/configuration-light.png)\n\n### Hook preview\n\n![Playground with a rejected write and its hook response](docs/images/playground.png)\n\n### Narrow screens\n\n![Composer sheet and activity feed at a 390-pixel width](docs/images/compact.png)\n\n### Enforcement off\n\n![Off pill and popup with workspace enforcement turned off](docs/images/composer-off.png)\n\n### Paused and filtered activity\n\n![Paused activity filtered to decisions that need attention](docs/images/activity-filtered.png)\n\n<details>\n<summary>Connection and empty states</summary>\n\n### Connecting\n\n![Ellipsis pill and popup while the plugin connects](docs/images/composer-connecting.png)\n\n### Unavailable\n\n![Exclamation pill and popup asking to install be-concise](docs/images/composer-unavailable.png)\n\n### No activity\n\n![Empty activity dashboard waiting for the next hook](docs/images/activity-empty.png)\n\n</details>\n\n## Install\n\nRequires Paseo 0.9.0 or newer (tested against the 0.10.2 plugin SDK) and be-concise 0.7.0 or newer on the daemon machine. The adapter uses the configuration, monitoring, and preview APIs shipped with be-concise 0.7.0. The dictionary and the writing tuner need be-concise 0.10.0; controls for settings that the installed version lacks are hidden. Repository groups and hidden missing projects need 0.11.0. omp needs 0.12.0. The scan controls and the `code` dictionary scope need 0.14.0. Tested with be-concise 0.15.0. See [be-concise 0.10 to 0.15 support](docs/be-concise-0.10.md). Paseo supplies all runtime dependencies.\n\nInstall the npm release:\n\n```sh\npaseo plugin add npm:@yannelli/paseo-be-concise\npaseo plugin ls\n```\n\n`paseo plugin update paseo-be-concise` shows the installed and proposed revisions before it updates. To pin a version, add it to the source, for example `npm:@yannelli/paseo-be-concise@2.3.0`.\n\nPlugins must be enabled in Paseo Settings → Plugins. Installation runs trusted code with the daemon user’s access.\n\nThe plugin detects installed be-concise versions in the Claude, Codex, and omp caches, respecting `CLAUDE_CONFIG_DIR`, `CODEX_HOME`, and `XDG_DATA_HOME`. It reads the omp cache in `~/.omp`, in each `~/.omp/profiles/<name>`, and in `$XDG_DATA_HOME/omp`. For a source checkout or custom installation, set `PASEO_CONCISE_ROOT` in the daemon environment to the repository or `plugins/concise` directory, then reload this plugin.\n\n### Older Paseo versions\n\nPaseo installs npm sources from 0.9.0. On older Paseo, install the Git tag built for that version:\n\n| Paseo | Plugin tag | Command |\n| --- | --- | --- |\n| 0.8.0 | `v1.0.0` | `paseo plugin add yannelli/paseo-plugin-concise --ref v1.0.0` |\n| 0.7.2 | `v0.2.9` | `paseo plugin add yannelli/paseo-plugin-concise --ref v0.2.9` |\n\nThese tags do not have later features, such as the Plugin tab and the be-concise 0.10 controls. On Paseo 0.9.0 or newer, `--ref` also installs a 2.x tag that is not on npm, for example `--ref v2.2.0`. See [npm publishing](docs/npm-publishing.md#paseo-versions) for the sources.\n\n### Local development\n\n```sh\ngit clone https://github.com/yannelli/paseo-plugin-concise.git\ncd paseo-plugin-concise\nnpm ci\nnpm run check\npaseo plugin install \"$PWD\"\npaseo plugin ls\n```\n\n### Install be-concise from Paseo\n\nOpen **Be concise → Plugin**, or use the panel that appears when be-concise is missing. Choose a release and press **Install**, **Update**, or **Downgrade** for Claude Code, Codex, or omp. The daemon host needs Git and the `claude`, `codex`, or `omp` CLI on `PATH`, in `~/.local/bin`, or in `~/.bun/bin`. The plugin downloads the release from [yannelli/be-concise](https://github.com/yannelli/be-concise/releases) into `~/.local/share/paseo-be-concise/releases` and registers it as the `be-concise` marketplace. Claude Code changes use user scope. Restart Claude Code sessions after a change. For Codex, start a new session and review the hooks with `/hooks`. omp copies the plugin into its own cache and loads the hooks at session start, so start a new omp session after a change. omp needs be-concise 0.12.0 or newer, and it does not check subagent replies. If the marketplace already uses another source, **Switch to GitHub releases** asks for confirmation before it points the marketplace at the release folder. Changes run in the background, and the tab shows the result when the host commands finish. See [be-concise installer](docs/plugin-installer.md) for the exact commands.\n\n## Activity and settings\n\nThe view refreshes every two seconds. It follows the project registry and saved records under the daemon’s HOME/XDG directories, alongside any running `concise-web` console. It retains up to 500 events per project within a shared 16 MiB budget. Stats describe that retained window; they are not lifetime totals. New activity requires `monitor.persist` to be enabled and `BEC_MONITOR_DISABLED` to be unset in the agent’s environment.\n\nConfiguration controls edit the selected file and preserve its other keys. **Save changes** validates through be-concise and checks the file revision. An intervening edit preserves your draft and requires an explicit reload. The effective view uses the daemon’s environment; agent-specific environment overrides apply separately. The interface labels active and inactive layers because creating a higher-priority file changes which configuration is selected.\n\nSession rules that be-concise sends at startup appear as **Rules sent** and do not count as flagged. The tuner reads pasted text only and writes nothing until you save.\n\nEach preview starts with separate retry state. Preview results do not enter live activity. Only the Plugin tab changes the Claude Code, Codex, or omp installation, and only when you press one of its buttons. The plugin does not start another web console.\n\n## Development\n\n```sh\nnpm run check\npaseo plugin reload paseo-be-concise\npaseo plugin logs paseo-be-concise\n```\n\nTests use Node.js 24 and temporary home/project directories. They cover activity normalization, retention, stats, installation discovery, config conflicts, file permissions, preview isolation, form and dictionary edits, the tuner, omp records, and the omp installer commands. Integration tests require an installed be-concise; the tuner and dictionary tests need 0.10.0. Set `PASEO_CONCISE_ROOT` to a checkout to select it explicitly.\n\nPaseo API reference: [v0.9 plugins](https://paseo.sh/docs/plugins/v0.9/reference).\n\nSee the [documentation index](docs/INDEX.md) for the current composer button contract, screenshot capture details, be-concise 0.10 to 0.15 support, the be-concise installer commands, and npm publishing. Consult it when you change pill labels, update screenshots, add a configuration control, change install behavior, or change the release workflow.\n\n## Releases\n\nGitHub Actions runs the checks and publishes a GitHub release on qualifying pushes to `main`. The first release is `v0.1.0`. The workflow updates `package.json` and `package-lock.json`, pushes an annotated tag, and publishes release notes with the repository's `GITHUB_TOKEN`. It then publishes [`@yannelli/paseo-be-concise`](https://www.npmjs.com/package/@yannelli/paseo-be-concise) to npm through trusted publishing (OIDC), with no npm token. See [npm publishing](docs/npm-publishing.md) for the package contents and the trusted publisher setup.\n\nUse Conventional Commits in commits and squash-merge titles:\n\n| Commit | Version change |\n| --- | --- |\n| `fix:`, `perf:`, `revert:` | Patch |\n| `feat:` | Minor |\n| `!` after the type/scope, or a `BREAKING CHANGE:` footer | Major, including before 1.0 |\n| `docs:`, `chore:`, `ci:`, and other types without a breaking marker | No release |\n\nThe highest change since the last release determines the next version. For example, `fix: repair the badge` changes `0.1.0` to `0.1.1`; `feat: add a filter` changes it to `0.2.0`.\n\nRun `npm run release:dry-run` from a clean `main` checkout with all tags fetched to preview the next release. Rerun the **Release** workflow to complete a GitHub or npm publication interrupted after its tag was pushed.\n\nQuestions or feedback? Please reach out to me at [Ryan Yannelli](https://ryanyannelli.com) or open an issue/PR.\n"}