Commit Graph

552 Commits

Author SHA1 Message Date
69b47a8d94 feat: allow dismissing address suggestions
Some checks are pending
Playwright Tests / test (push) Waiting to run
Test and SonarQube / quality (push) Waiting to run
2026-09-05 08:13:28 +02:00
3ed7ec9825 fix: keep display settings per device 2026-09-05 08:00:38 +02:00
8c82db037a feat: add OpenStreetMap location autocomplete
Some checks are pending
Playwright Tests / test (push) Waiting to run
Test and SonarQube / quality (push) Waiting to run
2026-09-04 14:19:58 +02:00
c120a0ad7f chore: add SonarQube quality checks
Some checks are pending
Playwright Tests / test (push) Waiting to run
Test and SonarQube / quality (push) Waiting to run
2026-09-03 16:24:41 +02:00
d4ec6b0ef3 fix: key drag targets by date, not weekday, in views wider than a week
Some checks are pending
Playwright Tests / test (push) Waiting to run
The drop preview and the empty-slot input were keyed by date.getDay(), which
is only unique inside a 7-day window. At 21 days every column sharing the
hovered column's weekday lit up — the mirrored drop targets, one per Tuesday.

The invisible half was worse: handleDrop resolved its target with
visibleDays.find(d => d.getDay() === dayOfWeek), so dropping on the second or
third Tuesday scheduled the task on the first one. Both now use the column's
own date; handleDragOver/handleDrop take a Date instead of a weekday number.

Task rendering was already date-based, so only drag state was affected.

v1.115.3

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 13:54:50 +02:00
6f4fe219dc fix: make update-app.sh the single update path and run it at boot
Some checks are pending
Playwright Tests / test (push) Waiting to run
There were two near-identical update scripts and they drifted: the npm ci fix
from 1.114.1 only ever landed in update-app.sh, so the boot path kept running
npm install. my-weekly-todo-update.service now runs update-app.sh, and
boot-update.sh is a shim kept only so a not-yet-recopied unit still works.

To be usable at boot the script needed three things it did not have:

- Skip the rebuild when HEAD already matches origin/main and a standalone
  build exists, so a reboot is not a full rebuild every time (--force
  overrides).
- Do not restart PM2 when its daemon is not up yet. At boot this unit runs
  before pm2-root.service, and probing with `pm2 describe` would spawn a
  stray daemon that races the real service, so it checks the pid file.
- A flock single-instance lock, so a boot run and a manual run cannot install
  into the same tree at once.

It also picks up prisma migrate deploy / generate and the .env copy that only
the boot script had. The log moved to /var/log/my-weekly-todo-update.log.

v1.115.2

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 13:46:18 +02:00
9d4e40e4e3 fix: make the boot update actually fail loudly and survive long builds
Some checks are pending
Playwright Tests / test (push) Waiting to run
The "update on reboot" unit silently did nothing useful. boot-update.sh piped
every command into tee, so `set -e` only saw tee's exit status: a failed
npm install or build left a half-built tree and still logged "Boot update
finished". It also used npm install (rewrites package-lock.json, so the next
git pull aborts), had no GIT_TERMINAL_PROMPT=0, and was not wrapped in a
function even though git pull rewrites it mid-run.

The unit's TimeoutStartSec=300 was the other half: npm ci + prisma generate +
next build takes far longer than 5 minutes in the container, so systemd
SIGTERMed the oneshot mid-install and left a node_modules tree npm could no
longer remove (ENOTEMPTY on rmdir node_modules/date-fns/isEqual).

Also resyncs package-lock.json with package.json, missed in the 1.115.0 commit.

v1.115.1

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 13:27:11 +02:00
224fdba5c6 feat: custom day count for the week view
Some checks are pending
Playwright Tests / test (push) Waiting to run
Add a "Custom" option next to the 1/2/3/5/7 presets where any number of
days from 1 to 31 can be typed. The seven duplicated preset button rows
are replaced by a shared DaysSelector component with panel/header/menu
variants.

The day grid and all-day grid only had CSS for cols-1/2/3/5/7, so any
other count silently fell back to five columns; both now derive
grid-template-columns from the actual day count.

