Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
9a8742b
feat: update parser for Tasks
Quorafind Jun 8, 2025
c6ff1af
Update
fastrick Jun 7, 2025
a220896
Complete translate
fastrick Jun 7, 2025
89ca609
chore: migrate to new task type
Quorafind Jun 8, 2025
f879d71
chore: main type migrations
Quorafind Jun 8, 2025
e085369
chore: other types migrations
Quorafind Jun 8, 2025
38f8267
refactor: update task parser
Quorafind Jun 8, 2025
31ee62b
refactor: update project and context configuuration
Quorafind Jun 8, 2025
b66ae10
refactor: update project and context configuuration
Quorafind Jun 8, 2025
5dc670e
fix: parser issue
Quorafind Jun 8, 2025
a508a98
feat: support folder structure project
Quorafind Jun 8, 2025
6b0d84f
feat: support ics
Quorafind Jun 9, 2025
89287b0
fix: ics manager issue
Quorafind Jun 9, 2025
c1ce4e0
chore: update test
Quorafind Jun 9, 2025
52d87f0
chore: update test
Quorafind Jun 9, 2025
22d7fd6
improve: better performance for large events
Quorafind Jun 9, 2025
a514fe8
chore: remove unsed file
Quorafind Jun 9, 2025
0051ce4
feat: support complete someting
Quorafind Jun 9, 2025
dd6a16f
fix: test issue
Quorafind Jun 9, 2025
1b8879b
chore: update docs
Quorafind Jun 9, 2025
5396afb
chore: update workflow test
Quorafind Jun 9, 2025
669be93
feat: support better workflow
Quorafind Jun 10, 2025
4ec9f0a
feat: better workflow management
Quorafind Jun 11, 2025
afd27d1
feat: better workflow management
Quorafind Jun 11, 2025
ab5174e
fix: move to next stage issue
Quorafind Jun 11, 2025
2ebec3c
feat: support better controller
Quorafind Jun 11, 2025
109ac54
fix: cannot complete current substage
Quorafind Jun 11, 2025
4ec2d76
feat: support better workflow
Quorafind Jun 11, 2025
f84ecce
improve: batter handle when there is no workflow
Quorafind Jun 13, 2025
11422f9
chore: update icon in Task Genius
Quorafind Jun 16, 2025
382ee56
refactor: update ics parser performance
Quorafind Jun 16, 2025
37db900
fix: handle better daily habit created day
Quorafind Jun 16, 2025
8ad69e4
feat: support hide weekends in both forecast or events view
Quorafind Jun 16, 2025
34238ce
chore: remove unused fitles
Quorafind Jun 16, 2025
4d29fb9
styles: update style of settingtab
Quorafind Jun 16, 2025
c4b5cf7
styles: refresh setting page style
Quorafind Jun 16, 2025
334c268
feat: better settings tab of management
Quorafind Jun 16, 2025
557f9a6
chore: update version
Quorafind Jun 16, 2025
e383f4b
Merge branch 'master' into feat/9-0-0
Quorafind Jun 16, 2025
489f7d8
chore: update workflow
Quorafind Jun 16, 2025
399f176
[release-beta] feat: support ics and so on
Quorafind Jun 16, 2025
810b804
fix: beta-release workflow branch config
Quorafind Jun 16, 2025
91a5229
feat: update workflow config [release-beta]
Quorafind Jun 16, 2025
d91474d
chore: remove unused comment in workflow
Quorafind Jun 16, 2025
179b921
chore: update readme
Quorafind Jun 16, 2025
a6ae42f
chore: bump version [release-beta]
Quorafind Jun 16, 2025
de951e6
feat: support capture idea to daily note
Quorafind Jun 16, 2025
2fc1a28
chore: update discord icon
Quorafind Jun 16, 2025
bfbc840
chore: update workflow [release-beta]
Quorafind Jun 16, 2025
593f556
fix: cannot update metadata of task when using inline editor in forec…
Quorafind Jun 16, 2025
9b127ed
chore: update workflow
Quorafind Jun 16, 2025
cd0b4a7
chore: bump version [release-beta]
Quorafind Jun 16, 2025
a335b6f
chore: bump version [release-beta]
Quorafind Jun 16, 2025
444b222
chore: bump version [release-beta]
Quorafind Jun 16, 2025
ac9f467
chore: release [release-beta]
Quorafind Jun 16, 2025
398e012
chore: update workflow
Quorafind Jun 17, 2025
6ac712d
revert: remove unused system from taskparsing service
Quorafind Jun 17, 2025
31be512
imporve: support configure project related settings in the project se…
Quorafind Jun 17, 2025
c5b1885
chore: update test
Quorafind Jun 17, 2025
7dde713
fix: task not inherited from project data
Quorafind Jun 17, 2025
591c649
chore: bump beta version [release-beta]
Quorafind Jun 17, 2025
b262a6b
chore: release beta version [release-beta]
Quorafind Jun 17, 2025
e242f28
fix: cannot parse dataview key correctly
Quorafind Jun 17, 2025
15e886a
chore: release beta version [release-beta]
Quorafind Jun 17, 2025
463304e
chore: update readme
Quorafind Jun 17, 2025
bdea43c
chore: add icons that designed by @jsmorabito
Quorafind Jun 17, 2025
987aab1
chore: bump beta version [release-beta]
Quorafind Jun 17, 2025
833b258
chore: update workflow
Quorafind Jun 17, 2025
f96b3e5
feat: support basic file index
Quorafind Jun 17, 2025
8618c49
feat: support file task
Quorafind Jun 17, 2025
6b118e5
improve: update config for files
Quorafind Jun 17, 2025
3e17b0f
improve: prevent inheriting metadata from project
Quorafind Jun 17, 2025
c509b7b
chore: bump beta version [release-beta]
Quorafind Jun 17, 2025
8f99154
chore: bump beta version [release-beta]
Quorafind Jun 17, 2025
b0b58ed
chore: update workflow
Quorafind Jun 18, 2025
42f624c
chore: update settings
Quorafind Jun 18, 2025
eff74f2
feat: support canvas indexer
Quorafind Jun 18, 2025
b6d4c50
chore: remove unused files
Quorafind Jun 18, 2025
0094088
feat: support canvas indexer
Quorafind Jun 18, 2025
7294753
chore: remove unused files
Quorafind Jun 18, 2025
efb84a0
feat: support timeline sidebar
Quorafind Jun 18, 2025
72bfbd9
chore: fix conflict
Quorafind Jun 18, 2025
4aed1b2
feat: suppor preview quick capture target
Quorafind Jun 18, 2025
d02eade
fix: not hide completed task in sidebar view of task genius
Quorafind Jun 18, 2025
94338a9
chore: fix conflit
Quorafind Jun 18, 2025
aab44e8
chore: fix conflit
Quorafind Jun 18, 2025
81bc9c8
chore: update settings
Quorafind Jun 18, 2025
5c7be92
feat: support timeline sidebar
Quorafind Jun 18, 2025
bd8fdb5
chore: fix conflict
Quorafind Jun 18, 2025
212c327
feat: suppor preview quick capture target
Quorafind Jun 18, 2025
e1c978e
fix: not hide completed task in sidebar view of task genius
Quorafind Jun 18, 2025
80bf0a5
chore: fix conflit
Quorafind Jun 18, 2025
c095100
chore: fix conflit
Quorafind Jun 18, 2025
544dcdf
chore: update index
Quorafind Jun 18, 2025
6ae1ab1
chore: update index
Quorafind Jun 18, 2025
533d8a1
chore: hide ics badge event in timeline
Quorafind Jun 18, 2025
c3eb48d
chore: bump beta version [release-beta]
Quorafind Jun 18, 2025
abb3dff
chore: update index
Quorafind Jun 18, 2025
faf14d5
chore: update index
Quorafind Jun 18, 2025
87cb9c7
chore: hide ics badge event in timeline
Quorafind Jun 18, 2025
a350255
chore: bump beta version [release-beta]
Quorafind Jun 18, 2025
f8c1cc5
chore: fix conflit
Quorafind Jun 18, 2025
476cd5e
Merge branch 'feat/file-index' into feat/timeline-sidebar
Quorafind Jun 18, 2025
fc679ac
Merge pull request #288 from Quorafind/feat/timeline-sidebar
Quorafind Jun 18, 2025
4d3e44a
chore: bump beta version [release-beta]
Quorafind Jun 18, 2025
bf3f18d
chore: bump beta version [release-beta]
Quorafind Jun 18, 2025
217ef7b
chore: update workflow
Quorafind Jun 18, 2025
eb3504e
chore: fix conflict
Quorafind Jun 18, 2025
ac9107a
chore: update translations
Quorafind Jun 18, 2025
364772c
chore: update translations
Quorafind Jun 18, 2025
3500fc2
chore: remove language file for size of bundle
Quorafind Jun 18, 2025
a97aa50
chore: bump beta version [release-beta]
Quorafind Jun 18, 2025
7466df7
feat: matrix
Quorafind Jun 18, 2025
f451477
Merge pull request #291 from Quorafind/feat/matrix
Quorafind Jun 18, 2025
210703d
feat: basic martix supported
Quorafind Jun 19, 2025
43cfa68
fix: wrong behavior of move card to other matrix
Quorafind Jun 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
259 changes: 190 additions & 69 deletions .github/workflows/beta-release.yml
Original file line number Diff line number Diff line change
@@ -1,81 +1,202 @@
# .github/workflows/beta-release.yml

