Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e00e00e
Activity Log: Phase 0 package scaffold
keoshi Apr 22, 2026
9ec5f21
Activity Log: Phase 1 menu swap
keoshi Apr 22, 2026
a543e4f
Activity Log: Phase 2 REST surface
keoshi Apr 22, 2026
8dcfc8f
Activity Log: Sign REST proxies as the user, not the blog
keoshi Apr 22, 2026
a54e051
Activity Log: Phase 3 — port the DataViews UI
keoshi Apr 22, 2026
a68aa38
Activity Log: Polish — AdminPage header, full-bleed table, 32px icons
keoshi Apr 22, 2026
4c79bad
Activity Log: Tweak event-icon fill, hide footer, tighten columns
keoshi Apr 22, 2026
93bc44a
Activity Log: Widen date and event minimum column widths
keoshi Apr 22, 2026
fc8fd5d
Activity Log: Let the Event column absorb remaining width
keoshi Apr 22, 2026
4e26ae3
Activity Log: Use the real Jetpack logo for the "Jetpack" actor
keoshi Apr 22, 2026
d12f570
Activity Log: wire Reset view + persist view options
keoshi Apr 23, 2026
4a88512
Activity Log: document the UI primitives preference order
keoshi Apr 23, 2026
6ac9c44
Activity Log: adopt --wpds-* design tokens in SCSS
keoshi Apr 23, 2026
778d4c5
Activity Log: link event-description entities to wp-admin screens
keoshi Apr 23, 2026
ff954f1
Activity Log: route entity tokens to wp-admin, not wordpress.com
keoshi Apr 23, 2026
0ca1cd4
Activity Log: link entities that don't surface as typed ranges
keoshi Apr 23, 2026
a60f995
Activity Log: Phase 4 — tier gating and upsell
keoshi Apr 23, 2026
50d0a9f
Activity Log: retarget upsell callout copy at the wp-admin context
keoshi Apr 23, 2026
bb63561
Activity Log: drop the access cache on return from checkout
keoshi Apr 23, 2026
f5d5036
Activity Log: stop pre-marking the view as modified on load
keoshi Apr 23, 2026
11938cd
Activity Log: add a date-range picker above the table
keoshi Apr 23, 2026
6b220bf
Activity Log: move date-range picker into the AdminPage header
keoshi Apr 23, 2026
d8c3779
Activity Log: add tracks events for user interactions
keoshi Apr 23, 2026
1479735
Activity Log: fix CI — stub CHANGELOG.md, changelog/.gitkeep, TS error
keoshi Apr 23, 2026
134e462
Activity Log: stop the prod i18n check flagging @automattic/ui strings
keoshi Apr 23, 2026
2f93827
Activity Log: address engineering-review findings from #48244
keoshi Apr 24, 2026
289119e
Activity Log: offer DataViews' Activity layout alongside Table
keoshi Apr 24, 2026
561fac6
Activity Log: wire the Activity layout's media/title/description slots
keoshi Apr 24, 2026
210f360
Activity Log: address layout-review feedback from #48244
keoshi Apr 24, 2026
412f9ca
Activity Log: center the Activity-layout meta row and anchor the acto…
keoshi Apr 24, 2026
5f1c9da
Activity Log: track layout toggles between Table and Activity
keoshi Apr 24, 2026
902cea1
Activity Log: address package-structure review feedback from #48244
ilonagl Apr 29, 2026
423a2af
Activity Log: default to the Activity timeline layout
ilonagl Apr 29, 2026
cad524f
Activity Log: hide the cog's "modified" indicator dot
ilonagl Apr 29, 2026
7fd7db1
Activity Log: tooltip the disabled "Manage backup" action
ilonagl Apr 29, 2026
1c7131f
Activity Log: collapse empty description rows
ilonagl Apr 29, 2026
34fe8e3
Merge remote-tracking branch 'origin/trunk' into try-jetpack-activity…
CGastrell Apr 29, 2026
b0f7824
Activity Log: collapse changelog entries to single end-user-facing notes
CGastrell Apr 29, 2026
db5c2ce
admin-page-layout mixin: extend flex chain into AdminPage's Container…
CGastrell Apr 29, 2026
d1ed8f0
Activity Log: harden the free-tier server-side gate
dhasilva Apr 29, 2026
f646f6e
Activity Log: use esc_url_raw for the JSON-bound adminUrl
dhasilva Apr 30, 2026
b8ff7e0
Activity Log: tidy two React hook side-effects
dhasilva Apr 30, 2026
6613a01
Activity Log: mark the Manage-backup tooltip hack as #48236 follow-up
dhasilva Apr 30, 2026
16d2066
Activity Log: align tanstack range; bump my-jetpack changelog
dhasilva Apr 30, 2026
e5320ad
AdminPage: add `unwrapped` prop for full-bleed pages
CGastrell Apr 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 24 additions & 0 deletions projects/js-packages/base-styles/admin-page-layout.scss
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,35 @@ $jp-breakpoint-mobile: 782px;
// (dashboard grids with fixed column widths, wide tables, `100vw`
// descendants) scroll horizontally inside the middle instead of
// dragging the whole window into a horizontal scrollbar.