v1.115.0

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 10:14:50 +02:00
2028ba80e0 fix: copy public/ and .next/static/ into standalone output on deploy
Some checks are pending
Playwright Tests / test (push) Waiting to run
next.config.js sets output: 'standalone', but Next.js does not copy public/
or .next/static/ into .next/standalone — that is a documented manual step.
Skipping it shipped new server code referencing new chunk hashes while the
old chunks stayed in the standalone tree, so those requests 404'd, React
never hydrated, and pages hung on "Loading session..." while the API kept
returning 200.

v1.114.2

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 13:13:42 +02:00
3338978163 chore: version-control the production deploy script
Moves the deploy script off the server and into the repo as
scripts/update-app.sh, with the two fixes made during the v1.114.0 deploy:

- set -euo pipefail, so a failed git pull aborts instead of rebuilding and
  restarting PM2 on unchanged code while printing "Update Complete"
- npm ci instead of npm install, which rewrote package-lock.json and left the
  tree dirty so the next git pull aborted

The body is wrapped in a main() function because the script lives inside the
checkout it updates, and git pull rewriting it mid-run would leave bash
reading from a stale file offset.

v1.114.1

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 19:03:08 +02:00
7e3e30ec83 feat: add SKIP button to Focus Mode
Focus Mode now shows a SKIP button that moves to the next task of the day
without completing the current one. Skipped task ids are tracked in
WeeklyView and filtered out of the focus queue, so completing a task still
picks the correct next one; the list is cleared when Focus Mode closes.
The timer resets on each new task, and the button is disabled when no other
task is left for today.

Also drops the standalone "Element Colors" and "Weekend Colors" sections from
Styling settings (those controls live in the CSS Variables panel since
1.113.1) and enlarges the CSS variable swatches.

v1.114.0

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:37:17 +02:00
9ce5664621 chore: remove stray file with invalid filename
Some checks failed
Playwright Tests / test (push) Has been cancelled
v1.113.1
2026-07-08 23:01:27 +02:00
5510197cf4 fix: add element/weekend color controls to CSS Variables panel, color-first layout
Today Highlight, Past Days, Saturday and Sunday now also appear as their
own groups in the CSS Variables panel, bound to the same profile fields
as the existing Element/Weekend Colors controls so both stay in sync.
Every row now shows the color swatch before its label.

v1.113.1
2026-07-08 20:51:01 +02:00
02b2e40649 feat: add customizable CSS variables and custom CSS to Styling settings
Adds a "CSS Variables" panel to the Styling tab with a color picker and
description for every color token in globals.css (base, sidebar, design
token aliases, event colors, all-day chips), plus a "Custom CSS" textarea
that loads after the default stylesheet and can override any rule.

Overrides are stored per-user (customCssVars, customCss) and applied on
the root container's inline style, so they take precedence over themes
and per-field settings.

v1.113.0
2026-07-08 19:57:21 +02:00
4a18027068 fix: refresh calendar immediately after drag-move of event
Some checks failed
Playwright Tests / test (push) Has been cancelled
After dragging a calendar event to a new time or date, trigger
fetchCalendarEvents on both the old and new date context so the
move is reflected instantly without waiting for the next poll cycle.
Applies to both non-recurring and recurring drag confirms.

v1.112.2
2026-06-10 10:29:45 +02:00
4f140baa38 feat: move jump-to-date icon left of nav pill, picker opens below
- Calendar icon is now a standalone button to the left of the << < Today > >> cluster
- Uses its own ref (navDatePickerBtnRef) so SimpleDatePicker anchors and
  opens directly below the icon instead of at the center date display
- Removed separator inside nav pill (no longer needed)

v1.112.1
2026-05-29 12:14:34 +02:00
3cb59583ff chore: update .gitignore to exclude APP_ERKLÄRUNG.md
v1.112.1
2026-05-29 12:01:38 +02:00
e7eb060643 feat: add location autocomplete and custom reminder times to event modal
- Location field shows dropdown suggestions from previously saved locations
  as the user types; selected/submitted locations are persisted to
  profile.viewSettings.savedLocations (max 20, most recent first)
- Reminder dropdown gains a "Custom…" option that opens an inline editor
  for entering X minutes / hours / days before the event; confirmed custom
  values are persisted to profile.viewSettings.customReminderMinutes
  (max 10) and appear in future reminder dropdowns

