Commit 67a8d94a authored by ransome1's avatar ransome1
Browse files

Merge branch 'develop'

parent 632e237b
{
"env": {
"browser": true,
"es2021": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"rules": {
}
}
name: Code scan, build & release
on: push
jobs:
njsscan:
name: njsscan
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
- name: nodejsscan scan
id: njsscan
uses: ajinabraham/njsscan-action@master
with:
args: '. --sarif --output results.sarif || true'
- name: Upload njsscan report
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: results.sarif
codeql:
needs: njsscan
name: CodeQL
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
macos:
needs: codeql
name: MacOS (Build & Release)
runs-on: ${{ matrix.os }}
strategy:
......@@ -57,7 +21,6 @@ jobs:
github_token: ${{ secrets.github_token }}
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
windows:
needs: codeql
name: Windows (Build & Release)
runs-on: ${{ matrix.os }}
strategy:
......@@ -80,7 +43,6 @@ jobs:
github_token: ${{ secrets.github_token }}
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
linux:
needs: codeql
name: Linux (Build & Release)
runs-on: ${{ matrix.os }}
strategy:
......@@ -99,8 +61,42 @@ jobs:
max_attempts: 3
github_token: ${{ secrets.github_token }}
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
njsscan:
name: njsscan
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
- name: nodejsscan scan
id: njsscan
uses: ajinabraham/njsscan-action@master
with:
args: '. --sarif --output results.sarif || true'
- name: Upload njsscan report
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: results.sarif
codeql:
needs: njsscan
name: CodeQL
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
mirror:
needs: [windows, macos, linux]
needs: codeql
name: Mirror code to opencode.net
runs-on: ubuntu-latest
steps:
......
......@@ -7,6 +7,7 @@ dist/
snap/local/
*.py
*.ini
*.map
.gitignore
.git/
*.db:encryptable
......@@ -20,3 +21,4 @@ assets/icons/bak
squashfs-root/
test/
src/__tests__
appx/
......@@ -61,7 +61,7 @@ You can download sleek for Windows, MacOS and Linux from
### Build sleek from source code
1. Setup <a href="https://docs.github.com/en/github/getting-started-with-github/set-up-git" target="blank">Git</a>, <a href="https://nodejs.org/" target="blank">node.js</a> and <a href="https://yarnpkg.com/getting-started" target="blank">yarn</a>.
2. Clone sleek `git clone https://github.com/ransome1/sleek.git` and cd into sleeks directory
3. Install dependencies `yarn install`
3. Install dependencies `yarn install --production`
4. Build sleek `yarn build:windows` or `yarn build:linux` or `yarn build:macos`
### sleeks Roadmap 2021
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1000"
height="1000"
viewBox="0 0 264.58333 264.58334"
version="1.1"
id="svg8"
inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
sodipodi:docname="20210503_sleek_tray.svg"
inkscape:export-filename="/home/ransome/Development/sleek/assets/icons/tray/tray@4x.png"
inkscape:export-xdpi="6.1399999"
inkscape:export-ydpi="6.1399999">
<defs
id="defs2">
<linearGradient
id="linearGradient943"
osb:paint="solid">
<stop
style="stop-color:#075a44;stop-opacity:1;"
offset="0"
id="stop941" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="sleek_gradiant">
<stop
style="stop-color:#075a44;stop-opacity:1"
offset="0"
id="stop855" />
<stop
style="stop-color:#bc30ba;stop-opacity:1"
offset="1"
id="stop857" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#sleek_gradiant"
id="linearGradient863"
gradientUnits="userSpaceOnUse"
x1="20.609758"
y1="-35.978325"
x2="-376.78461"
y2="-271.12573" />
<linearGradient
inkscape:collect="always"
xlink:href="#sleek_gradiant"
id="linearGradient913"
x1="-264.05746"
y1="-60.426601"
x2="-5.0754561"
y2="-201.82214"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="0.69044441"
inkscape:cx="473.99304"
inkscape:cy="542.20488"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="1874"
inkscape:window-height="1051"
inkscape:window-x="46"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true"
showborder="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="outer gradiant">
<rect
style="opacity:1;fill:url(#linearGradient863);fill-opacity:1;stroke:none;stroke-width:0.28639;stroke-opacity:1"
id="rect184"
width="264.29694"
height="264.29694"
x="-264.44012"
y="-264.44012"
inkscape:export-filename="/home/ransome/development/sleek/assets/icons/300x300.png"
inkscape:export-xdpi="28.799999"
inkscape:export-ydpi="28.799999"
transform="scale(-1)"
ry="132.14847" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="inner gradiant">
<rect
style="opacity:0.531869;mix-blend-mode:normal;fill:url(#linearGradient913);fill-opacity:1;stroke:none;stroke-width:0.28639;stroke-opacity:1"
id="rect184-3"
width="195.59337"
height="195.59337"
x="-230.18045"
y="-231.50604"
inkscape:export-filename="/home/ransome/development/sleek/assets/icons/300x300.png"
inkscape:export-xdpi="28.799999"
inkscape:export-ydpi="28.799999"
transform="scale(-1)"
ry="97.796684"
rx="97.796684" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="sleek (text)"
style="display:none"
sodipodi:insensitive="true">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:90.07px;line-height:90%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Semi-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-4.50352px;word-spacing:0px;stroke-width:0.264583"
x="130.22496"
y="165.18904"
id="text1012-5"
inkscape:export-filename="/home/ransome/development/sleek/assets/icons/300x300.png"
inkscape:export-xdpi="28.799999"
inkscape:export-ydpi="28.799999"><tspan
x="128.72379"
y="165.18904"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:90.07px;font-family:FreeSans;-inkscape-font-specification:'FreeSans Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:-3.00234px;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
dx="0 0 0 0 0 0 0 0 0 0 0"
dy="0 0 0 0 0 0 0 0 0 0 0"
rotate="0 0 0 0 0 0 0 0 0 0 0 0 0 0"
sodipodi:role="line"
id="tspan1178-6">sleek</tspan></text>
</g>
</svg>
(A) Thank Mom for the meatballs @phone
x 2021-04-07 (B) Schedule Goodwill pickup +GarageSale @phone
Eskimo pies @GroceryStore
Really gotta call Mom \this task has no priority\ (A) @phone @someday
(b) Get back to the boss \this task has no priority\
(B) ->Submit TPS report \this task has no priority\
(A) Call Mom 2011-03-02 \this task has no creation date\ due:2021-04-09
(A) Call Mom \multiple projects and contexts\ +Family +PeaceLoveAndHappiness @iphone @phone
Email SoAndSo at soandso@example.com \this task has no context\
Learn how to add 2+2 \this task has no project\
x 2011-03-03 Call Mom \this task is complete\
xylophone lesson \this task is incomplete\
Make resolutions \this task is incomplete\
(A) x Find ticket prices \this task is incomplete\
This task has a due date in it due:2021-07-01
This task has a threshold date in it t:2021-12-15
(C) This task is a hidden task h:1
(A) 2021-02-28 A task list with all possible task types \comments\ due:2021-03-30 +todotxt @test
daily task revisions within Sleek \Daily recurrence\ rec:d
weekly task revisions within Sleek \Weekly Recurrence\ rec:w
monthly task revisions within Sleek \Monthly recurrence\ rec:m
annual task revisions within Sleek \annual recurrence\ rec:y
2021-03-22 This is a multi line taskcreated within Sleek due:2021-05-01 +todotxt @test
2021-04-03 Todo with due date tomorrow due:2021-04-06
2021-04-05 monthly task revisions within Sleek \Monthly recurrence\ due:2021-05-05 rec:m
(A) 2021-04-07 Todo due today due:2021-04-07
\ No newline at end of file
{
"name": "sleek",
"productName": "sleek",
"version": "1.0.2",
"version": "1.0.3",
"description": "Todo app based on todo.txt for Linux, Windows and MacOS, free and open-source",
"synopsis": "Todo app based on todo.txt for Linux, Windows and MacOS, free and open-source",
"category": "ProjectManagement",
......@@ -31,7 +31,6 @@
"!**.md",
"!**.gitignore",
"!yarn.lock",
"!assets/icons/bak${/*}",
"!assets/screenshots${/*}",
"!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme,test,__tests__,tests,powered-test,example,examples,*.d.ts}",
"!**/node_modules/.bin",
......@@ -52,7 +51,10 @@
]
},
"mac": {
"target": "dmg",
"target": {
"target": "default",
"arch": "universal"
},
"icon": "assets/icons/sleek.icns",
"category": "public.app-category.productivity"
},
......@@ -95,27 +97,31 @@
"build:appx": "electron-builder -w appx --publish never",
"build:pacman": "electron-builder -l pacman --publish never",
"build:appimage": "electron-builder -l AppImage --publish never",
"pack": "electron-builder --dir",
"lint": "eslint --ext .js, src --ext .mjs, src",
"jest": "jest",
"mocha": "mocha",
"pack": "electron-builder --dir",
"css-build": "node-sass src/scss/ -o src/css/",
"css-watch": "node-sass src/scss/ -wo src/css/",
"start": "yarn css-build & yarn css-watch & electron ."
"sass": "sass -w src/scss/:src/css/",
"start": "yarn sass & electron ."
},
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.3",
"bulma": "^0.9.2",
"i18next": "^20.2.2",
"i18next-browser-languagedetector": "^6.1.0",
"i18next-fs-backend": "^1.1.1"
"i18next-fs-backend": "^1.1.1",
"jstodotxt": "^0.9.0",
"marked": "^2.0.3",
"vanillajs-datepicker": "^1.1.4"
},
"devDependencies": {
"electron": "^12.0.4",
"electron-builder": "^22.10.5",
"node-sass": "^5.0.0",
"spectron": "^14.0.0",
"chai": "^4.3.4",
"electron": "^12.0.5",
"electron-builder": "22.10.5",
"eslint": "^7.25.0",
"jest": "^26.6.3",
"jest-electron": "^0.1.11",
"mocha": "^8.3.2",
"chai": "^4.3.4"
"sass": "^1.32.12",
"spectron": "^14.0.0"
}
}
name: sleek
base: core18
version: '1.0.2'
version: '1.0.3'
summary: Todo app based on the todo.txt format for Linux, free and open-source
description: |
sleek is an open-source todo app that makes use of the todo.txt format. sleeks GUI is modern and simple but still offers a decent set of functions which help users getting things done. sleek is available as a client for Windows, MacOS and Linux.
......
const fs = require("fs");
const path = require("path");
const detectionOptions = {
order: ["querystring", "navigator"],
lookupQuerystring: "lng"
}
const i18next = require("i18next");
const i18nextBackend = require("i18next-fs-backend");
const LanguageDetector = require("i18next-browser-languagedetector");
const i18nextOptions = {
initImmediate: false,
fallbackLng: "en",
detection: detectionOptions,
detection: {
order: ['localStorage', 'querystring', 'cookie', 'sessionStorage', 'navigator', 'htmlTag', 'path', 'subdomain']
},
namespace: "translation",
defaultNS: "translation",
supportedLngs: ["de", "en", "it", "es", "fr"],
......@@ -23,4 +24,11 @@ const i18nextOptions = {
},
saveMissing: true
};
module.exports = i18nextOptions;
i18next
.use(LanguageDetector)
.use(i18nextBackend)
.init(i18nextOptions);
i18next.changeLanguage();
module.exports = i18next;
body {
background-color: #212224;
color: #CCCDCF; }
color: #CCCDCF;
}
a {
color: white; }
color: white;
}
button:focus-visible,
a:focus-visible {
outline: 2px solid #CCCDCF !important; }
outline: 2px solid #CCCDCF !important;
}
a:hover,
button:hover,
strong {
color: #CCCDCF; }
color: #CCCDCF;
}
input,
select,
textarea {
border: none !important;
background: #2d2d2d !important;
color: white !important; }
color: white !important;
}
input[type="search"]::-webkit-search-cancel-button {
input[type=search]::-webkit-search-cancel-button {
background-color: white;
-webkit-mask-image: url("../svg/times-circle.svg");
mask-image: url("../svg/times-circle.svg"); }
-webkit-mask-image: url("../img/svg/times-circle.svg");
mask-image: url("../img/svg/times-circle.svg");
}
input:active,
input:focus,
......@@ -32,315 +38,408 @@ input.is-focused,
select:focus,
textarea:active,
textarea:focus,
input[type="search"]:focus {
input[type=search]:focus {
outline: none !important;
box-shadow: 0 0 0 2px #CCCDCF !important; }
box-shadow: 0 0 0 2px #CCCDCF !important;
}
input::placeholder {
color: #4a4a4a !important; }
color: #4a4a4a !important;
}
input[type="checkbox"]:focus,
input[type="checkbox"]:active {
input[type=checkbox]:focus,
input[type=checkbox]:active {
outline: none;
box-shadow: none !important; }
box-shadow: none !important;
}
button {
color: white !important; }
color: white !important;
}
.button.is-link,
.button.is-link:hover {
color: #4a4a4a !important;
background-color: white;
}
.button.is-link svg,
.button.is-link:hover svg {
color: inherit !important;
}
.button[disabled],
fieldset[disabled] {
background-color: transparent; }
background-color: transparent;
}
button.is-outlined:hover {
background: #3B3B3B !important; }
background: #3B3B3B !important;
}
::after {
border-color: white !important; }
border-color: white !important;
}
svg {
color: white; }
color: white;
}
table {
width: 100%;
background-color: transparent !important;
color: #CCCDCF !important; }
color: #CCCDCF !important;
}
table tr td {
border-color: #212224 !important; }
border-color: #212224 !important;
}
table tr th {
color: white !important; }
color: white !important;
}
nav {
background-color: #2d2d2d; }
nav svg {
color: #CCCDCF; }
nav ul li.logo {
background: none; }
nav ul li a {
color: #CCCDCF;
border-bottom: 1px solid #3B3B3B; }
nav ul li a:hover,
nav ul li a:focus {
color: #CCCDCF;
border-bottom: none;
background-color: #3B3B3B; }
nav ul li.is-highlighted a {
color: #CCCDCF;
border-bottom: none;
background-color: #3B3B3B; }
background-color: #2d2d2d;
}
nav svg {
color: #CCCDCF;
}
nav ul li.logo {
background: none;
}
nav ul li a {
color: #CCCDCF;
border-bottom: 1px solid #3B3B3B;
}
nav ul li a:hover,
nav ul li a:focus {
color: #CCCDCF;
border-bottom: none;
background-color: #3B3B3B;
}
nav ul li.is-highlighted a {
color: #CCCDCF;
border-bottom: none;
background-color: #3B3B3B;
}
#drawerContainer .zoom svg {
color: white !important; }
color: white !important;
}
#drawerContainer .zoom #zoomStatus {
color: white !important; }