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.
- checksums.yaml +4 -4
- data/heathrow.gemspec +1 -1
- data/lib/heathrow/message_composer.rb +1 -1
- data/lib/heathrow/sources/messenger.rb +87 -5
- data/lib/heathrow/sources/messenger_fetch_marionette.py +2 -2
- data/lib/heathrow/sources/messenger_fetch_thread.py +131 -0
- data/lib/heathrow/ui/application.rb +299 -93
- data/lib/heathrow/ui/source_wizard.rb +18 -18
- data/lib/heathrow/ui/threaded_view.rb +8 -8
- data/lib/heathrow/version.rb +1 -1
- metadata +7 -6
|
@@ -62,7 +62,7 @@ module Heathrow
|
|
|
62
62
|
loop do
|
|
63
63
|
# Render list with arrow marker
|
|
64
64
|
lines = []
|
|
65
|
-
lines << "ADD SOURCE".
|
|
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.
|
|
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".
|
|
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".
|
|
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:".
|
|
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:".
|
|
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:".
|
|
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:".
|
|
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:".
|
|
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:".
|
|
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".
|
|
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:".
|
|
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:".
|
|
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".
|
|
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".
|
|
376
|
+
"#{title} SETUP".bd.fg(226),
|
|
377
377
|
"",
|
|
378
378
|
] + help_lines + [
|
|
379
379
|
"",
|
|
380
|
-
"NEXT STEP:".
|
|
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}".
|
|
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]}:".
|
|
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].
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
741
|
+
flags + lead.bd.fg(color) + rest.ul.bd.fg(color) + padding
|
|
742
742
|
elsif msg['is_read'].to_i == 0
|
|
743
|
-
flags + content.
|
|
743
|
+
flags + content.bd.fg(color) + padding
|
|
744
744
|
else
|
|
745
745
|
flags + content.fg(color) + padding
|
|
746
746
|
end
|
data/lib/heathrow/version.rb
CHANGED
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.
|
|
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-
|
|
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: '
|
|
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: '
|
|
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
|