v1.112.0
2026-05-29 11:53:03 +02:00
530006060a feat: add jump-to-date button to hiding top toolbar left section
v1.111.6
2026-05-29 11:51:54 +02:00
b9ed032f1f new handels on the allday and anyday areas 2026-05-13 19:06:39 +02:00
0a67745b85 Raise resize handle stacking 2026-05-13 00:49:02 +02:00
5ebdf6d751 Refine sidebar header controls and resize handles 2026-05-13 00:43:19 +02:00
07401d3dfa fix: restore Printer icon to collapsed desktop rail
Print button was accidentally dropped when the history flyout was
slimmed to undo/redo only. Restored next to Refresh in the rail.

v1.111.5
2026-05-11 15:52:04 +02:00
0e189e53b3 fix: vertically center icons, checkbox, and text in task rows
Changed alignItems from flex-start to center on outer div and span.
Removed manual top/left offsets on checkbox (no longer needed with
center alignment). Icon column uses justifyContent: center.

v1.111.4
2026-05-11 15:43:14 +02:00
4a5910779e fix: align checkboxes, right-align end icons, fix weather overlap
- borderLeft now always 4px (transparent when no project/kanban color)
  so all tasks have the same left padding (8px) and checkboxes align
- Rolling and provider icons moved from inline text flow to a right-
  aligned sibling span in the outer flex row (always at line end)
- paddingRight: 30px when weatherEnabled to prevent temperature overlay
  from overlapping task text

v1.111.3
2026-05-11 15:36:57 +02:00
10e7ba98f1 fix: always reserve icon column width for checkbox/text alignment
Icon column (14px fixed width) is now always rendered when priority or
project icon settings are enabled, even when a task has no icons.
Each icon slot is a 12×12px centered container so icons are the same
size and horizontally aligned. Increased gap to 2px for breathing room.

v1.111.2
2026-05-11 15:15:40 +02:00
cb17c91ca6 fix: replace Circle with project icon in task hover menu
The project assign button and dropdown list now show the project's
actual icon (or faFolder as fallback) instead of a plain circle,
matching the icon rendering used in the task row stacked column.

v1.111.1
2026-05-11 15:08:16 +02:00
b1e549dbfa feat: weekday task layout matches AnyDay — stacked icon column
Priority icon (top) + project icon (bottom) now rendered in a fixed
leading column before the checkbox, matching the AnyDay area layout.
Provider/sync icon always inline at end (removed absolute fallback).

v1.111.0
2026-05-11 15:07:01 +02:00
cf504846da feat: merge visibility+appearance flyout, slim history, nav stays open
- Eye icon now opens a combined vis-display flyout (visibility toggles
  + appearance settings in one panel, with divider)
- History flyout reduced to undo+redo only; Refresh moved back to
  standalone rail icon
- Navigation flyout stays open when clicking prev/next day/week
  (removed setFlyoutSection(null) from all nav button handlers,
  both desktop and mobile)
- Mobile rail mirrors desktop flyout structure (vis-display, history,
  nav, refresh standalone)

v1.110.7
2026-05-11 14:43:16 +02:00
75bb3301f9 fix(rail): collapse left rail icons to fit screens < 960px height
- Nav arrows (5 icons) → single ArrowLeftRight flyout with prev/next week/day + today
- Undo/Redo/Refresh/Print (4 icons) → single Undo2 history flyout
- Removed duplicate standalone dark mode toggle (already in Appearance flyout)
- Same flyout sections added to mobile icon rail
- Nav flyout also added to mobile rail

v1.110.6
2026-05-11 14:33:23 +02:00
73a657ebff style: remove inline min-height: 24px from task-list-slot divs
v1.110.5
2026-05-11 14:10:53 +02:00
438cd71a08 style: remove min-height from .task-list-slot
v1.110.4
2026-05-11 14:09:01 +02:00
27756e5bf5 fix: :15/:30/:45 toggle now works in left rail flyout and all sidebar panels
Was calling setShowSubHourSlots (local state) + saveSetting, but effectiveShowSubHourSlots
reads from profile via getEffective — so the toggle had no visible effect. Fixed all 5
occurrences to use saveViewSetting("showSubHourSlots", ..., true) matching the Settings
sidebar behavior.

