Next Article Repeats

Sporadically I’ve noticed that pressing next article gets into a loop where it repeats the same articles over and over.
I’m reading from a category with a dozen or so feeds in it. When I opened the category, there were about 150 articles unread and as I move through articles (using a combination of down and ctrl-down) the unread count drops. At some point I notice the unread count stops dropping (at 112 for this instance) and I start seeing the same articles repeat. I counted and the loop is 30 articles long. I can break the loop by clicking on the category again but otherwise it seems to be “permanently” in the loop. The loop is made up of articles from several different feeds in the category.
I watch the scroll bar and it seems to get about half way down the window and then jumps up to the top of the window. I can scroll past the bottom of the “loop” and I see it load more articles into the window but clicking down puts me back up in the loop. (I don’t allow scrolling to mark articles “read”.)
I’ve seen this several times but I don’t know how to get it to happen every time.
I thought I saw some comments go by in the forum about some changes in the area of article movement so I thought I would mention my observations in the hope that a fix might be possible or I can help with more observations the next time it happens.

If it helps, I’m using an Ubuntu/Apache/Postgres server with a Windows/Chrome client. I was current on the repo as of last night. (I’ve seen this for maybe a few weeks. Its hard to say because some feeds repeat articles and at first I just attributed it to that.)

30 articles is one page, likely something happens that causes next offset to be calculated incorrectly which is why this happens

next time try reading with chrome console open, maybe there will be something relevant there (i.e. if you see next page requested with the same offset over and over)

e: this probably doesn’t happen if you scroll with mouse wheel doesn’t it

Datum point: I’ve noticed this occasionally myself, but didn’t think too much of it - refreshing by reselecting from the tree on the left cleared it.

Will keep an eye out for it…

(Though one loop I remember was about 3 articles long in the middle of read/unread, and trying to select the next unread article didn’t actually do anything.)

It seems to happen to me when new articles pop in.

I’ll explore the idea that it happens when articles get added to the category. (haven’t seen another one yet)
One thing I have noticed is that ctrl-down will “stall” with plenty of articles in the list. Clicking just the down key will over come the stall. I grab the stuff from the console. You can see 3 next_article_noscroll’s with next being false followed by the next_article where it breaks us loose. I see this fairly often.

keyeventToAction ^(40) => next_article_noscroll
Headlines.js?1545261964:800 cur: 2989458 next: false
AppBase.js?1545261964:112 keyeventToAction ^(40) => next_article_noscroll
Headlines.js?1545261964:800 cur: 2989458 next: false
AppBase.js?1545261964:112 keyeventToAction ^(40) => next_article_noscroll
Headlines.js?1545261964:800 cur: 2989458 next: false
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989458 next: false
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989458 next: false
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989458 next: false
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989458 next: false
Headlines.js?1545261964:219 loadMore, offset= 0
common.js?1544572870:20 xhrPost: {op: “feeds”, method: “view”, feed: “13”, view_mode: “adaptive”, order_by: “date_reverse”, …}
AppBase.js?1545261964:258 RI: max_feed_id => 176
AppBase.js?1545261964:258 RI: num_feeds => 83
AppBase.js?1545261964:258 RI: cdm_expanded => true
AppBase.js?1545261964:258 RI: labels => []
Headlines.js?1545261964:535 Headlines.onLoaded: offset= 0 append= true
Headlines.js?1545261964:552 received 30 headlines, infscroll disabled= false
Article.js?1545261964:170 unpacking: RROW-2989457
Article.js?1545261964:170 unpacking: RROW-2989456
common.js?1544572870:20 xhrPost: {op: “rpc”, method: “getAllCounters”, seq: 2028}
AppBase.js?1545261964:258 RI: max_feed_id => 176
AppBase.js?1545261964:258 RI: num_feeds => 83
AppBase.js?1545261964:258 RI: cdm_expanded => true
AppBase.js?1545261964:258 RI: labels => []

(These are really minor issues.)

this at least needs duplicate protection reimplemented so that the loop won’t happen
i’ll take a look at this during new year holidays

I got another, 30 article, repeating loop while using the down-arrow. I had over 1400 articles in the category when I got it. It may have been precipitated by new articles arriving since I haven’t selected the category for a while. Here’s the console during the loop. I may try again but make sure update doesn’t run after I start. (I could disable that for a bit. I have 1400 articles to keep me busy! :slight_smile: )

AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989658 next: 2989659
Article.js?1545261964:292 setActive 2989659
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989659 next: 2989657
Article.js?1545261964:292 setActive 2989657
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989657 next: 2989664
Article.js?1545261964:292 setActive 2989664
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989664 next: 2989667
Article.js?1545261964:292 setActive 2989667
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989667 next: 2989663
Article.js?1545261964:292 setActive 2989663
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989663 next: 2989686
Article.js?1545261964:292 setActive 2989686
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989686 next: 2989666
Article.js?1545261964:292 setActive 2989666
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989666 next: 2989682
Article.js?1545261964:292 setActive 2989682
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989682 next: 2989669
Article.js?1545261964:292 setActive 2989669
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989669 next: 2989684
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989669 next: 2989684
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989669 next: 2989684
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989669 next: 2989684
Article.js?1545261964:292 setActive 2989684
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989684 next: 2989662
Article.js?1545261964:292 setActive 2989662
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989662 next: 2989668
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989662 next: 2989668
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989662 next: 2989668
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989662 next: 2989668
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989662 next: 2989668
Article.js?1545261964:292 setActive 2989668
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989668 next: 2989660
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989668 next: 2989660
Article.js?1545261964:292 setActive 2989660
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989660 next: 2989661
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989660 next: 2989661
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989660 next: 2989661
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989660 next: 2989661
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989660 next: 2989661
Article.js?1545261964:292 setActive 2989661
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989661 next: 2989665
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989661 next: 2989665
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989661 next: 2989665
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989661 next: 2989665
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989661 next: 2989665
Article.js?1545261964:292 setActive 2989665
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989665 next: 2989685
Article.js?1545261964:292 setActive 2989685
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989685 next: 2989683
Article.js?1545261964:292 setActive 2989683
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989683 next: 2989697
Article.js?1545261964:292 setActive 2989697
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989697 next: 2989701
Article.js?1545261964:292 setActive 2989701
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989701 next: 2989700
Article.js?1545261964:292 setActive 2989700
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989700 next: 2989699
Article.js?1545261964:292 setActive 2989699
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989699 next: 2989698
Article.js?1545261964:292 setActive 2989698
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989698 next: 2989710
Article.js?1545261964:292 setActive 2989710
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989710 next: 2989720
Article.js?1545261964:292 setActive 2989720
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989720 next: 2989721
Article.js?1545261964:292 setActive 2989721
common.js?1544572870:20 xhrPost: {op: “rpc”, method: “getAllCounters”, seq: 621}
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989721 next: 2989584
Article.js?1545261964:292 setActive 2989584
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989584 next: 2989611
Article.js?1545261964:292 setActive 2989611
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989611 next: 2989636
Article.js?1545261964:292 setActive 2989636
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989636 next: 2989656
Article.js?1545261964:292 setActive 2989656
AppBase.js?1545261964:112 keyeventToAction (40) => next_article
Headlines.js?1545261964:800 cur: 2989656 next: 2989658
Article.js?1545261964:292 setActive 2989658

Article updates on the server aren’t required for the loop to occur. I disabled the cron on my server and then started reading articles. (Actually in a different category, doubtful that it depends on category) and was able to get the 30 article repeat. What else can I do to help?

I’m seeing the same thing happening, I do updates on a 15 minute basis for some things, and this happens more often than every 15 minutes.

I don’t have any insight other than “it’s happening here”, (while skipping to next articles with keyboard shortcuts).

postgres/nginx back end.

a proper fix for this will have to wait a bit but i’ve added duplicate checking back so there shouldn’t be any more loops

https://git.tt-rss.org/fox/tt-rss/commit/c66db9bde8996dd9dc862bee9220e71015609b9c

it’s probably some stupid race condition between mutation observer reacting to articles being marked as read and new page being requested in the background (page offset may depend on the amount of unread articles)

Sorry to say that but this commit breaks continuous scrolling: reverted it and works fine again. Tested on Edge and Chrome (current versions).

right. should be fixed now, thanks for reporting.

https://git.tt-rss.org/fox/tt-rss/commit/f44c6d01b005731ee004e26e857eaaed5b9db0de

