Columns++ missing features / road map
-
@Coises said in Columns++ missing features / road map:
I have no way of knowing how many users my Columns++ plugin has . . .
Shields.io offers a free API for getting download metrics, including GitHub releases. You can simply paste the endpoint into a README to create a vanity badge, e.g.,
## Columns++ : total GitHub downloads ![](https://img.shields.io/github/downloads/Coises/ColumnsPlusPlus/total?logo=github)
Let’s see if it works…
-
@Coises said in Columns++ missing features / road map:
I could find a serious error the day after a Notepad++ release and there would be little I could do about it. How have other plugin authors dealt with this?
From my point of view, you have to be convinced yourself if it is (almost) stable. If you give users some easy-to-use examples firsthand, they will test it and see if it fits their requirements. And for later, they sneak deeper into the most complex topics, but this may not happen with the first releases. If you have some fans of your plugin, they will support you with enhancements and error findings (if needed). But no worries. Updates will be done frequently, almost monthly, by N++, and even the best programs are not bug-free. I remember Win95 and its endless Blue Screens :-)
PS: You can also give your code a basic quality check via Codacy which will also be supported by shields.io. Here you can generate a Batch as well. For me it was just fun. Besides there are also other Open Source QA Tools worth trying like cppcheck, which convinced me a bit more.
-
Hello, @coises, @peterjones, @rdipardo, @thomas-knoefel and All,
@coises, you said :
I have no way of knowing how many users my
Columns++
plugin has,…So, I just did this simple search, on Net :
How to get the number of people who downloaded a software from GitHub ?
Then, I went to the fourth provided link :
https://www.artificialworlds.net/blog/2015/10/16/finding-the-download-count-of-github-releases/
From this location, I tried, as the Andy Balaam author mentioned, the link :
https://api.github.com/repos/andybalaam/rabbit-escape/releases
And… bingo, I got a
JSON
file containing a lot of GitHubdownload_count
values !
So, I tried to apply this generic link : https://api.github.com/repos/author/Application/releases to the
PythonScript
software ofbruderstein
( Dave Brotherstone ) !Thus, I used this simple link :
https://api.github.com/repos/bruderstein/PythonScript/releases
And… whooo, I got a
JSON
file containing all statistics about our belovedPythonScript
plugin !Here is the very beginning and the very end of this file :
[ { "url": "https://api.github.com/repos/bruderstein/PythonScript/releases/98573402", "assets_url": "https://api.github.com/repos/bruderstein/PythonScript/releases/98573402/assets", "upload_url": "https://uploads.github.com/repos/bruderstein/PythonScript/releases/98573402/assets{?name,label}", "html_url": "https://github.com/bruderstein/PythonScript/releases/tag/v3.0.16", "id": 98573402, "author": { "login": "bruderstein", "id": 91716, "node_id": "MDQ6VXNlcjkxNzE2", "avatar_url": "https://avatars.githubusercontent.com/u/91716?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bruderstein", "html_url": "https://github.com/bruderstein", "followers_url": "https://api.github.com/users/bruderstein/followers", "following_url": "https://api.github.com/users/bruderstein/following{/other_user}", "gists_url": "https://api.github.com/users/bruderstein/gists{/gist_id}", "starred_url": "https://api.github.com/users/bruderstein/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bruderstein/subscriptions", "organizations_url": "https://api.github.com/users/bruderstein/orgs", "repos_url": "https://api.github.com/users/bruderstein/repos", "events_url": "https://api.github.com/users/bruderstein/events{/privacy}", "received_events_url": "https://api.github.com/users/bruderstein/received_events", "type": "User", "site_admin": false }, "node_id": "RE_kwDOAAwkgs4F4Bxa", "tag_name": "v3.0.16", "target_commitish": "de5de03200e33568e77d313c603b8dda803c8a93", "name": "v3.0.16", "draft": false, "prerelease": true, "created_at": "2023-04-07T14:08:52Z", "published_at": "2023-04-07T14:37:12Z", "assets": [ { "url": "https://api.github.com/repos/bruderstein/PythonScript/releases/assets/102713166", "id": 102713166, "node_id": "RA_kwDOAAwkgs4GH0dO", "name": "PythonScript_3.0.16.0.msi", "label": "", "uploader": { "login": "bruderstein", "id": 91716, "node_id": "MDQ6VXNlcjkxNzE2", "avatar_url": "https://avatars.githubusercontent.com/u/91716?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bruderstein", "html_url": "https://github.com/bruderstein", "followers_url": "https://api.github.com/users/bruderstein/followers", "following_url": "https://api.github.com/users/bruderstein/following{/other_user}", "gists_url": "https://api.github.com/users/bruderstein/gists{/gist_id}", "starred_url": "https://api.github.com/users/bruderstein/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bruderstein/subscriptions", "organizations_url": "https://api.github.com/users/bruderstein/orgs", "repos_url": "https://api.github.com/users/bruderstein/repos", "events_url": "https://api.github.com/users/bruderstein/events{/privacy}", "received_events_url": "https://api.github.com/users/bruderstein/received_events", "type": "User", "site_admin": false }, "content_type": "application/octet-stream", "state": "uploaded", "size": 17232412, "download_count": 110, "created_at": "2023-04-07T14:43:35Z", "updated_at": "2023-04-07T14:43:37Z", "browser_download_url": "https://github.com/bruderstein/PythonScript/releases/download/v3.0.16/PythonScript_3.0.16.0.msi" }, ... ... ... { "url": "https://api.github.com/repos/bruderstein/PythonScript/releases/assets/6845171", "id": 6845171, "node_id": "MDEyOlJlbGVhc2VBc3NldDY4NDUxNzE=", "name": "PythonScript_TclTk_1.0.8.0.zip", "label": null, "uploader": { "login": "chcg", "id": 12630740, "node_id": "MDQ6VXNlcjEyNjMwNzQw", "avatar_url": "https://avatars.githubusercontent.com/u/12630740?v=4", "gravatar_id": "", "url": "https://api.github.com/users/chcg", "html_url": "https://github.com/chcg", "followers_url": "https://api.github.com/users/chcg/followers", "following_url": "https://api.github.com/users/chcg/following{/other_user}", "gists_url": "https://api.github.com/users/chcg/gists{/gist_id}", "starred_url": "https://api.github.com/users/chcg/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/chcg/subscriptions", "organizations_url": "https://api.github.com/users/chcg/orgs", "repos_url": "https://api.github.com/users/chcg/repos", "events_url": "https://api.github.com/users/chcg/events{/privacy}", "received_events_url": "https://api.github.com/users/chcg/received_events", "type": "User", "site_admin": false }, "content_type": "application/x-zip-compressed", "state": "uploaded", "size": 4796381, "download_count": 13, "created_at": "2018-04-14T12:19:39Z", "updated_at": "2018-04-14T12:21:41Z", "browser_download_url": "https://github.com/bruderstein/PythonScript/releases/download/v1.0.8/PythonScript_TclTk_1.0.8.0.zip" } ], "tarball_url": "https://api.github.com/repos/bruderstein/PythonScript/tarball/v1.0.8", "zipball_url": "https://api.github.com/repos/bruderstein/PythonScript/zipball/v1.0.8", "body": "- Fix for odd deadlock issues. GIL is now always given up when calling Notepad++ or Scintilla functions\r\n- Performance optimisation for notifications where there are no callbacks registered" }, { "url": "https://api.github.com/repos/bruderstein/PythonScript/releases/10546761", "assets_url": "https://api.github.com/repos/bruderstein/PythonScript/releases/10546761/assets", "upload_url": "https://uploads.github.com/repos/bruderstein/PythonScript/releases/10546761/assets{?name,label}", "html_url": "https://github.com/bruderstein/PythonScript/releases/tag/v1.0.7", "id": 10546761, "author": { "login": "chcg", "id": 12630740, "node_id": "MDQ6VXNlcjEyNjMwNzQw", "avatar_url": "https://avatars.githubusercontent.com/u/12630740?v=4", "gravatar_id": "", "url": "https://api.github.com/users/chcg", "html_url": "https://github.com/chcg", "followers_url": "https://api.github.com/users/chcg/followers", "following_url": "https://api.github.com/users/chcg/following{/other_user}", "gists_url": "https://api.github.com/users/chcg/gists{/gist_id}", "starred_url": "https://api.github.com/users/chcg/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/chcg/subscriptions", "organizations_url": "https://api.github.com/users/chcg/orgs", "repos_url": "https://api.github.com/users/chcg/repos", "events_url": "https://api.github.com/users/chcg/events{/privacy}", "received_events_url": "https://api.github.com/users/chcg/received_events", "type": "User", "site_admin": false }, "node_id": "MDc6UmVsZWFzZTEwNTQ2NzYx", "tag_name": "v1.0.7", "target_commitish": "master", "name": "", "draft": false, "prerelease": false, "created_at": "2014-07-15T22:40:39Z", "published_at": "2018-04-14T12:33:22Z", "assets": [ ], "tarball_url": "https://api.github.com/repos/bruderstein/PythonScript/tarball/v1.0.7", "zipball_url": "https://api.github.com/repos/bruderstein/PythonScript/zipball/v1.0.7", "body": "- Fix for replacing with extended Unicode characters with editor.rereplace() (thanks to David Instone-Brewer for reporting)\r\n- Several freeze issues corrected (thanks to skrell and Juergen Busch for reporting)" } ]
For example, the
3
firstdownload_count
of this file are :download_count 110 PythonScript_3.0.16.0.msi download_count 147 PythonScript_3.0.16.0_x64.msi download_count 45 PythonScript_Full_3.0.16.0.zip
And for all the downloads relative to the
v2.0.0.0
version, we have :download_count 255 PythonScript_2.0.0.0.msi download_count 602 PythonScript_2.0.0.0_x64.msi download_count 85 PythonScript_ExtraLibs_2.0.0.0.zip download_count 227 PythonScript_ExtraLibs_2.0.0.0_x64.zip download_count 345 PythonScript_Full_2.0.0.0.zip download_count 25353 PythonScript_Full_2.0.0.0_PluginAdmin.zip download_count 749 PythonScript_Full_2.0.0.0_x64.zip download_count 137385 PythonScript_Full_2.0.0.0_x64_PluginAdmin.zip download_count 56 PythonScript_Min_2.0.0.0.zip download_count 131 PythonScript_Min_2.0.0.0_x64.zip download_count 53 PythonScript_TclTk_2.0.0.0.zip download_count 109 PythonScript_TclTk_2.0.0.0_x64.zip
But the most interesting point is that it’s a real-time updated
JSON
file !! For instance, the above data was retrieved at02.00 pm
about. Now, this updated version was retrieved at03.00 pm
about :download_count 255 PythonScript_2.0.0.0.msi download_count 602 PythonScript_2.0.0.0_x64.msi download_count 85 PythonScript_ExtraLibs_2.0.0.0.zip download_count 227 PythonScript_ExtraLibs_2.0.0.0_x64.zip download_count 345 PythonScript_Full_2.0.0.0.zip download_count 25356 PythonScript_Full_2.0.0.0_PluginAdmin.zip download_count 749 PythonScript_Full_2.0.0.0_x64.zip download_count 137395 PythonScript_Full_2.0.0.0_x64_PluginAdmin.zip download_count 56 PythonScript_Min_2.0.0.0.zip download_count 131 PythonScript_Min_2.0.0.0_x64.zip download_count 53 PythonScript_TclTk_2.0.0.0.zip download_count 109 PythonScript_TclTk_2.0.0.0_x64.zip
And you can see that :
-
3
new downloads ofPythonScript_Full_2.0.0.0_PluginAdmin.zip
occurred, in the last hour -
10
new downloads ofPythonScript_Full_2.0.0.0_x64_PluginAdmin.zip
occurred, in the last hour
So, @coises, I hope that this post puts you on the right track !
Note that I also tried this link :
https://api.github.com/repos/donho/notepad-plus-plus/releases
But, unfortunately, it returns the following empty
JSON
file :1 []
Best Regards,
guy038
P.S. :
In a
DOS prompt
window , you could have typed, either, the command :curl -s https://api.github.com/repos/bruderstein/PythonScript/releases > C:\Stats.txt
-
-
@PeterJones said in Columns++ missing features / road map:
this is to avoid flooding github with “polls” of the server that don’t equate to real downloads… gh has some weird rules about what you are and are not allowed to do, and the old method for the updatable plugins list would have apparently violated that, because it would be treating gh as a distribution host rather than a source-code repository – which is why he didn’t make the plugin-list out-of-cycle updatable.
Thank you for your response. I am a bit hesitant to involve my personal website, so this is troubling me a bit.
By any chance, do you know if there is a reference to this constraint? I’m not seeing it GitHub’s terms of service. What I was thinking is that GitHub has an API; one of the functions which can be called without authentication is to get a list of releases, e.g.:
https://api.github.com/repos/Coises/ColumnsPlusPlus/releases
comes back with JSON listing the releases.
I did find this:
https://www.advancedinstaller.com/github-integration-for-updater.html
which appears to be doing what I was considering, but in an installer… so perhaps not the same concerns.My first step in implementing this would be just to provide notice on the menu, with a link in the About dialog to the new release on GitHub.
Then I could implement a couple other improvements and hope to get some feedback as to whether that operates properly in the wild.
Then I would consider whether to have the plugin launch its own update, or whether simply to make a more robust installer to which to link and let the user run the actual update.
-
@Coises said in Columns++ missing features / road map:
do you know if there is a reference to this constraint? I’m not seeing it GitHub’s terms of service.
I have no such reference, only vague memories as to the
excusespresumably valid reasons given in the v7.6.x plugin migration for not having a dynamic plugin list.What I was thinking is that GitHub has an API; one of the functions which can be called without authentication is to get a list of releases, e.g.:
If GitHub exposes something in the API, then as long as you follow the GitHub API’s terms of service, you should theoretically be safe (IANAL & TINLA).
-
@guy038 Thanks. I knew about the API, but didn’t notice that there is a download_count field for each asset.
That does give me some notion how many people are at least continuing to update. It looks like 25 downloads of the latest version binaries and 45 downloads of the quick installer. More than I expected!
-
A quick python3 script sample
from urllib.request import Request, urlopen import time OK = 200 repo_url = 'https://api.github.com/repos/Coises/ColumnsPlusPlus/releases' with urlopen(Request(repo_url)) as results: if results.code == OK: req = Request(repo_url) req.add_header('accept', 'application/vnd.github.v3.star+json') results = urlopen(req) if results.code != OK: print(f'error opening {repo_url}') else: releases = json.load(results) for release in releases: release_id = f'{repo_url}/{release["id"]}' req2 = Request(release_id) req2.add_header('accept', 'application/vnd.github.v3.star+json') stats = urlopen(req2) if stats.code != OK: print(f'error opening {release_id}') else: stat = json.load(stats) print(stat['tag_name']) for asset in stat['assets']: print(f" name : {asset['name']}") print(f" download: {asset['download_count']}")
-
Hi, @coises, @peterjones, @rdipardo, @thomas-knoefel, @ekopalypse and All,
@coises, some hints to simplify the way to get good statistics about your repository :
First, this link below, always displays the last version of your repository :
https://api.github.com/repos/coises/columnsplusplus/releases/latest
Now, once your retrieved the comolete file, in a Notepad++ new tab :
-
Open the Mark dialog
-
Tick the
Bookmark line
andPurge for each search
options -
MARK
(?-is)"tag_name": "\K.+(?=")
-
Click on the
Mark All
button -
Click on the
Copy Marked Text
You should get, after a
Ctrl + V
action, this text :v0.8-alpha v0.7.5-alpha v0.7.4-alpha v0.7.3-alpha v0.7.2-alpha v0.7.1-alpha v0.7-alpha v0.6.1-alpha v0.6-alpha v0.5.1-alpha v0.5-alpha v0.4.1-alpha v0.4-alpha v0.3-alpha v0.2.2-alpha v0.2.1.7-alpha v0.2.0.6-alpha v0.1.0.5-alpha v0.0.3.4-alpha v0.0.2.3-alpha v0.0.1.2-alpha v0.0.0.1-alpha
So, it’s easy to get your number of releases :
22
And, for example, to get the particular
v0.2.1.7-alpha
version, use the following link :https://api.github.com/repos/coises/columnsplusplus/releases/tags/v0.2.1.7-alpha
Now, from your complete file, you can also get a particular release from its
Release_Id
number-
Open the Mark dialog
-
Tick the
Bookmark line
andPurge for each search
options -
MARK
"id": \K\d+(?=,\R\h+"author":)
-
Click on the
Mark All
button -
Click on the
Copy Marked Text
You should get, after a
Ctrl + V
action, this text :127063824 125505991 124506235 123773760 121808400 121604526 119742961 117526732 117260588 104643692 103662564 102527285 102273235 101427295 100845810 99983124 99837353 99605259 99007126 98975802 98659223 98639493
As you can see, you still get
22
releases !And, for example, in order to get the older release, use the following link :
https://api.github.com/repos/coises/columnsplusplus/releases/98639493
OR this one :
https://api.github.com/repos/coises/columnsplusplus/releases/tags/v0.0.0.1-alpha
Finally, from the original file, from the link https://api.github.com/repos/coises/columnsplusplus/releases, and copied in a N++ new tab, let’s get a nice layout :
-
Open the Mark dialog
-
Tick the
Bookmark line
andPurge for each search
options -
MARK
(?-i)tag_name|download_count|browser_download_url|tarball_url
-
Click on the
Mark All
button -
Run the
Search > Bookmark > Copy Bookmarked Lines
option -
Open a new tab
-
Do a
Ctrl + V
operation
=>
166
lines copied-
Against this new tab, execute, successively, the different regex S/Rs, below :
-
SEARCH
^.+(?:tag_name|download_count|browser_download_url|tarball_url).+\R(*SKIP)(*F)|^.*\R
-
REPLACE
Leave EMPTY
-
SEARCH
(?-s)"browser_download_url".+\R\K.+tarball_url.+\R
-
REPLACE
Leave EMPTY
-
SEARCH
(?-s)^.+"(?:download_count|browser_download_url|tarball_url)":\x20"?|",?$
-
REPLACE
Leave EMPTY
-
SEARCH
(?-s)^.+"tag_name":\x20"(.+)
-
REPLACE
\r\n \1
-
SEARCH
(\d+),\R
-
REPLACE
\t\t\t\t\t\1\t\t\t
-
SEARCH
https://.+/download/
-
REPLACE
Leave EMPTY
-
=> You should end up with this expected OUTPUT text :
v0.8-alpha 12 v0.8-alpha/ColumnsPlusPlus-0.8-x64.zip 13 v0.8-alpha/ColumnsPlusPlus-0.8-x86.zip 45 v0.8-alpha/ColumnsPlusPlus-0.8.exe v0.7.5-alpha 13 v0.7.5-alpha/ColumnsPlusPlus-0.7.5-x64.zip 5 v0.7.5-alpha/ColumnsPlusPlus-0.7.5-x86.zip 23 v0.7.5-alpha/ColumnsPlusPlus-0.7.5.exe v0.7.4-alpha 6 v0.7.4-alpha/ColumnsPlusPlus-0.7.4-x64.zip 6 v0.7.4-alpha/ColumnsPlusPlus-0.7.4-x86.zip 4 v0.7.4-alpha/ColumnsPlusPlus-0.7.4.exe v0.7.3-alpha 19 v0.7.3-alpha/ColumnsPlusPlus-0.7.3-x64.zip 8 v0.7.3-alpha/ColumnsPlusPlus-0.7.3-x86.zip 57 v0.7.3-alpha/ColumnsPlusPlus-0.7.3.exe v0.7.2-alpha 25 v0.7.2-alpha/ColumnsPlusPlus-0.7.2-x64.zip 10 v0.7.2-alpha/ColumnsPlusPlus-0.7.2-x86.zip 22 v0.7.2-alpha/ColumnsPlusPlus-0.7.2.exe 2 v0.7.2-alpha/DIAGNOSTIC-ColumnsPlusPlus-0.7.2.1-x64.zip 1 v0.7.2-alpha/DIAGNOSTIC-ColumnsPlusPlus-0.7.2.1-x86.zip 0 v0.7.2-alpha/DIAGNOSTIC-ColumnsPlusPlus-0.7.2.1.exe 1 v0.7.2-alpha/DIAGNOSTIC-ColumnsPlusPlus-0.7.2.2-x64.zip 0 v0.7.2-alpha/DIAGNOSTIC-ColumnsPlusPlus-0.7.2.2-x86.zip 0 v0.7.2-alpha/DIAGNOSTIC-ColumnsPlusPlus-0.7.2.2.exe v0.7.1-alpha 4 v0.7.1-alpha/ColumnsPlusPlus-0.7.1-x64.zip 6 v0.7.1-alpha/ColumnsPlusPlus-0.7.1-x86.zip 5 v0.7.1-alpha/ColumnsPlusPlus-0.7.1.exe v0.7-alpha 22 v0.7-alpha/ColumnsPlusPlus-0.7-x64.zip 5 v0.7-alpha/ColumnsPlusPlus-0.7-x86.zip 16 v0.7-alpha/ColumnsPlusPlus-0.7.exe v0.6.1-alpha 7 v0.6.1-alpha/ColumnsPlusPlus-0.6.1-x64.zip 5 v0.6.1-alpha/ColumnsPlusPlus-0.6.1-x86.zip 18 v0.6.1-alpha/ColumnsPlusPlus-0.6.1.exe v0.6-alpha 4 v0.6-alpha/ColumnsPlusPlus-0.6-x64.zip 5 v0.6-alpha/ColumnsPlusPlus-0.6-x86.zip 10 v0.6-alpha/ColumnsPlusPlus-0.6.exe v0.5.1-alpha 26 v0.5.1-alpha/ColumnsPlusPlus-0.5.1-x64.zip 15 v0.5.1-alpha/ColumnsPlusPlus-0.5.1-x86.zip 126 v0.5.1-alpha/ColumnsPlusPlus-0.5.1.exe v0.5-alpha 16 v0.5-alpha/ColumnsPlusPlus-0.5-x64.zip 15 v0.5-alpha/ColumnsPlusPlus-0.5-x86.zip 65 v0.5-alpha/ColumnsPlusPlus-0.5.exe v0.4.1-alpha 7 v0.4.1-alpha/ColumnsPlusPlus-0.4.1-x64.zip 4 v0.4.1-alpha/ColumnsPlusPlus-0.4.1-x86.zip 20 v0.4.1-alpha/ColumnsPlusPlus-0.4.1.exe v0.4-alpha 15 v0.4-alpha/ColumnsPlusPlus-0.4-x64.zip 13 v0.4-alpha/ColumnsPlusPlus-0.4-x86.zip 41 v0.4-alpha/ColumnsPlusPlus-0.4.exe v0.3-alpha 8 v0.3-alpha/ColumnsPlusPlus-0.3-x64.zip 6 v0.3-alpha/ColumnsPlusPlus-0.3-x86.zip v0.2.2-alpha 8 v0.2.2-alpha/ColumnsPlusPlus-0.2.2-x64.zip 6 v0.2.2-alpha/ColumnsPlusPlus-0.2.2-x86.zip v0.2.1.7-alpha 11 v0.2.1.7-alpha/ColumnsPlusPlus-0.2.1.7-x64.zip 4 v0.2.1.7-alpha/ColumnsPlusPlus-0.2.1.7-x86.zip v0.2.0.6-alpha 5 v0.2.0.6-alpha/ColumnsPlusPlus-0.2.0.6-x64.zip 5 v0.2.0.6-alpha/ColumnsPlusPlus-0.2.0.6-x86.zip v0.1.0.5-alpha 8 v0.1.0.5-alpha/ColumnsPlusPlus-0.1.0.5-x64.zip 7 v0.1.0.5-alpha/ColumnsPlusPlus-0.1.0.5-x86.zip v0.0.3.4-alpha 4 v0.0.3.4-alpha/ColumnsPlusPlus.x64.zip 6 v0.0.3.4-alpha/ColumnsPlusPlus.x86.zip v0.0.2.3-alpha 5 v0.0.2.3-alpha/ColumnsPlusPlus.x64.zip 3 v0.0.2.3-alpha/ColumnsPlusPlus.x86.zip v0.0.1.2-alpha 9 v0.0.1.2-alpha/ColumnsPlusPlus.x64.zip 5 v0.0.1.2-alpha/ColumnsPlusPlus.x86.zip v0.0.0.1-alpha https://api.github.com/repos/Coises/ColumnsPlusPlus/tarball/v0.0.0.1-alpha
Of course, all these regexes S/R may be insserted in a single macro !
Now, after looking at this link :
https://docs.github.com/fr/rest/releases/releases#get-a-release
It seems that, in order to get this kind of file for
Notepad++
, we should use the following link :https://api.github.com/repos/donho/notepad-plus-plus/notepad-plus-plus/releases
However, this link does not work at all. Why ??
Best Regards,
guy038
Oh…, I see that @ekopalypse provided a python script on this topic. I bet that it will certainly be easier to use than my series of regexes :-((
-
-
@guy038 said in Columns++ missing features / road map:
It seems that, in order to get this kind of file for Notepad++, we should use the following link :
https://api.github.com/repos/donho/notepad-plus-plus/notepad-plus-plus/releases
However, this link does not work at all. Why ??
https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/releases
The repository is owned by an organization (Notepad++), not a user.
-
@PeterJones said in Columns++ missing features / road map:
highest priorities would be putting it in Plugins Admin and allowing easy out-of-cycle updates
I’m thinking I will either do these together, or (probably) do the update notification first. Tests for showing when there is an update are promising thus far; I haven’t looked at the Plugins Admin process yet.
For out-of-cycle updates, do you think it would be reasonable to link to the new release on GitHub from the Help/About dialog, but have it open in the user’s default browser, requiring them to download and run an installer (after closing Notepad++)?
Of course, I would still update the Plugins Admin for the next Notepad++ cycle whenever there is a new plugin release — this would just be if someone wants to get an update before the next Notepad++ update, or doesn’t want to run the latest release of Notepad++.
I can think of a couple approaches to self-updating, and I could probably get something to work that would be more convenient for users than having to download and run an installer, but I’m a bit nervous that there might be security implications that would get past me: I don’t have any particular expertise in that area. It just feels safer to open the default browser and let the user do an ordinary installation. (Again, this would only be an “extra” beyond ordinary updating when Notepad++ updates.)
I suspect the Quick Installer I have now works for most users, but probably causes a lot of security warnings. I won’t be able to eliminate all warnings, because I’m not a business, and hence not entitled to an enhanced code signing certificate — I have no code signing certificate at all now, and I’m not likely to pay to get one. The security warning approach taken by Windows is not friendly to FOSS. That aside, though, the way I cobbled the Quick Installer together probably really looks like potentially malicious software to AV heuristics, so I’ll need to invest some time in that at some point, if I want to continue to rely on an installer for out-of-cycle updates.
-
I´ve published a new release, Columns++ v1.0, which can check GitHub for new releases.
The user can choose (in the Options dialog) to show a notice for all new releases or only for new “stable” releases, or to turn off automatic checking. The notice is displayed by adding “Update Available” to the text of the “Help/About” item at the bottom of the Columns++ menu. The automatic check occurs when Notepad++ loads Columns++ and is limited to once every twelve hours. The default is to show a notice only for new stable releases, which are releases not marked as a Pre-Release on GitHub.
It is also possible to check on demand from the Help/About dialog, which shows links to the newest and latest stable releases on GitHub.
I’ve submitted a pull request to add this to the Plugins Admin list.
There is still only the Quick Installer or manual copying to install a release that isn’t offered by Plugins Admin. It’s not ideal, but it’s simple and probably works for most people.