name: 'Automatic Beta Release on PR Commit'
name: "Automatic Beta Release on PR Commit"

on:
pull_request:
# Trigger on PR creation or when new commits are pushed
types: [opened, synchronize]
# IMPORTANT: Change 'main' to your default branch if it's different (e.g., 'master')
branches:
- main
pull_request:
# Trigger on PR creation or when new commits are pushed
types: [opened, synchronize]
# IMPORTANT: Change 'main' to your default branch if it's different (e.g., 'master')
branches:
- master
push:
# Only trigger on push to specific branches (more secure)
branches:
- master
- "feat/**"
- "release/**"

env:
PLUGIN_NAME: obsidian-task-genius
PLUGIN_NAME: obsidian-task-genius

# Grant permissions for the action to create a release
permissions:
contents: write
pull-requests: read
contents: write
pull-requests: read

jobs:
build-and-release-beta:
# This job only runs if the latest commit message on the PR contains '[release-beta]'
if: contains(github.event.head_commit.message, '[release-beta]')
runs-on: ubuntu-latest
steps:
- name: 'Checkout code'
uses: actions/checkout@v4

- name: 'Use Node.js 22'
uses: actions/setup-node@v4
with:
node-version: 22

- name: 'Install pnpm'
uses: pnpm/action-setup@v4
with:
version: 9

