Commit Graph

62 Commits

Author SHA1 Message Date
EYHN
8399d99e79 feat(core): add collection rules module (#11683)
whats changed:

### orm

add a new `select$` method, can subscribe on only one field to improve batch subscribe performance

### yjs-observable

add a new `yjsObservePath` method, which can subscribe to changes from specific path in yjs. Improves batch subscribe performance

```ts
yjsGetPath(
      this.workspaceService.workspace.rootYDoc.getMap('meta'),
      'pages'
    ).pipe(
      switchMap(pages => yjsObservePath(pages, '*.tags')),
      map(pages => {
          // only when tags changed
      })
)
```

### standard property naming

All `DocProperty` components renamed to `WorkspaceProperty` which is consistent with the product definition.

### `WorkspacePropertyService`

Split the workspace property management logic from the `doc` module and create a new `WorkspacePropertyService`. The new service manages the creation and modification of properties, and the `docService` is only responsible for storing the property value data.

### new `<Filters />` component

in `core/component/filter`

### new `<ExplorerDisplayMenuButton />` component

in `core/component/explorer/display-menu`

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/c47ab43c-ac53-4ab6-922e-03127d07bef3.png)

### new `/workspace/xxx/all-new` route

New route for test components and functions

### new collection role service

Implemented some filter group order rules

see `collection-rules/index.ts`

### standard property type definition

define type in `modules\workspace-property\types.ts`

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/4324453a-4fab-4d1e-83bb-53693e68e87a.png)

define components (name,icon,....) in `components\workspace-property-types\index.ts`

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/93a23947-aaff-480d-a158-dd4075baae17.png)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced comprehensive filtering, grouping, and ordering capabilities for workspace documents with reactive updates.
  - Added a new "All Pages" workspace view supporting dynamic filters and display preferences.
  - Developed UI components for filter creation, condition editing, and display menu controls.
  - Launched enhanced tag management with inline editors, selection, creation, and deletion workflows.
  - Added workspace property types with dedicated filter UIs including checkbox, date, tags, and text.
  - Introduced workspace property management replacing document property handling.
  - Added modular providers for filters, group-by, and order-by operations supporting various property types and system attributes.

- **Improvements**
  - Standardized tag and property naming conventions across the application (using `name` instead of `value` or `title`).
  - Migrated document property handling to workspace property-centric logic.
  - Enhanced internationalization with additional filter and display menu labels.
  - Improved styling for filter conditions, display menus, and workspace pages.
  - Optimized reactive data subscriptions and state management for performance.
  - Refined schema typings and type safety for workspace properties.
  - Updated imports and component references to workspace property equivalents throughout frontend.

- **Bug Fixes**
  - Resolved tag property inconsistencies affecting display and filtering.
  - Fixed filter and tag selection behaviors for accurate and reliable UI interactions.

- **Chores**
  - Added and refined test cases for ORM, observables, and filtering logic.
  - Cleaned up legacy document property code and improved type safety.
  - Modularized and restructured components for better maintainability.
  - Introduced new CSS styles for workspace pages and display menus.
  - Added framework module configurations for collection rules and workspace property features.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-08 08:38:56 +00:00
