@meridiona/meridian-darwin-arm64 1.29.0 → 1.30.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.29.0
1
+ 1.30.0
package/bin/meridian CHANGED
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridiona/meridian-darwin-arm64",
3
- "version": "1.29.0",
3
+ "version": "1.30.0",
4
4
  "description": "Prebuilt Meridian app for macOS arm64 (daemon binary + dashboard + Python services). Installed via @meridiona/meridian.",
5
5
  "homepage": "https://github.com/Meridiona/meridian",
6
6
  "repository": {
@@ -0,0 +1,45 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ com.meridiona.tray — menu bar tray app for Meridian.
4
+ Shows daemon health, active session, focus stats, and worklog badges.
5
+ Runs as the user's own LaunchAgent so it has display server access.
6
+
7
+ Install: scripts/install-tray-daemon.sh
8
+ Uninstall: scripts/uninstall-tray-daemon.sh
9
+ Logs: ~/.meridian/logs/tray.log (stdout)
10
+ ~/.meridian/logs/tray-error.log (stderr)
11
+ -->
12
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
13
+ <plist version="1.0">
14
+ <dict>
15
+ <key>Label</key>
16
+ <string>com.meridiona.tray</string>
17
+
18
+ <key>ProgramArguments</key>
19
+ <array>
20
+ <string>{{TRAY_BIN}}</string>
21
+ </array>
22
+
23
+ <key>EnvironmentVariables</key>
24
+ <dict>
25
+ <key>HOME</key>
26
+ <string>{{HOME}}</string>
27
+ <key>PATH</key>
28
+ <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
29
+ </dict>
30
+
31
+ <key>StandardOutPath</key>
32
+ <string>{{HOME}}/.meridian/logs/tray.log</string>
33
+ <key>StandardErrorPath</key>
34
+ <string>{{HOME}}/.meridian/logs/tray-error.log</string>
35
+
36
+ <key>RunAtLoad</key>
37
+ <true/>
38
+ <key>KeepAlive</key>
39
+ <true/>
40
+ <key>ThrottleInterval</key>
41
+ <integer>10</integer>
42
+ <key>ProcessType</key>
43
+ <string>Interactive</string>
44
+ </dict>
45
+ </plist>
@@ -23,6 +23,7 @@ _HASH_FILE="${HOME}/.meridian/.component-hashes"
23
23
  _load_old_hash() { grep "^$1=" "${_HASH_FILE}" 2>/dev/null | cut -d= -f2 || true; }
24
24
  _OLD_DAEMON_HASH="$(_load_old_hash daemon_bin)"
25
25
  _OLD_UI_HASH="$(_load_old_hash ui_tarball)"
26
+ _OLD_TRAY_HASH="$(_load_old_hash tray_bin)"
26
27
 
27
28
  info() { echo "→ $*" >&2; }
28
29
  ok() { echo " ✓ $*" >&2; }
@@ -396,6 +397,11 @@ _daemon_changed=1
396
397
  [[ -n "${_OLD_DAEMON_HASH}" && -n "${_new_daemon_hash}" && \
397
398
  "${_new_daemon_hash}" == "${_OLD_DAEMON_HASH}" ]] && _daemon_changed=0
398
399
 
400
+ _new_tray_hash="$(shasum -a 256 "${APP_ROOT}/bin/meridian-tray" 2>/dev/null | cut -d' ' -f1 || true)"
401
+ _tray_changed=1
402
+ [[ -n "${_OLD_TRAY_HASH}" && -n "${_new_tray_hash}" && \
403
+ "${_new_tray_hash}" == "${_OLD_TRAY_HASH}" ]] && _tray_changed=0
404
+
399
405
  # Snapshot MLX health before any venv work — if already healthy and services
400
406
  # don't change we skip the restart + model-load wait entirely.
401
407
  _mlx_was_healthy=0
@@ -623,6 +629,18 @@ else
623
629
  bash "${APP_ROOT}/scripts/install-daemon.sh" || warn "daemon agent install failed"
624
630
  fi
625
631
 
632
+ # Tray app: skip restart when the binary is identical.
633
+ if [[ -x "${APP_ROOT}/bin/meridian-tray" ]]; then
634
+ if [[ "${_tray_changed}" -eq 0 ]]; then
635
+ ok "Tray app unchanged — skipping restart"
636
+ else
637
+ info "Installing Meridian Tray launchd agent…"
638
+ bash "${APP_ROOT}/scripts/install-tray-daemon.sh" || warn "tray agent install failed"
639
+ fi
640
+ else
641
+ warn "meridian-tray binary not found — tray app not installed (not yet in this release)"
642
+ fi
643
+
626
644
  # Claude Code SessionEnd hook: seals each Claude session into app_sessions the
627
645
  # instant it ends (the indexer sweep + 1 h idle seal are only the fallback).
628
646
  # Idempotent merge into ~/.claude/settings.json; also purges retired Python
@@ -669,9 +687,11 @@ fi
669
687
  # Write to a temp file and rename atomically so a crash mid-write never leaves
670
688
  # a half-written or empty hash file (which would force a full reinstall).
671
689
  _final_ui_hash="${_new_ui_hash:-${_OLD_UI_HASH}}"
690
+ _final_tray_hash="${_new_tray_hash:-${_OLD_TRAY_HASH}}"
672
691
  {
673
692
  [[ -n "${_new_daemon_hash}" ]] && printf 'daemon_bin=%s\n' "${_new_daemon_hash}"
674
693
  [[ -n "${_final_ui_hash}" ]] && printf 'ui_tarball=%s\n' "${_final_ui_hash}"
694
+ [[ -n "${_final_tray_hash}" ]] && printf 'tray_bin=%s\n' "${_final_tray_hash}"
675
695
  } > "${_HASH_FILE}.tmp" && mv "${_HASH_FILE}.tmp" "${_HASH_FILE}"
676
696
 
677
697
  ok "all daemons installed"
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env bash
2
+ # meridian — normalises screenpipe activity into structured app sessions
3
+ # Install the tray app as a launchd agent to start on login
4
+
5
+ set -euo pipefail
6
+ IFS=$'\n\t'
7
+
8
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
9
+ TRAY_BIN="${REPO_ROOT}/tray/src-tauri/target/release/meridian-tray"
10
+ PLIST="${HOME}/Library/LaunchAgents/com.meridiona.tray.plist"
11
+
12
+ if [[ ! -x "${TRAY_BIN}" ]]; then
13
+ echo "✗ meridian-tray binary not found at ${TRAY_BIN}" >&2
14
+ echo " Build it first: cd tray && npm run build" >&2
15
+ exit 1
16
+ fi
17
+
18
+ mkdir -p "$(dirname "${PLIST}")"
19
+
20
+ cat > "${PLIST}" <<'EOF'
21
+ <?xml version="1.0" encoding="UTF-8"?>
22
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
23
+ <plist version="1.0">
24
+ <dict>
25
+ <key>Label</key>
26
+ <string>com.meridiona.tray</string>
27
+ <key>Program</key>
28
+ <string>TRAY_BIN_PLACEHOLDER</string>
29
+ <key>RunAtLoad</key>
30
+ <true/>
31
+ <key>KeepAlive</key>
32
+ <true/>
33
+ <key>StandardOutPath</key>
34
+ <string>LOGS_PLACEHOLDER/tray.log</string>
35
+ <key>StandardErrorPath</key>
36
+ <string>LOGS_PLACEHOLDER/tray.log</string>
37
+ </dict>
38
+ </plist>
39
+ EOF
40
+
41
+ # Replace placeholders
42
+ sed -i '' "s|TRAY_BIN_PLACEHOLDER|${TRAY_BIN}|g" "${PLIST}"
43
+ sed -i '' "s|LOGS_PLACEHOLDER|${HOME}/.meridian/logs|g" "${PLIST}"
44
+
45
+ mkdir -p "${HOME}/.meridian/logs"
46
+ chmod 644 "${PLIST}"
47
+
48
+ launchctl load "${PLIST}" 2>/dev/null || launchctl load -F "${PLIST}"
49
+
50
+ echo "✓ Tray app registered as com.meridiona.tray — will start on next login"
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env bash
2
+ # meridian — normalises screenpipe activity into structured app sessions
3
+ # Remove the Meridian Tray launchd agent.
4
+ set -euo pipefail
5
+
6
+ LABEL="com.meridiona.tray"
7
+ PLIST="${HOME}/Library/LaunchAgents/${LABEL}.plist"
8
+ GUI_TARGET="gui/$(id -u)"
9
+
10
+ echo "→ stopping and unloading ${LABEL}"
11
+ launchctl bootout "${GUI_TARGET}/${LABEL}" 2>/dev/null || true
12
+
13
+ if [[ -f "${PLIST}" ]]; then
14
+ rm -f "${PLIST}"
15
+ echo "✓ ${PLIST} removed"
16
+ fi
17
+
18
+ echo "✓ tray agent uninstalled"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meridian-agents"
7
- version = "1.29.0"
7
+ version = "1.30.0"
8
8
  description = "Meridian agents — hermes task linking and Jira progress updates for meridian.db"
9
9
  requires-python = ">=3.11"
10
10
  authors = [{ name = "Meridiona" }]
package/ui.tar.gz CHANGED
Binary file