v1.110.3
2026-05-11 14:06:51 +02:00
ab8d96a810 fix(mobile): header icon toggles icon rail; remove redundant nav arrows from rail
- PanelLeftOpen in header now toggles the icon rail open/close
- Close button in rail uses same PanelLeftOpen icon for visual consistency
- Removed nav arrows (prev/next day/week, today) from rail — available in Quick Settings
- Removed Printer from rail (rarely used on mobile)
- Added SlidersHorizontal (Quick Settings) to bottom of rail

v1.110.2
2026-05-11 13:41:41 +02:00
671c91c3d7 fix(mobile): top-left button opens Quick Settings; icon rail mirrors desktop
- PanelLeftOpen in mobile header now opens Quick Settings (left panel)
- Added "Icon Rail" link at bottom of Quick Settings to open the icon sidebar
- Mobile icon sidebar now matches collapsed desktop left rail: View, Columns,
  Slot, Plus, Repeat, Goal, Visibility, Appearance flyouts (tap-to-toggle),
  Undo, Redo, Refresh, Print, dark mode, Settings, Sign out

v1.110.1
2026-05-11 13:32:33 +02:00
81f3a42620 feat: task edit alignment + settings tabs + mobile sidebar
- Someday task edit: add icon/checkbox column spacers before the
  textarea so the edit field aligns exactly with the task text column
- Settings tabs: remove outer padding, use space-around + nowrap so all
  9 icons fit in a single row without wrapping
- Mobile: left sidebar rail (PanelLeftOpen button) — slides in from
  left with nav controls (prev/next day/week, today), actions (search,
  calendar jump, projects, focus, quick settings), and bottom controls
  (dark mode, settings, sign out). CSS class .mobile-left-sidebar and
  .mobile-rail-btn added for easy customization.

v1.110.0
2026-05-11 12:51:17 +02:00
94098fdac2 style: active tab uses box-shadow instead of border-tab effect
Removed border-bottom from tabs bar and border/margin-bottom trick from
active tab. Active tab now indicated with a subtle box-shadow.

v1.109.2
2026-05-11 12:41:19 +02:00
74268edb85 fix: align Add task input with task text column
SomedayAddTask now accepts showProjectIcons and showTaskCheckboxes props.
The bottom add-task row renders as a flex layout with matching spacers
for the icon column (18px) and checkbox column (16px), so the input
field left-edge exactly aligns with the task name column. Right-padding
keeps the input from extending into the provider icon column.

v1.109.1
2026-05-11 12:40:23 +02:00
b53eff9fd1 feat: sort completed tasks to bottom + align Add task input
- Completed tasks in someday lists now always render below all active
  tasks. Slot system builds from incomplete tasks only; done tasks get
  their own section at the bottom outside the droppable slots.
- "Add task..." input right margin increased to 24px so its right edge
  stops before the provider icon (G) column, matching task row layout.

v1.109.0
2026-05-11 12:29:01 +02:00
6325e07912 fix: align ANY DAY toggle with tab buttons in tab bar
The ANY DAY label/icon div sits at the flex-end of the tab bar but
appeared misaligned with the tab buttons. margin-bottom: 6px brings
it to the correct visual baseline.

v1.108.4
2026-05-11 12:25:52 +02:00
aa322dfac3 fix: list style popover no longer clipped by card overflow:hidden
ListVisualsPopover used position:absolute which was clipped by the
weekly-someday-list card's overflow:hidden. Now uses position:fixed
anchored to the card's bounding rect. IconPicker sub-panel also
updated to position:fixed. Stabilized mousedown listener (onCloseRef
pattern, empty deps).

v1.108.3
2026-05-11 12:19:55 +02:00
c3099d37c2 fix: remove border under active someday tab
margin-bottom was -1px but the tab bar border-bottom is 2px thick, so
the active tab only covered half the border. Changed to -2px so the
active tab fully overlaps the bar border. Also cleaned up redundant
CSS properties in the active state rule.

v1.108.2
2026-05-11 12:17:49 +02:00
5d55beeb55 fix: unify someday task icon column — all icons before checkbox
The ⚡ priority and delegation icons were still rendering inside the
text span (after the checkbox). Now ALL task icons (project, priority,
delegation) are consolidated into the single fixed-width 18px column
before the checkbox for someday tasks. Tasks with no icon get an empty
placeholder so checkboxes and task names stay column-aligned.

