Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2023-10-08 23:18:07 +08:00
commit aa5acf39cf
5 changed files with 41 additions and 21 deletions

View File

@ -16,10 +16,10 @@ Install pnpm: `npm install -g pnpm`
Set the Electron mirror environment variable and install Electron: Set the Electron mirror environment variable and install Electron:
* macOS/Linux: `ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@25.9.0 -D` * macOS/Linux: `ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@26.3.0 -D`
* Windows: * Windows:
* `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/` * `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/`
* `pnpm install electron@25.9.0 -D` * `pnpm install electron@26.3.0 -D`
NPM mirror: NPM mirror:
@ -30,7 +30,7 @@ NPM mirror:
On the desktop, go to the app folder to run: On the desktop, go to the app folder to run:
* `pnpm install electron@25.9.0 -D` * `pnpm install electron@26.3.0 -D`
* `pnpm run dev` * `pnpm run dev`
* `pnpm run start` * `pnpm run start`

View File

@ -18,11 +18,11 @@
* macOS/Linux: * macOS/Linux:
``` ```
ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@25.9.0 -D ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@26.3.0 -D
``` ```
* Windows: * Windows:
* `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/` * `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/`
* `pnpm install electron@25.9.0 -D` * `pnpm install electron@26.3.0 -D`
NPM 镜像: NPM 镜像:
@ -32,7 +32,7 @@ NPM 镜像:
桌面端进入 app 文件夹运行: 桌面端进入 app 文件夹运行:
* `pnpm install electron@25.9.0 -D` * `pnpm install electron@26.3.0 -D`
* `pnpm run dev` * `pnpm run dev`
* `pnpm run start` * `pnpm run start`

View File

@ -53,7 +53,7 @@
"clean-webpack-plugin": "^4.0.0", "clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.7.1", "css-loader": "^6.7.1",
"dayjs": "^1.11.5", "dayjs": "^1.11.5",
"electron": "25.9.0", "electron": "26.3.0",
"electron-builder": "^24.6.3", "electron-builder": "^24.6.3",
"encoding": "^0.1.13", "encoding": "^0.1.13",
"esbuild-loader": "^3.0.1", "esbuild-loader": "^3.0.1",

View File

