diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index 0958f00..0000000
--- a/.babelrc
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "comments": false,
- "env": {
- "main": {
- "presets": [
- [
- "@babel/env",
- {
- "targets": { "node": 7 }
- }
- ]
- ]
- },
- "renderer": {
- "presets": [
- [
- "@babel/env",
- {
- "modules": false
- }
- ]
- ]
- },
- "web": {
- "presets": [
- [
- "@babel/env",
- {
- "modules": false
- }
- ]
- ]
- }
- },
- "plugins": [
- "@babel/transform-runtime",
- // Stage 0
- "@babel/plugin-proposal-function-bind",
-
- // Stage 1
- "@babel/plugin-proposal-export-default-from",
- "@babel/plugin-proposal-logical-assignment-operators",
- ["@babel/plugin-proposal-optional-chaining", { "loose": false }],
- ["@babel/plugin-proposal-pipeline-operator", { "proposal": "minimal" }],
- ["@babel/plugin-proposal-nullish-coalescing-operator", { "loose": false }],
- "@babel/plugin-proposal-do-expressions",
-
- // Stage 2
- ["@babel/plugin-proposal-decorators", { "legacy": true }],
- "@babel/plugin-proposal-function-sent",
- "@babel/plugin-proposal-export-namespace-from",
- "@babel/plugin-proposal-numeric-separator",
- "@babel/plugin-proposal-throw-expressions",
-
- // Stage 3
- "@babel/plugin-syntax-dynamic-import",
- "@babel/plugin-syntax-import-meta",
- ["@babel/plugin-proposal-class-properties", { "loose": false }],
- "@babel/plugin-proposal-json-strings"
- ]
-}
diff --git a/.chglog/CHANGELOG.tpl.md b/.chglog/CHANGELOG.tpl.md
deleted file mode 100755
index ad660cf..0000000
--- a/.chglog/CHANGELOG.tpl.md
+++ /dev/null
@@ -1,24 +0,0 @@
-{{ range .Versions }}
-
-## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }}
-
-> {{ datetime "2006-01-02" .Tag.Date }}
-
-{{ range .CommitGroups -}}
-### {{ .Title }}
-
-{{ range .Commits -}}
-* {{ .Hash.Short }} {{ .Subject }}
-{{ end }}
-{{ end -}}
-
-{{- if .NoteGroups -}}
-{{ range .NoteGroups -}}
-### {{ .Title }}
-
-{{ range .Notes }}
-{{ .Body }}
-{{ end }}
-{{ end -}}
-{{ end -}}
-{{ end -}}
\ No newline at end of file
diff --git a/.chglog/RELEASE.tpl.md b/.chglog/RELEASE.tpl.md
deleted file mode 100644
index 5fc1a88..0000000
--- a/.chglog/RELEASE.tpl.md
+++ /dev/null
@@ -1,35 +0,0 @@
-{{ range .Versions }}
-
-## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }})
-
-{{ range .CommitGroups -}}
-
-### {{ .Title }}
-
-{{ range .Commits -}}
-
-- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
-{{ end }}
-{{ end -}}
-
-{{- if .RevertCommits -}}
-
-### Reverts
-
-{{ range .RevertCommits -}}
-
-- {{ .Revert.Header }}
- {{ end }}
- {{ end -}}
-
-{{- if .NoteGroups -}}
-{{ range .NoteGroups -}}
-
-### {{ .Title }}
-
-{{ range .Notes }}
-{{ .Body }}
-{{ end }}
-{{ end -}}
-{{ end -}}
-{{ end -}}
diff --git a/.chglog/config.yml b/.chglog/config.yml
deleted file mode 100755
index e6ddcb4..0000000
--- a/.chglog/config.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-style: github
-template: CHANGELOG.tpl.md
-info:
- title: CHANGELOG
- repository_url: https://github.com/Splode/pomotroid
-options:
- commits:
- # filters:
- # Type:
- # - feat
- # - fix
- # - perf
- # - refactor
- commit_groups:
- title_maps:
- feat: Features
- fix: Bug Fixes
- perf: Performance Improvements
- refactor: Code Refactoring
- ci: Continuous Integration
- chore: Chores
- header:
- pattern: "^(\\w*)\\:\\s(.*)$"
- pattern_maps:
- - Type
- - Subject
- notes:
- keywords:
- - BREAKING CHANGE
diff --git a/.chglog/release.yml b/.chglog/release.yml
deleted file mode 100644
index 6338810..0000000
--- a/.chglog/release.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-style: github
-template: RELEASE.tpl.md
-info:
- repository_url: https://github.com/Splode/pomotroid
-options:
- commits:
- # filters:
- # Type:
- # - feat
- # - fix
- # - perf
- # - refactor
- commit_groups:
- title_maps:
- feat: Features
- fix: Bug Fixes
- perf: Performance Improvements
- refactor: Code Refactoring
- ci: Continuous Integration
- chore: Chores
- header:
- pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
- pattern_maps:
- - Type
- - Scope
- - Subject
- notes:
- keywords:
- - BREAKING CHANGE
diff --git a/.electron-vue/build.js b/.electron-vue/build.js
deleted file mode 100644
index c42ea75..0000000
--- a/.electron-vue/build.js
+++ /dev/null
@@ -1,132 +0,0 @@
-'use strict'
-
-process.env.NODE_ENV = 'production'
-
-const { say } = require('cfonts')
-const chalk = require('chalk')
-const del = require('del')
-const { spawn } = require('child_process')
-const webpack = require('webpack')
-const Multispinner = require('multispinner')
-
-
-const mainConfig = require('./webpack.main.config')
-const rendererConfig = require('./webpack.renderer.config')
-const webConfig = require('./webpack.web.config')
-
-const doneLog = chalk.bgGreen.white(' DONE ') + ' '
-const errorLog = chalk.bgRed.white(' ERROR ') + ' '
-const okayLog = chalk.bgBlue.white(' OKAY ') + ' '
-const isCI = process.env.CI || false
-
-if (process.env.BUILD_TARGET === 'clean') clean()
-else if (process.env.BUILD_TARGET === 'web') web()
-else build()
-
-function clean () {
- del.sync(['build/*', '!build/icons', '!build/icons/icon.*'])
- console.log(`\n${doneLog}\n`)
- process.exit()
-}
-
-function build () {
- greeting()
-
- del.sync(['dist/electron/*', '!.gitkeep'])
-
- const tasks = ['main', 'renderer']
- const m = new Multispinner(tasks, {
- preText: 'building',
- postText: 'process'
- })
-
- let results = ''
-
- m.on('success', () => {
- process.stdout.write('\x1B[2J\x1B[0f')
- console.log(`\n\n${results}`)
- console.log(`${okayLog}take it away ${chalk.yellow('`electron-builder`')}\n`)
- process.exit()
- })
-
- pack(mainConfig).then(result => {
- results += result + '\n\n'
- m.success('main')
- }).catch(err => {
- m.error('main')
- console.log(`\n ${errorLog}failed to build main process`)
- console.error(`\n${err}\n`)
- process.exit(1)
- })
-
- pack(rendererConfig).then(result => {
- results += result + '\n\n'
- m.success('renderer')
- }).catch(err => {
- m.error('renderer')
- console.log(`\n ${errorLog}failed to build renderer process`)
- console.error(`\n${err}\n`)
- process.exit(1)
- })
-}
-
-function pack (config) {
- return new Promise((resolve, reject) => {
- config.mode = 'production'
- webpack(config, (err, stats) => {
- if (err) reject(err.stack || err)
- else if (stats.hasErrors()) {
- let err = ''
-
- stats.toString({
- chunks: false,
- colors: true
- })
- .split(/\r?\n/)
- .forEach(line => {
- err += ` ${line}\n`
- })
-
- reject(err)
- } else {
- resolve(stats.toString({
- chunks: false,
- colors: true
- }))
- }
- })
- })
-}
-
-function web () {
- del.sync(['dist/web/*', '!.gitkeep'])
- webConfig.mode = 'production'
- webpack(webConfig, (err, stats) => {
- if (err || stats.hasErrors()) console.log(err)
-
- console.log(stats.toString({
- chunks: false,
- colors: true
- }))
-
- process.exit()
- })
-}
-
-function greeting () {
- const cols = process.stdout.columns
- let text = ''
-
- if (cols > 85) text = 'lets-build'
- else if (cols > 60) text = 'lets-|build'
- else text = false
-
- if (text && !isCI) {
- say(text, {
- colors: ['yellow'],
- font: 'simple3d',
- space: false
- })
- } else console.log(chalk.yellow.bold('\n lets-build'))
- console.log()
-}
diff --git a/.electron-vue/dev-client.js b/.electron-vue/dev-client.js
deleted file mode 100644
index 2913ea4..0000000
--- a/.electron-vue/dev-client.js
+++ /dev/null
@@ -1,40 +0,0 @@
-const hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
-
-hotClient.subscribe(event => {
- /**
- * Reload browser when HTMLWebpackPlugin emits a new index.html
- *
- * Currently disabled until jantimon/html-webpack-plugin#680 is resolved.
- * https://github.com/SimulatedGREG/electron-vue/issues/437
- * https://github.com/jantimon/html-webpack-plugin/issues/680
- */
- // if (event.action === 'reload') {
- // window.location.reload()
- // }
-
- /**
- * Notify `mainWindow` when `main` process is compiling,
- * giving notice for an expected reload of the `electron` process
- */
- if (event.action === 'compiling') {
- document.body.innerHTML += `
-
-
-
- Compiling Main Process...
-
- `
- }
-})
diff --git a/.electron-vue/dev-runner.js b/.electron-vue/dev-runner.js
deleted file mode 100644
index 4f08c57..0000000
--- a/.electron-vue/dev-runner.js
+++ /dev/null
@@ -1,178 +0,0 @@
-'use strict'
-
-const chalk = require('chalk')
-const electron = require('electron')
-const path = require('path')
-const { say } = require('cfonts')
-const { spawn } = require('child_process')
-const webpack = require('webpack')
-const WebpackDevServer = require('webpack-dev-server')
-const webpackHotMiddleware = require('webpack-hot-middleware')
-
-const mainConfig = require('./webpack.main.config')
-const rendererConfig = require('./webpack.renderer.config')
-
-let electronProcess = null
-let manualRestart = false
-let hotMiddleware
-
-function logStats (proc, data) {
- let log = ''
-
- log += chalk.yellow.bold(`┏ ${proc} Process ${new Array((19 - proc.length) + 1).join('-')}`)
- log += '\n\n'
-
- if (typeof data === 'object') {
- data.toString({
- colors: true,
- chunks: false
- }).split(/\r?\n/).forEach(line => {
- log += ' ' + line + '\n'
- })
- } else {
- log += ` ${data}\n`
- }
-
- log += '\n' + chalk.yellow.bold(`┗ ${new Array(28 + 1).join('-')}`) + '\n'
-
- console.log(log)
-}
-
-function startRenderer () {
- return new Promise((resolve, reject) => {
- rendererConfig.entry.renderer = [path.join(__dirname, 'dev-client')].concat(rendererConfig.entry.renderer)
- rendererConfig.mode = 'development'
- const compiler = webpack(rendererConfig)
- hotMiddleware = webpackHotMiddleware(compiler, {
- log: false,
- heartbeat: 2500
- })
-
- compiler.hooks.compilation.tap('compilation', compilation => {
- compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => {
- hotMiddleware.publish({ action: 'reload' })
- cb()
- })
- })
-
- compiler.hooks.done.tap('done', stats => {
- logStats('Renderer', stats)
- })
-
- const server = new WebpackDevServer(
- compiler,
- {
- contentBase: path.join(__dirname, '../'),
- quiet: true,
- before (app, ctx) {
- app.use(hotMiddleware)
- ctx.middleware.waitUntilValid(() => {
- resolve()
- })
- }
- }
- )
-
- server.listen(9080)
- })
-}
-
-function startMain () {
- return new Promise((resolve, reject) => {
- mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.js')].concat(mainConfig.entry.main)
- mainConfig.mode = 'development'
- const compiler = webpack(mainConfig)
-
- compiler.hooks.watchRun.tapAsync('watch-run', (compilation, done) => {
- logStats('Main', chalk.white.bold('compiling...'))
- hotMiddleware.publish({ action: 'compiling' })
- done()
- })
-
- compiler.watch({}, (err, stats) => {
- if (err) {
- console.log(err)
- return
- }
-
- logStats('Main', stats)
-
- if (electronProcess && electronProcess.kill) {
- manualRestart = true
- process.kill(electronProcess.pid)
- electronProcess = null
- startElectron()
-
- setTimeout(() => {
- manualRestart = false
- }, 5000)
- }
-
- resolve()
- })
- })
-}
-
-function startElectron () {
- electronProcess = spawn(electron, ['--inspect=5858', path.join(__dirname, '../dist/electron/main.js')])
-
- electronProcess.stdout.on('data', data => {
- electronLog(data, 'blue')
- })
- electronProcess.stderr.on('data', data => {
- electronLog(data, 'red')
- })
-
- electronProcess.on('close', () => {
- if (!manualRestart) process.exit()
- })
-}
-
-function electronLog (data, color) {
- let log = ''
- data = data.toString().split(/\r?\n/)
- data.forEach(line => {
- log += ` ${line}\n`
- })
- if (/[0-9A-z]+/.test(log)) {
- console.log(
- chalk[color].bold('┏ Electron -------------------') +
- '\n\n' +
- log +
- chalk[color].bold('┗ ----------------------------') +
- '\n'
- )
- }
-}
-
-function greeting () {
- const cols = process.stdout.columns
- let text = ''
-
- if (cols > 104) text = 'electron-vue'
- else if (cols > 76) text = 'electron-|vue'
- else text = false
-
- if (text) {
- say(text, {
- colors: ['yellow'],
- font: 'simple3d',
- space: false
- })
- } else console.log(chalk.yellow.bold('\n electron-vue'))
- console.log(chalk.blue(' getting ready...') + '\n')
-}
-
-function init () {
- greeting()
-
- Promise.all([startRenderer(), startMain()])
- .then(() => {
- startElectron()
- })
- .catch(err => {
- console.error(err)
- })
-}
-
-init()
diff --git a/.electron-vue/webpack.main.config.js b/.electron-vue/webpack.main.config.js
deleted file mode 100644
index faa1d3c..0000000
--- a/.electron-vue/webpack.main.config.js
+++ /dev/null
@@ -1,87 +0,0 @@
-'use strict'
-
-process.env.BABEL_ENV = 'main'
-
-const path = require('path')
-const { dependencies } = require('../package.json')
-const webpack = require('webpack')
-
-const BabiliWebpackPlugin = require('babili-webpack-plugin')
-
-let mainConfig = {
- entry: {
- main: path.join(__dirname, '../src/main/index.js')
- },
- externals: [
- ...Object.keys(dependencies || {})
- ],
- module: {
- rules: [
- {
- test: /\.worker\.js$/,
- use: { loader: 'worker-loader' }
- },
- {
- test: /\.(js)$/,
- enforce: 'pre',
- exclude: /node_modules/,
- use: {
- loader: 'eslint-loader',
- options: {
- formatter: require('eslint-friendly-formatter')
- }
- }
- },
- {
- test: /\.js$/,
- use: 'babel-loader',
- exclude: /node_modules/
- },
- {
- test: /\.node$/,
- use: 'node-loader'
- }
- ]
- },
- node: {
- __dirname: process.env.NODE_ENV !== 'production',
- __filename: process.env.NODE_ENV !== 'production'
- },
- output: {
- filename: '[name].js',
- libraryTarget: 'commonjs2',
- path: path.join(__dirname, '../dist/electron')
- },
- plugins: [
- new webpack.NoEmitOnErrorsPlugin()
- ],
- resolve: {
- extensions: ['.js', '.json', '.node']
- },
- target: 'electron-main'
-}
-
-/**
- * Adjust mainConfig for development settings
- */
-if (process.env.NODE_ENV !== 'production') {
- mainConfig.plugins.push(
- new webpack.DefinePlugin({
- '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
- })
- )
-}
-
-/**
- * Adjust mainConfig for production settings
- */
-if (process.env.NODE_ENV === 'production') {
- mainConfig.plugins.push(
- new BabiliWebpackPlugin(),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': '"production"'
- })
- )
-}
-
-module.exports = mainConfig
diff --git a/.electron-vue/webpack.renderer.config.js b/.electron-vue/webpack.renderer.config.js
deleted file mode 100644
index 2f1b73f..0000000
--- a/.electron-vue/webpack.renderer.config.js
+++ /dev/null
@@ -1,194 +0,0 @@
-'use strict'
-
-process.env.BABEL_ENV = 'renderer'
-
-const path = require('path')
-const { dependencies } = require('../package.json')
-const webpack = require('webpack')
-
-const BabiliWebpackPlugin = require('babili-webpack-plugin')
-const CopyWebpackPlugin = require('copy-webpack-plugin')
-const MiniCssExtractPlugin = require('mini-css-extract-plugin')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-const { VueLoaderPlugin } = require('vue-loader')
-
-/**
- * List of node_modules to include in webpack bundle
- *
- * Required for specific packages like Vue UI libraries
- * that provide pure *.vue files that need compiling
- * https://simulatedgreg.gitbooks.io/electron-vue/content/en/webpack-configurations.html#white-listing-externals
- */
-let whiteListedModules = ['vue']
-
-let rendererConfig = {
- devtool: '#cheap-module-eval-source-map',
- entry: {
- renderer: path.join(__dirname, '../src/renderer/main.js')
- },
- externals: [
- ...Object.keys(dependencies || {}).filter(
- d => !whiteListedModules.includes(d)
- )
- ],
- module: {
- rules: [
- {
- test: /\.worker\.js$/,
- use: { loader: 'worker-loader' }
- },
- {
- test: /\.(js|vue)$/,
- enforce: 'pre',
- exclude: /node_modules/,
- use: {
- loader: 'eslint-loader',
- options: {
- formatter: require('eslint-friendly-formatter')
- }
- }
- },
- {
- test: /\.scss$/,
- use: ['vue-style-loader', 'css-loader', 'sass-loader?prependData=@import "./src/renderer/assets/stylesheets/main";']
- },
- {
- test: /\.sass$/,
- use: ['vue-style-loader', 'css-loader', 'sass-loader?indentedSyntax=1&prependData=@import "./src/renderer/assets/stylesheets/main"']
- },
- {
- test: /\.css$/,
- use: ['vue-style-loader', 'css-loader']
- },
- {
- test: /\.html$/,
- use: 'vue-html-loader'
- },
- {
- test: /\.js$/,
- use: 'babel-loader',
- exclude: /node_modules/
- },
- {
- test: /\.node$/,
- use: 'node-loader'
- },
- {
- test: /\.vue$/,
- use: {
- loader: 'vue-loader',
- options: {
- extractCSS: process.env.NODE_ENV === 'production',
- loaders: {
- sass:
- 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1&prependData=@import "./src/renderer/assets/stylesheets/main"',
- scss:
- 'vue-style-loader!css-loader!sass-loader?prependData=@import "./src/renderer/assets/stylesheets/main";'
- }
- }
- }
- },
- {
- test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
- use: {
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: 'imgs/[name]--[folder].[ext]'
- }
- }
- },
- {
- test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
- loader: 'url-loader',
- options: {
- limit: 10000,
- name: 'media/[name]--[folder].[ext]'
- }
- },
- {
- test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
- use: {
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: 'fonts/[name]--[folder].[ext]'
- }
- }
- }
- ]
- },
- node: {
- __dirname: process.env.NODE_ENV !== 'production',
- __filename: process.env.NODE_ENV !== 'production'
- },
- plugins: [
- new VueLoaderPlugin(),
- new MiniCssExtractPlugin({ filename: 'styles.css' }),
- new HtmlWebpackPlugin({
- filename: 'index.html',
- template: path.resolve(__dirname, '../src/index.ejs'),
- minify: {
- collapseWhitespace: true,
- removeAttributeQuotes: true,
- removeComments: true
- },
- nodeModules:
- process.env.NODE_ENV !== 'production'
- ? path.resolve(__dirname, '../node_modules')
- : false
- }),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoEmitOnErrorsPlugin()
- ],
- output: {
- filename: '[name].js',
- libraryTarget: 'commonjs2',
- path: path.join(__dirname, '../dist/electron')
- },
- resolve: {
- alias: {
- '@': path.join(__dirname, '../src/renderer'),
- vue$: 'vue/dist/vue.esm.js'
- },
- extensions: ['.js', '.vue', '.json', '.css', '.node']
- },
- target: 'electron-renderer'
-}
-
-/**
- * Adjust rendererConfig for development settings
- */
-if (process.env.NODE_ENV !== 'production') {
- rendererConfig.plugins.push(
- new webpack.DefinePlugin({
- __static: `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
- })
- )
-}
-
-/**
- * Adjust rendererConfig for production settings
- */
-if (process.env.NODE_ENV === 'production') {
- rendererConfig.devtool = ''
-
- rendererConfig.plugins.push(
- new BabiliWebpackPlugin(),
- new CopyWebpackPlugin([
- {
- from: path.join(__dirname, '../static'),
- to: path.join(__dirname, '../dist/electron/static'),
- ignore: ['.*']
- }
- ]),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': '"production"'
- }),
- new webpack.LoaderOptionsPlugin({
- minimize: true
- })
- )
-}
-
-module.exports = rendererConfig
diff --git a/.electron-vue/webpack.web.config.js b/.electron-vue/webpack.web.config.js
deleted file mode 100644
index 0f977b4..0000000
--- a/.electron-vue/webpack.web.config.js
+++ /dev/null
@@ -1,150 +0,0 @@
-'use strict'
-
-process.env.BABEL_ENV = 'web'
-
-const path = require('path')
-const webpack = require('webpack')
-
-const BabiliWebpackPlugin = require('babili-webpack-plugin')
-const CopyWebpackPlugin = require('copy-webpack-plugin')
-const MiniCssExtractPlugin = require('mini-css-extract-plugin')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-const { VueLoaderPlugin } = require('vue-loader')
-
-let webConfig = {
- devtool: '#cheap-module-eval-source-map',
- entry: {
- web: path.join(__dirname, '../src/renderer/main.js')
- },
- module: {
- rules: [
- {
- test: /\.worker\.js$/,
- use: { loader: 'worker-loader' }
- },
- {
- test: /\.(js|vue)$/,
- enforce: 'pre',
- exclude: /node_modules/,
- use: {
- loader: 'eslint-loader',
- options: {
- formatter: require('eslint-friendly-formatter')
- }
- }
- },
- {
- test: /\.scss$/,
- use: ['vue-style-loader', 'css-loader', 'sass-loader']
- },
- {
- test: /\.sass$/,
- use: ['vue-style-loader', 'css-loader', 'sass-loader?indentedSyntax']
- },
- {
- test: /\.css$/,
- use: ['vue-style-loader', 'css-loader']
- },
- {
- test: /\.html$/,
- use: 'vue-html-loader'
- },
- {
- test: /\.js$/,
- use: 'babel-loader',
- include: [path.resolve(__dirname, '../src/renderer')],
- exclude: /node_modules/
- },
- {
- test: /\.vue$/,
- use: {
- loader: 'vue-loader',
- options: {
- extractCSS: true,
- loaders: {
- sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1',
- scss: 'vue-style-loader!css-loader!sass-loader'
- }
- }
- }
- },
- {
- test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
- use: {
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: 'imgs/[name].[ext]'
- }
- }
- },
- {
- test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
- use: {
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: 'fonts/[name].[ext]'
- }
- }
- }
- ]
- },
- plugins: [
- new VueLoaderPlugin(),
- new MiniCssExtractPlugin({ filename: 'styles.css' }),
- new HtmlWebpackPlugin({
- filename: 'index.html',
- template: path.resolve(__dirname, '../src/index.ejs'),
- minify: {
- collapseWhitespace: true,
- removeAttributeQuotes: true,
- removeComments: true
- },
- nodeModules: false
- }),
- new webpack.DefinePlugin({
- 'process.env.IS_WEB': 'true'
- }),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoEmitOnErrorsPlugin()
- ],
- output: {
- filename: '[name].js',
- path: path.join(__dirname, '../dist/web')
- },
- resolve: {
- alias: {
- '@': path.join(__dirname, '../src/renderer'),
- vue$: 'vue/dist/vue.esm.js'
- },
- extensions: ['.js', '.vue', '.json', '.css']
- },
- target: 'web'
-}
-
-/**
- * Adjust webConfig for production settings
- */
-if (process.env.NODE_ENV === 'production') {
- webConfig.devtool = ''
-
- webConfig.plugins.push(
- new BabiliWebpackPlugin(),
- new CopyWebpackPlugin([
- {
- from: path.join(__dirname, '../static'),
- to: path.join(__dirname, '../dist/web/static'),
- ignore: ['.*']
- }
- ]),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': '"production"'
- }),
- new webpack.LoaderOptionsPlugin({
- minimize: true
- })
- )
-}
-
-module.exports = webConfig
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index e69de29..0000000
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 2c7479e..0000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,25 +0,0 @@
-module.exports = {
- root: true,
- parserOptions: {
- parser: 'babel-eslint',
- sourceType: 'module'
- },
- env: {
- browser: true,
- node: true
- },
- globals: {
- __static: true
- },
- plugins: ['html'],
- rules: {
- // allow paren-less arrow functions
- 'arrow-parens': 0,
- // allow async-await
- 'generator-star-spacing': 0,
- // allow debugger during development
- 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
- 'space-before-function-paren': ['error', 'never']
- },
- extends: ['standard', 'plugin:vue/base']
-}
diff --git a/.github/images/pomotroid-screens.png b/.github/images/pomotroid-screens.png
old mode 100644
new mode 100755
index 57ad676..2df7cb5
Binary files a/.github/images/pomotroid-screens.png and b/.github/images/pomotroid-screens.png differ
diff --git a/.github/images/pomotroid-stats.png b/.github/images/pomotroid-stats.png
new file mode 100755
index 0000000..283ff07
Binary files /dev/null and b/.github/images/pomotroid-stats.png differ
diff --git a/.github/images/pomotroid-themes-preview.png b/.github/images/pomotroid-themes-preview.png
new file mode 100755
index 0000000..48f2285
Binary files /dev/null and b/.github/images/pomotroid-themes-preview.png differ
diff --git a/.github/images/pomotroid_themes-preview--914x219.png b/.github/images/pomotroid_themes-preview--914x219.png
deleted file mode 100644
index a834aca..0000000
Binary files a/.github/images/pomotroid_themes-preview--914x219.png and /dev/null differ
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index d64d872..eca4961 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,20 +1,162 @@
-name: Build/release
+name: Build / Test
-on: push
+on:
+ push:
+ branches: [main, 'rewrite/**', 'claude/**', 'feat/**']
+ pull_request:
+ branches: [main]
jobs:
- release:
- runs-on: ${{ matrix.os }}
+ build-linux:
+ name: Linux x64
+ runs-on: ubuntu-latest
- strategy:
- matrix:
- os: [macos-latest, ubuntu-latest, windows-latest]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: npm
+
+ - name: Install Rust stable
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ components: clippy
+
+ - name: Cache Rust build artifacts
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: src-tauri
+
+ - name: Install Linux system dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y \
+ libwebkit2gtk-4.1-dev \
+ libssl-dev \
+ libayatana-appindicator3-dev \
+ librsvg2-dev \
+ patchelf \
+ libasound2-dev
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Sync SvelteKit types
+ run: npx svelte-kit sync
+
+ - name: Svelte type check
+ run: npm run check
+
+ - name: Clippy (deny warnings)
+ run: cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings
+
+ - name: Cargo test
+ run: cargo test --manifest-path src-tauri/Cargo.toml
+
+ - name: Build (release)
+ run: npm run tauri build -- --bundles deb,appimage
+ env:
+ CI: true
+
+ - name: Upload Linux artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: pomotroid-linux-x64
+ path: |
+ src-tauri/target/release/bundle/deb/*.deb
+ src-tauri/target/release/bundle/appimage/*.AppImage
+ if-no-files-found: error
+
+ build-macos:
+ name: macOS (universal)
+ runs-on: macos-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: npm
+
+ - name: Install Rust stable (with universal targets)
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ targets: aarch64-apple-darwin,x86_64-apple-darwin
+
+ - name: Cache Rust build artifacts
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: src-tauri
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Sync SvelteKit types
+ run: npx svelte-kit sync
+
+ - name: Build (release, universal binary)
+ run: npm run tauri build -- --bundles dmg --target universal-apple-darwin
+ env:
+ CI: true
+
+ - name: Upload macOS artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: pomotroid-macos-universal
+ path: src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
+ if-no-files-found: error
+
+ build-windows:
+ name: Windows x64
+ runs-on: windows-latest
steps:
- - name: Check out Git repository
- uses: actions/checkout@v1
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: npm
+
+ - name: Install Rust stable
+ uses: dtolnay/rust-toolchain@stable
+
+ - name: Cache Rust build artifacts
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: src-tauri
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Sync SvelteKit types
+ run: npx svelte-kit sync
+
+ - name: Build (release)
+ run: npm run tauri build -- --bundles nsis
+ env:
+ CI: true
- - name: Install Node.js, NPM and Yarn
- uses: actions/setup-node@v1
+ - name: Upload Windows artifacts
+ uses: actions/upload-artifact@v4
with:
- node-version: 14
+ name: pomotroid-windows-x64
+ path: |
+ src-tauri/target/release/bundle/nsis/*-setup.exe
+ src-tauri/target/release/pomotroid.exe
+ if-no-files-found: error
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index b2868fe..05cdbf7 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -2,10 +2,10 @@ name: "CodeQL"
on:
push:
- branches: [master]
+ branches: [main]
pull_request:
# The branches below must be a subset of the branches above
- branches: [master]
+ branches: [main]
schedule:
- cron: '0 23 * * 3'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..555c48f
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,232 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v[0-9]+.[0-9]+.[0-9]+'
+
+permissions:
+ contents: write
+
+jobs:
+ # ── Extract release notes from CHANGELOG ───────────────────────────────────
+ changelog:
+ name: Extract release notes
+ runs-on: ubuntu-latest
+ outputs:
+ notes: ${{ steps.extract.outputs.notes }}
+ version: ${{ steps.version.outputs.version }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Get version from tag
+ id: version
+ run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
+
+ - name: Extract CHANGELOG section
+ id: extract
+ run: |
+ VERSION="${GITHUB_REF_NAME#v}"
+ # Extract lines between the versioned header and the next header (or EOF)
+ NOTES=$(awk "/^\[v${VERSION}\]/,/^\[v[0-9]/" CHANGELOG.md \
+ | head -n -1 \
+ | tail -n +2 \
+ | sed '/^[[:space:]]*$/{ N; /^\n[[:space:]]*$/d }')
+ if [[ -z "$NOTES" ]]; then
+ NOTES="See [CHANGELOG.md](CHANGELOG.md) for details."
+ fi
+ # Write multi-line output safely
+ {
+ echo "notes<> "$GITHUB_OUTPUT"
+
+ # ── Linux build ────────────────────────────────────────────────────────────
+ build-linux:
+ name: Linux x64
+ runs-on: ubuntu-latest
+ needs: changelog
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: npm
+
+ - name: Install Rust stable
+ uses: dtolnay/rust-toolchain@stable
+
+ - name: Cache Rust build artifacts
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: src-tauri
+
+ - name: Install Linux system dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y \
+ libwebkit2gtk-4.1-dev \
+ libssl-dev \
+ libayatana-appindicator3-dev \
+ librsvg2-dev \
+ patchelf \
+ libasound2-dev
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Sync SvelteKit types
+ run: npx svelte-kit sync
+
+ - name: Build (release)
+ run: npm run tauri build -- --bundles deb,appimage
+ env:
+ CI: true
+
+ - name: Upload Linux artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: pomotroid-linux-x64
+ path: |
+ src-tauri/target/release/bundle/deb/*.deb
+ src-tauri/target/release/bundle/appimage/*.AppImage
+ if-no-files-found: error
+
+ # ── macOS build ────────────────────────────────────────────────────────────
+ build-macos:
+ name: macOS (universal)
+ runs-on: macos-latest
+ needs: changelog
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: npm
+
+ - name: Install Rust stable (with universal targets)
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ targets: aarch64-apple-darwin,x86_64-apple-darwin
+
+ - name: Cache Rust build artifacts
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: src-tauri
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Sync SvelteKit types
+ run: npx svelte-kit sync
+
+ - name: Build (release, universal binary)
+ run: npm run tauri build -- --bundles dmg --target universal-apple-darwin
+ env:
+ CI: true
+
+ - name: Upload macOS artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: pomotroid-macos-universal
+ path: src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
+ if-no-files-found: error
+
+ # ── Windows build ──────────────────────────────────────────────────────────
+ build-windows:
+ name: Windows x64
+ runs-on: windows-latest
+ needs: changelog
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: npm
+
+ - name: Install Rust stable
+ uses: dtolnay/rust-toolchain@stable
+
+ - name: Cache Rust build artifacts
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: src-tauri
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Sync SvelteKit types
+ run: npx svelte-kit sync
+
+ - name: Build (release)
+ run: npm run tauri build -- --bundles nsis
+ env:
+ CI: true
+
+ - name: Upload Windows artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: pomotroid-windows-x64
+ path: |
+ src-tauri/target/release/bundle/nsis/*-setup.exe
+ src-tauri/target/release/pomotroid.exe
+ if-no-files-found: error
+
+ # ── Create draft GitHub Release ────────────────────────────────────────────
+ release:
+ name: Create draft release
+ runs-on: ubuntu-latest
+ needs: [changelog, build-linux, build-macos, build-windows]
+
+ steps:
+ - name: Download Linux artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: pomotroid-linux-x64
+ path: dist/linux
+
+ - name: Download macOS artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: pomotroid-macos-universal
+ path: dist/macos
+
+ - name: Download Windows artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: pomotroid-windows-x64
+ path: dist/windows
+
+ - name: Create draft release
+ uses: softprops/action-gh-release@v2
+ with:
+ draft: true
+ name: ${{ github.ref_name }}
+ body: ${{ needs.changelog.outputs.notes }}
+ files: |
+ dist/linux/**/*.deb
+ dist/linux/**/*.AppImage
+ dist/macos/**/*.dmg
+ dist/windows/**/*-setup.exe
+ dist/windows/**/pomotroid.exe
diff --git a/.gitignore b/.gitignore
index 3b9ca40..874f942 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,4 @@
.DS_Store
-dist/electron/*
-dist/web/*
-build/*
-!build/icons
node_modules/
npm-debug.log
npm-debug.log.*
@@ -10,4 +6,6 @@ thumbs.db
!.gitkeep
*.pem
*.key
-*.cert
\ No newline at end of file
+*.cert
+.svelte-kit/
+build/
diff --git a/.prettierrc b/.prettierrc
deleted file mode 100644
index b2095be..0000000
--- a/.prettierrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "semi": false,
- "singleQuote": true
-}
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 2bfb976..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-os: osx
-osx_image: xcode11.3
-language: node_js
-node_js: 'lts/*'
-cache:
- directories:
- - node_modules
- - '$HOME/.electron'
- - '$HOME/.cache'
-script:
- - npm run dist
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 430f6ec..4dc0adc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,106 @@
+[Unreleased]
+-----------
+
+### Complete Rewrite — Electron → Tauri 2 + Rust + Svelte 5
+
+Pomotroid has been rebuilt from the ground up. The Electron + Vue.js stack has been replaced with a fully native Tauri 2 application backed by Rust and a Svelte 5 frontend, resulting in a drastically smaller footprint, faster startup, and no Chromium dependency.
+
+### Timer
+
+* **Drift-correcting engine** — Rust timer thread uses `std::time::Instant` with a fixed tick schedule; eliminates the cumulative drift that plagued the web-worker approach
+* **Sleep / wake handling** — timer pauses automatically on OS sleep and resumes from the correct position on wake; no missed rounds
+* **Round sequencing** — configurable work / short-break / long-break cycle with independent auto-start per round type
+* **Skip and round reset** — skip to the next round or restart only the current round at any time, regardless of timer state
+* **Session recording** — every completed round is written to SQLite with type, duration, and completion status
+
+### Statistics
+
+* **Dedicated stats window** with three tabs:
+ * **Today** — work and break round counts, total focus time, hourly breakdown chart
+ * **This Week** — daily bar chart for the past seven days, current consecutive-day streak
+ * **All Time** — 52-week heatmap (GitHub-style contribution calendar), lifetime session totals
+* Charts use pure SVG; no external charting library
+* Chart and heatmap colours are derived from the active theme
+* Stats update live when a round completes — no manual refresh needed
+
+### Themes & Appearance
+
+* **37 bundled themes** including Pomotroid (dark), Pomotroid Light, Dracula, Nord, Tokyo Night, Gruvbox, Solarized, GitHub, One Dark, Rose Piné (3 variants), Catppuccin (4 variants), Synthwave, Ayu, Everforest, Kanagawa, Monokai, Night Owl, and more
+* **Auto light / dark mode** — follows the OS `prefers-color-scheme` preference automatically; separate theme pickers for light and dark
+* **Custom theme hot-reload** — drop a JSON theme file into the user themes folder and it appears instantly without a restart
+* Theme colours propagate throughout the full UI and into the tray icon arc
+
+### Localization
+
+* **7 languages** — English, Spanish, French, German, Japanese, Chinese (Simplified), and Portuguese
+* Auto-detects OS language on first launch; can be overridden manually in Settings
+* All UI strings, settings labels, and notification messages are translated
+* Locale-aware date and time formatting throughout (Intl.DateTimeFormat, reactive to language changes)
+* Built with Paraglide JS v2 — compile-time, type-safe, tree-shakable message functions
+
+### Audio
+
+* **Configurable alert cues** for work rounds, short breaks, and long breaks
+* **Custom audio** — replace any of the three alert cues with your own file via a file picker
+* **Tick sounds** — independently toggleable for work and break rounds
+* **Volume control** — global volume slider (0–100)
+* All audio runs on a dedicated thread via `rodio`; playback is guaranteed even when the window is hidden to the tray
+
+### System Tray
+
+* **Dynamic tray icon** — a progress arc rendered with `tiny-skia` sweeps clockwise from 12 o'clock, coloured by round type (work / short break / long break)
+* **Countdown mode** — optional inverted arc that fills from full to empty instead of empty to full
+* **Pause indicator** — two vertical bars drawn over the icon when the timer is paused
+* **Tray menu** — Show and Exit actions; left-clicking the icon toggles window visibility
+* **Minimise to tray** and **close to tray** are independently configurable
+
+### Global Shortcuts
+
+* **Four actions** — toggle (start / pause / resume), reset, skip, restart round
+* **Platform defaults** — `Control+F1–F4` on Windows and Linux; `Command+Shift+1–4` on macOS
+* Fully rebindable in Settings; supports modifier combinations and function keys
+* Shortcuts work when the window is hidden to the tray
+
+### macOS
+
+* **Global shortcuts via Accessibility** — shortcuts use the macOS Accessibility API; a contextual notice in Settings guides through granting permission with a direct link to System Settings
+* **Native window style** — overlay titlebar with macOS-native traffic-light controls
+* **Platform-aware defaults** — tray settings hidden on macOS where they are not applicable; shortcut defaults use Command instead of Control
+
+### Desktop Notifications
+
+* Native OS notifications on round completion via `tauri-plugin-notification`
+* Linux uses `notify-send` (libnotify) to avoid D-Bus session bus conflicts
+* Notifications include round type and duration
+
+### WebSocket Integration
+
+* **Opt-in local WebSocket server** (default off) for stream overlays and external integrations
+* Listens on `ws://127.0.0.1:` (localhost only); default port 1314
+* Broadcasts `roundChange` events with full timer state; clients can query current state with `getState`
+* Port is configurable; enable / disable at runtime from Settings → Advanced
+
+### Diagnostics & Logging
+
+* **Rotating log file** written to the OS log directory (5 MB max, keeps one backup)
+* Structured log entries for all major events — timer state changes, settings loads, audio playback, shortcut registration, round completions
+* Panics are captured to the log before the process terminates
+* **Verbose logging** toggle in Settings → Advanced switches between INFO and DEBUG level
+* **Open Log Folder** button in Settings → About for quick access
+
+### Settings
+
+26 configurable values across seven sections — Timer, Appearance, Notifications, Audio, Shortcuts, Advanced, and About. All settings are persisted to SQLite and take effect immediately without a restart (except WebSocket port).
+
+### Breaking Changes
+
+* Settings are no longer stored in `user-preferences.json`. All preferences reset to defaults on first launch after upgrading from v0.x.
+* The minimum OS requirement follows Tauri 2 system minimums: Windows 10+, macOS 10.13+, Linux with GTK 3.24+.
+* Custom theme JSON files from v0.x are fully compatible — no changes needed.
+
+---
+
## [v0.13.0](https://github.com/Splode/pomotroid/compare/v0.12.0...v0.13.0)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6717d66..cd54dfb 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,29 +1,217 @@
# Contributing to Pomotroid
-Thank you so much for contributing to Pomotroid. We appreciate your time and help.
-Here are some guidelines to help you get started.
+Thank you for taking the time to contribute. Below you'll find everything needed to get set up, make changes, and cut a release.
+
+## Table of Contents
+
+- [Code of Conduct](#code-of-conduct)
+- [Filing a Bug or Feature](#filing-a-bug-or-feature)
+- [Development Setup](#development-setup)
+- [Project Structure](#project-structure)
+- [Making Changes](#making-changes)
+- [Releasing](#releasing)
+
+---
## Code of Conduct
Be kind and respectful to the members of the community. Take time to educate others who are seeking help. Harassment of any kind will not be tolerated.
-## Questions
-
-If you have questions regarding Pomotroid, feel free to open an issue with the `Question` tag, or reach out directly via email at `flyweight@pm.me`.
+---
## Filing a Bug or Feature
-1. Before filing an issue, please check the existing issues to see if a similar one was already opened. If there is one already opened, feel free to comment on it.
-2. If you believe you've found a bug, please provide detailed steps of reproduction, the version of Pomotroid and anything else you believe will be useful to help troubleshoot it (e.g. OS environment, environment variables, etc...). Also state the current behavior vs. the expected behavior.
-3. If you'd like to see a feature or an enhancement please open an issue with a clear title and description of what the feature is and why it would be beneficial to the project and its users.
+1. Check existing issues before opening a new one.
+2. **Bug reports** — include steps to reproduce, Pomotroid version, OS, and what you expected vs. what happened.
+3. **Feature requests** — open an issue with a clear title and description of the feature and why it would be useful.
+
+---
+
+## Development Setup
+
+### Prerequisites
+
+| Tool | Version |
+|------|---------|
+| Node.js | 22+ |
+| Rust | stable (via [rustup](https://rustup.rs)) |
+| npm | bundled with Node.js |
+
+**Linux** — install system dependencies:
+
+```bash
+sudo apt-get install -y \
+ libwebkit2gtk-4.1-dev libssl-dev \
+ libayatana-appindicator3-dev librsvg2-dev \
+ patchelf libasound2-dev
+```
+
+**macOS / Windows** — no extra system dependencies required.
+
+### Install and run
+
+```bash
+git clone https://github.com/Splode/pomotroid
+cd pomotroid
+npm install
+npm run tauri dev
+```
+
+### Checks and tests
+
+```bash
+# TypeScript + Svelte type checking
+npm run check
+
+# Rust unit tests
+cargo test --manifest-path src-tauri/Cargo.toml
+
+# Rust linting (must pass with zero warnings)
+cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings
+```
+
+All three must pass before submitting a pull request. The CI pipeline runs them automatically.
+
+### Seeding test data
+
+To populate the statistics views with realistic historical data, use the seed script (requires Python 3, no extra dependencies):
+
+```bash
+# Preview what would be inserted — no database changes
+python3 scripts/seed-db.py --dry-run
+
+# Seed ~2 years of session history (default)
+python3 scripts/seed-db.py
+
+# Seed 1 year and wipe any existing sessions first
+python3 scripts/seed-db.py --days 365 --clear
+```
+
+The database must exist before seeding — launch Pomotroid at least once to create it. The script resolves the platform-specific app-data path automatically; pass `--db PATH` to override.
+
+---
+
+## Project Structure
+
+```
+pomotroid/
+├── src/ # SvelteKit frontend (Svelte 5 runes)
+│ ├── routes/ # Page components (main timer, settings, stats)
+│ └── lib/
+│ ├── components/ # Reusable UI components
+│ ├── ipc/ # Frontend wrappers for Tauri commands
+│ └── stores/ # Svelte stores (settings, theme)
+├── src-tauri/ # Rust backend (Tauri 2)
+│ └── src/
+│ ├── commands.rs # IPC command handlers
+│ ├── timer/ # Timer engine
+│ ├── audio/ # Audio playback (rodio)
+│ ├── db/ # SQLite persistence (rusqlite)
+│ └── settings/ # Settings load/save
+├── static/themes/ # Built-in JSON theme files
+└── scripts/ # Maintainer scripts
+```
+
+---
+
+## Making Changes
+
+1. Fork the repository and create a feature branch from `main`.
+2. Make your changes. Keep commits focused and use conventional commit prefixes (`feat:`, `fix:`, `chore:`, etc.).
+3. Ensure all checks pass (`npm run check`, `cargo test`, `cargo clippy`).
+4. Open a pull request against `main` with a clear description of what changed and why.
+
+### Adding a built-in theme
+
+Built-in themes are embedded into the binary at compile time, so adding one requires a small code change in addition to the JSON file.
+
+1. **Create the theme JSON** in `static/themes/your-theme-name.json`. See `THEMES.md` for the required format and color keys.
+
+2. **Register it** in `src-tauri/src/themes/mod.rs` — add an `include_str!()` entry to the `BUNDLED_JSON` array:
+ ```rust
+ include_str!("../../../static/themes/your-theme-name.json"),
+ ```
+
+3. **Update the bundled theme count** in the test assertion in the same file (e.g. `assert_eq!(themes.len(), 38, ...)`).
+
+Custom user themes (placed in the app data `themes/` folder) are discovered at runtime and require no code changes.
+
+### Adding a localization
+
+The app uses [Inlang + Paraglide](https://inlang.com) for translations. Adding a language requires two files to be touched, then a rebuild.
+
+1. **Create the message file** at `src/messages/{locale}.json`. Copy `src/messages/en.json` as a starting point and translate all values — do not change any keys.
+
+2. **Register the locale** by adding it to the `locales` array in `project.inlang/settings.json`:
+ ```json
+ "locales": ["en", "zh", "pt", "your-locale"]
+ ```
+
+3. **Rebuild** (`npm run build`) — Paraglide auto-generates the typed JS modules in `src/paraglide/messages/`. No further code changes are needed; the language will appear in Settings automatically.
+
+### Modifying settings
+
+Settings are stored as key/value strings in SQLite. Adding a new setting involves:
+
+1. Adding the DB key and default value in `src-tauri/src/settings/defaults.rs`
+2. Adding the typed field to the `Settings` struct in `src-tauri/src/settings/mod.rs`
+3. Updating the frontend `Settings` type in `src/lib/types.ts`
+4. Exposing a toggle or input in the relevant settings section under `src/lib/components/settings/sections/`
+
+---
+
+## Releasing
+
+Releases are managed by maintainers. The process is intentionally minimal: one script, one push.
+
+### Prerequisites
+
+- You are on the `main` branch with a clean working tree.
+- `[Unreleased]` in `CHANGELOG.md` contains the changes for this release.
+
+### Steps
+
+**1. Fill in the changelog**
+
+Open `CHANGELOG.md` and make sure `[Unreleased]` accurately describes everything going into the release. The release workflow uses this section as the GitHub Release body.
+
+**2. Run the bump script**
+
+```bash
+./scripts/bump-version.sh
+# e.g.
+./scripts/bump-version.sh 1.1.0
+```
+
+This will:
+- Update the version in `tauri.conf.json`, `Cargo.toml`, and `package.json`
+- Rename `[Unreleased]` in `CHANGELOG.md` to `[v1.1.0] - YYYY-MM-DD`
+- Commit all changes and create an annotated `v1.1.0` tag
+
+**3. Push**
+
+```bash
+git push origin main --follow-tags
+```
+
+Pushing the tag triggers the [release workflow](.github/workflows/release.yml), which:
+- Builds Linux (`.deb`, `.AppImage`), macOS (universal `.dmg`), and Windows (`.exe` installer) in parallel
+- Creates a **draft** GitHub Release with all artifacts attached and the changelog section as the release body
+
+**4. Publish the draft**
+
+Go to the [Releases page](https://github.com/Splode/pomotroid/releases), review the draft, and click **Publish release**.
+
+**5. Add a new `[Unreleased]` section**
+
+After publishing, add a fresh `[Unreleased]` block at the top of `CHANGELOG.md` to start collecting the next release's changes.
+
+### Version numbering
-### Quick Steps to Contribute
+Pomotroid follows [Semantic Versioning](https://semver.org):
-1. Fork the project.
-2. Download your fork to your PC (`git clone https://github.com/your_username/pomotroid && cd pomotroid`)
-3. Create your feature branch (`git checkout -b my-new-feature`)
-4. Ensure project runs and builds successfully (`npm run dev`) and (`npm run build`)
-5. Add them to staging (`git add .`)
-6. Commit your changes (`git commit -m 'Add some feature'`)
-7. Push to the branch (`git push origin my-new-feature`)
-8. Create new pull request to the `dev` branch.
+| Change | Version bump |
+|--------|-------------|
+| Breaking changes or major rewrites | `X.0.0` |
+| New features, backward-compatible | `X.Y.0` |
+| Bug fixes only | `X.Y.Z` |
diff --git a/README.md b/README.md
index 54c2931..f8f0e2d 100644
--- a/README.md
+++ b/README.md
@@ -11,97 +11,130 @@
- [Overview](#overview)
- [Features](#features)
- - [Themes](#themes)
+- [Statistics](#statistics)
+- [Themes](#themes)
- [Install](#install)
- - [Download](#download)
- - [Homebrew](#homebrew)
- - [Scoop](#scoop)
- - [AppGet](#appget)
-- [Roadmap](#roadmap)
+- [WebSocket API](#websocket-api)
- [Development](#development)
- - [Build Setup](#build-setup)
- [License](#license)
## Overview
Pomotroid is a simple and configurable Pomodoro timer. It aims to provide a visually-pleasing and reliable way to track productivity using the Pomodoro Technique.
-Pomotroid is in its early stages, so feedback and contributions are welcome and appreciated! :seedling:
+Built with [Tauri 2](https://tauri.app), [Rust](https://www.rust-lang.org), and [Svelte 5](https://svelte.dev).
## Features
-- Customize times and number of rounds (persistent)
-- Charming timer alert sounds (optional)
-- Desktop notifications (optional)
-- Minimize to tray (optional)
-- Several themes included with the ability to create custom themes.
-- Timer activity logging.
+- **Configurable timer** — customise work duration, break durations, and the number of rounds per long break
+- **Statistics** — daily, weekly, and all-time session history with charts and a 52-week heatmap
+- **37 bundled themes** — including Dracula, Nord, Tokyo Night, Catppuccin, Gruvbox, Rose Piné, and more; auto-switches with your OS light/dark preference
+- **Custom themes** — drop a JSON file into the themes folder; applied instantly without a restart
+- **Localization** — 7 languages: English, Spanish, French, German, Japanese, Chinese (Simplified), and Portuguese; auto-detects OS language
+- **Global shortcuts** — control the timer from anywhere, even when the window is hidden
+- **Custom audio** — replace the built-in alert sounds with your own files
+- **Tick sounds** — optional ticking during work and break rounds, independently toggleable
+- **Dynamic tray icon** — progress arc updates in real time; reflects round type and pause state
+- **Minimise / close to tray** — keep Pomotroid running in the background
+- **Desktop notifications** — native OS alerts on round transitions
+- **Compact mode** — a minimal set of controls appears when the window is resized small
+- **Always on top** — optionally keep the timer above other windows
+- **WebSocket server** — opt-in local server for stream overlays and external integrations
+- **Diagnostic logging** — rotating log file with a one-click shortcut to the log folder
+
+## Statistics
+
+Pomotroid tracks every completed session and surfaces the data across three views: a daily summary with an hourly breakdown, a weekly bar chart with streak tracking, and an all-time 52-week heatmap.
-### Themes
+
+

+
+
+## Themes
-Pomotroid provides many themes. It's also theme-able, allowing you to customize its appearance.
+Pomotroid ships with 37 themes and supports fully custom themes with live hot-reload.
-
+
-Visit the [theme documentation](./docs/themes/themes.md) to view the full list of official themes and for instruction on creating your own.
+See [THEMES.md](./THEMES.md) for the full theme list and instructions on creating your own.
## Install
### Download
-Download the latest version from the [releases](https://github.com/Splode/pomotroid/releases) page.
+Download the latest release from the [releases](https://github.com/Splode/pomotroid/releases) page.
-Pomotroid is available for Windows, Mac OSX and Linux.
+Available for **Windows** (installer + standalone exe), **macOS** (universal DMG), and **Linux** (`.deb` + AppImage).
-### Homebrew
+> **Note:** Pomotroid is currently unsigned. Depending on your OS security settings you may see a warning on first launch — this is expected and can be safely dismissed.
-You can also install Pomotroid on macOS with [Homebrew](https://brew.sh):
+### Homebrew (macOS)
```sh
brew install --cask pomotroid
```
-### Scoop
+> The Homebrew cask is maintained separately and may lag behind the latest release. Check the [releases](https://github.com/Splode/pomotroid/releases) page for the most current version.
-You can install Pomotroid on Windows with [scoop](https://scoop.sh/)
+## Custom Themes
-```sh
-scoop install https://raw.githubusercontent.com/Splode/pomotroid/master/pomotroid.json
-```
+Pomotroid supports user-created themes with automatic hot-reload — no restart required. See [THEMES.md](./THEMES.md) for directory paths, the full color reference, and a step-by-step guide.
-### AppGet
+## WebSocket API
-You can install Pomotroid on Windows with [AppGet](https://appget.net/)
+Pomotroid exposes an optional WebSocket server (disabled by default) for integration with external tools, stream overlays, and automation scripts.
-```sh
-appget install pomotroid
-```
+**Enable it** in Settings → Advanced → WebSocket Server, then connect to `ws://127.0.0.1:` (default port: 1314).
-## Roadmap
+### Messages
-:memo: Future plans for enhancements and development:
+**Client → Server**
-- Mini-mode
+| Message | Description |
+|---|---|
+| `{ "type": "getState" }` | Request the current timer state |
-## Development
+**Server → Client**
-Pomotroid is built with [Vue.js](https://github.com/vuejs/vue), [Electron](https://github.com/electron/electron), and [electron-vue](https://github.com/SimulatedGREG/electron-vue).
+| Event | Payload | Description |
+|---|---|---|
+| `state` | `TimerState` object | Response to `getState` |
+| `roundChange` | `TimerState` object | Fired whenever the timer advances to a new round |
+| `error` | `{ message }` | Protocol error |
-_Note: depending on your OS settings, you may receive a security warning upon installation. This has to do with Pomotroid being an unsigned application. You can find out more by researching code-signing for Apple and Microsoft._
+`TimerState` fields: `elapsed_secs`, `total_secs`, `is_running`, `is_paused`, `round_type`, `work_round_number`, `work_rounds_total`.
+
+## Development
-### Build Setup
+See [CONTRIBUTING.md](./CONTRIBUTING.md) for full setup instructions, project structure, and the release process.
+
+### Quick start
```bash
-# install dependencies
-npm i
+# Install dependencies
+npm install
-# serve with hot reload at localhost:9080
-npm run dev
+# Run in development mode (hot-reload)
+npm run tauri dev
-# build Pomotroid for production
-npm run build
+# Build a production release
+npm run tauri build
```
+### Localization
+
+UI strings live in `src/messages/.json` (en, es, fr, de, ja, zh, pt). The compiled output in `src/paraglide/` is generated at build time and is not committed to the repository.
+
+**During development**, the Paraglide Vite plugin compiles messages automatically whenever `npm run tauri dev` or `npm run tauri build` is run — no manual step required.
+
+**After adding or changing message keys**, regenerate the output explicitly so that `svelte-check` and your editor can pick up the new types:
+
+```bash
+npm run paraglide:compile
+```
+
+This is also run automatically as part of `npm run check`.
+
## License
MIT © [Christopher Murphy](https://github.com/Splode)
diff --git a/THEMES.md b/THEMES.md
new file mode 100644
index 0000000..0c0f41c
--- /dev/null
+++ b/THEMES.md
@@ -0,0 +1,85 @@
+# Pomotroid Themes
+
+Pomotroid ships with 37 built-in themes and supports an unlimited number of user-created custom themes. Custom themes are hot-reloaded — no restart required.
+
+## Built-in themes
+
+Andromeda, Ayu (Mirage), Catppuccin Frappé, Catppuccin Latte, Catppuccin Macchiato, Catppuccin Mocha, City Lights, Cobalt2, Darcula, Dracula, D.Va, Everforest, GitHub, GitHub Dark, Graphite, Gruvbox, Gruvbox Light, Horizon, Kanagawa, Material Palenight, Monokai, Monokai Pro, Night Owl, Nord, One Dark Pro, Panda, Pomotroid (default dark), Pomotroid Light (default light), Popping and Locking, Rosé Pine, Rosé Pine Dawn, Rosé Pine Moon, Solarized Dark, Solarized Light, Spandex, Synthwave, Tokyo Night
+
+## Creating a custom theme
+
+A theme is a single `.json` file with a name and a set of hex color values.
+
+### 1. Create the themes directory
+
+The directory is not created automatically. Make it once:
+
+**Linux**
+```sh
+mkdir -p ~/.local/share/com.splode.pomotroid/themes
+```
+
+**macOS**
+```sh
+mkdir -p ~/Library/Application\ Support/com.splode.pomotroid/themes
+```
+
+**Windows** (PowerShell)
+```powershell
+New-Item -ItemType Directory -Force "$env:APPDATA\com.splode.pomotroid\themes"
+```
+
+### 2. Create a theme file
+
+Copy the template below into a `.json` file in the themes directory. The filename can be anything — the displayed name comes from the `name` field.
+
+```json
+{
+ "name": "My Theme",
+ "colors": {
+ "--color-focus-round": "#ff4e4d",
+ "--color-short-round": "#05ec8c",
+ "--color-long-round": "#0bbddb",
+ "--color-background": "#2f384b",
+ "--color-background-light": "#3d4457",
+ "--color-background-lightest": "#9ca5b5",
+ "--color-foreground": "#f6f2eb",
+ "--color-foreground-darker": "#c0c9da",
+ "--color-foreground-darkest": "#dbe1ef",
+ "--color-accent": "#05ec8c"
+ }
+}
+```
+
+### 3. Select your theme
+
+Open **Settings → Appearance**. Your theme appears in the picker with a **Custom** badge. Select it for the Light or Dark slot (or both).
+
+## Color reference
+
+| Key | Used for |
+|-----|----------|
+| `--color-focus-round` | Work round indicator — dial arc, round dot |
+| `--color-short-round` | Short break indicator |
+| `--color-long-round` | Long break indicator |
+| `--color-background` | Main window background |
+| `--color-background-light` | Sidebar, cards, elevated surfaces |
+| `--color-background-lightest` | Borders, dividers, subtler surfaces |
+| `--color-foreground` | Primary text |
+| `--color-foreground-darker` | Secondary text, labels |
+| `--color-foreground-darkest` | Tertiary text, placeholders |
+| `--color-accent` | Highlighted elements, active states |
+
+All values must be CSS hex colors (`#rrggbb` or `#rrggbbaa`).
+
+## Hot-reload
+
+Pomotroid watches the themes directory while running. Saving a file — including edits to an existing theme — updates the Appearance picker within half a second. There is no need to reopen settings or restart the app.
+
+## Overriding a built-in theme
+
+If a custom theme's `name` exactly matches a built-in theme name (case-insensitive), it replaces that theme in the picker. This lets you tweak an existing theme without adding a new entry to the list.
+
+## Using bundled themes as a starting point
+
+The bundled theme files are a useful reference. You can find them in the source repository under [`static/themes/`](./static/themes/).
diff --git a/Taskfile.yml b/Taskfile.yml
deleted file mode 100644
index 3f222f7..0000000
--- a/Taskfile.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# https://taskfile.dev
-
-version: '3'
-
-tasks:
- changelog:
- cmds:
- - git-chglog -c .chglog/config.yml > CHANGELOG.md
- default:
- cmds:
- - echo "{{.GREETING}}"
- silent: true
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index 9573f4d..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-version: 0.1.{build}
-
-branches:
- only:
- - master
- - dev
-
-image: Visual Studio 2017
-platform:
- - x64
-
-cache:
- - node_modules
- - '%APPDATA%\npm-cache'
- - '%USERPROFILE%\.electron'
- - '%USERPROFILE%\AppData\Local\Yarn\cache'
-
-init:
- - git config --global core.autocrlf input
-
-install:
- - ps: Install-Product node 14 x64
- # - choco install yarn --ignore-dependencies
- - git reset --hard HEAD
- - yarn
- - node --version
-
-build_script:
- - yarn build
-
-test: off
diff --git a/build/icons/256x256.png b/build/icons/256x256.png
deleted file mode 100644
index a2eceeb..0000000
Binary files a/build/icons/256x256.png and /dev/null differ
diff --git a/build/icons/icon.icns b/build/icons/icon.icns
deleted file mode 100644
index 9f7257c..0000000
Binary files a/build/icons/icon.icns and /dev/null differ
diff --git a/build/icons/icon.ico b/build/icons/icon.ico
deleted file mode 100644
index 415ff2c..0000000
Binary files a/build/icons/icon.ico and /dev/null differ
diff --git a/build/icons/icon.png b/build/icons/icon.png
deleted file mode 100644
index 813cd24..0000000
Binary files a/build/icons/icon.png and /dev/null differ
diff --git a/dist/electron/.gitkeep b/dist/electron/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/dist/web/.gitkeep b/dist/web/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/themes/images/andromeda_01.png b/docs/themes/images/andromeda_01.png
deleted file mode 100644
index df84ef8..0000000
Binary files a/docs/themes/images/andromeda_01.png and /dev/null differ
diff --git a/docs/themes/images/andromeda_02.png b/docs/themes/images/andromeda_02.png
deleted file mode 100644
index 88ea15a..0000000
Binary files a/docs/themes/images/andromeda_02.png and /dev/null differ
diff --git a/docs/themes/images/ayu_01.png b/docs/themes/images/ayu_01.png
deleted file mode 100644
index 3e4c810..0000000
Binary files a/docs/themes/images/ayu_01.png and /dev/null differ
diff --git a/docs/themes/images/ayu_02.png b/docs/themes/images/ayu_02.png
deleted file mode 100644
index 2044c1f..0000000
Binary files a/docs/themes/images/ayu_02.png and /dev/null differ
diff --git a/docs/themes/images/city-lights_01.png b/docs/themes/images/city-lights_01.png
deleted file mode 100644
index f4b249e..0000000
Binary files a/docs/themes/images/city-lights_01.png and /dev/null differ
diff --git a/docs/themes/images/city-lights_02.png b/docs/themes/images/city-lights_02.png
deleted file mode 100644
index 3fff28b..0000000
Binary files a/docs/themes/images/city-lights_02.png and /dev/null differ
diff --git a/docs/themes/images/dracula_01.png b/docs/themes/images/dracula_01.png
deleted file mode 100644
index fc58ec8..0000000
Binary files a/docs/themes/images/dracula_01.png and /dev/null differ
diff --git a/docs/themes/images/dracula_02.png b/docs/themes/images/dracula_02.png
deleted file mode 100644
index 2b5cf1a..0000000
Binary files a/docs/themes/images/dracula_02.png and /dev/null differ
diff --git a/docs/themes/images/dva_01.png b/docs/themes/images/dva_01.png
deleted file mode 100644
index 18eddb2..0000000
Binary files a/docs/themes/images/dva_01.png and /dev/null differ
diff --git a/docs/themes/images/dva_02.png b/docs/themes/images/dva_02.png
deleted file mode 100644
index 7cebd1c..0000000
Binary files a/docs/themes/images/dva_02.png and /dev/null differ
diff --git a/docs/themes/images/github_01.png b/docs/themes/images/github_01.png
deleted file mode 100644
index d671525..0000000
Binary files a/docs/themes/images/github_01.png and /dev/null differ
diff --git a/docs/themes/images/github_02.png b/docs/themes/images/github_02.png
deleted file mode 100644
index e971da4..0000000
Binary files a/docs/themes/images/github_02.png and /dev/null differ
diff --git a/docs/themes/images/graphite_01.png b/docs/themes/images/graphite_01.png
deleted file mode 100644
index b915ee0..0000000
Binary files a/docs/themes/images/graphite_01.png and /dev/null differ
diff --git a/docs/themes/images/graphite_02.png b/docs/themes/images/graphite_02.png
deleted file mode 100644
index ffd827d..0000000
Binary files a/docs/themes/images/graphite_02.png and /dev/null differ
diff --git a/docs/themes/images/gruvbox_01.png b/docs/themes/images/gruvbox_01.png
deleted file mode 100644
index c40da7f..0000000
Binary files a/docs/themes/images/gruvbox_01.png and /dev/null differ
diff --git a/docs/themes/images/gruvbox_02.png b/docs/themes/images/gruvbox_02.png
deleted file mode 100644
index bf0d30d..0000000
Binary files a/docs/themes/images/gruvbox_02.png and /dev/null differ
diff --git a/docs/themes/images/monokai_01.png b/docs/themes/images/monokai_01.png
deleted file mode 100644
index f7db5ab..0000000
Binary files a/docs/themes/images/monokai_01.png and /dev/null differ
diff --git a/docs/themes/images/monokai_02.png b/docs/themes/images/monokai_02.png
deleted file mode 100644
index aad5c73..0000000
Binary files a/docs/themes/images/monokai_02.png and /dev/null differ
diff --git a/docs/themes/images/nord_01.png b/docs/themes/images/nord_01.png
deleted file mode 100644
index f7a05ea..0000000
Binary files a/docs/themes/images/nord_01.png and /dev/null differ
diff --git a/docs/themes/images/nord_02.png b/docs/themes/images/nord_02.png
deleted file mode 100644
index 65722ac..0000000
Binary files a/docs/themes/images/nord_02.png and /dev/null differ
diff --git a/docs/themes/images/one-dark-pro_01.png b/docs/themes/images/one-dark-pro_01.png
deleted file mode 100644
index dfd0652..0000000
Binary files a/docs/themes/images/one-dark-pro_01.png and /dev/null differ
diff --git a/docs/themes/images/one-dark-pro_02.png b/docs/themes/images/one-dark-pro_02.png
deleted file mode 100644
index 4065263..0000000
Binary files a/docs/themes/images/one-dark-pro_02.png and /dev/null differ
diff --git a/docs/themes/images/pomotroid_01.png b/docs/themes/images/pomotroid_01.png
deleted file mode 100644
index f2dda37..0000000
Binary files a/docs/themes/images/pomotroid_01.png and /dev/null differ
diff --git a/docs/themes/images/pomotroid_02.png b/docs/themes/images/pomotroid_02.png
deleted file mode 100644
index 2632f38..0000000
Binary files a/docs/themes/images/pomotroid_02.png and /dev/null differ
diff --git a/docs/themes/images/popping-and-locking_01.png b/docs/themes/images/popping-and-locking_01.png
deleted file mode 100644
index 90a8476..0000000
Binary files a/docs/themes/images/popping-and-locking_01.png and /dev/null differ
diff --git a/docs/themes/images/popping-and-locking_02.png b/docs/themes/images/popping-and-locking_02.png
deleted file mode 100644
index b19ec9a..0000000
Binary files a/docs/themes/images/popping-and-locking_02.png and /dev/null differ
diff --git a/docs/themes/images/solarized-light_01.png b/docs/themes/images/solarized-light_01.png
deleted file mode 100644
index 6ae433b..0000000
Binary files a/docs/themes/images/solarized-light_01.png and /dev/null differ
diff --git a/docs/themes/images/solarized-light_02.png b/docs/themes/images/solarized-light_02.png
deleted file mode 100644
index fe8b678..0000000
Binary files a/docs/themes/images/solarized-light_02.png and /dev/null differ
diff --git a/docs/themes/images/spandex_01.png b/docs/themes/images/spandex_01.png
deleted file mode 100644
index a187739..0000000
Binary files a/docs/themes/images/spandex_01.png and /dev/null differ
diff --git a/docs/themes/images/spandex_02.png b/docs/themes/images/spandex_02.png
deleted file mode 100644
index 3bd2635..0000000
Binary files a/docs/themes/images/spandex_02.png and /dev/null differ
diff --git a/docs/themes/images/synthwave_01.png b/docs/themes/images/synthwave_01.png
deleted file mode 100644
index 030ab2f..0000000
Binary files a/docs/themes/images/synthwave_01.png and /dev/null differ
diff --git a/docs/themes/images/synthwave_02.png b/docs/themes/images/synthwave_02.png
deleted file mode 100644
index 4a1f1e6..0000000
Binary files a/docs/themes/images/synthwave_02.png and /dev/null differ
diff --git a/docs/themes/images/tokyo-night-storm_01.png b/docs/themes/images/tokyo-night-storm_01.png
deleted file mode 100644
index b43ecf2..0000000
Binary files a/docs/themes/images/tokyo-night-storm_01.png and /dev/null differ
diff --git a/docs/themes/images/tokyo-night-storm_02.png b/docs/themes/images/tokyo-night-storm_02.png
deleted file mode 100644
index 4e73868..0000000
Binary files a/docs/themes/images/tokyo-night-storm_02.png and /dev/null differ
diff --git a/docs/themes/theme-template.json b/docs/themes/theme-template.json
deleted file mode 100644
index f3a8127..0000000
--- a/docs/themes/theme-template.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "Theme Name",
- "colors": {
- "--color-long-round": "",
- "--color-short-round": "",
- "--color-focus-round": "",
- "--color-background": "",
- "--color-background-light": "",
- "--color-background-lightest": "",
- "--color-foreground": "",
- "--color-foreground-darker": "",
- "--color-foreground-darkest": "",
- "--color-accent": ""
- }
-}
diff --git a/docs/themes/themes.md b/docs/themes/themes.md
deleted file mode 100644
index 1fb6f15..0000000
--- a/docs/themes/themes.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Pomotroid Themes
-
-Pomotroid comes with many officially supported themes. You can also add any number of custom themes.
-
-- [Pomotroid Themes](#pomotroid-themes)
- - [Available Themes](#available-themes)
- - [Creating a Custom Theme](#creating-a-custom-theme)
-
-## Available Themes
-
-These themes are available by default.
-
-| Theme | Main App | Timer Colors |
-| ------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- |
-| Andromeda |  |  |
-| Ayu Mirage |  |  |
-| City Lights |  |  |
-| Dracula |  |  |
-| D.Va |  |  |
-| GitHub |  |  |
-| Graphite |  |  |
-| Gruvbox |  |  |
-| Monokai |  |  |
-| Nord |  |  |
-| One Dark Pro |  |  |
-| Pomotroid (default) |  |  |
-| Popping and Locking |  |  |
-| Solarized Light |  |  |
-| Spandex |  |  |
-| Sythwave |  |  |
-| Tokyo Night Storm |  |  |
-
-## Creating a Custom Theme
-
-Creating custom themes is simple. Themes are defined by a `json` file containing a **theme name** and several color values. Use the [theme template file](./theme-template.json) as a starting point.
-
-```json
-// theme-template.json
-{
- "name": "Theme Name",
- "colors": {
- "--color-long-round": "",
- "--color-short-round": "",
- "--color-focus-round": "",
- "--color-background": "",
- "--color-background-light": "",
- "--color-background-lightest": "",
- "--color-foreground": "",
- "--color-foreground-darker": "",
- "--color-foreground-darkest": "",
- "--color-accent": ""
- }
-}
-```
-
-To add your custom theme, copy your theme definition to the `themes` directory in the `appData` directory. The location of the `appData` depends on the operating system.
-
-- `%APPDATA%` on **Windows**
-- `$XDG_CONFIG_HOME` or `~/.config` on **Linux**
-- `~/Library/Application Support` on **macOS**
-
-For example, add the theme file to the following directory on Windows: `C:\Users\{User}\AppData\Roaming\pomotroid\themes`
-
-Restart the application to see your new theme available as an option.
diff --git a/misc/icons/pomotroid-icon--0.1.ai b/misc/icons/pomotroid-icon--0.1.ai
deleted file mode 100644
index ff2995e..0000000
--- a/misc/icons/pomotroid-icon--0.1.ai
+++ /dev/null
@@ -1,2346 +0,0 @@
-%PDF-1.5
%
-1 0 obj
<>/OCGs[6 0 R 5 0 R 7 0 R 33 0 R 35 0 R 34 0 R 36 0 R 63 0 R 65 0 R 64 0 R 66 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<>stream
-
-
-
-
- application/pdf
-
-
- Web
-
-
- Adobe Illustrator CC 22.0 (Windows)
- 2018-01-29T12:15:07-07:00
- 2018-01-29T12:19:46-07:00
- 2018-01-29T12:19:46-07:00
-
-
-
- 256
- 256
- JPEG
- /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYq7FUs13zP5d0C3+sa1qNvYRkEp68iqzU/kX7TH/VGEAlBLy7zD/zlB5KsS0ej2lzrEq/Zen1a
E/7OQNJ/yTywYixM3nes/wDOT/ny7LLpttZ6ZEfssEaeUfNpDwP/AAGTGII4yw3Uvzf/ADN1Ek3H
mO8SvUW7i2Hj0gEeSEAx4ix661/Xbs8rrUbq4PjLNI56U/aY9slSLQIBJoBUnoMUgW20ciirKQPE
gjEEJMJDmEba6/rtoeVrqN1bnximkQ9KfssO2NMbZDpv5v8A5m6cQbfzHePToLhxcjx6TiTImATx
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
rsVdirsVdirsVdir/9k=
-
-
-
- proof:pdf
- uuid:65E6390686CF11DBA6E2D887CEACB407
- xmp.did:d97ff0c7-5bd3-744c-93a1-6bd02f90a7ad
- uuid:f242000b-1cd2-465d-923e-8a3137c21ed8
-
- uuid:3e593450-be4b-41f3-a1ac-f0c60f6cd9f7
- xmp.did:e4637d7a-1015-5a4e-8a54-8a417d835ed6
- uuid:65E6390686CF11DBA6E2D887CEACB407
- proof:pdf
-
-
-
-
- saved
- xmp.iid:d97ff0c7-5bd3-744c-93a1-6bd02f90a7ad
- 2018-01-29T12:15:08-07:00
- Adobe Illustrator CC 22.0 (Windows)
- /
-
-
-
- Web
- Document
- 1
- False
- False
-
- 2000.000000
- 2000.000000
- Pixels
-
-
-
- Cyan
- Magenta
- Yellow
- Black
-
-
-
-
-
- Default Swatch Group
- 0
-
-
-
- White
- RGB
- PROCESS
- 255
- 255
- 255
-
-
- Black
- RGB
- PROCESS
- 0
- 0
- 0
-
-
- RGB Red
- RGB
- PROCESS
- 255
- 0
- 0
-
-
- RGB Yellow
- RGB
- PROCESS
- 255
- 255
- 0
-
-
- RGB Green
- RGB
- PROCESS
- 0
- 255
- 0
-
-
- RGB Cyan
- RGB
- PROCESS
- 0
- 255
- 255
-
-
- RGB Blue
- RGB
- PROCESS
- 0
- 0
- 255
-
-
- RGB Magenta
- RGB
- PROCESS
- 255
- 0
- 255
-
-
- R=193 G=39 B=45
- RGB
- PROCESS
- 193
- 39
- 45
-
-
- R=237 G=28 B=36
- RGB
- PROCESS
- 237
- 28
- 36
-
-
- R=241 G=90 B=36
- RGB
- PROCESS
- 241
- 90
- 36
-
-
- R=247 G=147 B=30
- RGB
- PROCESS
- 247
- 147
- 30
-
-
- R=251 G=176 B=59
- RGB
- PROCESS
- 251
- 176
- 59
-
-
- R=252 G=238 B=33
- RGB
- PROCESS
- 252
- 238
- 33
-
-
- R=217 G=224 B=33
- RGB
- PROCESS
- 217
- 224
- 33
-
-
- R=140 G=198 B=63
- RGB
- PROCESS
- 140
- 198
- 63
-
-
- R=57 G=181 B=74
- RGB
- PROCESS
- 57
- 181
- 74
-
-
- R=0 G=146 B=69
- RGB
- PROCESS
- 0
- 146
- 69
-
-
- R=0 G=104 B=55
- RGB
- PROCESS
- 0
- 104
- 55
-
-
- R=34 G=181 B=115
- RGB
- PROCESS
- 34
- 181
- 115
-
-
- R=0 G=169 B=157
- RGB
- PROCESS
- 0
- 169
- 157
-
-
- R=41 G=171 B=226
- RGB
- PROCESS
- 41
- 171
- 226
-
-
- R=0 G=113 B=188
- RGB
- PROCESS
- 0
- 113
- 188
-
-
- R=46 G=49 B=146
- RGB
- PROCESS
- 46
- 49
- 146
-
-
- R=27 G=20 B=100
- RGB
- PROCESS
- 27
- 20
- 100
-
-
- R=102 G=45 B=145
- RGB
- PROCESS
- 102
- 45
- 145
-
-
- R=147 G=39 B=143
- RGB
- PROCESS
- 147
- 39
- 143
-
-
- R=158 G=0 B=93
- RGB
- PROCESS
- 158
- 0
- 93
-
-
- R=212 G=20 B=90
- RGB
- PROCESS
- 212
- 20
- 90
-
-
- R=237 G=30 B=121
- RGB
- PROCESS
- 237
- 30
- 121
-
-
- R=199 G=178 B=153
- RGB
- PROCESS
- 199
- 178
- 153
-
-
- R=153 G=134 B=117
- RGB
- PROCESS
- 153
- 134
- 117
-
-
- R=115 G=99 B=87
- RGB
- PROCESS
- 115
- 99
- 87
-
-
- R=83 G=71 B=65
- RGB
- PROCESS
- 83
- 71
- 65
-
-
- R=198 G=156 B=109
- RGB
- PROCESS
- 198
- 156
- 109
-
-
- R=166 G=124 B=82
- RGB
- PROCESS
- 166
- 124
- 82
-
-
- R=140 G=98 B=57
- RGB
- PROCESS
- 140
- 98
- 57
-
-
- R=117 G=76 B=36
- RGB
- PROCESS
- 117
- 76
- 36
-
-
- R=96 G=56 B=19
- RGB
- PROCESS
- 96
- 56
- 19
-
-
- R=66 G=33 B=11
- RGB
- PROCESS
- 66
- 33
- 11
-
-
-
-
-
- Grays
- 1
-
-
-
- R=0 G=0 B=0
- RGB
- PROCESS
- 0
- 0
- 0
-
-
- R=26 G=26 B=26
- RGB
- PROCESS
- 26
- 26
- 26
-
-
- R=51 G=51 B=51
- RGB
- PROCESS
- 51
- 51
- 51
-
-
- R=77 G=77 B=77
- RGB
- PROCESS
- 77
- 77
- 77
-
-
- R=102 G=102 B=102
- RGB
- PROCESS
- 102
- 102
- 102
-
-
- R=128 G=128 B=128
- RGB
- PROCESS
- 128
- 128
- 128
-
-
- R=153 G=153 B=153
- RGB
- PROCESS
- 153
- 153
- 153
-
-
- R=179 G=179 B=179
- RGB
- PROCESS
- 179
- 179
- 179
-
-
- R=204 G=204 B=204
- RGB
- PROCESS
- 204
- 204
- 204
-
-
- R=230 G=230 B=230
- RGB
- PROCESS
- 230
- 230
- 230
-
-
- R=242 G=242 B=242
- RGB
- PROCESS
- 242
- 242
- 242
-
-
-
-
-
- Web Color Group
- 1
-
-
-
- R=63 G=169 B=245
- RGB
- PROCESS
- 63
- 169
- 245
-
-
- R=122 G=201 B=67
- RGB
- PROCESS
- 122
- 201
- 67
-
-
- R=255 G=147 B=30
- RGB
- PROCESS
- 255
- 147
- 30
-
-
- R=255 G=29 B=37
- RGB
- PROCESS
- 255
- 29
- 37
-
-
- R=255 G=123 B=172
- RGB
- PROCESS
- 255
- 123
- 172
-
-
- R=189 G=204 B=212
- RGB
- PROCESS
- 189
- 204
- 212
-
-
-
-
-
-
- Adobe PDF library 15.00
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-endstream
endobj
3 0 obj
<>
endobj
9 0 obj
<>/Resources<>/ExtGState<>/Properties<>>>/Thumb 72 0 R/TrimBox[0.0 0.0 2000.0 2000.0]/Type/Page>>
endobj
68 0 obj
<>stream
-HUɎ1+T+BBШ|@a.4v*Kwq~J>mp#h)Ή)|z2|ln1ݝxXTc=4gx2@ Aޑ7+vY#,!$
-,a42_*PWVSې5*1ՆnGk=jqh8s1ܶ#.X|֭ˎJS|FݸLS~TvzFgVH;\;h()ȨRiO|Sxa]'9z)]n]ɪ3;H{=EL M--
%Vg3riS
-CvLn7h;|&2KtED܆]z_N_ &|PuX̻vum
-Do&T$nL{ʨM*+կSEIp!YוA$o:J;5t[c:y仦t$rq_\,NB3vo~
-0 ҩ
-endstream
endobj
72 0 obj
<>stream
-8;Y!G4-nnL&4OLnJHC<&`@0.E*6]22=_HTE[PJOmrrN5dRHAJTeu)kRQWI1'>O0TJ
-emN.^lYSl`?`]4dU[hVm+oEm;I_P\5f.Y6j<7[uMKARVTN>j1;'?A&tC5"OXQ[O0P
-9WMAe&NBuBGB@:&oDLin605d^;VnGE]e1a
-eC(`?*?t#sZeIOepHLX>[otq;8gg`r%3<9nkRei9nP7$jo=bu#Q'3/O8p'jsH::5\
-P`FqllZ)/?%P9sRBLu!ja6e7MHb;cEWmUE\hK:DFX&7"3N&RZToWZ%2;P7"]'4s-l
-Jq(i:Gi=0g8;_bojJQ$2drSk.c#csIimB:Ae;2%hZn0\lnJ!e9jdtJWeN2WT$6?YN
-R.QK9TW?-k9!'I2HQhh`15hmG35m%3X_^_#;OpIs=+V28-)4PliL-iLP8#J+-g`6T
--nm^@`)hO)q2&ZG6g/AYam]3s;TJ7e-eA$ka>ITi1Us@RR[=`,cM6L;(RP6!U/LWI
-9<$j9Y*h;4T.oRCV(s3lT0":*J&hD].:"5&Y!P@<.$Y&u>si`[59Zkk;lUE:]qhs+
-YcH-88qbu'<1R!`XHu!5:r=\X9!S7F6:C'7Z(Ai1:ZO`lJuhr!W`lSg:$pqkqY_cokXZDg%q8(\59JbXhh9
-jaE.e>&p7UG/H0]V2PZ8".YeQ:QanGrY/,2/JG^NeDoXc*+JOJ&]53mLL>1U:\;eI
-LttG>4^Of;i++lsrYao@p.nPLEkGq[_]EZ2VI!NXUhZ,a@opcq1;hM-B5"g.cLhc2
-o8NMOZX(XbV5';@Ut(VHp0\Du'`M"2*'d5@HD
-,O3VSEBV1-1(q.#HA#q%rZO%&V&h5:$Y+i`VYc\U\ocL@md%MZ=6Su>7+s^*+d)#0
-n#cGsf-$oVkSW@eWE`Bu.HM5+mMJ..4afM?LC9=lTmb6aa&"l?NHg<:&VO'C2V8I(
-.Fo&dG#u\Q$mF2i*/@W6Bo$Xk-0_+u(3)ZrOJk_^h+)D'HPHh*=ql[$"OI1uUT6"1
-AX9rb]q&2gQ#]U16U/RcUeNm*b?7/%lpS4!5UiC&DV;S5eY5Y+fL"4\H?EUG4R
-gq?+S6n(TDH8^k:B;-2[Zh4k^8:-2f%,RqFH;;\*G?K\(+\V'4`Y0ai^YgQP)bK%8
->XCgb10pUglO!@Nj`KS]c:bkFFU2,Bn=QOnoKZ;MXAdt5rmk.]3Ceo]*r1YT.SNV2
-Y&o7.dWGlq]3A+-lq$T\o@V7*:;Q3\?,H"Qq]V.IYNR./7fRmVa/tA^X\5uC7G3_r
-c1LK9e$4Q58eC[KqPO2GWQqpQTqM=:hXICkL33.d^7SSBlmf5+gFCb~>
-endstream
endobj
73 0 obj
[/Indexed/DeviceRGB 255 74 0 R]
endobj
74 0 obj
<>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
-b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
-E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn
-6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O(
-l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
-endstream
endobj
63 0 obj
<>
endobj
65 0 obj
<>
endobj
64 0 obj
<>
endobj
66 0 obj
<>
endobj
81 0 obj
[/View/Design]
endobj
82 0 obj
<>>>
endobj
79 0 obj
[/View/Design]
endobj
80 0 obj
<>>>
endobj
77 0 obj
[/View/Design]
endobj
78 0 obj
<>>>
endobj
75 0 obj
[/View/Design]
endobj
76 0 obj
<>>>
endobj
71 0 obj
<>
endobj
70 0 obj
[/ICCBased 83 0 R]
endobj
83 0 obj
<>stream
-HyTSwoɞc
[5laQIBHADED2mtFOE.c}088GNg9w߽ '0 ֠Jb
- 2y.-;!KZ ^i"L0-
@8(r;q7Ly&Qq4j|9
-V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'K t;\
ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹Aom?W=
-x- [ 0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?c. R
߁-25 S>ӣVd`rn~Y&+`;A4 A9 =-tl`;~p Gp| [`L`< "AYA+Cb(R, *T2B-
-ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r9\A&GrQhE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_(0J:EAiQ(()ӔWT6U@P+!~mDeԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel
}}Cq9
-N')].uJr
-wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó tizf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4
-n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY.=b?SƕƩȺy
چk5%4m7lqlioZlG+Zzmzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś
nLl<9O [$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD- u`ֲK³8%yhYѹJº;.!
-zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs
2F[p(@Xr4Pm8Ww)Km
-endstream
endobj
69 0 obj
<>
endobj
84 0 obj
<>
endobj
85 0 obj
<>stream
-%!PS-Adobe-3.0
-%%Creator: Adobe Illustrator(R) 17.0
-%%AI8_CreatorVersion: 22.0.1
-%%For: (MT-User) ()
-%%Title: (pomotroid-icon--0.1.ai)
-%%CreationDate: 1/29/2018 12:19 PM
-%%Canvassize: 16383
-%%BoundingBox: -317 -1384 1683 616
-%%HiResBoundingBox: -317 -1384 1683 616
-%%DocumentProcessColors: Cyan Magenta Yellow Black
-%AI5_FileFormat 13.0
-%AI12_BuildNumber: 249
-%AI3_ColorUsage: Color
-%AI7_ImageSettings: 0
-%%RGBProcessColor: 0 0 0 ([Registration])
-%AI3_Cropmarks: -317 -1384 1683 616
-%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5
-%AI3_TileBox: 389 -767.039978027344 974.9599609375 0
-%AI3_DocumentPreview: None
-%AI5_ArtSize: 14400 14400
-%AI5_RulerUnits: 6
-%AI9_ColorModel: 1
-%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
-%AI5_TargetResolution: 800
-%AI5_NumLayers: 4
-%AI17_Begin_Content_if_version_gt:17 1
-%AI9_OpenToView: -4945.74377437744 1590.37833783378 0.3333 3708 1940 18 0 0 68 168 0 0 0 1 1 0 1 1 0 1
-%AI17_Alternate_Content
-%AI9_OpenToView: -4945.74377437744 1590.37833783378 0.3333 3708 1940 18 0 0 68 168 0 0 0 1 1 0 1 1 0 1
-%AI17_End_Versioned_Content
-%AI5_OpenViewLayers: 7676
-%%PageOrigin:283 -684
-%AI7_GridSettings: 70 8 70 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142
-%AI9_Flatten: 1
-%AI12_CMSettings: 00.MS
-%%EndComments
-
-endstream
endobj
86 0 obj
<>stream
-%%BoundingBox: -317 -1384 1683 616
-%%HiResBoundingBox: -317 -1384 1683 616
-%AI7_Thumbnail: 128 128 8
-%%BeginData: 29599 Hex Bytes
-%0000330000660000990000CC0033000033330033660033990033CC0033FF
-%0066000066330066660066990066CC0066FF009900009933009966009999
-%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
-%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
-%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
-%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
-%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
-%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
-%6666006666336666666666996666CC6666FF669900669933669966669999
-%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
-%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
-%9933009933339933669933999933CC9933FF996600996633996666996699
-%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
-%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
-%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
-%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
-%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
-%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
-%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
-%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
-%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
-%000011111111220000002200000022222222440000004400000044444444
-%550000005500000055555555770000007700000077777777880000008800
-%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
-%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
-%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
-%524C45FD35FFA8A87D7D5252282E2728272E272827525253537E7EA9A9FD
-%64FFA87E52522728052700FD042728272827282728052805270027272828
-%7D7DA8AFFD5CFF7D7D282805282728272827282728272827282728052827
-%2827282728272827280528275252A8A9FD56FF7D53272700272727052827
-%270528272705282727054C274C2728272705280527052827270528052700
-%28527EA8FD50FFA87D27282728272E2728272E2728272E2728272E272827
-%9AB5BCB5BCB5BC939A6F764B522728052E2728272E2728055259A9FD4CFF
-%A8282800272728272827282728272827282728272827282794B5BCB5BCB5
-%BCB5BCB5BCB5BCB5BC93704B4C272805282728052705527DFD48FF7D5227
-%2727282728272827282728272827282728272827282752B5BCB5BCB5BCB5
-%BCB5BCB5BCB5BCB5BCB5BCB5BC6F4C272827282728272728A8FD44FFA828
-%2700282727052827270528272705282728272827282728272827BCB5BCB5
-%BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5946F4C05270528272700527D
-%FD40FFA8532728272E2728272E2728272E2728272E282E2752282E272E27
-%28272E93BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB59A4B
-%522728272E272852AFFD3DFF522700282728272827282728272827282728
-%272827282728272827282728054C93BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC
-%B5BCB5BCB5BCB5BCB5BC9376272805282727057DA8FD39FFA82728272827
-%28272827282728272E282E272E272827282728272827282728272805284B
-%4C4B764B766F9A93BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC6F2805
-%28272800527EFD36FFA85900270528272705282727052827282728272705
-%2827270528272705282727052827270528052705280527052827274B706F
-%BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC937005282727002752FD34FFA85205
-%28272E2728272E2728272E282E272E2728272E2728272E2728272E272827
-%2E2728272827282728272827282728272E272827526FBCB5BCB5BCB5BCB5
-%BCB5BCB5BCB5BC4B28272E272728A9FD31FF7D2700282728272827282728
-%272827282728272827282728272827282728272827282728272705341234
-%0C340C2E052E2727212827280528274C6FBCB5BCB5BCB5BCB5BCB5BCB5BC
-%6F2805282727057EFD2FFF522827282728272827282728272E2728272827
-%282728272827282728272827282728272827282EFD091E183B12340C2E27
-%2827282728277693BCB5BCB5BCB5BCB5BCB5BCB54C05282728007DFD2DFF
-%2E2705282727052827270528272805282727052827270528272705282727
-%0528272705282727051E181E181E181E181E181E181E1E1E18190C2E0527
-%272705282794B5BCB5BCB5BCB5BCB5BCB570052827270052A8FD2AFF2827
-%272E2728272E272827522828272E2728272E2728272E2728272E2728272E
-%2728272E272E272E1E1E19411E1E19411E1E19411E1E1E411E1E193B342E
-%27282728055293BCB5BCB5BCB5BCB5BCB5BC2728272E2752A8FD27FFA927
-%272728272827282728272827282728272827282728272827282728272827
-%282728272827282728051E191E181E181E181E181E181E181E181E181E18
-%1E18180B28272805284B9AB5BCB5BCB5BCB5BCB5BC4B2805280528A8FD25
-%FFA927282728272827282728272E27282728272827282728272827282728
-%2728272E2828272827282728272812FD071E191E1E1E191E1E1E191E1E1E
-%191E1E1E1834272827282776B5BCB5BCB5BCB5BCB5BC4B2827282728A8FD
-%23FFA8FD0427052827270528272805282727052827270528272705282728
-%272827280528272705282727052827270C191819181E181E181E1D1E181E
-%181E181E181E181E181E18190B272128052793BCB5BCB5BCB5BCB5BC4B27
-%05280528A8FD22FF28282728272E2728272E2828272E2728272E2728272E
-%2728272E272E272E2728272E2728272E2728272E272827282728272E272E
-%2E34123B18411E1E1E411E1E19411E1E19411E1E122E2728272E6FBCB5BC
-%B5BCB5BCB5BC6F2E27282752A8FD20FF2827272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282727272827272128272805341219181E191E181E181E181E181E
-%1834272705284BBCB5BCB5BCB5BCB5BC6F2827280052A8FD1EFF2E282728
-%27282728272E2828272827282728272827282728272E2828272827282728
-%27282728272827282728272827282728272827282728272827282728272E
-%12411E1E191E1E1E19FD041E3B28282728279AB5BCB5BCB5BCB5BC6F2827
-%280553FD1DFF522705282727052827282728272705282727052827270528
-%2728272827270528272705282727052827270528272705270C1413360D35
-%0C2F062805272727052821270534181E181E181E181E181E181E0C270528
-%2794B5BCB5BCB5BCB5BC4B2827270059FD1BFF7D27272E2728272E272E27
-%2E2728272E2728272E2728272E282E272E2728272E2728272E2728272E27
-%28272E272827282F1B1A3D1A3D1A3D1A3D143C133528282728272827280C
-%411E1E19411E1E19411E1E12282728279ABBBCB5BCB5BCB5BC4B28272E05
-%84FD19FFA828272827282728272827282728272827282728272827282728
-%27282728272827282728272827282728272827282727051B1A1A141B141A
-%141B141A141B1A1A13352827272827272734181E181E181E181E181E1228
-%27280576B5BCB5BCB5BCB5BC4B28272805A8FD18FF520528272827282728
-%272827282728272827282728272E28282728272827282728272827282728
-%272827282728272E272E143D1A1B143D1A1B143D1A1B143D1A1B1A3D132F
-%27282728272E12FD051E191E1E1E182E2728059AB5BCB5BCB5BCB5BC2728
-%272828FD17FF590028052827270528272705282727052827270528272827
-%28272705282727052827270528272705282728272827282728271A141A14
-%1A141A141A141A141A141A141A141B1A140C28272700280B19181E181E18
-%1E181E182E21270570B5BCB5BCB5BCB59A0527052752FD15FFA82728272E
-%2728272E2828272E2728272E2728272E272E272E2728272E2728272E2728
-%272E27282752282E272E2728272E27280C3D1B3D1A3D1A3D1A3D1A3D1A3D
-%1A3D1A3D1A3D1A3D142F27282728273B1E1E19411E1E1941192E272E279A
-%B5BCB5BCB5BCBB9A052E27287DFD14FF2728272827282728272827282728
-%272827282728272E27282728272827282728272827282728272827282728
-%272827282728272706350D351336141A141B1A1A141B141A141B141A141B
-%1A350527272721341E1E181E181E181E18282128279AB5BCB5BCB5BCB54C
-%05280528A8FD12FF5327272827282728272827282728272827282728272E
-%2728272827282728272827282728272E272E272827282728272827282728
-%272827282728272E282F0D36141B1A3D1A1B143D1A1B143D1A3C0C282728
-%27341E1E191E1E1E191E1828272827BCB5BCB5BCB5BCB5282728057DFD11
-%FF8427272705282727272827270528272705282727052827270528272705
-%282727052827282728272705282727052827270528272705282727052827
-%270528272705280635141B141A141A141A141A141B0D282727212E181E18
-%1E181E181E122705284BBCB5BCB5BCB5BC6F27052805A8FD10FF53272827
-%2E272827522728272E2728272E272827522728272E2728272E2728272E27
-%2E272E2728272E2728272E2728272E2728272E2728272E2728272E272827
-%2E2728272E2F3C1A3D1A3D1A3D1A3D1A3D142E272E272E19411E1E19411E
-%1E122827286FBCB5BCB5BCB5BC4B2E272852FD0FFFA80028272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%2727272F131B1A1A141B141A141B142E2128272E181E181E181E181E0C28
-%272893BCB5BCB5BCB59A052827277DFD0EFF2E2827282728272E28282728
-%272827282728272E272827282728272827282728272E2728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%27280D3D1A1B143D1A1B143D1A2E2728272E191E1E1E191E1E1E2728274C
-%B5BCB5BCB5BCB57605282752FD0DFF7D2727270528272727282727052827
-%270528272827282727052827270528272727282727052827270528272705
-%282727052827270528272705282727052827270528272705282727052827
-%2705361A1A141A141A141B142E2128212E181E181E181E1D1805280570B5
-%BCB5BCB5BC93270528007DFD0CFF522728272E272827522728272E272827
-%2E2728272E2728272E2728272E272827522728272E2728272E2728272E27
-%28272E2728272E2728272E2728272E2728272E2728272E2728272E272827
-%2827351A3D1A3D1A3D1A3D142E272827351E1E19411E1E1E35272827BCB5
-%BCB5BCB5BC6F2E272828FD0BFFA800282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%2728272E141B141A141B141B142E2728213B1E1E181E181E182E27284BBC
-%B5BCB5BCB5BC272827277DFD0AFF522727282728272E2828272827282728
-%2728272E2728272827282728272827522728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%27282728272E143D1A1B143D1A1B1328272827411E1E191E1E1E12282728
-%93BCB5BCB5BCB57605282752FD09FFA82727270528272727282727052827
-%270528272805282727052827270528272805282727052827270528272705
-%282727052827270528272705282727052827270528272705282727052827
-%270528272705282728131B141A141A141B0D2727270B1E181E181E181E0B
-%28054BB5BCB5BCB5BC9327052805A8FD08FF7D2728272E27282752272827
-%2E2728272E272E272E2728272E2728272E272E272E2728272E2728272E27
-%28272E2728272E2728272E2728272E2728272E2728272E2728272E272827
-%2E2728272E2728272E2728272E143D1A3D1A3D1A3D2E282728121E19411E
-%1E1E3B2728059ABBBCB5BCB5BC4B2E272753FD08FF272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728212E141B141B141A141A2727272E18
-%1E181E181E1D2E272827BCB5BCB5BCB59405282728A8FD06FF7E27272827
-%28272E28282728272827282728272E272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272F1A1B143D1A1B1A
-%36272827341E1E191E1E1E1828272893BCB5BCB5BCB54C052827A8FD06FF
-%530027052827272728272705282727052827280528272705282727052827
-%280528272705282727052827270528272705282727052827270528272705
-%282727052827270528272705282727052827270528272705282727212F1A
-%1A141A141A142E27270519181E181E181E0528054CB5BCB5BCB5BC6F2705
-%2752FD06FF2828272E272827522728272E2728272E272E272E2728272E27
-%28272E282E272E2728272E2728272E2728272E2728272E2728272E272827
-%2E2728272E2728272E2728272E2728272E2728272E2728272E2728272E27
-%28272827361A3D1A3D1A3D142827282E1E19411E1E1E3B272827BCB5BCB5
-%BCB5BC272E272EA8FD04FF7D272728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%2827282728272827282728271A141B141A141B0C272728181E181E181E18
-%2E27286FBCB5BCB5BCB54C052805A8FD04FF7D0528272827282728272827
-%2827282728272E2728272827282728272E27282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282F1B143D1A1B1A3C272827
-%341E1E191E1E1E0C28274CB5BCB5BCB5BC6F28272853FD04FF2727052827
-%270528272705282727052827280528272705282727052827270528272705
-%282727052827270528272705282727052827270528272705282727052827
-%270528272705282727052827270528272705282727052827270528131A14
-%1A141A142E2727051E181E181E181905282794B5BCB5BCB59A2727002EFF
-%FFFFA828272E2728272E2828272E2728272E2728272E2728272E2728272E
-%2828272E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E2728272E2728272E2728272E2728272E
-%2728272E272F1A3D1A3D1A3D13282728121E19411E1E192E27286FBCB5BC
-%B5BCB54C272827AFFFFF7E00282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282714141B141A141B2827212E1E1E181E18
-%1E0C28054CB5BCB5BCB5BC4B2827277DFFFF522827282728272827282728
-%27282728272E272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282F1B143D1A1B1A35
-%272827411E1E191E1E3B272827BCB5BCB5BCB59A2728057DFFFF52002827
-%270528272705282727052827282728272705282727052827280528272705
-%282727052827270528272705282727052827270528272705282727052827
-%270528272705282727052827270528272705282727052827270528272705
-%28141A141A141B13282727121E181E181E182805286FBCB5BCB5BC932827
-%2728FFFF27282728272E272E272E2728272E2728272E2728272E2728272E
-%272E272E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E2728272E2728272E2728272E2728272E
-%2728272E2728272E27361A3D1A3D1A3D282827341E1E19411E1E2E282776
-%B5BCB5BCB5BC27282752FFA8270528272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%28272827282728272827282728272827270C1B141B141A1A2F2727051E18
-%1E181E1E3421284BBCB5BCB5BCB54C052705A8A8272827282728272E2728
-%27282728272828282728272827282728272E272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272E141B143D
-%1A1B13282728181E1E1E191E12282752B5BCB5BCB5BC4B2827277D592727
-%270528272805282727052827270528272705282727052827280528272705
-%282727052827270528272705282727052827270528272705282727052827
-%270528272705282727052827270528272705282727052827270528272705
-%28272705361A1A141A141405282712181E181E1819272727BCB5BCB5BCB5
-%700528007D7D2728272E2728272E2728272E2728272E2828272E2728272E
-%2728272E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E2728272E2728272E2728272E2728272E
-%2728272E2728272E272827282F3D1A3D1A3D142E2728121E1E1E1941192E
-%272E93BCB5BCB5BC6F2E2728535227272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%28272827282728272827282728272827282728272F141A141B141A062827
-%2E181E181E181E0527059AB5BCB5BCB59405280552522728272827282828
-%27282728272827282728272827282728272E272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%27282728272827282728272827282728272827282728272827282728283D
-%1A1B143D1A2F27282E1E191E1E1E192E27286FBCB5BCB5BC932827282E27
-%270528272727282727052827270528272805282727052827272728272705
-%282727052827270528272705282727052827270528272705282727052827
-%270528272705282727052827270528272705282727052827270528272705
-%28272705282728131B141A141B0D27052E181E181E181E0B280570B5BCB5
-%BCB5BC2727052E28272E2728272E2828272E2728272E272E272E2728272E
-%2728282F2828272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E2728272E2728272E2728272E2728272E
-%2728272E2728272E2728272E2728273C1A3D1A3D1B35272827411E411E1E
-%1E3427284BBCB5BCB5BCB528272E27272827282728272827282728272827
-%2827282728272827280D1A141A0C27272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%2827282728272827282728272827282728272827282727131B141A141B13
-%272728181E181E181E0C28054CB5BCB5BCB5BC2728272828272827282728
-%2728272827282728272E2728272827280C3D1A1B1A3D2E28272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%27351A3D1A1B1A362728273B1E1E191E1E3421284BBCB5BCB5BCB5522728
-%27052827270528272805282727052827272728272705282714141A141A14
-%352727052827270528272705282727052827270528272705282727052827
-%270528272705282727052827270528272705282727052827270528272705
-%2827270528272705270D1B141A141B13282728181E181E181E1227054CB5
-%BCB5BCB5BC272827272E2728272E272E272E2728272E272827522728272E
-%2728133D1A3D1A3D1328272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E2728272E2728272E2728272E2728272E
-%2728272E2728272E2728272E2728272E27361A3D1A3D1A36272827411E1E
-%19411E34272E4BBCB5BCB5BCB55227282727282728272827282728272827
-%2827282728272827282714141B141A1A3527282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827280D1B141B14
-%1B13282728181E181E181E1227054CB5BCB5BCB5BC272827282827282728
-%272E27282728272827282728272827282728131B143D1A1B132827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827361A1B143D1A362728273BFD051E3527284BBCB5BCB5BCB54C2728
-%272727052827272728272705282727052827280528272721351A1A141A14
-%140528272705282727052827270528272705282727052827270528272705
-%282727052827270528272705282727052827270528272705282727052827
-%270528272705282727131B141A141B0D270528181E181E181E0C270570B5
-%BCB5BCB5BC2727052852272E2728272E2828272E2728272E272E272E2728
-%27282F1B1A3D1A3D142E2728272E2728272E2728272E2728272E2728272E
-%2728272E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E2728273C1A3D1A3D1B352728281E1E41
-%1E1E1E3427286FBCB5BCB5BCB52827282828272728272827282728272827
-%282728272827282728212F1A1A141B141A05282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%28272827282728272827282728272827282728272827282728141B141A14
-%1B0C27272E181E181E181E0B280570B5BCB5BCB5BC272805525327282728
-%27282728272827282728272E2728272827280C3D1A1B143D1A2F27282728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%27282E1B143D1A1B1A2F27280C1E1E1E191E1E2E27286FBCB5BCB5BC9328
-%272852522727270528272805282727052827272728272705282728141B14
-%1A141B0C2705282727052827270528272705282727052827270528272705
-%282727052827270528272705282727052827270528272705282727052827
-%270528272705282727212F1A1A141A141A052821341D1E181E181E272705
-%9AB5BCB5BCB594052800597E0528272E2728272E2728272E2728272E2828
-%272E2728273C1A3D1A3D1A36272E2728272E2728272E2728272E2728272E
-%2728272E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E27282728133D1A3D1A3D142E27281241
-%1E1E19411828272EB5BCB5BCB5BC6F2E27277D7D27272827282728272827
-%282728272827282728272827270D1B141A141B1428272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%28272827282728272827282728272827282728272827282727053C141A14
-%1B1A3527282719181E181E1D3B272827BCB5BCB5BCB570052805A8A82728
-%2728272827282728272827282728272E27282728272F1A3D1A1B143D2E28
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%2728272F1A3D1A1B143D2F27272E191E191E1E1E1228274CB5BCB5BCB5BC
-%4B282728A8A8280528272705282727052827270528272827282727052706
-%1A141A141A14352727052827270528272705282727052827270528272705
-%282727052827270528272705282727052827270528272705282727052827
-%27052827270528272705270D1B141A141A142E27270B1E181E181E182E21
-%286FBCB5BCB5BC9328052727FFFF2E282728272E272E272E2728272E2728
-%27522728272E2728143D1A3D1A3D142E272E2728272E2728272E2728272E
-%2728272E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E27282728283C1A3D1A3D1A3C2728273B
-%1E1E19411E412728279AB5BCB5BCB5BC27282753FFFF5900282728272827
-%282728272827282728272827282728272F1A1B141A141B0C272728272827
-%282728272827282728272827282728272827282728272827282728272827
-%28272827282728272827282728272827282728272827282728212F1A1A14
-%1B141B0C272728181E181E181E1227052893BCB5BCB5BC6F28272752FFFF
-%7D2727282728272E27282728272827282728272827282728281B143D1A1B
-%1A3C27282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%27282728143D1A1B143D1A2E27282E1E19FD041E3427284BBCB5BCB5BCB5
-%7605280584FFFFA805270528272727282727052827270528272805282727
-%0527131B141A141A142F2727052827270528272705282727052827270528
-%272705282727052827270528272705282727052827270528272705282727
-%052827270528272705270C1B141A141A1436272721341E1E181E181E0528
-%0570B5BCB5BCB5BC27270528A8FFFFFF52272E2728272E2828272E272827
-%2E2728272E2728272E272F1A3D1A3D1A3D1428272E2728272E2728272E27
-%28272E2728272E2728272E2728272E2728272E2728272E2728272E272827
-%2E2728272E2728272E2728272E27282728273C1A3D1A3D1A3D2E28272E19
-%1E19411E1E1828272893BCB5BCB5BC9328272828FD04FF52272728272827
-%28272827282728272827282728272827282714141B141A141B0C27272827
-%282728272827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272821351A1A141B14
-%1B132827270C1E181E181E1E34212827BCB5BCB5BCB5760528007DFD04FF
-%A8272827282728272E2728272827282728272E2728272827282E1B143D1A
-%1B1A3D282827282728272827282728272827282728272827282728272827
-%282728272827282728272827282728272827282728272827282728272827
-%2E143D1A1B143D1A2F27282719FD041E19412828059AB5BCB5BCB5BC4B28
-%27277DFD04FFA82805270528272827282727052827270528272821272727
-%0528131B141A141A14362727052827270528272705282727052827270528
-%272705282727052827270528272705282727052827270528272705282727
-%052827270527131B141A141A1436272721341D1E181E181E1228052793BC
-%B5BCB5BC9327052827FD06FF5228272E272827522728272E2728272E2728
-%2E35122E272E272F1A3D1A3D1A3D1A35272E2728272E2728272E2728272E
-%2728272E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E272827282F3D1A3D1A3D1A3D2E28272E191E19411E1E1E2E
-%27284BBCB5BCB5BCBB76052E2759FD06FFA8052827282728272827282728
-%272827280C1E1D1E182E212827351A1B141A141B142E2128272827282728
-%272827282728272827282728272827282728272827282728272827282728
-%2728272827282728272827282727061B141A141B141B0D2727270C1E181E
-%181E1E1927280594B5BCB5BCB5BC272827277DFD06FFA852272827282728
-%272E27282728272827411E1E191E192E2728283C1A3D1A1B143D142E2728
-%272827282728272827282728272827282728272827282728272827282728
-%272827282728272827282728272827282728283C1A3D1A1B143D142E2728
-%27FD051E191E2E280552B5BCB5BCB5BC9328272827FD08FF522727270528
-%2728272827270528272E181E181E181E122705270C1B141A141A141B1428
-%212827270528272705282727052827270528272705282727052827270528
-%27270528272705282727052827270528272705141A1A141A141A142F2727
-%21341E1E181E181E122827276FBCB5BCB5BCB54C05280059FD08FFAF2728
-%272E272827522728272E27282E411E1E19411E1E2E2827280D3D1A3D1A3D
-%1A3D142E2728272E2728272E2728272E2728272E2728272E2728272E2728
-%272E2728272E2728272E2728272E2728272E2728273C1A3D1A3D1A3D1A36
-%272827341E1E19411E1E1E2E27284BBCB5BCB5BCB5BC272E2728A8FD09FF
-%520528272827282728272827282727121E181E181E1E1905282727131B14
-%1A141B141B142E2728272827282728272827282728272827282728272827
-%28272827282728272827282728272827282728272728141A1B141A141B1A
-%1427282728181E181E181E1E1821280594B5BCB5BCB5BC6F2827272EFD0A
-%FF7D28272827282728272E27282728272E181E1E1E191E1E3B2728272E14
-%3D1A1B143D1A1B142F272827282728272827282728272827282728272827
-%2827282728272827282728272827282728272827272E3D1A1B143D1A1B1A
-%3C28282728121E19FD041E4128280552B5BCB5BCB5BC9352272805A8FD0B
-%FFFD0427052827282728272705282134181E181E181E1E342128272E141B
-%141A141A141A142F27270528272705282727052827270528272705282727
-%0528272705282727052827270528272700270C1A141A141A141A141A0527
-%27270C1E181E181E181E0C27052793BCB5BCB5BCB57005280552AFFD0BFF
-%A80528272E272827522728272E2728273B1E1E19411E1E1E342728272F1A
-%3D1A3D1A3D1A3D1B3628282728272E2728272E2728272E2728272E272827
-%2E2728272E2728272E2728272E2728272E133D1A3D1A3D1A3D1A3D2E2827
-%282E411E1E19411E1E182827286FBCB5BCB5BCB5BC272E27277DFD0DFF52
-%0528272827282728272827282727051E1E1E181E181E182E2128212E141B
-%141B141A141B1A1A0C282727272827282728272827282728272827282728
-%272827282728272827282727272F141B141A141B141A141A062727280B1E
-%181E181E181E182E212827BCB5BCB5BCB5BC4B28272728FD0EFF7D282728
-%27282728272E2728272827280C1E1E1E191E1E1E182E2728272E141B143D
-%1A1B143D1A1B142F27272728272827282728272827282728272827282728
-%27282728272827280C3C1A1B143D1A1B143D1A3C2828272827411E1E19FD
-%041E342728279AB5BCB5BCB5BC9328272805A8FD0FFF2827272705282727
-%2728272705282727121E181E181E181E182E21272128131B141A141A141A
-%141A14140C28212727270528272705282727052827270528272705282727
-%052F131B141A141A141A141A1436272705270519181E181E181E1E122128
-%0570B5BCB5BCB5BCB54C05280052FD10FFAF2728272E2728272E2828272E
-%27282728181E19411E1E1941192E272E27280D3D1A3D1A3D1A3D1A3D1A3D
-%14362E2E27282728272E2728272E2728272827282728282F133D1A3D1A3D
-%1A3D1A3D1A3D1A36272827282E411E411E1E19411E3B27282752B5BCB5BC
-%B5BCBB9A052E2728A8FD11FF7D0028272827282728272827282728272818
-%1E181E181E181E182E212827270C1A1A1A141B141A141B141A1A1B14360C
-%2F28282728272727282728272E0C2F133C1A1B141B141A141B141A141B14
-%2F212827270B1E1E1E181E181E1D192727052893BCB5BCB5BCB5BC272827
-%2752FD12FFA852272827282728272E272827282728272E191E191E1E1E19
-%1E1E342728272727361A1B143D1A1B143D1A1B143D1A1B1A3D1436133613
-%350D36143C143D1A1B1A3D1A1B143D1A1B143D1A1B132E2728272812FD05
-%1E191E1E192728272893BCB5BCB5BCB5BC4B28272827FD14FF7D27272705
-%2827270528272705282727212E181E181E181E181E1E1805282727212E13
-%1B141A141A141A141A141A141A141B141B141B1A1B141B141A141A141A14
-%1A141A141A141B1436062705282128121E181E181E181E181E052705286F
-%BCB5BCB5BCB5BC6F2705280084FD15FF5327272E2728272E272E272E2728
-%272E272E181E1E1E19411E1E1E412E28272E27282E3C1A3D1A3D1A3D1A3D
-%1A3D1A3D1A3D1A3D1A3D1A3D1A3D1A3D1A3D1A3D1A3D1A3D1A3D14352728
-%2728272E181E1E1E19411E1E1E412E28272E6FBCB5BCB5BCB5BC9328272E
-%057DFD17FF282727282728272827282728272827282728181E181E181E18
-%1E181E122821282727272F131A1A1B141A141B141A141B141A141B141A14
-%1B141A141B141A141B1A1B14360C2721282727053A1E1E181E181E181E1E
-%19052827286FBCB5BCB5BCB5BC934C05280052AFFD17FFA8272827282728
-%2728272E2728272827282728121E1E1E191E1E1E191E1934272827282728
-%2835133D1A1B1A3D1A1B143D1A1B143D1A1B143D1A1B1A3D1A1B143C0D2E
-%27282728272812FD051E19FD041E3B272827286FBCB5BCB5BCB5BCB54C05
-%282728A8FD19FF7D002705282727052827280528272705282727121E181E
-%181E181E181E1E190B28212705272727052F0D14141B1A1B141B141B141B
-%1A1B141B141A13350C2E052727270027272E181E181E181E181E181E1D12
-%002805276FBCB5BCB5BCB5BCB570052705277DFD1BFF7D052E2728272E27
-%2827522728052E272827282E1E1E411E1E19411E1E1E4119342728272827
-%282728272E2E350D361336133613360D352F2F282E272827282728272E34
-%3B1E411E1E19411E1E19411E34272827286FBCB5BCB5BCB5BCB576272827
-%2853FD1DFF5200282728272827282728277093762728272827191D1E181E
-%181E181E181E1E1E122E27272128272727282727272827272728272721FD
-%042728272721280C12181E1E1E181E181E181E191E122E2128052893BCB5
-%BCB5BCB5BCB5700528272728FD1FFF52052827282728272827BCB5BCB5BC
-%4B2827282734181E1E1E191E1E1E19FD041E411234272827282728272827
-%2827282728272827282728272E2E3B181E1E1E191E1E1E19FD041E411228
-%2728054C93BCB5BCB5BCB5BCB59A2728272828FD20FFA828002827270528
-%0594B5BCB5BCB5BC6F270528212E121E1D1E181E181E181E181E181E1D1E
-%183A0C2E052E2728052827280528052E0B341219181E1E1E181E181E181E
-%181E181E1812052727270570B5BCB5BCB5BCB5BCB5700528272727FD22FF
-%A82E2728272E272893BCB5BCB5BCB5BC9352052827282E3B1E411E1E1941
-%1E1E19411E1E1E411E1E1E4119411841183B1841191E19411E1E1E411E1E
-%19411E1E19411E1E1E41182E27282728279ABBBCB5BCB5BCB5BCBB76052E
-%272827FD24FFA828052827280570B5BCB5BCB5BCB5BCB57627282728272E
-%121E1E1E181E181E181E181E181E181E181E191E181E1E1E181E181E181E
-%181E181E181E181E181E181E1E190B28272805286FBCB5BCB5BCB5BCB5BC
-%B5700528272727A8FD25FFA8522728272827BCB5BCB5BCB5BCB5BCB5BC4B
-%28052827280C3B19FD051E191E1E1E191E1E1E191E1E1E191E1E1E191E1E
-%1E191E1E1E191E1E1E191E1E1E122E27282728274C93BCB5BCB5BCB5BCB5
-%BCB54C0528272727FD28FFA82E002705282794B5BCB5BCB5BCB5BCB5BC6F
-%4B05282727212E0C19181E1D1E181E181E181E181E181E181E181E181E18
-%1E181E181E181E181E1E1E1234052721280527279AB5BCB5BCB5BCB5BCB5
-%BC93280527052727A9FD2AFF53052E2728279AB5BCB5BCB5BCB5BCB5BCB5
-%9A4B28052E2728272E343B19411E1E1E411E1E19411E1E19411E1E19411E
-%1E1E411E1E1E4118342E282728272E275293BCBBBCB5BCB5BCB5BCB5BC6F
-%2E2728272852FD2DFF5900282728054C93BCB5BCB5BCB5BCB5BCB5BC934C
-%27280528272827280B341219181E191E1D1E1E1E1D1E1E1E181E181E183B
-%0C2E05282127052805284B9AB5BCB5BCB5BCB5BCB5BCB5BC4B2805282727
-%52FD2FFF7E2728272805286FBCB5BCB5BCB5BCB5BCB5BCB5BC6F52272805
-%2827282728272E272E2E3412351234123512340C2E272827282728272805
-%284B9A93BCB5BCB5BCB5BCB5BCB5BCB59A2728272805287DFD31FFA8FD04
-%2705284B94B5BCB5BCB5BCB5BCB5BCB5BCB59A6F4C272805270528272700
-%282127212721272127212700280527052805274B7093BCB5BCB5BCB5BCB5
-%BCB5BCB5BC934C0527052800287EFD34FF5328272E27282776B5BCB5BCB5
-%BCB5BCB5BCB5BCB5BCB5BC93764B522728272E0528052E2728272E272805
-%2E272827766F9AB5BCBBBCB5BCB5BCB5BCB5BCB5BCBBBC4B2E2728272827
-%7DFD37FF7D280028272805286FBCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC
-%B5BC93946F764B4C4B4C4B4C4B704B706F9A93BCB5BCB5BCB5BCB5BCB5BC
-%B5BCB5BCB5BC937627280528272727A8FD3AFF7D052827282728277693BC
-%B5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC
-%B5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC6F2805282728052853FD3DFF
-%A828270527052805274B9AB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5
-%BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC934C272805
-%270527005284FD40FF7E5205282728272E27526FBCB5BCB5BCB5BCB5BCB5
-%BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCBBBC93
-%9A4B28052E272827282EA8FD44FF7E2827052727280528274C6F9AB5BCB5
-%BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BC93
-%764B2805282728052700527DFD48FF7D532727272827280528274C4B9A93
-%BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB5BCB59A6F76272805
-%2827282728052852A8FD4CFFA8522800270527052805270528274B4B706F
-%9493BC93BC93BCB5BC93BC93946F9A6F7027282727052827270528002727
-%7DA8FD51FFA8522E05282728272E2728272E0528272E272827524B522752
-%2728272E2728052E2728272E2728052828597DFD56FFA8A8525227270028
-%272727282728052827280528052805282728052827280528052700282859
-%7DFD5EFF7D7D282E27270028272827282728272827282728272805272728
-%27525384A8FD64FFA8A87D7D5253282805282727052827272752525959A8
-%A8FD34FFFF
-%%EndData
-
-endstream
endobj
87 0 obj
<>stream
-%AI12_CompressedDataxk\Ǖ%] C
QvTVVnqllṡ@Q֎9'dU%Ό*$'N|[i_}-M|xz?ux\ CЁm/}L߽{o}o~ߞ>Q|毇g\?}/ٻ2KW/^ĸ,ۧ?3-ǧ~{Cez,T/˻?_߾ճ^},Go&
mʇc9ǤLrts*~kƻ]*+RZw/02\&o{o,]ܾ|&s$E/wo^~NvhOT|zlƳ^èӿ~yu0.;?gu1`>CL2Ґ&}z廻HmL? n^72"v/}fW;\ƎdG,
FeIOڙ|R'{^'߮:++nop,|Z"uo]ԥ_w<sT_@=$~s{o~@xϷwRʯ||дܽ|ͪ1=~goR;͋i
ۣ"H{x=u!={oܙǻyP_?}O?/_g0g|7~?}͟^~e}?i]'Uc^Ǜ/}Lϋ/۷x߾2?[)yO{*WzWefϩOi|6_o^ƸŻly
YWz͝K/W2&/p[7/{}w~<~ٿ?L?w'U1buA^U7jUNRs-7-zf=01bWmG&]W%JF^Ӫ\ogxrFѷ벞>^Ci'M\*Wr*gϥ5-SUjnu^_a\cMUB[Zikβ9v[w;e
VjUGWkdkM]jZYKW%)e kZ֊kv]YM-,.ưZVOu^ˌ9q|;YF({E{+O`#lO(g{.Pݸ[LEq>賿(gs!iJ
-W(pCcZĘS9bhLK>SNW&bݳoȔ2N:[W*_]]PW7WJNOQu}:nNO&^;CNWק-pg99t>ߜo ̍7%` 7[n[Lm@kb('t|YS%?Y\iU6%3*aSU݈M-[ʦ)ץ`iUV%Jڔ*aUp`aZqbWŬ^6O>ZzUNY*nvAn"vl3,fA0_y)srUKjRB-'ւ}'Q"B?
-IU-YJ?^Zjbk)4 5u<ɺ%Y'/P2g+ٷQfiFEyw1R[-dQFdT6
tI m@Hn0 W 1H:Kn W )GVkqCiݷgL d8'$94dA5n[l3@yd݂kDgL ?
-!2pZcĖb_.=.S;cINp2. BR87pYa#KW878reL֊W6JbkKm-[rݻ0b-،7|}aU6vu}vYWkDn)RrW4}c]n,xcJІߋA<Vnv/^ǰF]9
yq)3z,ys=
-ndBd2:]N;,&$C
-Ul*+"j*$BQ7I}Wp)bZYȶu|㈝ ҈՚\-j!Yk%d1ےY_( V2Sܔ*k 5=JO7"'ZItT y.OwJKe}t .)=\l%TVUk^)WJX&=ơ{(NEl
hY&yǝ>??D-oϵB_dR6Mjo(gCVNu"4B9.zEceZ<|NyOCZ$ES:tjj:z~d9?ӽ|tA>g^?g R5ՈRJӡWc-MkYXeii4Eo]
7xJ%kCu;jS
-Ov
M@.Q59>2lhL3KLcv(C=KGAAJ!VN5>RNE:H0Ӂ{NG<略(n]]ɋY30l"n4VqM5{1'04||#N1 [aY}w0iLsr1([rыYUqib&)f'9+s ܍
-\"9N9(,|;%FkjVW81`04J{ڽ4Mb.٘Jqi&h zd1]_NB&b¾M(q6ۨmƂ6PFM:Pυj.rM#u\Q
5\h'[S-Ā-mKi5zB~;JoG ӎC3!!}JzF'14ڃV hw~ԧTgGDA
-ȧaU40:FA^)l%Q^'F Y3!@ JKޖ!6; NX-|S~l6#JDvG|?G9|d%m~Nŗ^pz5cбY;CViQ`tt ts-ܮ|}Ca꽄T]+ELh֓QWkZr^b1_o._vm
W4v&wueZEeL\硫>'aGoEO\ 蕰7Wom($6N
-x}qQ!/Gt^)7Q'*EէHT7իwG#=FW:8\߮vsiunN4p+"GQZnrᖒ$:R6.T`{9v2y"m|[uC;VE&/qMI}_US<