heathrow 0.7.1 → 0.7.2

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: 9c40dfa3681941910b0e8ac358021003220ee9e88b9861b1c20b735bb0444623
4
- data.tar.gz: f2acadd2ea11c58fa522db1abf94ebdb31a20fd0fc346eac94aefac38a9fe847
3
+ metadata.gz: cbe8be982ab3300b591a24bdba7bb67c9feff58167a7785fb288a4b62d558f46
4
+ data.tar.gz: 513f905dff1e8a9e74b87488a1fa5b007d3a76e26287d7643961ea2b1b0b2268
5
5
  SHA512:
6
- metadata.gz: '084222a43672e22966f1716b62a59d7d5961a5148c8a47f858c08cb3a33d863fb1933c74649792ae4a8945fb0a36bbbb6fcbfbe46bdb1e9ed045874708530f95'
7
- data.tar.gz: 31b2b552ea905f4cdb463f347cc7855d7f6d7b0b9125e4ba903927b20002e9a87b38754a1b2cedf9c519eb37a9692e805dd0ef66b9c25fc85958e0994f214e81
6
+ metadata.gz: 29e42a3922e7dfb70188c3bc03345812ccb1a7a21c992384e1b50938a00418ecb6bdba009ba30d0020960b354f144b0ac1a9cc18910b2c2e775c0137a7f68c61
7
+ data.tar.gz: 3a7a0e541c490c8d783f679d6be4bcab6dabe703041ea2620d95b7756ec74cc53d9bfee851e15f3863685168f8c33f1c1b227ecf5e1aea784681d4b12cfb6f16
@@ -170,9 +170,17 @@ module Heathrow
170
170
  changed_base_ids.each do |base_id|
171
171
  flags = self.class.parse_maildir_flags(disk_files[base_id])
172
172
  db_row = db_index[base_id]
173
- if flags[:seen] != (db_row[:read] == 1) || flags[:flagged] != (db_row[:starred] == 1) || flags[:replied] != (db_row[:replied] == 1)
173
+ # For replied: DB is authoritative. If DB says replied but disk
174
+ # doesn't have R flag, add it to disk rather than clearing DB.
175
+ disk_replied = flags[:replied]
176
+ db_replied = db_row[:replied] == 1
177
+ if db_replied && !disk_replied
178
+ rename_with_flag(disk_files[base_id], 'R', add: true)
179
+ disk_replied = true
180
+ end
181
+ if flags[:seen] != (db_row[:read] == 1) || flags[:flagged] != (db_row[:starred] == 1) || disk_replied != db_replied
174
182
  db.execute("UPDATE messages SET read = ?, starred = ?, replied = ? WHERE id = ?",
175
- flags[:seen] ? 1 : 0, flags[:flagged] ? 1 : 0, flags[:replied] ? 1 : 0, db_row[:id])
183
+ flags[:seen] ? 1 : 0, flags[:flagged] ? 1 : 0, disk_replied ? 1 : 0, db_row[:id])
176
184
  end
177
185
  # Update external_id and metadata if filename changed
178
186
  current_filename = File.basename(disk_files[base_id])
@@ -1979,28 +1979,28 @@ module Heathrow
1979
1979
  end
1980
1980
  else
1981
1981
  # Regular message display
1982
- header << "From: #{msg['sender']}".fg(39) if msg['sender']
1982
+ header << "From: #{msg['sender']}".fg(2) if msg['sender']
1983
1983
  # Show recipients (To field)
1984
1984
  to = msg['recipients'] || msg['recipient']
1985
1985
  if to
1986
1986
  to_list = to.is_a?(String) ? (JSON.parse(to) rescue [to]) : to
1987
1987
  to_str = to_list.is_a?(Array) ? to_list.join(', ') : to_list.to_s
1988
- header << "To: #{to_str}".fg(45) unless to_str.empty?
1988
+ header << "To: #{to_str}".fg(2) unless to_str.empty?
1989
1989
  end
1990
1990
  # Show CC recipients
1991
1991
  cc = msg['cc']
1992
1992
  if cc
1993
1993
  cc_list = cc.is_a?(String) ? (JSON.parse(cc) rescue [cc]) : cc
1994
1994
  cc_str = cc_list.is_a?(Array) ? cc_list.join(', ') : cc_list.to_s
1995
- header << "Cc: #{cc_str}".fg(45) unless cc_str.empty?
1995
+ header << "Cc: #{cc_str}".fg(2) unless cc_str.empty?
1996
1996
  end
1997
1997
  # For weechat, show channel name from metadata instead of content preview
1998
1998
  meta = msg['metadata']
1999
1999
  meta = JSON.parse(meta) if meta.is_a?(String) rescue nil
2000
2000
  if meta.is_a?(Hash) && meta['channel_name']
2001
- header << "Subject: #{meta['channel_name']}".b.fg(226)
2001
+ header << "Subject: #{meta['channel_name']}".b.fg(1)
2002
2002
  elsif msg['subject']
2003
- header << "Subject: #{msg['subject']}".b.fg(226)
2003
+ header << "Subject: #{msg['subject']}".b.fg(1)
2004
2004
  end
2005
2005
  end
2006
2006
 
@@ -5688,14 +5688,14 @@ module Heathrow
5688
5688
  msg += " (#{composed[:attachments].size} attachment(s))"
5689
5689
  end
5690
5690
  set_feedback(msg, 156, 3)
5691
+ render_left_pane if orig_id
5691
5692
  else
5692
5693
  set_feedback(result[:message], 196, 4)
5693
5694
  end
5694
5695
  rescue => e
5695
5696
  set_feedback("Send error: #{e.message}", 196, 4)
5696
- if ENV['DEBUG']
5697
- File.open('/tmp/heathrow_debug.log', 'a') { |f| f.puts "send_composed_message error: #{e.message}\n#{e.backtrace.first(5).join("\n")}" }
5698
- end
5697
+ File.open('/tmp/heathrow_debug.log', 'a') { |f| f.puts "#{Time.now} send_composed_message error: #{e.message}\n#{e.backtrace.first(5).join("\n")}" }
5698
+
5699
5699
  end
5700
5700
  end
5701
5701
  end
@@ -7674,8 +7674,9 @@ Required: URL, optional CSS selector
7674
7674
  def colorize_email_content(content)
7675
7675
  quote_colors = [theme[:quote1] || 114, theme[:quote2] || 180,
7676
7676
  theme[:quote3] || 139, theme[:quote4] || 109]
7677
- sig_color = theme[:sig] || 242
7678
- link_color = theme[:accent] || 33
7677
+ sig_color = theme[:sig] || 5 # magenta (vim PreProc)
7678
+ link_color = theme[:link] || 4 # blue (vim String)
7679
+ email_color = theme[:email] || 5 # magenta (vim Special)
7679
7680
  in_signature = false
7680
7681
 
7681
7682
  content.lines.map do |line|
@@ -1,3 +1,3 @@
1
1
  module Heathrow
2
- VERSION = '0.7.1'
2
+ VERSION = '0.7.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heathrow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-03-17 00:00:00.000000000 Z
12
+ date: 2026-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rcurses