@ -7,7 +7,7 @@ settings:
dependencies: dependencies:
'@electron/remote': '@electron/remote':
specifier: ^2.0.11 specifier: ^2.0.11
version: 2.0.11(electron@25.9.0) version: 2.0.11(electron@26.3.0)
devDependencies: devDependencies:
'@types/node': '@types/node':
@ -32,8 +32,8 @@ devDependencies:
specifier: ^1.11.5 specifier: ^1.11.5
version: 1.11.5 version: 1.11.5
electron: electron:
specifier: 25.9.0 specifier: 26.3.0
version: 25.9.0 version: 26.3.0
electron-builder: electron-builder:
specifier: ^24.6.3 specifier: ^24.6.3
version: 24.6.3 version: 24.6.3
@ -160,12 +160,12 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@electron/remote@2.0.11(electron@25.9.0): /@electron/remote@2.0.11(electron@26.3.0):
resolution: {integrity: sha512-PYEs7W3GrQNuhgiMHjFEvL5MbAL6C7m1AwSAHGqC+xc33IdP7rcGtJSdTP2eg1ssyB3oI00KwTsiSlsQbAoXpA==} resolution: {integrity: sha512-PYEs7W3GrQNuhgiMHjFEvL5MbAL6C7m1AwSAHGqC+xc33IdP7rcGtJSdTP2eg1ssyB3oI00KwTsiSlsQbAoXpA==}
peerDependencies: peerDependencies:
electron: '>= 13.0.0' electron: '>= 13.0.0'
dependencies: dependencies:
electron: 25.9.0 electron: 26.3.0
dev: false dev: false
/@electron/universal@1.3.4: /@electron/universal@1.3.4:
@ -1669,8 +1669,8 @@ packages:
resolution: {integrity: sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==} resolution: {integrity: sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==}
dev: true dev: true
/electron@25.9.0: /electron@26.3.0:
resolution: {integrity: sha512-wgscxf2ORHL/8mAQfy7l9rVDG//wrG9RUQndG508kCCMHRq9deFyZ4psOMzySheBRSfGMcFoRFYSlkAeZr8cFg==} resolution: {integrity: sha512-7ZpvSHu+jmqialSvywTZnOQZZGLqlyj+yV5HGDrEzFnMiFaXBRpbByHgoUhaExJ/8t/0xKQjKlMRAY65w+zNZQ==}
engines: {node: '>= 12.20.55'} engines: {node: '>= 12.20.55'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true

View File

@ -21,6 +21,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"sort" "sort"
"strconv"
"strings" "strings"
"sync" "sync"
"time" "time"
@ -390,7 +391,7 @@ func GetNotebookDueFlashcards(boxID string, reviewedCardIDs []string) (ret []*Fl
return return
} }
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs) cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit)
now := time.Now() now := time.Now()
for _, card := range cards { for _, card := range cards {
blockID := card.BlockID() blockID := card.BlockID()
@ -415,7 +416,26 @@ func GetTreeDueFlashcards(rootID string, reviewedCardIDs []string) (ret []*Flash
} }
_, treeBlockIDs := getTreeSubTreeChildBlocks(rootID) _, treeBlockIDs := getTreeSubTreeChildBlocks(rootID)
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs) newCardLimit := Conf.Flashcard.NewCardLimit
reviewCardLimit := Conf.Flashcard.ReviewCardLimit
// 文档级新卡/复习卡上限控制 Document-level new card/review card limit control https://github.com/siyuan-note/siyuan/issues/9365
ial := GetBlockAttrs(rootID)
if newCardLimitStr := ial["custom-riff-new-card-limit"]; "" != newCardLimitStr {
var convertErr error
newCardLimit, convertErr = strconv.Atoi(newCardLimitStr)
if nil != convertErr {
logging.LogWarnf("invalid new card limit [%s]: %s", newCardLimitStr, convertErr)
}
}
if reviewCardLimitStr := ial["custom-riff-review-card-limit"]; "" != reviewCardLimitStr {
var convertErr error
reviewCardLimit, convertErr = strconv.Atoi(reviewCardLimitStr)
if nil != convertErr {
logging.LogWarnf("invalid review card limit [%s]: %s", reviewCardLimitStr, convertErr)
}
}
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs, newCardLimit, reviewCardLimit)
now := time.Now() now := time.Now()
for _, card := range cards { for _, card := range cards {
blockID := card.BlockID() blockID := card.BlockID()
@ -485,7 +505,7 @@ func getDueFlashcards(deckID string, reviewedCardIDs []string) (ret []*Flashcard
return return
} }
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil) cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit)
now := time.Now() now := time.Now()
for _, card := range cards { for _, card := range cards {
blockID := card.BlockID() blockID := card.BlockID()
@ -506,7 +526,7 @@ func getDueFlashcards(deckID string, reviewedCardIDs []string) (ret []*Flashcard
func getAllDueFlashcards(reviewedCardIDs []string) (ret []*Flashcard, unreviewedCount int) { func getAllDueFlashcards(reviewedCardIDs []string) (ret []*Flashcard, unreviewedCount int) {
now := time.Now() now := time.Now()
for _, deck := range Decks { for _, deck := range Decks {
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil) cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit)
unreviewedCount += unreviewedCnt unreviewedCount += unreviewedCnt
for _, card := range cards { for _, card := range cards {
blockID := card.BlockID() blockID := card.BlockID()
@ -874,7 +894,7 @@ func getDeckIDs() (deckIDs []string) {
return return
} }
func getDeckDueCards(deck *riff.Deck, reviewedCardIDs, blockIDs []string) (ret []riff.Card, unreviewedCount int) { func getDeckDueCards(deck *riff.Deck, reviewedCardIDs, blockIDs []string, newCardLimit, reviewCardLimit int) (ret []riff.Card, unreviewedCount int) {
ret = []riff.Card{} ret = []riff.Card{}
dues := deck.Dues() dues := deck.Dues()
@ -911,12 +931,12 @@ func getDeckDueCards(deck *riff.Deck, reviewedCardIDs, blockIDs []string) (ret [
fsrsCard := c.Impl().(*fsrs.Card) fsrsCard := c.Impl().(*fsrs.Card)
if fsrs.New == fsrsCard.State { if fsrs.New == fsrsCard.State {
newCount++ newCount++
if newCount > Conf.Flashcard.NewCardLimit { if newCount > newCardLimit {
continue continue
} }
} else { } else {
reviewCount++ reviewCount++
if reviewCount > Conf.Flashcard.ReviewCardLimit { if reviewCount > reviewCardLimit {
continue continue
} }
} }