@meridiona/meridian-darwin-arm64 1.50.1 → 1.52.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/.env.example CHANGED
@@ -188,8 +188,9 @@
188
188
  # structured log ingestion into a local OpenObserve instance)
189
189
  # ---------------------------------------------------------------------------
190
190
 
191
- # base64(email:password) for your local OpenObserve instance.
192
- # When unset, OTLP export is silently skipped logs still go to .jsonl files.
191
+ # DEPRECATED the Rust daemon ignores this; set OpenObserve credentials in
192
+ # the dashboard Settings instead (stored in settings.json). Still read by the
193
+ # Python services' exporter and as an installer fallback for old setups.
193
194
  # Generate: echo -n "you@your-org.com:yourpassword" | base64
194
195
  # MERIDIAN_OO_AUTH=base64encodedcredentials
195
196
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.50.1
1
+ 1.52.0
package/bin/meridian CHANGED
Binary file
package/bin/meridian-tray CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridiona/meridian-darwin-arm64",
3
- "version": "1.50.1",
3
+ "version": "1.52.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": {
@@ -43,14 +43,14 @@
43
43
  <string>{{HOME}}/.meridian/meridian.db</string>
44
44
  <key>POLL_INTERVAL_SECS</key>
45
45
  <string>60</string>
46
- <key>RUST_LOG</key>
47
- <string>meridian=info</string>
48
- <!-- OTLP auth for OpenObserve must be set here (not just .env)
49
- because the Rust binary reads env vars before dotenv is loaded.
50
- The install script reads MERIDIAN_OO_AUTH from the repo-root .env and
51
- substitutes the {{MERIDIAN_OO_AUTH}} placeholder below. -->
52
- <key>MERIDIAN_OO_AUTH</key>
53
- <string>{{MERIDIAN_OO_AUTH}}</string>
46
+ <!-- RUST_LOG is intentionally NOT set here. The daemon derives its log
47
+ filter from settings.log_level (dashboard Settings → Log Level) and
48
+ hot-reloads it on the next poll tick; pinning RUST_LOG would make
49
+ reload_log_level() a no-op and silently defeat the UI control. A
50
+ power user can still export RUST_LOG to override. -->
51
+ <!-- MERIDIAN_OO_AUTH is deprecated and ignored by the daemon OpenObserve
52
+ credentials come from settings.json (dashboard Settings). The key is
53
+ left out of this plist on purpose. -->
54
54
  <key>MERIDIAN_OTLP_ENDPOINT</key>
55
55
  <string>{{MERIDIAN_OTLP_ENDPOINT}}</string>
56
56
  </dict>
@@ -816,7 +816,7 @@ case "$CMD" in
816
816
  uninstall) cmd_uninstall ;;
817
817
  permissions) cmd_permissions ;;
818
818
  version|--version|-v) cat "${REPO_ROOT}/VERSION" 2>/dev/null || echo "unknown" ;;
819
- worklog-status|pm-worklog|coding-agent-hook|coding-agent-summarise|coding-agent-classify|coding-agent-install-skill|oauth-login|tasks-sync) cmd_daemon_passthrough "$CMD" "$@" ;;
819
+ worklog-status|pm-worklog|coding-agent-hook|coding-agent-summarise|coding-agent-classify|coding-agent-install-skill|oauth-login|tasks-sync|ticket-update|ticket-parents) cmd_daemon_passthrough "$CMD" "$@" ;;
820
820
  --help|-h|help|"") cmd_help ;;
821
821
  *) err "unknown command: ${CMD}"; echo; cmd_help; exit 1 ;;
822
822
  esac
@@ -484,18 +484,34 @@ def _fetch_recent_sessions(
484
484
 
485
485
 
486
486
  def _fetch_pm_tasks(con: _sqlite3.Connection) -> list[dict[str, Any]]:
487
- rows = con.execute(
488
- "SELECT task_key, title,"
489
- " COALESCE(description_text,'') AS description_text,"
490
- " COALESCE(status_raw,'') AS status_raw,"
491
- " COALESCE(is_terminal,0) AS is_terminal,"
492
- " COALESCE(issue_type,'') AS issue_type,"
493
- " COALESCE(parent_key,'') AS parent_key,"
494
- " COALESCE(epic_title,'') AS epic_title,"
495
- " COALESCE(sprint_name,'') AS sprint_name,"
496
- " COALESCE(tags,'') AS tags"
497
- " FROM pm_tasks",
498
- ).fetchall()
487
+ # Candidate set for classification. Tickets the user explicitly EXCLUDED during
488
+ # onboarding board-cleanup (pm_task_curation.decision = 'excluded') are dropped
489
+ # so a cleaned-up dead ticket can never be a classification target. Everything
490
+ # else flows through, including not-yet-decided `looks_stale` rows — the triage
491
+ # only *proposes*; nothing is removed without the human's confirmed decision.
492
+ # LEFT JOIN keeps this safe if curation has no row for a ticket yet.
493
+ base_cols = (
494
+ "SELECT t.task_key, t.title,"
495
+ " COALESCE(t.description_text,'') AS description_text,"
496
+ " COALESCE(t.status_raw,'') AS status_raw,"
497
+ " COALESCE(t.is_terminal,0) AS is_terminal,"
498
+ " COALESCE(t.issue_type,'') AS issue_type,"
499
+ " COALESCE(t.parent_key,'') AS parent_key,"
500
+ " COALESCE(t.epic_title,'') AS epic_title,"
501
+ " COALESCE(t.sprint_name,'') AS sprint_name,"
502
+ " COALESCE(t.tags,'') AS tags"
503
+ " FROM pm_tasks t"
504
+ )
505
+ try:
506
+ rows = con.execute(
507
+ base_cols
508
+ + " LEFT JOIN pm_task_curation c ON c.task_key = t.task_key"
509
+ " WHERE c.decision IS NULL OR c.decision != 'excluded'",
510
+ ).fetchall()
511
+ except _sqlite3.OperationalError:
512
+ # Pre-migration-038 DB (no pm_task_curation): degrade to the unfiltered
513
+ # candidate set rather than crashing the whole /classify_sessions call.
514
+ rows = con.execute(base_cols).fetchall()
499
515
  return [dict(r) for r in rows]
500
516
 
501
517
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meridian-agents"
7
- version = "1.50.1"
7
+ version = "1.52.0"
8
8
  description = "Meridian agents — MLX classifier server and Jira worklog synthesis for meridian.db"
9
9
  requires-python = ">=3.11"
10
10
  authors = [{ name = "Meridiona" }]
package/ui.tar.gz CHANGED
Binary file