Releases: code-charity/History-Manager-with-no-DB
Releases · code-charity/History-Manager-with-no-DB
1.0-alpha.7
Changelog:
- Search Bar: browser-style address bar features
1.0-alpha.6
Changelog:
- Fixed a bug where history was not loaded on first launch
- Fixed scrolling function in dropdown tables
- Added function to sort dropdown tables
- Removed "%s" from search link
- Added loading of last used search
- Added Bing, DuckDuckGo, Ecosia, Yahoo search engines
- Minor CSS improvements
1.0-alpha.5
Changelog:
- Improved UI for better focus
- Scrollbar has been disabled for "main" component
- Fixed pinned tabs status in table #4
- Added unsorted table data for old Satus (for real tabs order in table #4)
- Improved "Pin" feature. Now function only updates the tab options, does not re-create it
v1.0-alpha.4
General
- Updated Satus
- Minor optimizations
Backend
Bookmarks
- Removed all storage-based Star functions (now syncs with bookmarks)
- Added Bookmarks data collection
- Added function of creating a bookmark
- Added function of removing a bookmark
- Added real-time bookmarks data updater (when the HM page is already open)
Pinned tabs
- Added Pinned tabs data collection
- Added function of creating a pinned tab
- Added function of removing a pinned tab
- Added real-time pinned tabs data updater (when the HM page is already open)
GUI
- Added Pinned tabs column
- Added "Pin" button which works as status too
- Added simple button hover effect
v1.0-alpha.3
New:
- Added Visit count updater for Top 100 websites & All websites
- Added Top 100 websites updater (when loading all websites)
- 3rd table data is now stored separately [storage._all.params = visitCount, storage._top.params = visitCount] (only items are added whose url includes the "q" (/[?&]q=[^&]+/) parameter)
- Search algorithm adapted to recent data structure changes
- "Select" feature adapted to recent data structure changes
- Now the selected rows will not be lost if you update the table (sorting, pagination, etc...)
- All websites loading adapted to recent data structure changes
- Added simple loading screen
- Added language selection
- Added Russian locale
- Improved responsiveness of column labels
- Now scrollbar increases width on hover
- Upgraded Satus
Fixes:
- Fixed a bug where new history items did not include recent visits
- Fixed a bug where the table was empty after searching and it was required to use pagination
- Fixed a bug where 3rd table could not update
- Fixed a bug where the extension would stop working if the browser history is empty
- Fixed a bug where the table sorts Top 100 websites but not All websites
- Fixed action buttons in the toolbar (when selecting items in the table)
Deprecated:
- Removed duplicate function of loading All websites data
- Removed unnecessary decodeURI function from 2nd table
Current data structure:
Objective: develop a data structure that will allow the extension to run faster, but will not complicate future updates.
{
/*------------------------------------------------------------------------------
>>> Top 100 websites (sorted by visit count)
--------------------------------------------------------------------------------
The data size is small & fixed, so this is loaded & rendered first.
------------------------------------------------------------------------------*/
"_top": {
"domains": { // First table data
"mywebsite.com": 83, /* domain: visit count */
"improvedtube.com": 24,
...
},
"pages": { // Second table data
"https://mywebsite.com/about": {
"star": 1, // Bookmark status (soon)
"tags": "tag1,tag2",
"title": "About My Website",
"visitCount": 56
},
"https://improvedtube/uninstalled": {
"star": 0,
"tags": "tag1",
"title": "ImprovedTube - Uninstalled",
"visitCount": 9
},
...
},
"params": { /* Third table data. Looks very similar to the first table's data right?
But this is stored separately, because the first table includes items whose URL does not have a "q" parameter. */
"mywebsite.com": 83,
"improvedtube.com": 24,
...
}
},
/*------------------------------------------------------------------------------
>>> All websites
--------------------------------------------------------------------------------
Similar to "_top" but has 100+ items.
The data size is large, so this is only loaded & rendered after actions:
- Search
- Sorting
- Pagination
- ...
------------------------------------------------------------------------------*/
"_all": {
"domains": {
"mywebsite.com": 83,
"improvedtube.com": 24,
...
},
"pages": {
"https://mywebsite.com/about": {
"star": 0,
"tags": "tag1,tag2",
"title": "About My Website",
"visitCount": 56
},
"https://improvedtube/uninstalled": {
"star": 0,
"tags": "tag1",
"title": "ImprovedTube - Uninstalled",
"visitCount": 9
},
...
},
"params": {
"mywebsite.com": 83,
"improvedtube.com": 24,
...
}
},
/*------------------------------------------------------------------------------
>>> Recently visited websites
--------------------------------------------------------------------------------
To prevent slow down the user's browser when opening any new page,
the new item is loaded into the "_new" storage property.
This data will be moved to "_top" when user open an empty tab, then will be moved to "_all" (when the user request "_all" data).
------------------------------------------------------------------------------*/
"_new": {
"domains": {
"mywebsite.com": 1,
"improvedtube.com": 2,
...
},
"pages": {
"https://mywebsite.com/about": {
"star": 1,
"tags": "tag1,tag2",
"title": "About My Website",
"visitCount": 1
},
"https://improvedtube/uninstalled": {
"star": 0,
"tags": "tag1",
"title": "ImprovedTube - Uninstalled",
"visitCount": 1
},
...
},
"params": {
"mywebsite.com": 1,
"improvedtube.com": 2,
...
}
},
/*------------------------------------------------------------------------------
>>> All data per website
--------------------------------------------------------------------------------
The data size is very large, so this is only loaded & rendered after actions:
- Drop-down table opening
------------------------------------------------------------------------------*/
"https://mywebsite.com": {
"/about": {
"title": "About My Website",
"visitCount": 56
},
"/search?q=hello+world": {
"title": "About My Website",
"visitCount": 2,
"params": [
"?q=hello+world"
]
},
...
},
"https://improvedtube.com": {
"/uninstalled": {
"title": "ImprovedTube - Uninstalled",
"visitCount": 9
},
...
},
...
}
October Alpha
Performance
- Removed global sorting by
visitCount
fromchrome.runtime.onInstalled
- Large items
{"any_domain": {visitCount: visitCount, items: {"any_pathname": {...}, ...}}, ...}
from the domain list have been changed to{"any_domain": visit_count, ...}
- Specific domain items (by pathname) are now loaded only on request
- List of items for 3rd table has been removed from browser storage (now generated from domain list)
- Now each table gets the top 100 items first (saves most of the wasted time when opening a new tab)
- All items are now loaded & replace the top 100 only after first sorting, search, pagination, etc.
chrome.tabs.onUpdated
replaced withchrome.history.onVisited
- New history items are now stored separately (fixes freezes when opening new a page)
- Redeveloped CSS of table component (affects scrolling & animations)
- Fixed issue causing double request for localization files (saves ~20ms (on SSD) when opening a new tab)
- Favicons are now loaded only by domain name (fixes double loading & caching of the same favicon)
User Interface
- Upgraded Satus
- Added "Compact mode"
- Added drop-down tables with search queries
- Improved styles of drop-down tables
- Fixed pagination in tables
- Scrollbar now moves up when paginating or sorting
Other
- Added extension icons
- Fixed visit counting algorithm
- Search adapted to the latest changes
- Many minor fixes & improvements
September Alpha
A new way to get history data:
- OLD: getting big data on first chrome://newtab load -> getting missing data on next chrome://newtab loads
- NEW: getting big data when installing an extension -> getting 1 item when loading any page
- Improved performance of history parsing
- chrome://newtab no longer uses
chrome.history.search
, onlychrome.storage.local.get
(saves 1-7 sec on each load) - History items limit (when installing extension) increased to 999,999,999
- Data for tables 2 & 3 are no longer limited to 1000 items (previous algorithms did not allow working with a large number without long freezes)
- Added async big data search
- Added favicons (chrome://favicon/PAGE_URL)
- Other minor changes
Satus table component:
- Upgraded pagination
- Bug fixes
Satus storage module:
- Changed structure + removed unnecessary calculations
- Bug fixes