Thanks for the fix: but something is still not right. It’s not that obvious anymore…
InfScroll gets sometimes disabled when switching through Feeds with ie. 200+ and 10 articles: once its disabled, it doesn’t come back on again (so it seems).

like i said above, it’s not a proper fix but a workaround to prevent loops.

if infinite scrolling is not disabled the loop would be invisible but still might happen (i.e. same offset requested repeatedly causing load on your server)

e: btw, if you set view mode to all articles, so that page offset does not depend on number of unread articles in buffer, does it still happen?

unfortunately the issue is still present if “all articles” are shown. Reproducable ie. if you select “Fresh” with 20 articles and then switch to another Feed.

no, that shouldn’t happen with current trunk. infinite scroll is enabled on first page if full page has been loaded, it doesn’t depend on previous feed contents. post (f12) logs, etc.

ok: here you go. Current trunk, All Articles shown, switching around between feeds, incl “Fresh” with 5 unread and then infscrolling was disabled again, altough all articles should be shown.

common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:310 sanity check ok
AppBase.js?1546506633:315 reading init-params...
AppBase.js?1546506633:345 IP: on_catchup_show_next_feed => 0
AppBase.js?1546506633:345 IP: hide_read_feeds => 0
AppBase.js?1546506633:345 IP: enable_feed_cats => 1
AppBase.js?1546506633:345 IP: feeds_sort_by_unread => 0
AppBase.js?1546506633:345 IP: confirm_feed_catchup => 0
AppBase.js?1546506633:345 IP: cdm_auto_catchup => 0
AppBase.js?1546506633:345 IP: fresh_article_max_age => 24
AppBase.js?1546506633:345 IP: hide_read_shows_special => 1
AppBase.js?1546506633:345 IP: combined_display_mode => 1
AppBase.js?1546506633:345 IP: check_for_updates => true
AppBase.js?1546506633:345 IP: icons_url => feed-icons
AppBase.js?1546506633:345 IP: cookie_lifetime => 86400
AppBase.js?1546506633:345 IP: default_view_mode => all_articles
AppBase.js?1546506633:345 IP: default_view_limit => 30
AppBase.js?1546506633:345 IP: default_view_order_by => feed_dates
AppBase.js?1546506633:345 IP: bw_limit => 0
AppBase.js?1546506633:345 IP: is_default_pw => false
AppBase.js?1546506633:345 IP: label_base_index => -1024
AppBase.js?1546506633:345 IP: theme => 
AppBase.js?1546506633:345 IP: plugins => Auth_Internal, Note, Af_RedditImgur, Af_Tumblr_1280, Af_Unburn, Af_Youtube_Embed
AppBase.js?1546506633:345 IP: php_platform => Linux
AppBase.js?1546506633:345 IP: php_version => 7.0.33-0+deb9u1
AppBase.js?1546506633:345 IP: sanity_checksum => f287f62e43411cc6866ee3bf6a0f80b057fa12aa
AppBase.js?1546506633:345 IP: max_feed_id => 114
AppBase.js?1546506633:345 IP: num_feeds => 96
AppBase.js?1546506633:345 IP: hotkeys => Array(2)
AppBase.js?1546506633:345 IP: csrf_token => imbz225c2dc9237e8ad
AppBase.js?1546506633:345 IP: widescreen => 0
AppBase.js?1546506633:345 IP: simple_update => false
AppBase.js?1546506633:345 IP: icon_indicator_white => data:image/gif;base64,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
AppBase.js?1546506633:345 IP: labels => Array(6)
Article.js?1546506633:292 setActive 0
Article.js?1546506633:292 setActive 0
common.js?1544527637:20 xhrPost: Object
tt-rss.js?1544978498:172 second stage ok
Feeds.js?1546506633:98 reloadCurrent: 
common.js?1544527637:189 notify Loading, please wait... 3
msg @ common.js?1544527637:189
Feeds.js?1546506633:98 reloadCurrent: 
common.js?1544527637:189 notify Loading, please wait... 3
msg @ common.js?1544527637:189
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 0 append= false
Headlines.js?1546506633:552 received 3 headlines, infscroll disabled= true
Article.js?1546506633:292 setActive 0
Feeds.js?1546506633:194 in feedlist init
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 0 append= false
Headlines.js?1546506633:552 received 3 headlines, infscroll disabled= true
Article.js?1546506633:292 setActive 0
common.js?1544527637:20 xhrPost: Object
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
AppBase.js?1546506633:258 RI: daemon_stamp_ok => 1
AppBase.js?1546506633:258 RI: daemon_stamp => 2019.01.03, 9:10
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 0 append= false
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Article.js?1546506633:292 setActive 0
Headlines.js?1546506633:219 loadMore, offset= 30
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure image '<URL>'. This content should also be served over HTTPS.
common.js?1544527637:20 xhrPost: Object
b3aa2519-lights-artistic.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
kaley.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
Mitt-Romney.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
ContentBroker_contentid-77b083d7e8344adc85d6d3b476a0e49c.png:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
reddish-snowman.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
AP19002712737237.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 30 append= true
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Headlines.js?1546506633:645 appended 30 headlines, infscroll_disabled= false
ContentBroker_contentid-ede53206e2884534911ef39b4c1bb9b5.png:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
Homeless-Fraud.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
3952c9aa-Capture.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
sheriffs-office.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
ContentBroker_contentid-8788f5cbf2a54d868c311af468ad71b4.jpeg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
Capture.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
Headlines.js?1546506633:219 loadMore, offset= 60
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 60 append= true
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Headlines.js?1546506633:645 appended 30 headlines, infscroll_disabled= false
TB1.jpeg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
Light-staton.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
gpd1.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
920x920.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
china-moon-thumb.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
CHP-Patrol.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
Elizabeth-Warren-R4EUTERS.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
694940094001_5985480651001_5985478229001-vs.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
694940094001_5981464779001_5981462280001-vs.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
lindsey-graham-APthumb.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
Tom-Garrett-Getty.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
McConnell-Schumer-AP.jpg:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
MY_TAKE_VARNEY_ENDFRAME.png:1 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 0 append= false
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Article.js?1546506633:292 setActive 0
Headlines.js?1546506633:219 loadMore, offset= 30
common.js?1544527637:20 xhrPost: Object
Headlines.js?1546506633:219 loadMore, offset= 30
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 30 append= true
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Headlines.js?1546506633:645 appended 30 headlines, infscroll_disabled= false
Headlines.js?1546506633:219 loadMore, offset= 60
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 60 append= true
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Headlines.js?1546506633:645 appended 30 headlines, infscroll_disabled= false
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 0 append= false
Headlines.js?1546506633:552 received 3 headlines, infscroll disabled= true
Article.js?1546506633:292 setActive 0
common.js?1544527637:20 xhrPost: Object
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 0 append= false
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Article.js?1546506633:292 setActive 0
Headlines.js?1546506633:219 loadMore, offset= 30
common.js?1544527637:20 xhrPost: Object
Headlines.js?1546506633:219 loadMore, offset= 30
AppBase.js?1546506633:258 RI: max_feed_id => 114
AppBase.js?1546506633:258 RI: num_feeds => 96
AppBase.js?1546506633:258 RI: cdm_expanded => false
AppBase.js?1546506633:258 RI: labels => Array(6)
AppBase.js?1546506633:258 RI: recent_log_events => 0
AppBase.js?1546506633:258 RI: daemon_is_running => 1
Headlines.js?1546506633:535 Headlines.onLoaded: offset= 30 append= true
Headlines.js?1546506633:552 received 30 headlines, infscroll disabled= false
Headlines.js?1546506633:645 appended 0 headlines, infscroll_disabled= true
AppBase.js?1546506633:112 keyeventToAction (123) => false

ah okay i think i get it now, although i’m not sure why this was disabled in the first place :thinking:

https://git.tt-rss.org/fox/tt-rss/commit/c607b7836e467cbf7e8e4d968f520de8f8ac4237

Nice! This seems to have fixed my initial problem too! Works now also with adaptive view.

Hi all.

Recently updated to 18.12 (986ca25) to resolve this issue (thanks BTW) but now the feed count doesn’t change as I read each article like it used to. It takes about 15 seconds of no activity for it to change or for the feed to refresh. Confirmed issue on Chrome and Firefox, cleared cache.

Anyone else seeing this?

Cheers,
Shannon