mirror of
https://github.com/emberleif/Chronoboard.git
synced 2026-07-22 07:44:56 +00:00
Compare commits
6 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99e4918b90 | ||
|
|
fdefeae8d4 | ||
|
|
3ed7063cf8 | ||
|
|
d4d8a0aa34 | ||
|
|
c2b42f7d24 | ||
|
|
392b2df8a7 |
9 changed files with 1602 additions and 165 deletions
71
CHANGELOG.md
Normal file
71
CHANGELOG.md
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
# Chronoboard Changelog
|
||||||
|
|
||||||
|
## 0.7.0
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Managed vault notes for:
|
||||||
|
- `Getting Started With Chronoboard`
|
||||||
|
- `Chronoboard - Changelog`
|
||||||
|
- Command palette actions for opening the guide and changelog
|
||||||
|
- Toolbar help button for opening the Chronoboard guide
|
||||||
|
- Time entry note template support
|
||||||
|
- Better onboarding guidance around status frontmatter and task setup
|
||||||
|
|
||||||
|
### Improved
|
||||||
|
|
||||||
|
- Time entry notes can be renamed safely and reopened through Chronoboard entry IDs and aliases
|
||||||
|
- Totals sorting control now supports multiple sort modes through a compact icon trigger
|
||||||
|
- Documentation and onboarding flow for first install and plugin updates
|
||||||
|
- Header totals presentation in Chronoboard summary and week views
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Time entry note creation no longer duplicates conflicting frontmatter keys from templates
|
||||||
|
- Deleted time entry notes now correctly show `Create time entry note` instead of `Open time entry note`
|
||||||
|
- Template note resolution now supports normal Obsidian-style paths with or without `.md`
|
||||||
|
|
||||||
|
### Clarified Interactions
|
||||||
|
|
||||||
|
- Double click a time block to remove it
|
||||||
|
- Hold and drag a time block to move it
|
||||||
|
- Use `Ctrl+Z` or `Cmd+Z` to undo block creation or removal
|
||||||
|
- Removing a task from the left rail does not remove existing tracked time from the board
|
||||||
|
|
||||||
|
### Release visuals
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 0.6.2
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Managed vault notes for:
|
||||||
|
- `Getting Started With Chronoboard`
|
||||||
|
- `Chronoboard - Changelog`
|
||||||
|
- Command palette actions for opening the guide and changelog
|
||||||
|
- Toolbar help button for opening the Chronoboard guide
|
||||||
|
- Time entry note template support
|
||||||
|
|
||||||
|
### Improved
|
||||||
|
|
||||||
|
- Time entry notes can be renamed safely and reopened through Chronoboard entry IDs and aliases
|
||||||
|
- Totals sorting control now supports multiple sort modes through a compact icon trigger
|
||||||
|
- Documentation and onboarding flow for first install and plugin updates
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Time entry note creation no longer duplicates conflicting frontmatter keys from templates
|
||||||
|
- Deleted time entry notes now correctly show `Create time entry note` instead of `Open time entry note`
|
||||||
|
- Template note resolution now supports normal Obsidian-style paths with or without `.md`
|
||||||
|
|
||||||
|
### Clarified Interactions
|
||||||
|
|
||||||
|
- Double click a time block to remove it
|
||||||
|
- Hold and drag a time block to move it
|
||||||
|
- Use `Ctrl+Z` or `Cmd+Z` to undo block creation or removal
|
||||||
|
- Removing a task from the left rail does not remove existing tracked time from the board
|
||||||
169
README.md
169
README.md
|
|
@ -1,8 +1,124 @@
|
||||||
# Chronoboard
|
# Chronoboard
|
||||||
|
|
||||||
Chronoboard is an Obsidian community plugin for visual, note-native time tracking.
|
Chronoboard is an Obsidian community plugin for visual, task-native time tracking.
|
||||||
|
|
||||||
It turns Markdown notes into draggable timeboard entries across day, week, and month views while writing all data back into frontmatter. It works well with TaskNotes-style task notes, but it is not limited to Jira workflows or any specific vault structure.
|
It turns Markdown tasks into draggable time blocks across day, week, and month views while writing time data back into frontmatter. Chronoboard works well with TaskNotes-style task notes, but it is not tied to Jira, TaskNotes, or any specific vault structure.
|
||||||
|
|
||||||
|
## What Chronoboard Does
|
||||||
|
|
||||||
|
- Builds a left-side task pool from a folder in your vault
|
||||||
|
- Lets you click and drag time blocks onto a day or week board
|
||||||
|
- Stores time entries directly in task frontmatter
|
||||||
|
- Supports dedicated time entry notes for individual blocks
|
||||||
|
- Tracks scoped totals for day, week, and month
|
||||||
|
- Keeps the data portable because the source of truth remains Markdown
|
||||||
|
|
||||||
|
## Core Workflow
|
||||||
|
|
||||||
|
1. Configure a task folder and a metadata property such as `Status`.
|
||||||
|
2. Make sure the task files you want to use actually contain that frontmatter property so they can appear in the Chronoboard task pool.
|
||||||
|
3. Add tasks into the Chronoboard side rail.
|
||||||
|
4. Select a task and drag on the board to create time.
|
||||||
|
5. Move or resize blocks directly on the board.
|
||||||
|
6. Use right-click actions for color, subtitles, block notes, precise edits, and time entry notes.
|
||||||
|
|
||||||
|
## Views
|
||||||
|
|
||||||
|
- `Day`: horizontal time planning for a single day
|
||||||
|
- `Week`: vertical multi-day planning with per-day totals
|
||||||
|
- `Month`: high-level overview of tracked time across the month
|
||||||
|
- `Stats`: summary-oriented view for totals and reporting
|
||||||
|
|
||||||
|
## Interaction Model
|
||||||
|
|
||||||
|
### Time blocks
|
||||||
|
|
||||||
|
- Click and drag to create a time block
|
||||||
|
- Hold and drag to move a time block
|
||||||
|
- Drag the handles to resize a time block
|
||||||
|
- Double click a time block to remove it
|
||||||
|
- Use `Ctrl+Z` or `Cmd+Z` to undo time block add or remove actions
|
||||||
|
|
||||||
|
### Right click on a time block
|
||||||
|
|
||||||
|
- `Open task note`
|
||||||
|
- `Change color`
|
||||||
|
- `Edit task subtitle`
|
||||||
|
- `Edit task block text`
|
||||||
|
- `Create time entry note` or `Open time entry note`
|
||||||
|
- `Precise Edit Time`
|
||||||
|
- `Remove time block`
|
||||||
|
|
||||||
|
### Right click on a task in the side panels
|
||||||
|
|
||||||
|
- `Open task note`
|
||||||
|
- `Change color`
|
||||||
|
- `Edit task subtitle`
|
||||||
|
- `Remove Task`
|
||||||
|
|
||||||
|
Removing a task from the left task rail does not remove existing time blocks from the board. It only removes that task from the currently selected pool.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
Chronoboard adds the following commands to the Obsidian command palette:
|
||||||
|
|
||||||
|
- `Open Chronoboard`
|
||||||
|
- `Add task to Chronoboard`
|
||||||
|
- `Open manual time entry`
|
||||||
|
- `Open selected Chronoboard task`
|
||||||
|
- `Open Chronoboard guide`
|
||||||
|
- `Open Chronoboard changelog`
|
||||||
|
- `Add TaskNotes fields to current task`
|
||||||
|
|
||||||
|
## Managed Vault Notes
|
||||||
|
|
||||||
|
Chronoboard can create and maintain helper notes inside your vault:
|
||||||
|
|
||||||
|
- `Getting Started With Chronoboard`
|
||||||
|
- `Chronoboard - Changelog`
|
||||||
|
|
||||||
|
On first install, the guide note opens automatically. On plugin updates, the changelog note opens automatically.
|
||||||
|
|
||||||
|
## Frontmatter
|
||||||
|
|
||||||
|
Chronoboard reads and writes these properties when present:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
title: "Example Task"
|
||||||
|
Status: "In Progress"
|
||||||
|
timeboardColor: "#7c5cff"
|
||||||
|
timeboardSubtitle: "Project subtitle"
|
||||||
|
timeEntries:
|
||||||
|
- startTime: "2026-06-12T09:00:00"
|
||||||
|
endTime: "2026-06-12T11:00:00"
|
||||||
|
label: "Worked on API review"
|
||||||
|
```
|
||||||
|
|
||||||
|
If you enable dedicated time entry notes, Chronoboard can also write:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
aliases:
|
||||||
|
- chrono-1234567890-abcd12
|
||||||
|
Links: "[[Example Task]]"
|
||||||
|
ChronoboardEntryId: chrono-1234567890-abcd12
|
||||||
|
ChronoboardParent: "[[Example Task]]"
|
||||||
|
ChronoboardStart: 2026-06-12T09:00
|
||||||
|
ChronoboardEnd: 2026-06-12T11:00
|
||||||
|
```
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
- `Folder`
|
||||||
|
- `Time entry notes folder`
|
||||||
|
- `Time entry note template`
|
||||||
|
- `Always include tasks`
|
||||||
|
- `Metadata property`
|
||||||
|
- `Excluded values`
|
||||||
|
- `Hide weekends in week and month views`
|
||||||
|
- `Visible start hour`
|
||||||
|
- `Visible end hour`
|
||||||
|
- `Highlight color`
|
||||||
|
- `Force dark text on colored cards`
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||
|
|
@ -18,52 +134,15 @@ It turns Markdown notes into draggable timeboard entries across day, week, and m
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Features
|
## Release Files
|
||||||
|
|
||||||
- Day, week, month, and statistics views
|
GitHub releases should include:
|
||||||
- Click and drag time entry creation
|
|
||||||
- Resize and move time blocks directly on the board
|
|
||||||
- Right-click actions for editing, recoloring, opening notes, and removing blocks
|
|
||||||
- Scoped totals for day, week, and month
|
|
||||||
- Support for always-included static notes such as meetings
|
|
||||||
- Frontmatter-based data with no separate database
|
|
||||||
|
|
||||||
## How it works
|
|
||||||
|
|
||||||
Chronoboard reads notes from a configured folder, filters them using a metadata property, and lets you place time visually on a board. Time entries are written back into each note's YAML frontmatter, so your data stays portable and queryable.
|
|
||||||
|
|
||||||
## Frontmatter
|
|
||||||
|
|
||||||
Chronoboard reads and writes these properties when present:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
title: "Example Task"
|
|
||||||
Status: "In Progress"
|
|
||||||
active: true
|
|
||||||
timeboardColor: "#7c5cff"
|
|
||||||
timeboardSubtitle: "Project subtitle"
|
|
||||||
timeEntries:
|
|
||||||
- startTime: "2026-06-12T09:00:00"
|
|
||||||
endTime: "2026-06-12T11:00:00"
|
|
||||||
label: "Worked on API review"
|
|
||||||
```
|
|
||||||
|
|
||||||
`timeEntries` is the only required structure for tracking time. Everything else is configurable or optional.
|
|
||||||
|
|
||||||
## Settings
|
|
||||||
|
|
||||||
- `Folder`: source folder for notes that appear in the add-task picker
|
|
||||||
- `Metadata property`: property used to filter notes out of the picker
|
|
||||||
- `Excluded values`: values that hide notes from the picker
|
|
||||||
- `Always include notes`: static notes that always appear in the task pool
|
|
||||||
- `Visible start hour` and `Visible end hour`
|
|
||||||
- `Hide weekends in week view`
|
|
||||||
- `Highlight color`
|
|
||||||
- `Force dark text on colored cards`
|
|
||||||
|
|
||||||
## Release files
|
|
||||||
|
|
||||||
- `manifest.json`
|
- `manifest.json`
|
||||||
- `main.js`
|
- `main.js`
|
||||||
- `styles.css`
|
- `styles.css`
|
||||||
- `versions.json`
|
- `versions.json`
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
See [CHANGELOG.md](CHANGELOG.md) for release notes.
|
||||||
|
|
|
||||||
BIN
assets/releases/0.7.0/command-palette-actions.png
Normal file
BIN
assets/releases/0.7.0/command-palette-actions.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
BIN
assets/releases/0.7.0/daily-total-sort-header.png
Normal file
BIN
assets/releases/0.7.0/daily-total-sort-header.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/releases/0.7.0/week-day-totals-header.png
Normal file
BIN
assets/releases/0.7.0/week-day-totals-header.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
"id": "chronoboard",
|
"id": "chronoboard",
|
||||||
"name": "Chronoboard",
|
"name": "Chronoboard",
|
||||||
"version": "0.6.0",
|
"version": "0.7.1",
|
||||||
"minAppVersion": "1.5.0",
|
"minAppVersion": "1.5.0",
|
||||||
"description": "A Gantt-style timeboard for project-based time tracking across notes.",
|
"description": "A Gantt-style timeboard for project-based time tracking across tasks.",
|
||||||
"author": "Emberleif",
|
"author": "Emberleif",
|
||||||
"isDesktopOnly": false
|
"isDesktopOnly": false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
281
styles.css
281
styles.css
|
|
@ -419,11 +419,37 @@
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chronoboard-day-total.is-light,
|
||||||
|
.chronoboard-mobile-day-total.is-light {
|
||||||
|
color: #d1b443;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-day-total.is-medium,
|
||||||
|
.chronoboard-mobile-day-total.is-medium {
|
||||||
|
color: #5d9dff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-day-total.is-strong,
|
||||||
|
.chronoboard-mobile-day-total.is-strong {
|
||||||
|
color: #52d273;
|
||||||
|
}
|
||||||
|
|
||||||
.chronoboard-week-hours {
|
.chronoboard-week-hours {
|
||||||
overflow: hidden;
|
overflow-y: auto;
|
||||||
|
overflow-x: hidden;
|
||||||
border-right: 1px solid var(--background-modifier-border);
|
border-right: 1px solid var(--background-modifier-border);
|
||||||
border-bottom: 1px solid var(--background-modifier-border);
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
height: calc(var(--chronoboard-grid-bottom, 0px) + 1px);
|
min-height: 0;
|
||||||
|
height: 100%;
|
||||||
|
overscroll-behavior: contain;
|
||||||
|
scrollbar-width: none;
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-week-hours::-webkit-scrollbar {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chronoboard-hour-marker-vertical {
|
.chronoboard-hour-marker-vertical {
|
||||||
|
|
@ -442,10 +468,15 @@
|
||||||
.chronoboard-week-grid {
|
.chronoboard-week-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(7, minmax(0, 1fr));
|
grid-template-columns: repeat(7, minmax(0, 1fr));
|
||||||
overflow: visible;
|
overflow-y: auto;
|
||||||
|
overflow-x: hidden;
|
||||||
border-top: 1px solid var(--background-modifier-border-hover);
|
border-top: 1px solid var(--background-modifier-border-hover);
|
||||||
border-left: 1px solid var(--background-modifier-border);
|
border-left: 1px solid var(--background-modifier-border);
|
||||||
border-bottom: 1px solid var(--background-modifier-border);
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
min-height: 0;
|
||||||
|
height: 100%;
|
||||||
|
align-content: start;
|
||||||
|
overscroll-behavior: contain;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chronoboard-week-day-column {
|
.chronoboard-week-day-column {
|
||||||
|
|
@ -484,13 +515,26 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.chronoboard-day-hours-head {
|
.chronoboard-day-hours-head {
|
||||||
display: grid;
|
overflow-x: auto;
|
||||||
grid-template-columns: repeat(var(--chronoboard-hour-count, 1), var(--chronoboard-day-hour-width, 84px));
|
overflow-y: hidden;
|
||||||
align-items: stretch;
|
|
||||||
overflow: hidden;
|
|
||||||
border-bottom: 1px solid var(--background-modifier-border);
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
background: var(--background-secondary);
|
background: var(--background-secondary);
|
||||||
border-left: 1px solid var(--background-modifier-border);
|
border-left: 1px solid var(--background-modifier-border);
|
||||||
|
scrollbar-width: none;
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-day-hours-head::-webkit-scrollbar {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-day-hours-track {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(var(--chronoboard-hour-count, 1), var(--chronoboard-day-hour-width, 84px));
|
||||||
|
align-items: stretch;
|
||||||
|
min-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chronoboard-hour-marker-horizontal {
|
.chronoboard-hour-marker-horizontal {
|
||||||
|
|
@ -523,6 +567,10 @@
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chronoboard-day-grid-content {
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.chronoboard-day-task-card {
|
.chronoboard-day-task-card {
|
||||||
padding: 10px 12px;
|
padding: 10px 12px;
|
||||||
margin: 0 8px 8px 8px;
|
margin: 0 8px 8px 8px;
|
||||||
|
|
@ -538,7 +586,7 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 88px;
|
height: 88px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
min-width: 100%;
|
width: 100%;
|
||||||
border-left: 1px solid var(--background-modifier-border);
|
border-left: 1px solid var(--background-modifier-border);
|
||||||
background:
|
background:
|
||||||
repeating-linear-gradient(
|
repeating-linear-gradient(
|
||||||
|
|
@ -557,6 +605,11 @@
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chronoboard-modal-textarea {
|
||||||
|
min-height: 140px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
.chronoboard-color-picker-wrap {
|
.chronoboard-color-picker-wrap {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
@ -684,6 +737,30 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chronoboard-summary-head-meta {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-summary-sort-trigger {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-summary-sort-trigger:hover,
|
||||||
|
.chronoboard-summary-sort-trigger:focus-visible {
|
||||||
|
color: var(--text-normal);
|
||||||
|
background: transparent;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
.chronoboard-summary-head-total {
|
.chronoboard-summary-head-total {
|
||||||
font-size: var(--font-ui-small);
|
font-size: var(--font-ui-small);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
|
@ -747,6 +824,55 @@
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section {
|
||||||
|
margin: 0 0 28px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section-title {
|
||||||
|
margin: 0 0 14px 0;
|
||||||
|
font-size: var(--font-ui-medium);
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section-description {
|
||||||
|
margin: 0 0 14px 0;
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
line-height: 1.45;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section .setting-item {
|
||||||
|
border: 0;
|
||||||
|
margin: 0 0 12px 0;
|
||||||
|
padding: 14px 16px;
|
||||||
|
border-radius: 12px;
|
||||||
|
background: var(--background-primary-alt);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section .setting-item:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section .setting-item-info {
|
||||||
|
align-self: flex-start;
|
||||||
|
padding-right: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section .setting-item-name {
|
||||||
|
font-size: var(--font-ui-normal);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section .setting-item-description {
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-section .setting-item-control {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
.chronoboard-month-layout {
|
.chronoboard-month-layout {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
@ -1109,6 +1235,27 @@
|
||||||
color: var(--text-error);
|
color: var(--text-error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chronoboard-menu-remove-item-with-divider {
|
||||||
|
margin-top: 6px;
|
||||||
|
padding-top: 10px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-menu-remove-item-with-divider::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: -8px;
|
||||||
|
right: -8px;
|
||||||
|
top: 0;
|
||||||
|
border-top: 1px solid var(--background-modifier-border);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-settings-hour-input {
|
||||||
|
width: 56px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.chronoboard-summary-hours {
|
.chronoboard-summary-hours {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
|
@ -1140,6 +1287,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1200px) {
|
@media (max-width: 1200px) {
|
||||||
|
.chronoboard-layout {
|
||||||
|
grid-template-columns: 180px minmax(0, 1fr) 180px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 900px) {
|
||||||
.chronoboard-layout {
|
.chronoboard-layout {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
@ -1149,3 +1302,115 @@
|
||||||
border-top: 1px solid var(--background-modifier-border);
|
border-top: 1px solid var(--background-modifier-border);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chronoboard-toolbar.is-mobile {
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-toolbar.is-mobile .chronoboard-toolbar-group {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-layout {
|
||||||
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 12px;
|
||||||
|
display: grid;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-panel {
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 12px;
|
||||||
|
background: var(--background-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-notice {
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 10px;
|
||||||
|
background: var(--background-secondary);
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
padding: 10px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-task-list,
|
||||||
|
.chronoboard-mobile-summary-list {
|
||||||
|
padding: 10px;
|
||||||
|
display: grid;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-task-card,
|
||||||
|
.chronoboard-mobile-add-slot {
|
||||||
|
min-height: 72px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-agenda {
|
||||||
|
padding: 10px;
|
||||||
|
display: grid;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-day-section {
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 10px;
|
||||||
|
background: var(--background-primary-alt);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-day-head {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
background: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-day-head-left {
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-day-name {
|
||||||
|
font-size: var(--font-ui-medium);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-day-date {
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-size: var(--font-ui-smaller);
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-day-total {
|
||||||
|
font-size: var(--font-ui-small);
|
||||||
|
font-weight: 700;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-entry-list {
|
||||||
|
padding: 10px;
|
||||||
|
display: grid;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-entry-card {
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-entry-top {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chronoboard-mobile-empty {
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,9 @@
|
||||||
"0.0.1": "1.5.0",
|
"0.0.1": "1.5.0",
|
||||||
"0.5.0": "1.5.0",
|
"0.5.0": "1.5.0",
|
||||||
"0.5.1": "1.5.0",
|
"0.5.1": "1.5.0",
|
||||||
"0.6.0": "1.5.0"
|
"0.6.0": "1.5.0",
|
||||||
|
"0.6.1": "1.5.0",
|
||||||
|
"0.6.2": "1.5.0",
|
||||||
|
"0.7.0": "1.5.0",
|
||||||
|
"0.7.1": "1.5.0",
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue