@@ -34,6 +34,7 @@ primarily uses **flow timer mode** for a more flexible approach to time tracking
3434- You can pause and resume work sessions.
3535- You can skip break sessions.
3636- ** Flow timer mode** : Count-up timer with task tracking and milestone notifications.
37+ - ** Pre-defined tags** : Configure categories for quick task organization (supports spaces and special characters).
3738- You can customise the number of sessions before a long break.
3839- You can set a maximum number of sessions.
3940- Desktop notifications are supported on all platforms.
@@ -197,6 +198,15 @@ flow_default: true # use flow timer mode by default (set to false for traditiona
197198flow_bell : true # play bell sounds at flow timer milestones (50% and 100%)
198199flow_bell_sound : ' tibetan_bell' # sound file for flow timer bells (bell, loud_bell, tibetan_bell)
199200
201+ # Pre-defined tags for categorizing work sessions
202+ pre_defined_tags : [] # optional list of tags for quick selection
203+ # Example:
204+ # pre_defined_tags:
205+ # - "Sales"
206+ # - "Company Finances"
207+ # - "Product Development"
208+ # - "Customer Support"
209+
200210# Other settings
201211session_cmd : ' ' # execute an arbitrary command after each session
202212strict : false # when enabled, you can't resume a paused session
@@ -481,11 +491,44 @@ This project includes comprehensive development tooling:
481491- **Pre-commit hooks**: Automatic linting and formatting on commit
482492- **Build tools**: Run `just build` to compile binaries
483493
494+ # ## Building the Web UI
495+
496+ The stats web interface uses embedded files that need to be rebuilt when changed :
497+
498+ 1. **Install dependencies** (if not already installed) :
499+ ` ` ` bash
500+ npm install
501+ ` ` `
502+
503+ 2. **Make changes** to files in `stats/web/` :
504+ - JavaScript : ` stats/web/js/script.js`
505+ - CSS : ` stats/web/css/styles.css`
506+ - HTML : ` stats/web/index.html`
507+
508+ 3. **Bundle JavaScript** (if JS was modified) :
509+ ` ` ` bash
510+ npx esbuild --bundle --minify --outfile=stats/web/dist/script.js --sourcemap stats/web/js/script.js
511+ ` ` `
512+
513+ 4. **Rebuild the Go binary** (required for all web changes) :
514+ ` ` ` bash
515+ go build -o focus ./cmd/focus
516+ ` ` `
517+
518+ 5. **Restart the stats server** :
519+ ` ` ` bash
520+ ./focus stats
521+ ` ` `
522+
523+ **Note:** The web files are embedded into the Go binary using `//go:embed`, so the binary must be rebuilt after any changes to see them take effect.
524+
484525The project uses :
485526- [just](https://github.com/casey/just) for task running
486527- [golangci-lint v2](https://golangci-lint.run/) for code quality
487528- [pre-commit](https://pre-commit.com/) for git hooks
488529- tools.mod for development dependency management
530+ - [esbuild](https://esbuild.github.io/) for JavaScript bundling
531+ - Go embed for static file embedding
489532
490533# # ⚖ Licence
491534
0 commit comments