Skip to content

1.4.0: resizable activities list, compact row actions, progress bar and CI alignment - #34

Merged
rickypid merged 8 commits into
mainfrom
feat/activities-list-header-resize
Oct 24, 2026
Merged

rickypid merged 8 commits into
mainfrom
feat/activities-list-header-resize

Conversation

@rickypid

@rickypid rickypid commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Activities list header: new Gantt.activitiesListHeader widget that fills the empty area at the top of the activities list column. It is constrained to the calendar header height (including the ISO week row) and stays fixed while the list scrolls.
  • Resizable activities list: new Gantt.activitiesListWidth taking a GanttActivitiesListWidth (width, minWidth, maxWidth, onChanged).
    • Width is in logical pixels and is not persisted by the package: callers restore it through width and save it from onChanged, which fires once at drag end (only if the width changed).
    • Passing a different width on rebuild resets the current width (e.g. a "reset" action).
    • Width is clamped to minWidth/maxWidth and always leaves room for at least one day column.
    • The drag handle is an invisible 8px area on the column edge (resize cursor on desktop/web), so the look is unchanged; RTL is supported.
    • When activitiesListWidth is null the column keeps the current fixed flex layout (activitiesListFlex/gridAreaFlex) — no breaking change.
  • Since the number of visible days depends on the grid width, controller.fetch() is triggered at drag end when the visible range changed.
  • Version bumped to 1.4.0, README and CHANGELOG updated.
  • Breaking: minimum SDK raised to Dart ^3.8.0 / Flutter >=3.32.0: flutter_lints 6 already required it, so the package could not be resolved on the previously declared ^3.7.2. Sources are reformatted with the Dart 3.8 formatter style (separate style: commit, no logic changes).

Merged from #33 (@a-nisi-insideapp)

This PR also ships the 1.4.0 changes of #33 (fix #32), merged with their original commits so a single release is published:

  • compact cellHeight row actions and Gantt.collapseActionsBelowWidth ("more" menu on narrow lists);
  • GanttActivity.progress / progressColor, contrast-aware cell title, resize edges following the cell color;
  • GanttTheme.listIndent, Gantt following a new theme, GanttTheme value equality, GanttController.setTheme;
  • fix removeAllFetchListener() / dispose() throwing a ConcurrentModificationError.

As agreed with @a-nisi-insideapp, Gantt.activitiesListMinWidth from #33 is dropped in favor of GanttActivitiesListWidth.minWidth: without a stored width the column starts from its flex share bounded by minWidth, which covers the same narrow-layout use case and also makes the column resizable. The example app uses it instead.

Also includes rowsGroupPadding applied only between top-level groups.

CI

Workflows aligned with flutter_supabase_chat_core:

  • ci.yaml replaces flutter-analyze.yaml: runs on push/PR to main, matrix on the minimum Flutter version (3.32.0) and stable; format check, analyze, tests with coverage and a pana score threshold (only the 10 pub.dev-only screenshot points may be lost).
  • publish.yaml: publishes to pub.dev on vX.Y.Z tags via GitHub OIDC, gated by the pub.dev environment. Requires setup: pub.dev Admin > Automated publishing (tag pattern v{{version}}, environment pub.dev) and the pub.dev environment with required reviewers on GitHub.
  • dependabot.yml: weekly updates for GitHub Actions and pub dependencies (root and example).

Notes

Window resizes still don't trigger a refetch when the visible range changes (pre-existing behavior, out of scope).

Test plan

  • flutter analyze — no issues
  • flutter test — 32 tests (including the 1.4.0: compact row actions and a progress bar for narrow layouts #33 ones); new widget tests cover initial width, fixed flex layout without config, drag + onChanged, min/max clamping, RTL
  • CI green on the new workflow (min Flutter + stable, pana threshold)
  • Manual check in the example app (desktop/web cursor, mobile drag)

Co-authored-by: a-nisi-insideapp a.nisi@insideapp.it

🤖 Generated with Claude Code

a-nisi-insideapp and others added 4 commits October 23, 2026 10:51
Make the activities list usable on tablets (compact actions, minimum
width, "more" menu) and add a progress line to the cells, with
readable titles and resize edges that follow the cell color.
See CHANGELOG 1.4.0 for the details.
Add test/cell_progress_and_edges_test.dart (resize edges on cut sides,
progress track and line inset and measured on the whole activity, the
"more" menu tooltip assert) and two GanttController tests for
removeAllFetchListener and dispose with a mounted Gantt. Show progress
and the narrow layout options in the example.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Add `activitiesListHeader` to fill the empty area above the activities list
- Add `GanttActivitiesListWidth` to make the activities list column resizable,
  with the width persisted externally through `width`/`onChanged`
- Refetch when resizing changes the visible date range
- Bump version to 1.4.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Replace flutter-analyze.yaml with ci.yaml: Flutter min/stable matrix,
  tests with coverage, pana score threshold, concurrency
- Add publish.yaml to publish to pub.dev on version tags via OIDC
- Add dependabot for GitHub Actions and pub dependencies

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rickypid rickypid changed the title 1.4.0: activities list header and resizable activities list width 1.4.0: activities list header, resizable activities list width and CI alignment Oct 24, 2026
rickypid and others added 4 commits October 24, 2026 12:17
flutter_lints 6 requires Dart ^3.8.0, so the package could not be
resolved on the previously declared minimum. Align the CI matrix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Ensure `rowsGroupPadding` is applied only between top-level groups (not the first group).
- Improves visual consistency in `activities_grid` and `activities_list`.
Merge the 1.4.0 changes of #33 to ship a single release:
- Drop `Gantt.activitiesListMinWidth` in favor of
  `GanttActivitiesListWidth.minWidth`, which also covers the flex-derived
  initial width; the example uses it instead
- Keep `collapseActionsBelowWidth`, now also driven by the resizable column
- Combine the theme update and the list width reset in `didUpdateWidget`
- Keep the top-level-only `rowsGroupPadding` together with `listIndent`
- Reformat the merged sources with the Dart 3.8 formatter
- Merge the two 1.4.0 CHANGELOG entries and README property tables

Co-authored-by: a-nisi-insideapp <a.nisi@insideapp.it>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rickypid rickypid changed the title 1.4.0: activities list header, resizable activities list width and CI alignment 1.4.0: resizable activities list, compact row actions, progress bar and CI alignment Oct 24, 2026
@rickypid
rickypid merged commit 7bce6c0 into main Oct 24, 2026
2 checks passed
@rickypid
rickypid deleted the feat/activities-list-header-resize branch October 24, 2026 13:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Activities list: row actions leave too little room for the title on narrow layouts

2 participants