- name: 'Install dependencies'
run: pnpm install

# --- New Step to read version ---
- name: 'Get version from package.json'
id: get_version
run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV

- name: 'Build and package plugin'
id: build
run: |
pnpm run build
# Create a directory and copy files for zipping
mkdir ${{ env.PLUGIN_NAME }}
cp main.js manifest.json styles.css ${{ env.PLUGIN_NAME }}/
# Create the zip file for the release, using the version from package.json
zip -r ${{ env.PLUGIN_NAME }}-${{ env.VERSION }}.zip ./${{ env.PLUGIN_NAME }}

- name: 'Create Beta Pre-Release'
uses: softprops/action-gh-release@v2
with:
# Use the body of the PR for the release notes
body: |
Automated beta release for PR #${{ github.event.pull_request.number }}.
Commit: `${{ github.sha }}`

${{ github.event.pull_request.body }}

# Mark this as a pre-release, so it doesn't count as a latest official release
prerelease: true

# Use the version from package.json for the tag and release name
tag_name: "v${{ env.VERSION }}"
name: "Beta Release v${{ env.VERSION }}"

# Upload all required assets in one step, using the versioned zip file name
files: |
${{ env.PLUGIN_NAME }}-${{ env.VERSION }}.zip
main.js
manifest.json
styles.css
build-and-release-beta:
if: |
contains(github.event.head_commit.message, '[release-beta]') && (
(github.event_name == 'push' && github.actor == github.repository_owner) ||
(github.event_name == 'pull_request' && github.event.pull_request.author_association == 'OWNER')
)
runs-on: ubuntu-latest
steps:
- name: "Checkout code"
uses: actions/checkout@v4
with:
fetch-depth: 0