// `<AdminPage>` (title-branch) wraps children in
// `<Container fluid horizontalSpacing={0}><Col>{children}</Col></Container>`
// — that outer Container is `display: grid` and the single Col is a
// grid cell. Without intervention, the chain breaks here: any inner
// flex sizing on the consumer's wrapper (`flex: 1 1 auto; min-height: 0`)
// is inert under a non-flex parent, so DataViews-style pages let their
// content grow to its natural size and the outer Container scrolls
// the whole thing — instead of letting the consumer's own internal
// scroll surface (e.g. `.dataviews-layout__container`) handle it.
// Force the outer Container/Col pair to flex column so consumers can
// fill their bounded slot. Form-style pages keep working: their
// children stay content-sized (default `flex: 0 1 auto`) and any
// overflow still falls back to Container's `overflow: auto`.
.admin-ui-page > :not(.admin-ui-page__header):not(.jetpack-footer) {
flex: 1 1 auto;
min-height: 0;
min-width: 0;
overflow: auto;
display: flex;
flex-direction: column;

> * {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW this will all break with next admin-ui update: we can't rely on the core admin-ui-page CSS selectors as a stable API, and indeed they'll be gone in the next update which moves Page component to use CSS modules instead of CSS selectors:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the recommended approach here, @simison ?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CGastrell I think is on it

flex: 1 1 auto;
min-height: 0;
min-width: 0;
display: flex;
flex-direction: column;
}
}

// ── <JetpackFooter> pinned at the bottom ─────────────────────────
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: changed

admin-page-layout mixin: extend the flex chain into AdminPage's outer Container/Col so DataViews-style consumers can fill their bounded slot and let their own internal scroll handle the table body.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: minor
Type: added

