@meridiona/meridian-darwin-arm64 1.28.2 → 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 +1 -1
- package/bin/meridian +0 -0
- package/bin/meridian-tray +0 -0
- package/package.json +1 -1
- package/scripts/com.meridiona.tray.plist +45 -0
- package/scripts/install-from-bundle.sh +20 -0
- package/scripts/install-tray-daemon.sh +50 -0
- package/scripts/uninstall-tray-daemon.sh +18 -0
- package/services/pyproject.toml +1 -1
- package/ui.tar.gz +0 -0
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
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.
|
|
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"
|
package/services/pyproject.toml
CHANGED
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "meridian-agents"
|
|
7
|
-
version = "1.
|
|
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
|