@brimveyn/aimux-config 0.6.4 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brimveyn/aimux-config",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "TypeScript configuration API for aimux — keymaps, themes, and backends with a fluent builder.",
5
5
  "keywords": [
6
6
  "aimux",
package/src/index.ts CHANGED
@@ -29,6 +29,7 @@ export { getDefaultKeymapConfig } from './defaults'
29
29
  export { resolveConfig } from './resolver'
30
30
  export { isAutoCommitEnabled, setAutoCommitEnabled } from './auto-commit-runtime'
31
31
  export { getMultiRepoConfig, setMultiRepoConfig } from './multi-repo-runtime'
32
+ export { getStatusBarSeparator, setStatusBarSeparator } from './status-bar-runtime'
32
33
  export {
33
34
  DEFAULT_EDITOR_ARGS,
34
35
  getExternalEditorConfig,
@@ -84,5 +85,6 @@ export type {
84
85
  SnippetVar,
85
86
  SplitDirection,
86
87
  StatusBarConfig,
88
+ StatusBarSeparator,
87
89
  TabSession,
88
90
  } from './types'
package/src/resolver.ts CHANGED
@@ -39,6 +39,7 @@ export function resolveConfig(userConfig: AimuxUserConfig): ResolvedConfig {
39
39
  externalEditor: userConfig.externalEditor ?? {},
40
40
  gitPane: resolveGitPane(userConfig.gitPane),
41
41
  hooks: userConfig.hooks ?? {},
42
+ integrations: resolveIntegrations(userConfig.integrations),
42
43
  keymaps,
43
44
  multiRepo,
44
45
  sessionBar: resolveSessionBar(userConfig.sessionBar),
@@ -50,6 +51,14 @@ export function resolveConfig(userConfig: AimuxUserConfig): ResolvedConfig {
50
51
  }
51
52
  }
52
53
 
54
+ function resolveIntegrations(
55
+ userConfig: AimuxUserConfig['integrations']
56
+ ): ResolvedConfig['integrations'] {
57
+ return {
58
+ claudeHooks: userConfig?.claudeHooks === true,
59
+ }
60
+ }
61
+
53
62
  function resolveSnippetTriggerChar(value: string | undefined): string {
54
63
  return typeof value === 'string' && value.length === 1 ? value : ':'
55
64
  }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Module-level singleton mirroring `statusBar.separator` from the resolved
3
+ * config. The status bar component reads this each render; the app sets it
4
+ * once at startup so the value is stable for the session.
5
+ *
6
+ * Same pattern as `auto-commit-runtime` / `external-editor-runtime` — avoids
7
+ * threading config through React props or contexts.
8
+ */
9
+
10
+ import type { StatusBarSeparator } from './types'
11
+
12
+ const DEFAULT_SEPARATOR: StatusBarSeparator = 'arrow'
13
+
14
+ let separator: StatusBarSeparator = DEFAULT_SEPARATOR
15
+
16
+ export function setStatusBarSeparator(value: StatusBarSeparator | undefined): void {
17
+ separator = value ?? DEFAULT_SEPARATOR
18
+ }
19
+
20
+ export function getStatusBarSeparator(): StatusBarSeparator {
21
+ return separator
22
+ }
package/src/types.ts CHANGED
@@ -964,8 +964,21 @@ export interface AIUsageToolConfig {
964
964
  tools?: AIUsageTool[]
965
965
  }
966
966
 
967
+ export type StatusBarSeparator = 'arrow' | 'round' | 'slant' | 'flame' | 'none'
968
+
967
969
  export interface StatusBarConfig {
968
970
  aiUsage?: AIUsageToolConfig
971
+ /**
972
+ * Powerline-style glyph used between status bar sections.
973
+ * - `arrow` (default): solid triangles ( / )
974
+ * - `round`: solid semicircles ( / )
975
+ * - `slant`: solid slopes ( / )
976
+ * - `flame`: solid flame ribbons ( / )
977
+ * - `none`: no glyph, sections snap via background colour only
978
+ *
979
+ * All non-`none` options require a nerd-font / powerline-capable font.
980
+ */
981
+ separator?: StatusBarSeparator
969
982
  }
970
983
 
971
984
  export interface ExternalEditorConfig {
@@ -991,6 +1004,20 @@ export interface ExternalEditorConfig {
991
1004
  terminal?: string[]
992
1005
  }
993
1006
 
1007
+ export interface AimuxIntegrationsConfig {
1008
+ /**
1009
+ * Opt-in: install Claude Code lifecycle hooks into `~/.claude/settings.json`
1010
+ * so per-tab activity (working / waiting-input / idle) is driven by Claude's
1011
+ * own events rather than visual scraping of the terminal. Off by default.
1012
+ *
1013
+ * When enabled, aimux writes six entries marked `__aimux: true` into the
1014
+ * user's settings file at startup, and the daemon publishes a hook URL on
1015
+ * `127.0.0.1` for Claude to call back into. Unrelated hooks the user has
1016
+ * configured are preserved. See `docs/guide/claude-integration.md`.
1017
+ */
1018
+ claudeHooks?: boolean
1019
+ }
1020
+
994
1021
  export interface AimuxUserConfig {
995
1022
  theme?: AimuxThemeConfig
996
1023
  keymaps?: (k: KeymapBuilderApi) => KeymapBuilderApi
@@ -1010,6 +1037,7 @@ export interface AimuxUserConfig {
1010
1037
  multiRepo?: Partial<MultiRepoConfig>
1011
1038
  statusBar?: StatusBarConfig
1012
1039
  externalEditor?: ExternalEditorConfig
1040
+ integrations?: AimuxIntegrationsConfig
1013
1041
  }
1014
1042
 
1015
1043
  // ─── Resolved config (internal) ───────────────────────────────────────────────
@@ -1083,4 +1111,7 @@ export interface ResolvedConfig {
1083
1111
  multiRepo: MultiRepoConfig
1084
1112
  statusBar: StatusBarConfig
1085
1113
  externalEditor: ExternalEditorConfig
1114
+ integrations: {
1115
+ claudeHooks: boolean
1116
+ }
1086
1117
  }