# Check if any recent commits contain [release-beta] tag
- name: "Check for release-beta tag in commits"
id: check_release_tag
run: |
SHOULD_RELEASE="false"

# Security check: only allow releases from the main repository
REPO_OWNER="${{ github.repository_owner }}"
REPO_NAME="${{ github.repository }}"
echo "Repository: $REPO_NAME, Owner: $REPO_OWNER"

# Add your expected repository info here for extra security
# EXPECTED_REPO="your-username/your-repo-name"
# if [ "$REPO_NAME" != "$EXPECTED_REPO" ]; then
# echo "Release not allowed from repository: $REPO_NAME"
# echo "SHOULD_RELEASE=false" >> $GITHUB_OUTPUT
# exit 0
# fi

if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "Checking PR commits for [release-beta] tag..."
# Check the latest commit in the PR
LATEST_COMMIT_MSG=$(git log -1 --pretty=format:"%s")
echo "Latest commit message: $LATEST_COMMIT_MSG"

if echo "$LATEST_COMMIT_MSG" | grep -q "\[release-beta\]"; then
echo "Found [release-beta] tag in latest commit"
SHOULD_RELEASE="true"
fi

# Check user permissions (more restrictive)
USER_ASSOCIATION="${{ github.event.pull_request.author_association }}"
PR_AUTHOR="${{ github.event.pull_request.user.login }}"
echo "PR author: $PR_AUTHOR, Association: $USER_ASSOCIATION"

# Only allow OWNER and COLLABORATOR to trigger releases
if [ "$USER_ASSOCIATION" != "OWNER" ] && [ "$USER_ASSOCIATION" != "COLLABORATOR" ]; then
echo "User association '$USER_ASSOCIATION' is not authorized for releases"
SHOULD_RELEASE="false"
fi

# Additional check: only allow specific users (optional - uncomment and customize)
# ALLOWED_USERS="Quorafind,other-username"
# if ! echo "$ALLOWED_USERS" | grep -q "$PR_AUTHOR"; then
# echo "User '$PR_AUTHOR' is not in allowed users list"
# SHOULD_RELEASE="false"
# fi

elif [ "${{ github.event_name }}" = "push" ]; then
echo "Checking push commit for [release-beta] tag..."
COMMIT_MSG="${{ github.event.head_commit.message }}"
PUSH_AUTHOR="${{ github.event.head_commit.author.username }}"
echo "Commit message: $COMMIT_MSG"
echo "Push author: $PUSH_AUTHOR"

if echo "$COMMIT_MSG" | grep -q "\[release-beta\]"; then
echo "Found [release-beta] tag in push commit"

# Check if pusher is authorized (optional - uncomment and customize)
# ALLOWED_PUSH_USERS="Quorafind,other-username"
# if ! echo "$ALLOWED_PUSH_USERS" | grep -q "$PUSH_AUTHOR"; then
# echo "User '$PUSH_AUTHOR' is not authorized to trigger releases via push"
# SHOULD_RELEASE="false"
# else
# SHOULD_RELEASE="true"
# fi

SHOULD_RELEASE="true"
fi
fi

echo "SHOULD_RELEASE=$SHOULD_RELEASE" >> $GITHUB_OUTPUT
echo "Should release: $SHOULD_RELEASE"

