localvault 1.5.0 → 1.5.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c3bc70e3ad51b1b7ddebc905fac13e29e3a9c817e4da80e6bf137ab0ae5a0d3
4
- data.tar.gz: 1db6e6edb29546b72ae8105f1e811e655bae036f37af5a1c3a7a362189c0e089
3
+ metadata.gz: 62e1f820da0ed430364d0acaf708a3818ccffdaff8c19ec15cc6de6893abc6d9
4
+ data.tar.gz: 12d59fefb6f347d2992557e411120813ec00496afb9a05e0b3336e840420562b
5
5
  SHA512:
6
- metadata.gz: c10706f2b8bb9e7471ff4cb6e03dc59fe26e6ea87d64c4438e3183a4917b03989e862b5ee76639f108e6e7ae445f29c3246b97a7cacdfa90517a369a2b613b5a
7
- data.tar.gz: 9ebdb6b7c4918335e938508b8e48e3a0d7874b6d7eec6320aa2f1178643c77440d9987779836b5ca48018b0531772120d0283e1e1106764c8387a2a8f23d0041
6
+ metadata.gz: 9c9c1bcee26c3d3b86b57a9a3607837ca11642412d7e10422ce301aedc639e73ac4273ff79490d7110da4f7b9b7daf1f9901bbce2fcf6228fb8a6a278a1e289d
7
+ data.tar.gz: cbe652d3dbdf1e69e986a7214ae35d2848c14a0d35f55c17bb6586d322f4fea5998096a80f4e0d4bfd90845ceb47166571ba48476aa32f2dc05e0f3603a19cd6
@@ -1011,6 +1011,7 @@ module LocalVault
1011
1011
  end
1012
1012
 
1013
1013
  vaults = list["vaults"] || []
1014
+ local_set = Store.list_vaults.to_set
1014
1015
  owned = []
1015
1016
  shared = []
1016
1017
  skipped = []
@@ -1036,12 +1037,20 @@ module LocalVault
1036
1037
  end
1037
1038
 
1038
1039
  owner = data[:owner] || v["owner_handle"]
1040
+ local_exists = local_set.include?(name)
1041
+ sync_status = local_exists ? "synced" : "remote only"
1042
+ synced_at = v["synced_at"]&.slice(0, 10) || "—"
1043
+ size_label = v["size_bytes"] ? "#{(v["size_bytes"].to_f / 1024).round(1)} KB" : nil
1044
+
1039
1045
  row = {
1040
- name: name,
1041
- owner: owner,
1042
- key_slots: data[:key_slots] || {},
1043
- is_team: !owner.nil?,
1044
- remote_shared: v["shared"] == true
1046
+ name: name,
1047
+ owner: owner,
1048
+ key_slots: data[:key_slots] || {},
1049
+ is_team: !owner.nil?,
1050
+ remote_shared: v["shared"] == true,
1051
+ sync_status: sync_status,
1052
+ synced_at: synced_at,
1053
+ size_label: size_label
1045
1054
  }
1046
1055
 
1047
1056
  if owner && owner == my_handle
@@ -1054,6 +1063,16 @@ module LocalVault
1054
1063
  end
1055
1064
  end
1056
1065
 
1066
+ # Add local-only vaults (exist on disk but not on InventList)
1067
+ remote_names = vaults.map { |v| v["name"] }.compact.to_set
1068
+ (local_set - remote_names).sort.each do |name|
1069
+ owned << {
1070
+ name: name, owner: nil, key_slots: {}, is_team: false,
1071
+ remote_shared: false, sync_status: "local only",
1072
+ synced_at: "—", size_label: nil
1073
+ }
1074
+ end
1075
+
1057
1076
  # ── OWNED BY YOU ──
1058
1077
  $stdout.puts
1059
1078
  $stdout.puts VAULT_STYLE.render("OWNED BY YOU") + " " + COUNT_STYLE.render("(#{owned.size} vault#{owned.size == 1 ? "" : "s"})")
@@ -1397,11 +1416,21 @@ module LocalVault
1397
1416
  valid = slots.select { |_, v| v.is_a?(Hash) && v["pub"].is_a?(String) }
1398
1417
 
1399
1418
  count_label = "#{valid.size} member#{valid.size == 1 ? "" : "s"}"
1400
- owner_label = row[:owner] ? "owner @#{row[:owner]}" : "personal (v1 bundle, no team access)"
1401
- $stdout.puts " " + GROUP_STYLE.render(row[:name]) + " " + COUNT_STYLE.render("#{count_label} · #{owner_label}")
1419
+ owner_label = row[:owner] ? "owner @#{row[:owner]}" : "personal"
1420
+
1421
+ # Sync status badge
1422
+ sync_badge = case row[:sync_status]
1423
+ when "synced" then "synced #{row[:synced_at]}"
1424
+ when "remote only" then "remote only"
1425
+ when "local only" then "local only — not synced"
1426
+ else row[:sync_status] || "unknown"
1427
+ end
1428
+ sync_badge += " · #{row[:size_label]}" if row[:size_label]
1429
+
1430
+ $stdout.puts " " + GROUP_STYLE.render(row[:name]) + " " +
1431
+ COUNT_STYLE.render("#{count_label} · #{owner_label} · #{sync_badge}")
1402
1432
 
1403
1433
  if !row[:is_team]
1404
- # v1 personal bundle — no members to list
1405
1434
  $stdout.puts " " + COUNT_STYLE.render("No team members. Convert with `localvault team init #{row[:name]}` to share.")
1406
1435
  $stdout.puts
1407
1436
  return
@@ -1,3 +1,3 @@
1
1
  module LocalVault
2
- VERSION = "1.5.0"
2
+ VERSION = "1.5.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: localvault
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nauman Tariq