Closed Poggles closed 6 years ago
Hi @Poggles,
If you click the refresh button, the bookmark remains not highlighted? Also, could you please check if there any errors in the console of the popup window?
Hi @olsh No errors in the console. If I refresh, it is still not hightlighted / saved. If i view this through the feedly website then it is not saved.
If I save another item, and un-save it through your extension, it works as expected. It just seems to be this one article.
I am beginning to suspect its an issue with Feedly though, not your app. Looking at the html below, both the working and non-working articles seem to be coming direct form feedly (webpages are not really my thing, so I could be completely wrong here):
<div class="item" data-id="OfvSsX7wGks+9JXbiH5GB60DETuPi49NSWj2ea9sJzY=_16516c24253:3266a7c:4c71e4fe" data-categories="user/4f**SNIP**3f/category/Sport ">
<span class="article-title ">
<a data-link="https://sports.yahoo.com/nhl-chicago-blackhawks-great-stan-mikita-dies-78-years-old-233420221.html?src=rss" class="title">NHL, Chicago Blackhawks great Stan Mikita dies at 78 years old</a>
</span>
<span class="article-menu">
<span class="glyphicon glyphicon-bookmark save-feed" data-saved="true"></span>
<span class="glyphicon glyphicon-eye-open mark-read" title="Mark as read" style="display: none;"></span>
<span class="glyphicon glyphicon-chevron-down show-content" title="More"></span>
</span>
<div class="blog-title ">
<img class="blog-icon" src="https://i.olsh.me/icon?url=https://sports.yahoo.com&size=16..64..300&fallback_icon_url=https://www.google.com/s2/favicons?domain=https://sports.yahoo.com&alt=feed">
<span class="engagement ">278</span>
<a data-link="https://sports.yahoo.com" href="javascript:void(0)">Puck Daddy</a>,
<span class="timeago" datetime="2018-08-07T23:39:14.387Z" data-tid="4">3 months ago</span>
</div>
<div class="content"></div>
</div>
<div class="item" data-id="Z8mnJUhNW6b7muFrGtVCHCQd3a2PdVCm+sjl19UIkj8=_166c510f6b3:2ef11c:4eafa5b" data-categories="user/4f**SNIP**3f/category/Gaming ">
<span class="article-title ">
<a data-link="http://feedproxy.google.com/~r/RockPaperShotgun/~3/PBLVM1i7dY8/" class="title">Dracula’s Revenge: conquering Europa Universalis IV as Romania</a>
</span>
<span class="article-menu">
<span class="glyphicon glyphicon-bookmark save-feed " data-saved=""></span>
<span class="glyphicon glyphicon-eye-open mark-read" title="Mark as read" style="display: none;"></span>
<span class="glyphicon glyphicon-chevron-down show-content" title="More"></span>
</span>
<div class="blog-title ">
<img class="blog-icon" src="https://i.olsh.me/icon?url=https://www.rockpapershotgun.com&size=16..64..300&fallback_icon_url=https://www.google.com/s2/favicons?domain=https://www.rockpapershotgun.com&alt=feed">
<span class="engagement ">208</span>
<a data-link="https://www.rockpapershotgun.com" href="javascript:void(0)">Rock, Paper, Shotgun</a>,
<span class="timeago" datetime="2018-10-30T13:01:55.251Z" data-tid="5">1 week ago</span>
</div>
<div class="content"></div>
</div>
Interesting. If I re-add the bookmark to this article in the main feedly website, then mark it as unread. I get this:
The website just shows one copy. If I re-mark it as read, and remove bookmark, then we are back to just one on you app. This is a strange little issue :)
Really strange.
Could you please open the background page of the extension and check response for the saved articles? Here is what I get for example
{
"id": "user/0953fb37-6e58-42a5-8350-d44c5b22bbf5/tag/global.saved",
"items": [
{
"actionTimestamp": 1542040688237,
"alternate": [
{
"href": "https://blog.jetbrains.com/dotnet/2018/11/12/named-tuple-inference-leading-digit-separator-non-trailing-named-arguments-vb-net-15-3-15-5-language-features-resharper-rider/",
"type": "text/html"
}
],
"author": "Maarten Balliauw",
"canonicalUrl": "https://blog.jetbrains.com/dotnet/2018/11/12/named-tuple-inference-leading-digit-separator-non-trailing-named-arguments-vb-net-15-3-15-5-language-features-resharper-rider/",
"categories": [
{
"id": "user/0953fb37-6e58-42a5-8350-d44c5b22bbf5/category/Programming",
"label": "Programming"
}
],
"content": {
"content": "<p>A while ago, we did a blog series about <a href=\"https://blog.jetbrains.com/dotnet/2017/10/17/c-7-0-7-1-support-resharper-outvariables/\">C# 7.0, 7.1, 7.2</a>, and <a href=\"https://blog.jetbrains.com/dotnet/2018/07/12/declaration-expressions-in-initializers-and-queries/\">C# 7.3 language features</a>. It’s high time we did something similar for VB.NET!</p>\n<p>The latest <a href=\"https://www.jetbrains.com/resharper/eap\">ReSharper 2018.3 EAP</a> and <a href=\"https://www.jetbrains.com/rider/eap\">Rider 2018.3 EAP</a> come with <strong>VB.NET 15.3 and 15.5 language support</strong> for <strong>named tuple inference</strong>, the <strong>leading digit separator</strong>, <strong>non-trailing named arguments</strong>, and the <strong>Private Protected access modifier</strong>. Let’s have a look at them, shall we?<span></span></p>\n<h2>Setting the VB.NET language version</h2>\n<p>To ensure that our project supports using these new VB.NET language features, we will have to specify the <code>LangVersion</code> in our <code>.vbproj</code> project file and either set it to one of the <a href=\"https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/configure-language-version#edit-the-vbproj-file\">available VB.NET language versions</a> (or <code>latest</code>):</p><pre><PropertyGroup>\n <LangVersion>15.5</LangVersion>\n</PropertyGroup></pre><p>Once that is done, we can start using the latest VB.NET version in our project.</p>\n<h2>Leading hex/binary/octal digit separator</h2>\n<p>In terms of language features, let’s start with one that improves readability of our code. In Visual Basic 2017, support was added for using an underscore character (<code>_</code>) as a <strong>digit separator</strong>. While that improved readability, there was one place in the syntax where we could not use <code>_</code>: <strong>between the prefix and hexadecimal, binary, or octal digits</strong>.</p>\n<p>In VB.NET 15.5, it is now possible to make use of the <code>_</code> digit separator there as well:</p><pre>'Before:\nDim hexNumber As Integer = &HC305_F860\nDim octNumber As Integer = &O200\nDim subnet As Integer = &B11111111_1111111_11000000_00000000\n\n'VB.NET 15.5:\nDim hexNumber As Integer = &H_C305_F860\nDim octNumber As Integer = &O_200\nDim subnet As Integer = &B_11111111_1111111_11000000_00000000</pre><p></p>\n<h2>Named tuple inference</h2>\n<p>Visual Basic 2017 introduced support for tuples – lightweight structures that we can use to pass data around. Tuples are used very often when returning multiple values from a method call, without having to create a separate class to do so.</p>\n<p>Tuples can also be used to create such lightweight data structure in code:</p><pre>Dim firstName = "Maarten"\nDim lastName = "Balliauw"\n\nDim person = (FirstName:=firstName, LastName:=lastName)</pre><p>Our <code>person</code> would now be a tuple with a <code>FirstName</code> and <code>LastName</code> element.</p>\n<p>In VB.NET 15.3, creating the above tuple becomes easier. Instead of having to add the element names (<code>FirstName</code> and <code>LastName</code>): <strong>when initializing the tuple, Visual Basic will now infer the element names</strong>:</p><pre>Dim firstName = "Maarten"\nDim lastName = "Balliauw"\n\nDim person = (firstName, lastName)\n\nConsole.WriteLine($"Person: {person.firstName} {person.lastName}")</pre><p>This removes some clutter from our code, and improves readability.</p>\n<h2>Non-trailing named arguments</h2>\n<p>VB.NET 15.5 introduces support for <a href=\"https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/procedures/passing-arguments-by-position-and-by-name#mixing-arguments-by-position-and-by-name\">non-trailing named arguments</a>. They allow us to <strong>mix non-named arguments with named arguments</strong> when calling a constructor or method, as long as the order of parameters is respected.</p>\n<p>For example, let’s assume we have a <code>Person</code> class defined like this:</p><pre>Public Class Person\n Public Sub New(firstName As String, lastName As String, email As String, age As Integer)\n '...\n End Sub\nEnd Class</pre><p>Before VB.NET 15.5, if we did not want to pass the <code>email</code> argument when using this constructor, we’d write our code like this:</p><pre>Dim person As New Person("Maarten", "Balliauw", Nothing, 35)</pre><p>What is the argument that we are setting to <code>Nothing</code> here? We’d always need tooling to tell us by hovering over the call and looking at the arguments our constructor accepts.</p>\n<p>With VB.NET 15.5, we can use named arguments anywhere in the method call, as long as we respect the order of arguments. This makes it more visible for ourselves and fellow developers to see which argument we are setting to <code>Nothing</code>:</p><pre>Dim person As New Person("Maarten", "Balliauw", email:=Nothing, 35)</pre><p></p>\n<h2>Private Protected access modifier</h2>\n<p>VB.NET 15.5 introduces a new member access modifier: <code>Private Protected</code>. Just like a <code>Protected</code> member, a <code>Private Protected</code> member is accessible by all members in its containing class and by types derived from the containing class.</p>\n<p>The main difference is that <code>Private Protected</code> members are only accessible in their containing assembly, and not outside. In summary, that gives the following access modifiers in VB.NET 15.5 and up:</p>\n<table>\n<tbody>\n<tr>\n<th>Access modifier</th>\n<th>Visibility</th>\n</tr>\n<tr>\n<td><code>Public</code></td>\n<td>Any code that can see a public element, can access the element.</td>\n</tr>\n<tr>\n<td><code>Protected</code></td>\n<td>Code in the class that declares a protected element, or a class derived from it, can access the element.</td>\n</tr>\n<tr>\n<td><code>Friend</code></td>\n<td>Code in the assembly that declares a friend element, can access the element.</td>\n</tr>\n<tr>\n<td><code>Private</code></td>\n<td>Code in the type that declares a private element, including code within contained types, can access the element.</td>\n</tr>\n<tr>\n<td><code>Protected Friend</code></td>\n<td>Code in the same class or the same assembly as a protected friend element, or within any class derived from the element’s class, can access the element.</td>\n</tr>\n<tr>\n<td><code>Private Protected</code></td>\n<td>Code in the class that declares a private protected element, or code in a derived class in the same assembly as the base class, can access the element.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Download <a href=\"https://www.jetbrains.com/resharper/eap\">ReSharper 2018.3 EAP</a> or <a href=\"https://www.jetbrains.com/rider/eap\">Rider 2018.3 EAP</a> and give it a try!</strong> We’d love to hear your feedback!</p>\n<p>The post <a rel=\"nofollow\" href=\"https://blog.jetbrains.com/dotnet/2018/11/12/named-tuple-inference-leading-digit-separator-non-trailing-named-arguments-vb-net-15-3-15-5-language-features-resharper-rider/\">Named tuple inference, leading digit separator, non-trailing named arguments – VB.NET 15.3 and 15.5 language features in ReSharper and Rider</a> appeared first on <a rel=\"nofollow\" href=\"https://blog.jetbrains.com/dotnet\">.NET Tools Blog</a>.</p>",
"direction": "ltr"
},
"crawled": 1542033367519,
"engagement": 7,
"fingerprint": "fb080f09",
"id": "Xiot6yX3NUjN9xKfts08YWSx6WDc/BXOD7nTuRgS3B4=_1670859e1df:1b250d2:88373a59",
"keywords": [
"How-To's",
"ReSharper",
"ReSharper Ultimate",
"Rider",
"VB.NET"
],
"origin": {
"htmlUrl": "https://blog.jetbrains.com/dotnet",
"streamId": "feed/http://blogs.jetbrains.com/dotnet/feed/",
"title": ".NET Tools Blog"
},
"originId": "http://blog.jetbrains.com/dotnet/?p=20823",
"published": 1542032926000,
"summary": {
"content": "<p>A while ago, we did a blog series about C# 7.0, 7.1, 7.2, and C# 7.3 language features. It’s high time we did something similar for VB.NET! The latest ReSharper 2018.3 EAP and Rider 2018.3 EAP come with VB.NET 15.3 and 15.5 language … <a href=\"https://blog.jetbrains.com/dotnet/2018/11/12/named-tuple-inference-leading-digit-separator-non-trailing-named-arguments-vb-net-15-3-15-5-language-features-resharper-rider/\">Continue reading <span>→</span></a></p>\n<p>The post <a rel=\"nofollow\" href=\"https://blog.jetbrains.com/dotnet/2018/11/12/named-tuple-inference-leading-digit-separator-non-trailing-named-arguments-vb-net-15-3-15-5-language-features-resharper-rider/\">Named tuple inference, leading digit separator, non-trailing named arguments – VB.NET 15.3 and 15.5 language features in ReSharper and Rider</a> appeared first on <a rel=\"nofollow\" href=\"https://blog.jetbrains.com/dotnet\">.NET Tools Blog</a>.</p>",
"direction": "ltr"
},
"tags": [
{
"id": "user/0953fb37-6e58-42a5-8350-d44c5b22bbf5/tag/global.unsaved",
"label": "Unsaved"
},
{
"id": "user/0953fb37-6e58-42a5-8350-d44c5b22bbf5/tag/global.saved",
"label": "Saved For Later"
}
],
"title": "Named tuple inference, leading digit separator, non-trailing named arguments – VB.NET 15.3 and 15.5 language features in ReSharper and Rider",
"unread": true
}
]
}
I can't reproduce the issue with my feeds, could you please provide the feed?
OK, I gave it a go. Not familiar with the chrome console, so I couldn't get it into nice JSON like yours. It is below if you need it. If you can tell me how you got output looking like yours, I can try again tomorrow after work.
The feed itself is: http://feeds.feedburner.com/RockPaperShotgun and the problematic post is about 10 days old.
EDIT: omg this formatting is horrible, sorry about that.
There are two items in the response this time, the "bad" one, plus one from heise.de that works fine for comparison.
{
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.saved", items: Array(2)}
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.saved"
items: Array(2)
0:
actionTimestamp: 1542044520652
alternate: Array(1)
0:
href: "https://www.heise.de/mac-and-i/meldung/Volkswagen-Auto-aufsperren-mit-Siri-4219279.html?wt_mc=rss.ho.beitrag.rdf"
type: "text/html"
__proto__: Object
length: 1
__proto__: Array(0)
ampUrl: "https://www.heise.de/amp/meldung/Volkswagen-Auto-aufsperren-mit-Siri-4219279.html"
canonicalUrl: "https://www.heise.de/mac-and-i/meldung/Volkswagen-Auto-aufsperren-mit-Siri-4219279.html"
categories: Array(1)
0:
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/category/Tech"
label: "Tech"
__proto__: Object
length: 1
__proto__: Array(0)
cdnAmpUrl: "https://www-heise-de.cdn.ampproject.org/c/s/www.heise.de/amp/meldung/Volkswagen-Auto-aufsperren-mit-Siri-4219279.html"
content:
content: "VW-Besitzer können ihr Fahrzeug nun über Apples Sprachassistentin auf Zuruf öffnen, abschließen und weitere Funktionen ansteuern – aber nur in den USA."
direction: "ltr"
__proto__: Object
crawled: 1542043784542
engagement: 0
fingerprint: "ff02f035"
id: "tT3i6dsoywzp72U4xl/JYQ5TX1571A8EO85JDgtBI+Q=_16708f8d55e:1c13fc3:88373a59"
origin:
htmlUrl: "https://www.heise.de/newsticker/"
streamId: "feed/http://www.heise.de/newsticker/heise.rdf"
title: "heise online News"
__proto__: Object
originId: "https://www.heise.de/mac-and-i/meldung/Volkswagen-Auto-aufsperren-mit-Siri-4219279.html?wt_mc=rss.ho.beitrag.rdf"
published: 1542043784542
tags: Array(2)
0:
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.saved"
label: "Saved For Later"
__proto__: Object
1:
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.read"
label: ""
__proto__: Object
length: 2
__proto__: Array(0)
title: "Volkswagen: Auto aufsperren mit Siri"
unread: false
visual:
contentType: "image/png"
height: 425
processor: "feedly-nikon-v3.1"
url: "https://heise.cloudimg.io/bound/1920x1920/q90.png-lossy-90.webp-lossy-90.foil1/_www-heise-de_/imgs/18/2/5/3/9/3/5/9/Bildschirmfoto_2018-11-12_um_18-914c90fc23352131.png"
width: 760
__proto__: Object
__proto__: Object
1:
actionTimestamp: 1540908774857
alternate: Array(1)
0:
href: "http://feedproxy.google.com/~r/RockPaperShotgun/~3/PBLVM1i7dY8/"
type: "text/html"
__proto__: Object
length: 1
__proto__: Array(0)
ampUrl: "https://www.rockpapershotgun.com/2018/10/30/draculas-revenge-conquering-europa-universalis-iv-as-romania/amp/"
author: "Denis Ryan"
canonical: Array(1)
0: {href: "https://www.rockpapershotgun.com/2018/10/30/dracul…enge-conquering-europa-universalis-iv-as-romania/", type: "text/html"}
length: 1
__proto__: Array(0)
canonicalUrl: "https://www.rockpapershotgun.com/2018/10/30/draculas-revenge-conquering-europa-universalis-iv-as-romania/"
categories: Array(1)
0: {id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/category/Gaming", label: "Gaming"}
length: 1
__proto__: Array(0)
cdnAmpUrl: "https://www-rockpapershotgun-com.cdn.ampproject.org/c/s/www.rockpapershotgun.com/2018/10/30/draculas-revenge-conquering-europa-universalis-iv-as-romania/amp/"
content:
content: "<p><a href="https://assets.rockpapershotgun.com/images/2018/10/Europa-Universalis-IV-c.jpg"><img width="670" src="https://assets.rockpapershotgun.com/images/2018/10/Europa-Universalis-IV-c.jpg/RPSS/resize/670x-1/format/jpg/">↵Impaling the Ottoman Sultan was not part of the plan. When the Ottoman Empire declared war on tiny Moldavia, my objective was to survive, not to murder the most powerful king in the region. Moldavia, which in 1444 begins the game with a handful of provinces and neighbours eager to conquer them, defeated the last of the Ottoman Empire’s armies on the European side of the Aegean Sea in 1474. A few months later Constantinople fell to a Moldavian siege. ↵<p>I could, and perhaps should, have stopped then, having made modest gains and secured the province I needed to form Romania. Instead 6 February 1474 will be infamous in the Ottoman annals as the day the two most important individuals in the realm were murdered in a bizarre and grotesque way by marauders from across the Danube. I captured the province I wanted, but the Ottoman Empire hated me with the maximum possible intensity forever.<br>↵<a href="https://www.rockpapershotgun.com/2018/10/30/draculas-revenge-conquering-europa-universalis-iv-as-romania/#more-606407"><span>(more…)</span></a></p>↵<div>↵<a href="http://feeds.feedburner.com/~ff/RockPaperShotgun?a=PBLVM1i7dY8:6TI_mDWH0nM:nQ_hWtDbxek"><img border="0" src="http://feeds.feedburner.com/~ff/RockPaperShotgun?d=nQ_hWtDbxek"></a> <a href="http://feeds.feedburner.com/~ff/RockPaperShotgun?a=PBLVM1i7dY8:6TI_mDWH0nM:yIl2AUoC8zA"><img border="0" src="http://feeds.feedburner.com/~ff/RockPaperShotgun?d=yIl2AUoC8zA"></a>↵</div><img width="1" alt="" src="http://feeds.feedburner.com/~r/RockPaperShotgun/~4/PBLVM1i7dY8" height="1"></a>"
direction: "ltr"
__proto__: Object
crawled: 1540904515251
engagement: 208
entities: Array(5)
0:
id: "nlp/f/entity/en/w/Romania"
label: "Romania"
mentions: [{…}]
salienceLevel: "about"
__proto__: Object
1:
id: "nlp/f/entity/en/-/dracula 's revenge"
label: "Dracula 's Revenge"
mentions: [{…}]
salienceLevel: "about"
__proto__: Object
2:
id: "nlp/f/entity/en/w/Europa Universalis IV"
label: "Europa Universalis IV"
mentions: [{…}]
salienceLevel: "about"
__proto__: Object
3:
id: "nlp/f/entity/en/w/Ottoman Empire"
label: "Ottoman Empire"
mentions: (2) [{…}, {…}]
salienceLevel: "about"
__proto__: Object
4:
id: "nlp/f/entity/en/w/Sultan"
label: "Sultan"
mentions: [{…}]
salienceLevel: "mention"
__proto__: Object
length: 5
__proto__: Array(0)
fingerprint: "f1db492"
id: "Z8mnJUhNW6b7muFrGtVCHCQd3a2PdVCm+sjl19UIkj8=_166c510f6b3:2ef11c:4eafa5b"
keywords: Array(4)
0: "Featured Articles"
1: "feature"
2: "Paradox Development Studio"
3: "Paradox Interactive"
length: 4
__proto__: Array(0)
origin:
htmlUrl: "https://www.rockpapershotgun.com"
streamId: "feed/http://feeds.feedburner.com/RockPaperShotgun"
title: "Rock, Paper, Shotgun"
__proto__: Object
originId: "https://www.rockpapershotgun.com/?p=606407"
published: 1540904449000
summary:
content: "Impaling the Ottoman Sultan was not part of the plan. When the Ottoman Empire declared war on tiny Moldavia, my objective was to survive, not to murder the most powerful king in the region. Moldavia, which in 1444 begins the game with a handful of provinces and neighbours eager to conquer them, defeated the last […]"
direction: "ltr"
__proto__: Object
tags: Array(2)
0:
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.read"
label: ""
__proto__: Object
1:
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.unsaved"
label: "Unsaved"
__proto__: Object
length: 2
__proto__: Array(0)
title: "Dracula’s Revenge: conquering Europa Universalis IV as Romania"
unread: false
visual:
contentType: "image/jpg"
height: 377
processor: "feedly-nikon-v3.1"
url: "https://assets.rockpapershotgun.com/images/2018/10/Europa-Universalis-IV-c.jpg/RPSS/resize/670x-1/format/jpg/"
width: 670
__proto__: Object
__proto__: Object
length: 2
__proto__: Array(0)
__proto__: Object
Ok, so, the buggy article has no global.saved
tag, that's weird, because we request all entries marked with the tag.
tags: Array(2)
0:
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.read"
label: ""
__proto__: Object
1:
id: "user/4fd70c8f-aae6-48d0-bc57-bacf92c9db3f/tag/global.unsaved"
label: "Unsaved"
I can't reproduce the issue with the feed, because I can't scroll to the buggy article (only three days back available), it seems like there is a restriction on the Feedly side. I can't reproduce the issue with my feeds either.
Probably, you don't see the article on the Feedly website because it's marked as read (has global.read
tag). Could you please mark the article as unread on the website and check if it appears on the website in the Read later
section?
It seems like a bug with the Feedly API.
If I mark it as unread, then it appears on the website as unread, but NOT saved for later (it is saved in your extension).
If I then bookmark it, it behaves as expected on the website (saved for later), and I end up with 2 copies in your extension.
If I mark as read, the website behaves correctly, I still have 2 on the extension.
If I remove the bookmark, then it disappears entirely from the website, but I still have the one entry in my saved list on the extension (which has no global.saved tag).
I also notice that the icon to "mark as read" has disappeared from individual articles on my saved list. You can see it on my earlier screenshot. Is that normal behaviour, or just something I hadn't noticed before?
I agree it seems to be the feedly api itself. I just removed your extension and then reinstalled it. Same issue. The problem seems to reside within what feedly is serving you.
And thanks for looking at this, it is appreciated.
I contacted Feedly dev team, they should fix the issue. Please let me know if the article disappeared.
It is already gone, that's quite an impressive turnaround time. Thanks for doing this,
I had about 14 articles saved for later. I marked them all as read and then removed the bookmark. As expected the items disappear as normal, except one. For some reason it is now a week and one article always appears in my bookmarks. The website itself shows it removed, and if I re-add it and then remove it again through either your interface or the Feedly website, it still remains in the extension.
It has stayed like this for a week. See the image, the bookmark item is not highlighted, yet the article remains.