heathrow 0.7.8 → 0.8.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.
@@ -62,7 +62,7 @@ module Heathrow
62
62
  loop do
63
63
  # Render list with arrow marker
64
64
  lines = []
65
- lines << "ADD SOURCE".b.fg(226)
65
+ lines << "ADD SOURCE".bd.fg(226)
66
66
  lines << ""
67
67
 
68
68
  keys.each_with_index do |key, i|
@@ -72,7 +72,7 @@ module Heathrow
72
72
  desc_line = " #{info[:description]}"
73
73
 
74
74
  if i == selected
75
- lines << name_line.b.fg(39)
75
+ lines << name_line.bd.fg(39)
76
76
  lines << desc_line.fg(245)
77
77
  else
78
78
  lines << name_line.fg(250)
@@ -111,7 +111,7 @@ module Heathrow
111
111
 
112
112
  @panes[:right].clear
113
113
  @panes[:right].text = [
114
- "WEB PAGE MONITOR SETUP".b.fg(226),
114
+ "WEB PAGE MONITOR SETUP".bd.fg(226),
115
115
  "",
116
116
  "Add pages to monitor for changes.",
117
117
  "Each page is checked on refresh (C-R).",
@@ -165,7 +165,7 @@ module Heathrow
165
165
 
166
166
  @panes[:right].clear
167
167
  @panes[:right].text = [
168
- "RSS/ATOM FEED SETUP".b.fg(226),
168
+ "RSS/ATOM FEED SETUP".bd.fg(226),
169
169
  "",
170
170
  "Add feeds one at a time.",
171
171
  "Leave URL empty when done.",
@@ -214,17 +214,17 @@ module Heathrow
214
214
  [
215
215
  "This connects to Messenger using your browser session.",
216
216
  "",
217
- "HOW IT WORKS:".b.fg(39),
217
+ "HOW IT WORKS:".bd.fg(39),
218
218
  " Heathrow reads your Firefox cookies to authenticate",
219
219
  " with messenger.com — no password needed, no extra app.",
220
220
  "",
221
- "IMPORTANT:".b.fg(196),
221
+ "IMPORTANT:".bd.fg(196),
222
222
  " - Cookies expire when you log out of Facebook",
223
223
  " - Sessions typically last 30-90 days",
224
224
  " - If messages stop appearing, refresh cookies",
225
225
  " - To refresh: press S → select Messenger → e → r",
226
226
  "",
227
- "PRIVACY:".b.fg(226),
227
+ "PRIVACY:".bd.fg(226),
228
228
  " Cookies are stored locally in ~/.heathrow/cookies/",
229
229
  " with restricted permissions (owner-only read/write).",
230
230
  " They never leave your machine.",
@@ -243,17 +243,17 @@ module Heathrow
243
243
  [
244
244
  "This connects to Instagram DMs using your browser session.",
245
245
  "",
246
- "HOW IT WORKS:".b.fg(39),
246
+ "HOW IT WORKS:".bd.fg(39),
247
247
  " Heathrow reads your Firefox cookies to authenticate",
248
248
  " with instagram.com — no password needed, no extra app.",
249
249
  "",
250
- "IMPORTANT:".b.fg(196),
250
+ "IMPORTANT:".bd.fg(196),
251
251
  " - Cookies expire when you log out of Instagram",
252
252
  " - Sessions typically last 30-90 days",
253
253
  " - If messages stop appearing, refresh cookies",
254
254
  " - Two-factor auth stays active — this is read-only",
255
255
  "",
256
- "PRIVACY:".b.fg(226),
256
+ "PRIVACY:".bd.fg(226),
257
257
  " Cookies are stored locally in ~/.heathrow/cookies/",
258
258
  " with restricted permissions (owner-only read/write).",
259
259
  ]
@@ -264,13 +264,13 @@ module Heathrow
264
264
  def configure_weechat
265
265
  @panes[:right].clear
266
266
  @panes[:right].text = [
267
- "WEECHAT RELAY SETUP".b.fg(226),
267
+ "WEECHAT RELAY SETUP".bd.fg(226),
268
268
  "",
269
269
  "Connect to a running WeeChat instance via",
270
270
  "its relay protocol to read IRC, Slack, and",
271
271
  "other chat buffers.",
272
272
  "",
273
- "PREREQUISITES:".b.fg(39),
273
+ "PREREQUISITES:".bd.fg(39),
274
274
  " WeeChat must have a relay enabled:",
275
275
  " /relay add weechat 8001",
276
276
  " /set relay.network.password \"yourpassword\"",
@@ -278,7 +278,7 @@ module Heathrow
278
278
  "For remote servers, use an SSH tunnel:",
279
279
  " ssh -L 8001:localhost:8001 user@host",
280
280
  "",
281
- "BUFFER FILTER:".b.fg(39),
281
+ "BUFFER FILTER:".bd.fg(39),
282
282
  " Comma-separated glob patterns to select",
283
283
  " which buffers to import:",
284
284
  " irc.* - all IRC",
@@ -343,7 +343,7 @@ module Heathrow
343
343
  def configure_meta_source(title, source_type, domain, required_cookies, optional_cookies, help_lines)
344
344
  @panes[:right].clear
345
345
  @panes[:right].text = ([
346
- "#{title} SETUP".b.fg(226),
346
+ "#{title} SETUP".bd.fg(226),
347
347
  "",
348
348
  ] + help_lines).join("\n")
349
349
  @panes[:right].refresh
@@ -373,11 +373,11 @@ module Heathrow
373
373
  # Not found — ask user to log in and retry
374
374
  @panes[:right].clear
375
375
  @panes[:right].text = ([
376
- "#{title} SETUP".b.fg(226),
376
+ "#{title} SETUP".bd.fg(226),
377
377
  "",
378
378
  ] + help_lines + [
379
379
  "",
380
- "NEXT STEP:".b.fg(39),
380
+ "NEXT STEP:".bd.fg(39),
381
381
  " 1. Open #{domain} in Firefox and log in",
382
382
  " 2. Come back here and press Enter to retry",
383
383
  "",
@@ -414,13 +414,13 @@ module Heathrow
414
414
  config = {}
415
415
 
416
416
  form_text = []
417
- form_text << "CONFIGURE #{source_info[:name].upcase}".b.fg(226)
417
+ form_text << "CONFIGURE #{source_info[:name].upcase}".bd.fg(226)
418
418
  form_text << ""
419
419
  form_text << source_info[:description]
420
420
  form_text << ""
421
421
 
422
422
  source_info[:fields].each do |field|
423
- form_text << "#{field[:label]}:".b.fg(39)
423
+ form_text << "#{field[:label]}:".bd.fg(39)
424
424
  form_text << " #{field[:help]}".fg(240) if field[:help]
425
425
 
426
426
  @panes[:right].clear
@@ -413,7 +413,7 @@ module Heathrow
413
413
  end
414
414
 
415
415
  @panes[:left].text = new_text
416
- @panes[:left].refresh
416
+ @panes[:left].full_refresh
417
417
  end
418
418
 
419
419
  # Get date range string for a section's messages
@@ -458,9 +458,9 @@ module Heathrow
458
458
  name_part = "#{display_name}#{unread}"
459
459
 
460
460
  if selected
461
- prefix.b.fg(color) + name_part.u.b.fg(color) + date_suffix.fg(245)
461
+ prefix.bd.fg(color) + name_part.ul.bd.fg(color) + date_suffix.fg(245)
462
462
  elsif section[:unread_count].to_i > 0
463
- prefix.b.fg(color) + name_part.b.fg(color) + date_suffix.fg(245)
463
+ prefix.bd.fg(color) + name_part.bd.fg(color) + date_suffix.fg(245)
464
464
  else
465
465
  (prefix + name_part).fg(color) + date_suffix.fg(245)
466
466
  end
@@ -715,7 +715,7 @@ module Heathrow
715
715
  content = prefix_text + subject_text
716
716
  if @delete_marked&.include?(msg['id'])
717
717
  if selected
718
- flags + content.u.fg(88) + padding
718
+ flags + content.ul.fg(88) + padding
719
719
  else
720
720
  flags + content.fg(88) + padding
721
721
  end
@@ -723,7 +723,7 @@ module Heathrow
723
723
  if selected
724
724
  lead = content[/\A */]
725
725
  rest = content[lead.length..]
726
- flags + lead.b.fg(tag_color) + rest.u.b.fg(tag_color) + padding
726
+ flags + lead.bd.fg(tag_color) + rest.ul.bd.fg(tag_color) + padding
727
727
  else
728
728
  flags + content.fg(tag_color) + padding
729
729
  end
@@ -731,16 +731,16 @@ module Heathrow
731
731
  if selected
732
732
  lead = content[/\A */]
733
733
  rest = content[lead.length..]
734
- flags + lead.b.fg(star_color) + rest.u.b.fg(star_color) + padding
734
+ flags + lead.bd.fg(star_color) + rest.ul.bd.fg(star_color) + padding
735
735
  else
736
736
  flags + content.fg(star_color) + padding
737
737
  end
738
738
  elsif selected
739
739
  lead = content[/\A */]
740
740
  rest = content[lead.length..]
741
- flags + lead.b.fg(color) + rest.u.b.fg(color) + padding
741
+ flags + lead.bd.fg(color) + rest.ul.bd.fg(color) + padding
742
742
  elsif msg['is_read'].to_i == 0
743
- flags + content.b.fg(color) + padding
743
+ flags + content.bd.fg(color) + padding
744
744
  else
745
745
  flags + content.fg(color) + padding
746
746
  end
@@ -1,3 +1,3 @@
1
1
  module Heathrow
2
- VERSION = '0.7.8'
2
+ VERSION = '0.8.0'
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.8
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-03-25 00:00:00.000000000 Z
12
+ date: 2026-04-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rcurses
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '5.0'
20
+ version: '7.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '5.0'
27
+ version: '7.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: sqlite3
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -100,6 +100,7 @@ files:
100
100
  - lib/heathrow/sources/messenger.rb
101
101
  - lib/heathrow/sources/messenger_fetch.js
102
102
  - lib/heathrow/sources/messenger_fetch_marionette.py
103
+ - lib/heathrow/sources/messenger_fetch_thread.py
103
104
  - lib/heathrow/sources/messenger_send.js
104
105
  - lib/heathrow/sources/messenger_send.py
105
106
  - lib/heathrow/sources/reddit.rb