- name: "Use Node.js 22"
if: steps.check_release_tag.outputs.SHOULD_RELEASE == 'true'
uses: actions/setup-node@v4
with:
node-version: 22

- name: "Install pnpm"
if: steps.check_release_tag.outputs.SHOULD_RELEASE == 'true'
uses: pnpm/action-setup@v4
with:
version: 9

- name: "Install dependencies"
if: steps.check_release_tag.outputs.SHOULD_RELEASE == 'true'
run: |
# Install jq for JSON parsing
sudo apt-get update && sudo apt-get install -y jq
pnpm install

- name: "Get version from package.json"
if: steps.check_release_tag.outputs.SHOULD_RELEASE == 'true'
id: get_version
run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV

- name: "Get commit messages since last release"
if: steps.check_release_tag.outputs.SHOULD_RELEASE == 'true'
id: get_commits
run: |
# Get all releases (including pre-releases) and find the most recent one
echo "Fetching all releases from GitHub API..."
LAST_RELEASE=$(curl -s "https://api.github.com/repos/${{ github.repository }}/releases?per_page=100" | jq -r '.[0].tag_name // empty' 2>/dev/null || echo "")

# If no release found via API, try to get the most recent tag with proper semantic version sorting
if [ -z "$LAST_RELEASE" ]; then
echo "No release found via API, looking for latest tag..."
# Get all tags and sort them properly using semantic versioning
LAST_RELEASE=$(git tag -l | grep -E '^v?[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n 1 2>/dev/null || echo "")
fi

if [ -z "$LAST_RELEASE" ]; then
echo "No previous release or tag found, getting all commits from the beginning"
COMMIT_MESSAGES=$(git log --pretty=format:"- %s (%an) [%h](https://github.com/${{ github.repository }}/commit/%H)" --no-merges)
LAST_RELEASE="(initial)"
else
echo "Getting commits since last release: $LAST_RELEASE"
RELEASE_COMMIT=$(git rev-list -n 1 $LAST_RELEASE 2>/dev/null || git rev-list -n 1 HEAD~10)
COMMIT_MESSAGES=$(git log ${RELEASE_COMMIT}..HEAD --pretty=format:"- %s (%an) [%h](https://github.com/${{ github.repository }}/commit/%H)" --no-merges)
fi

if [ -z "$COMMIT_MESSAGES" ]; then
COMMIT_MESSAGES="- No new commits since last release"
fi
echo "COMMIT_MESSAGES<<EOF" >> $GITHUB_ENV
echo "$COMMIT_MESSAGES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "LAST_RELEASE=$LAST_RELEASE" >> $GITHUB_ENV

- name: "Build and package plugin"
if: steps.check_release_tag.outputs.SHOULD_RELEASE == 'true'
id: build
run: |
pnpm run build
mkdir ${{ env.PLUGIN_NAME }}
cp main.js manifest.json styles.css ${{ env.PLUGIN_NAME }}/
zip -r ${{ env.PLUGIN_NAME }}-${{ env.VERSION }}.zip ./${{ env.PLUGIN_NAME }}

- name: "Create Beta Pre-Release"
if: steps.check_release_tag.outputs.SHOULD_RELEASE == 'true'
uses: softprops/action-gh-release@v2
with:
body: |
${{ github.event_name == 'pull_request' && format('🚀 Automated beta release for PR #{0}', github.event.pull_request.number) || '🚀 Automated beta release' }}

## 📝 Changes since last release${{ env.LAST_RELEASE && format(' ({0})', env.LAST_RELEASE) || '' }}:

${{ env.COMMIT_MESSAGES }}

---

${{ github.event_name == 'pull_request' && github.event.pull_request.body || '' }}
prerelease: true
tag_name: "v${{ env.VERSION }}"
name: "Beta Release v${{ env.VERSION }}"
files: |
${{ env.PLUGIN_NAME }}-${{ env.VERSION }}.zip
main.js
manifest.json
styles.css
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,7 @@ package-lock.json
scripts
translation-templates
._data.json

styles.css

CLAUDE.md
Loading