AdminPage: add `unwrapped` prop to render children directly inside the admin-ui Page, skipping the default Container/Col grid wrap. Use for full-bleed pages (DataViews-based admin surfaces) that own their own scroll/layout model.
11 changes: 8 additions & 3 deletions projects/js-packages/components/components/admin-page/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ const AdminPage: FC< AdminPageProps > = ( {
breadcrumbs,
tabs,
showBottomBorder = true,
unwrapped = false,
} ) => {
useEffect( () => {
restApi.setApiRoot( apiRoot );
Expand Down Expand Up @@ -95,9 +96,13 @@ const AdminPage: FC< AdminPageProps > = ( {
showSidebarToggle={ false }
>
{ tabs }
<Container fluid horizontalSpacing={ 0 }>
<Col>{ children }</Col>
</Container>
{ unwrapped ? (
children
) : (
<Container fluid horizontalSpacing={ 0 }>
<Col>{ children }</Col>
</Container>
) }
{ showFooter && <JetpackFooter menu={ optionalMenuItems } /> }
</Page>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,13 @@ export type AdminPageProps = {
* Hidden when `tabs` is used.
*/
showBottomBorder?: boolean;

/**
* Render `children` directly inside the admin-ui Page, skipping the
* default `<Container fluid horizontalSpacing={0}><Col>{children}</Col></Container>`
* wrap. Use for full-bleed pages (DataViews-based admin surfaces, full-app
* dashboards) that own their own scroll/layout model and don't want the
* outer Container's grid to break their flex chain. Defaults to `false`.
*/
unwrapped?: boolean;
};
15 changes: 15 additions & 0 deletions projects/packages/activity-log/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Files not needed to be distributed.
.babelrc export-ignore
.gitattributes export-ignore
.github/ export-ignore
.gitignore export-ignore

# Files not needed in the production build.
.phpcs.dir.xml production-exclude
/changelog/** production-exclude
/tests/** production-exclude
types.d.ts production-exclude
/src/js/** production-exclude

# Files needed in the production build.
build/** production-include
6 changes: 6 additions & 0 deletions projects/packages/activity-log/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
wordpress
node_modules
vendor
jetpack_vendor
.cache
build
13 changes: 13 additions & 0 deletions projects/packages/activity-log/.phan/config.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php
/**
* This configuration will be read and overlaid on top of the
* default configuration. Command-line arguments will be applied
* after this file is read.
*
* @package automattic/jetpack-activity-log
*/

// Require base config.
require __DIR__ . '/../../../../.phan/config.base.php';

return make_phan_config( dirname( __DIR__ ) );
24 changes: 24 additions & 0 deletions projects/packages/activity-log/.phpcs.dir.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<ruleset>

<rule ref="WordPress.WP.I18n">
<properties>
<property name="text_domain" type="array">
<element value="jetpack-activity-log" />
</property>
</properties>
</rule>
<rule ref="Jetpack.Functions.I18n">
<properties>
<property name="text_domain" value="jetpack-activity-log" />
</properties>
</rule>

<rule ref="WordPress.Utils.I18nTextDomainFixer">
<properties>
<property name="old_text_domain" type="array" />
<property name="new_text_domain" value="jetpack-activity-log" />
</properties>
</rule>

</ruleset>
33 changes: 33 additions & 0 deletions projects/packages/activity-log/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Activity Log

## UI primitives

When adding React UI in this package, prefer the WordPress Design System
packages in this order:

1. **`@wordpress/ui`** — foundational primitives. Check each component's
Storybook "Status" badge (anything other than "stable" is still in
flux); avoid experimental APIs here.
2. **`@wordpress/components`** — general-purpose legacy library.
Predates the design system. Use only when `@wordpress/ui` doesn't
have a stable equivalent, and still check Status in Storybook.
3. **`@wordpress/dataviews`** — higher-level data presentation (tables,
lists, grids). Already the backbone here. Extend via its
sub-components (`DataViews.Search`, `DataViews.FiltersToggle`,
`DataViews.Layout`, `DataViews.Footer`) before reaching for lower-
level primitives.
4. **`@wordpress/admin-ui`** — page layout primitives, accessed via
`AdminPage` from `@automattic/jetpack-components` (which wraps
admin-ui's `Page`).

Rationale: WordPress is moving new work to `@wordpress/ui`;
`@wordpress/components` is being kept as a legacy fallback. Guidance
from the WordPress Design System P2 (April 2026).

## Design-system lookup

A dedicated MCP server is wired into this project's local Claude Code
config: `@wordpress/design-system-mcp`. It exposes the authoritative
list of stable `@wordpress/ui` + `@wordpress/components` components and
`--wpds-*` design tokens. Prefer querying it over spelunking through
`node_modules/@wordpress/components/src/**` for component metadata.
10 changes: 10 additions & 0 deletions projects/packages/activity-log/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.1.0-alpha - unreleased

Initial release.
15 changes: 15 additions & 0 deletions projects/packages/activity-log/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Activity Log

Activity Log UI for the Jetpack plugin in wp-admin.

## Using this package in your WordPress plugin

If you plan on using this package in your WordPress plugin, we would recommend that you use [Jetpack Autoloader](https://packagist.org/packages/automattic/jetpack-autoloader) as your autoloader. This will allow for maximum interoperability with other plugins that use this package as well.

## Security

Need to report a security vulnerability? Go to [https://automattic.com/security/](https://automattic.com/security/) or directly to our security bug bounty site [https://hackerone.com/automattic](https://hackerone.com/automattic).

## License

jetpack-activity-log is licensed under [GNU General Public License v2 (or later)](./LICENSE.txt)
10 changes: 10 additions & 0 deletions projects/packages/activity-log/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const config = {
presets: [
[
'@automattic/jetpack-webpack-config/babel/preset',
{ pluginReplaceTextdomain: { textdomain: 'jetpack-activity-log' } },
],
],
};

module.exports = config;
Empty file.
4 changes: 4 additions & 0 deletions projects/packages/activity-log/changelog/add-package-scaffold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: minor
Type: added

Initial release of the Activity Log package: hosts the in-wp-admin Activity Log UI and its REST endpoints.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: changed

Activity Log: opt into `<AdminPage unwrapped>` so DataViews can fill the bounded content slot and scroll its table body internally. Header, date picker, and DataViews toolbar stay pinned on short viewports.
Loading
Loading