v1.108.1
2026-05-11 12:05:34 +02:00
55ef3614d1 feat: fix tab edit popover + align someday task items
- Fix tab double-click popover not showing: tab bar overflow-x:auto was
  clipping the position:absolute popover. Now uses position:fixed anchored
  to the button's bounding rect, captured on dblclick. Also stabilizes
  the outside-click listener (onCloseRef pattern, empty deps).
- Restructure someday task item order to: [project icon column] [checkbox]
  [task name]. Fixed-width 18px icon column (placeholder when no project)
  keeps all checkboxes and task names vertically aligned.

v1.108.0
2026-05-11 11:43:40 +02:00
6ccf61f09a feat: AnyDay tab edit via double-click; remove pencil icons; fix active tab style
CSS:
- Active tab no longer shows accent underline; instead border-bottom matches
  the someday area bg (#f9f9f9 / #1a1a1b dark), creating a raised browser-tab
  look where the active tab visually merges with the content below
- margin-bottom: -1px to cover the tab bar border-bottom on active tab

JSX:
- Double-click on any tab now opens TabVisualsPopover (edit tab)
- Pencil icon and dissolve-X button removed from tab wrappers
- TabVisualsPopover extended with: rename input, dissolve button
  (dissolve removes the tab grouping; lists are kept)
- onRename and onDissolve props added to TabVisualsPopover

v1.107.3
2026-05-11 10:49:43 +02:00
85912beb4b style: AnyDay tabs — white background on all tabs, rounded-top browser-tab style
Inactive: white bg, subtle border, rounded top corners (6px 6px 0 0)
Active: same white bg + 3px accent-colored bottom border
Tab bar: align-items flex-end + 1px border-bottom so tabs sit flush

v1.107.2
2026-05-11 10:26:10 +02:00
50aa310a2d feat(design): AnyDay area polish — tabs, cards, flyout menu
CSS:
- .weekly-someday padding: 0 (no left/right border bleed)
- .someday-tabs-bar: removed border-bottom + bg, padding 0 12px
- Tabs: underline-style (border-bottom: 3px accent on active), transparent
  bg — active tab visually merges with someday area
- Active count badge: accent-tinted instead of white-on-blue
- .weekly-someday-list: 300px wide (restored from 240px)
- .task-list-slot: min-height instead of fixed height + top/bottom padding
  so two-line tasks expand properly instead of being clipped

JSX:
- Combined provider icon + tab-assign + edit-style + delete into a single
  flyout menu per card header (trigger = provider icon if synced, else pencil)
- Flyout: "Open in Google/Apple/…", "Assign to tab", "Edit style", "Delete"
- Added menuOpenListId state to track open flyout

v1.107.1
2026-05-11 10:16:21 +02:00
f0df18c853 feat(design): redesign AnyDay/Someday area — pill tabs + card layout
Tabs:
- Pill-shaped tabs (border-radius: 20px) with proper background on inactive
- Inactive tabs now use readable dark text (--weekly-text) instead of
  barely-visible --weekly-text-light
- Active tab: accent color + white text + glow shadow (box-shadow)
- Count badges: larger, higher contrast, 700 font-weight
- Tab bar: taller padding (8px), thicker bottom border (2px)

Cards:
- Rounded corners (10px), border + subtle drop shadow
- Cards now 240px wide (was 300px) for better density
- Grid padding changed from padding-bottom only to full 12px padding
- List header has subtle tinted background + reduced height (48px)
- Title font tweaked to 0.85rem/700 (was 1.15rem/800) to match card size
- Add-task button padding aligned to card edges (12px horizontal)
- Removed p-2 Tailwind class that was double-padding the card

v1.107.0
2026-05-11 09:45:16 +02:00
16e51be26d fix: restore hover-fade on left header toolbar when in top-menu mode
Left section was missing opacity-0 group-hover:opacity-100 Tailwind classes
after the useLeftRail display:none change. Restored fade-in-on-hover
conditionally when top-toolbar mode is active.

v1.106.6
2026-05-11 09:36:11 +02:00
1bfbe4582f style: use FolderOpen icon for Projects in left rail and settings tab
v1.106.5
2026-05-11 09:33:24 +02:00