Saul-Mirone
45b6cbe8d7 refactor(editor): cleanup dead code (#11893) 2025-04-22 15:51:23 +00:00
liuyi
ebdeaf3783 chore(core): reorg polyfill (#11528) 2025-04-08 14:59:54 +08:00
forehalo
c8d22d97d5 refactor: webpack config (#11421) 2025-04-03 11:55:56 +00:00
EYHN
5f3cf53819 feat(core): cleanup unused indexeddb when bootstrapping (#11325) 2025-03-31 14:20:41 +00:00
EYHN
8957d0645f feat(nbstore): add indexer storage (#10953) 2025-03-31 12:59:51 +00:00
L-Sun
2f1f09e25f fix(editor): extract store spec register from effects (#11268)
Close [BS-2802](https://linear.app/affine-design/issue/BS-2802/移動端缺少bseffects導致文檔創建錯誤)
2025-03-31 10:53:02 +00:00
EYHN
05200ad7b7 feat(nbstore): add blob sync storage (#10752) 2025-03-14 18:05:54 +08:00
forehalo
56b842f2e1 fix(core): runtime control of telemetry (#10663) 2025-03-06 09:56:13 +00:00
hackerESQ
fed0e0add3 fix: prevent sentry from loading when telemetry is disabled (#10543)
Co-authored-by: forehalo <forehalo@gmail.com>
2025-03-05 20:09:38 +08:00
Brooooooklyn
bf7b1646b3 fix(web): add Array#toReversed polyfill (#10623) 2025-03-05 07:20:16 +00:00
Brooooooklyn
e99b25ae6a fix(web): add Array#toSpliced and Array#toReversed polyfill (#10614) 2025-03-05 02:46:41 +00:00
EYHN
ee0cfe4dc7 feat(nbstore): share worker between workspaces (#9947) 2025-02-05 07:57:03 +00:00
EYHN
a2ffdb4047 feat(core): new worker workspace engine (#9257) 2025-01-16 16:22:18 +00:00
forehalo
055fa0a8b4 fix(core): polyfill iterator helper for safari (#8824)
fix AF-1691
2024-11-14 09:59:01 +00:00
forehalo
1ed9775c45 fix(core): global error handler should be registered outside webpack runtime (#8556) 2024-10-21 05:58:05 +00:00
liuyi
9b31183bd1 feat(core): add global error handler (#8509) 2024-10-18 14:34:13 +08:00
forehalo
76cfadf4e5 chore(core): remove deprecated intl polyfill (#8526) 2024-10-17 14:28:15 +00:00
野声
f393f89a3f fix(server): blank screen on mobile (#8460)
Co-authored-by: forehalo <forehalo@gmail.com>
2024-10-16 13:12:40 +08:00
EYHN
fab23d226d refactor(core): clear build config (#8268)
remove build config

allowLocalWorkspace -> FeatureFlag
enablePreloading -> removed
enableNewSettingUnstableApi -> removed
enableExperimentalFeature -> removed
enableThemeEditor -> FeatureFlag

remove some unused code
2024-09-18 06:33:25 +00:00
forehalo
315c20f8e5 fix(core): avoid side effects (#8245) 2024-09-18 03:45:20 +00:00
forehalo
25969a34e8 refactor: avoid runtime config object (#8202) 2024-09-13 07:27:11 +00:00
forehalo
c76b4d70b0 refactor: setup files (#8201) 2024-09-13 07:27:08 +00:00
pengx17
2ac803c73f feat(mobile): sign in page (#8039)
fix AF-1237
2024-09-04 03:58:54 +00:00
Saul-Mirone
681f4561fb chore: bump bs (#8071) 2024-09-03 12:12:59 +00:00
Saul-Mirone
56f4634c1f chore: bump bs with new extension api (#8042) 2024-09-02 10:32:22 +00:00
pengx17
61e37d8873 test(mobile): basic e2e tests (#8031)
fix AF-1289

1. tested on 'webkit'
2. a few baseline test cases
2024-09-02 10:20:24 +00:00
EYHN
89537e6892 refactor(core): separate editor & doc mode (#7873)
doc.mode -> primaryMode
(*new) editor.mode

New Service:
editor service

Change Mode:

```
const editor = useService(EditorService).editor;
editor.setMode('page')
```

Change primary mode

```
const editor = useService(EditorService).editor;
editor.doc.setPrimaryMode('page')
```
2024-08-14 11:43:03 +00:00
donteatfriedrice
dd6901fe15 feat: bump blocksuite (#7603)
## Features
- https://github.com/toeverything/BlockSuite/pull/7717 @L-Sun
- https://github.com/toeverything/BlockSuite/pull/7691 @L-Sun

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/7720 @akumatus
- https://github.com/toeverything/BlockSuite/pull/7719 @doouding

## Refactor
- https://github.com/toeverything/BlockSuite/pull/7703 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/7694 @doouding
- https://github.com/toeverything/BlockSuite/pull/7700 @L-Sun
- https://github.com/toeverything/BlockSuite/pull/7716 @doodlewind

## Misc
2024-07-25 07:26:40 +00:00
EYHN
e2dbac6bf8 chore: bump blocksuite (#7235)
## Features
- https://github.com/toeverything/BlockSuite/pull/7340 @pengx17
- https://github.com/toeverything/BlockSuite/pull/7334 @EYHN
- https://github.com/toeverything/BlockSuite/pull/7339 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/7328 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/7324 @Flrande
- https://github.com/toeverything/BlockSuite/pull/7297 @pengx17
- https://github.com/toeverything/BlockSuite/pull/7318 @CatsJuice

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/7343 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/7345 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/7341 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/7342 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/7329 @CatsJuice
- https://github.com/toeverything/BlockSuite/pull/7337 @fundon
- https://github.com/toeverything/BlockSuite/pull/7333 @fundon
- https://github.com/toeverything/BlockSuite/pull/7326 @akumatus
- https://github.com/toeverything/BlockSuite/pull/7325 @Flrande
- https://github.com/toeverything/BlockSuite/pull/7323 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/7312 @golok727
- https://github.com/toeverything/BlockSuite/pull/7317 @CatsJuice
- https://github.com/toeverything/BlockSuite/pull/7319 @akumatus

## Refactor
- https://github.com/toeverything/BlockSuite/pull/7327 @Flrande
- https://github.com/toeverything/BlockSuite/pull/7320 @Flrande

## Misc
- https://github.com/toeverything/BlockSuite/pull/7303 @fundon
- https://github.com/toeverything/BlockSuite/pull/7321 @Saul-Mirone
2024-06-17 10:55:40 +00:00
EYHN
6202ba5ada refactor(core): remove jump once (#6733)
Previously, we marked `jumpOnce: true` on `doc.meta` to open a specific doc after creating a new workspace. This pr removes `jumpOnce` and directly jumps to the specific doc URL.

This PR also fixes an error when opening the all-page page, because the all-page page scans the jumpOnce attribute of all docs, and the code in it will fail on damaged data.
2024-04-29 08:51:31 +00:00
EYHN
a2fa9149ff feat(templates): add stickers (#6629) 2024-04-19 06:47:29 +00:00
EYHN
06fda3b62c feat(infra): framework 2024-04-17 15:09:09 +08:00
EYHN
1656b33ce3 feat(core): use zip snapshot for onboarding page (#6495) 2024-04-15 02:16:08 +00:00
Brooooooklyn
7cd75824a4 fix(core): use ResizeObserver polyfill (#6360)
- Close https://github.com/toeverything/AFFiNE/issues/6359
2024-03-28 10:48:22 +00:00
Brooooooklyn
c2847e2082 chore(core): split sentry and setup into web/electron (#6357) 2024-03-28 10:24:25 +00:00
pengx17
e53744b740 fix: should use fullscreen to control where to place macos window controls (#6351) 2024-03-28 03:40:46 +00:00
EYHN
f2adbdaba4 style: enable import-x/no-duplicates (#6279) 2024-03-25 03:55:33 +00:00
pengx17
8b2b2646bc fix: move traffic lights based on zoom level (#6201)
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/T2klNLEk0wxLh4NRDzhk/f75d1f6f-18f4-4dff-8174-67223f5f9807.mp4">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/T2klNLEk0wxLh4NRDzhk/f75d1f6f-18f4-4dff-8174-67223f5f9807.mp4">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/f75d1f6f-18f4-4dff-8174-67223f5f9807.mp4">Kapture 2024-03-19 at 18.05.20.mp4</video>
2024-03-21 02:00:35 +00:00
pengx17
a8a1074a8a feat(electron): add isMaximized flag to html (#6199)
to make some special ui rules for desktop
2024-03-20 13:20:19 +00:00
regischen
d1e6b23e1a feat: bump blocksuite (#5953) 2024-02-29 14:33:50 +08:00
EYHN
ad9b0303c4 refactor(core): refactor atom to use di (#5831)
To support multiple instances, this PR removes some atoms and implements them using the new DI system.

removed atom

- `pageSettingsAtom`
- `currentPageIdAtom`
- `currentModeAtom`
2024-02-27 03:50:53 +00:00
Lye Hongtao
4641bc422b feat: move templates into AFFiNE (#5750)
Related to https://github.com/toeverything/blocksuite/pull/6156

### Change
Move the edgeless templates to AFFiNE. All templates are stored as zip files. Run `node build-edgeless.mjs` in `@affine/templates` to generate JSON-format templates and importing script. The template will be generated automatically during building and dev (`yarn dev`).
2024-02-21 06:26:01 +00:00
Ayush Agrawal
6fad241350 feat: bump blocksuite (#5845) 2024-02-20 20:49:41 +08:00
EYHN
329fc19852 refactor(infra): migrate to new infra (#5565) 2024-01-30 07:16:39 +00:00
regischen
8b1b5b2e93 feat: bump blocksuite (#5624) 2024-01-18 17:26:31 +08:00
EYHN
104c21d84c refactor(workspace): split workspace interface and implementation (#5463)
@affine/workspace -> (@affine/workspace, @affine/workspace-impl)
2024-01-02 10:58:01 +00:00
EYHN
265ee81666 refactor(infra): remove old plugin system (#5411)
plugin system need redesign
2023-12-27 02:49:59 +00:00
EYHN
05025bf59a refactor(core): remove outline plugin and layout atom (#5326)
@affine/outline is no longer used, this PR deletes this plugin and deletes the code that is no longer used
2023-12-25 03:24:13 +00:00
Cats Juice
15dd20ef48 feat(electron): onboarding at first launch logic for client and web (#5183)
- Added a simple abstraction of persistent storage class.
- Different persistence solutions are provided for web and client.
    - web: stored in localStorage
    - client: stored in the application directory as `.json` file
- Define persistent app-config schema
- Add a new hook that can interactive with persistent-app-config reactively
2023-12-19 07:17:54 +00:00