diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 5fb343787..e425eddf6 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -16,10 +16,10 @@ Install pnpm: `npm install -g pnpm` 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: * `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/` - * `pnpm install electron@25.9.0 -D` + * `pnpm install electron@26.3.0 -D` NPM mirror: @@ -30,7 +30,7 @@ NPM mirror: 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 start` diff --git a/.github/CONTRIBUTING_zh_CN.md b/.github/CONTRIBUTING_zh_CN.md index 2134d3a99..1563232f4 100644 --- a/.github/CONTRIBUTING_zh_CN.md +++ b/.github/CONTRIBUTING_zh_CN.md @@ -18,11 +18,11 @@ * 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: * `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/` - * `pnpm install electron@25.9.0 -D` + * `pnpm install electron@26.3.0 -D` NPM 镜像: @@ -32,7 +32,7 @@ NPM 镜像: 桌面端进入 app 文件夹运行: -* `pnpm install electron@25.9.0 -D` +* `pnpm install electron@26.3.0 -D` * `pnpm run dev` * `pnpm run start` diff --git a/app/package.json b/app/package.json index ef7f4dc75..9d6d677b4 100644 --- a/app/package.json +++ b/app/package.json @@ -53,7 +53,7 @@ "clean-webpack-plugin": "^4.0.0", "css-loader": "^6.7.1", "dayjs": "^1.11.5", - "electron": "25.9.0", + "electron": "26.3.0", "electron-builder": "^24.6.3", "encoding": "^0.1.13", "esbuild-loader": "^3.0.1", diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index 3566e0010..4507ac7fa 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: dependencies: '@electron/remote': specifier: ^2.0.11 - version: 2.0.11(electron@25.9.0) + version: 2.0.11(electron@26.3.0) devDependencies: '@types/node': @@ -32,8 +32,8 @@ devDependencies: specifier: ^1.11.5 version: 1.11.5 electron: - specifier: 25.9.0 - version: 25.9.0 + specifier: 26.3.0 + version: 26.3.0 electron-builder: specifier: ^24.6.3 version: 24.6.3 @@ -160,12 +160,12 @@ packages: - supports-color 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==} peerDependencies: electron: '>= 13.0.0' dependencies: - electron: 25.9.0 + electron: 26.3.0 dev: false /@electron/universal@1.3.4: @@ -1669,8 +1669,8 @@ packages: resolution: {integrity: sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==} dev: true - /electron@25.9.0: - resolution: {integrity: sha512-wgscxf2ORHL/8mAQfy7l9rVDG//wrG9RUQndG508kCCMHRq9deFyZ4psOMzySheBRSfGMcFoRFYSlkAeZr8cFg==} + /electron@26.3.0: + resolution: {integrity: sha512-7ZpvSHu+jmqialSvywTZnOQZZGLqlyj+yV5HGDrEzFnMiFaXBRpbByHgoUhaExJ/8t/0xKQjKlMRAY65w+zNZQ==} engines: {node: '>= 12.20.55'} hasBin: true requiresBuild: true diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index 8717d6cd8..cd1d42c1f 100644 --- a/kernel/model/flashcard.go +++ b/kernel/model/flashcard.go @@ -21,6 +21,7 @@ import ( "os" "path/filepath" "sort" + "strconv" "strings" "sync" "time" @@ -390,7 +391,7 @@ func GetNotebookDueFlashcards(boxID string, reviewedCardIDs []string) (ret []*Fl return } - cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs) + cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit) now := time.Now() for _, card := range cards { blockID := card.BlockID() @@ -415,7 +416,26 @@ func GetTreeDueFlashcards(rootID string, reviewedCardIDs []string) (ret []*Flash } _, 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() for _, card := range cards { blockID := card.BlockID() @@ -485,7 +505,7 @@ func getDueFlashcards(deckID string, reviewedCardIDs []string) (ret []*Flashcard return } - cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil) + cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit) now := time.Now() for _, card := range cards { blockID := card.BlockID() @@ -506,7 +526,7 @@ func getDueFlashcards(deckID string, reviewedCardIDs []string) (ret []*Flashcard func getAllDueFlashcards(reviewedCardIDs []string) (ret []*Flashcard, unreviewedCount int) { now := time.Now() for _, deck := range Decks { - cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil) + cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit) unreviewedCount += unreviewedCnt for _, card := range cards { blockID := card.BlockID() @@ -874,7 +894,7 @@ func getDeckIDs() (deckIDs []string) { 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{} dues := deck.Dues() @@ -911,12 +931,12 @@ func getDeckDueCards(deck *riff.Deck, reviewedCardIDs, blockIDs []string) (ret [ fsrsCard := c.Impl().(*fsrs.Card) if fsrs.New == fsrsCard.State { newCount++ - if newCount > Conf.Flashcard.NewCardLimit { + if newCount > newCardLimit { continue } } else { reviewCount++ - if reviewCount > Conf.Flashcard.ReviewCardLimit { + if reviewCount > reviewCardLimit { continue } }