Skip to content

Spreadsheet #2120

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 140 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
e4b0e60
added session invalidation card in the auth>security
ArnabChatterjee20k Jun 18, 2025
26baefe
added session invalidation
ArnabChatterjee20k Jun 19, 2025
41428ac
bump: pink.
ItzNotABug Jul 10, 2025
81ae7a2
Merge branch 'main' into spreadsheet
ItzNotABug Jul 10, 2025
2259a97
Merge branch 'main' into spreadsheet
ItzNotABug Jul 10, 2025
0638952
Merge branch 'main' into spreadsheet
ItzNotABug Jul 11, 2025
e64b51a
bump: spreadsheet logic.
ItzNotABug Jul 11, 2025
85f45a0
Merge branch 'main' into 'spreadsheet'.
ItzNotABug Jul 11, 2025
c7a3ec1
Merge branch 'main' into spreadsheet
ItzNotABug Jul 12, 2025
585e918
updates: to spreadsheet.
ItzNotABug Jul 15, 2025
380b241
updates: to spreadsheet.
ItzNotABug Jul 15, 2025
981da2f
Merge branch 'main' into 'spreadsheet'.
ItzNotABug Jul 15, 2025
33a9e0c
update: misc.
ItzNotABug Jul 15, 2025
96db5f2
update: misc.
ItzNotABug Jul 15, 2025
a223eb6
Merge branch 'main' into spreadsheet
ItzNotABug Jul 16, 2025
33326e0
new: attribute creation flow.
ItzNotABug Jul 16, 2025
797f3f7
fix: types.
ItzNotABug Jul 16, 2025
e0b36ce
add: sort button.
ItzNotABug Jul 16, 2025
b24b463
fix: colors.
ItzNotABug Jul 16, 2025
317fce6
fix: indexes page.
ItzNotABug Jul 16, 2025
c390661
update: improve value.
ItzNotABug Jul 16, 2025
cc9472f
update: inline index preview/overview with sheet.
ItzNotABug Jul 16, 2025
0c86c2a
update: inline index creation on columns page.
ItzNotABug Jul 16, 2025
be0fdee
update: inline index creation on columns page.
ItzNotABug Jul 16, 2025
40a9dd9
fix: nullable click.
ItzNotABug Jul 17, 2025
d5a1e7d
lint.
ItzNotABug Jul 17, 2025
7ca7257
fix: make cells non-editable. should be changed on pink though.
ItzNotABug Jul 17, 2025
9ab367a
update: lint and improve index deletion messages.
ItzNotABug Jul 17, 2025
131517a
update: svelte5 runes migrations.
ItzNotABug Jul 17, 2025
dd0865c
Merge branch 'main' into spreadsheet
ItzNotABug Jul 17, 2025
283b720
Merge branch 'main' into spreadsheet
ItzNotABug Jul 17, 2025
42344c0
Merge branch 'main' into spreadsheet
ItzNotABug Jul 17, 2025
3930034
add: duplicate record flow.
ItzNotABug Jul 17, 2025
f23cc21
Merge branch 'main' into spreadsheet
ItzNotABug Jul 17, 2025
8ae119b
temp: fix the sheet crashing.
ItzNotABug Jul 18, 2025
25ce2d6
Merge branch 'main' into 'spreadsheet'.
ItzNotABug Jul 21, 2025
1be8468
fix: uneven upload box widths.
ItzNotABug Jul 21, 2025
40deb42
Merge branch 'main' into spreadsheet
ItzNotABug Jul 22, 2025
d56828d
updates.
ItzNotABug Jul 22, 2025
5c9d1ba
updates.
ItzNotABug Jul 22, 2025
2ccfc31
update: sync ids to table/collection names, add dark mode empty state…
ItzNotABug Jul 23, 2025
72acec7
fix: sidebar states.
ItzNotABug Jul 23, 2025
0dd7633
bump: dep.
ItzNotABug Jul 23, 2025
a02a94e
bump: dep.
ItzNotABug Jul 23, 2025
7e65eb4
fix: sidebar issues.
ItzNotABug Jul 23, 2025
48b86bc
move: attribute creation on top level.
ItzNotABug Jul 23, 2025
b6dd104
update: correct options.
ItzNotABug Jul 23, 2025
2048e92
update: columns primary key badge.
ItzNotABug Jul 24, 2025
371ff19
update: columns primary key badge, move sheets around.
ItzNotABug Jul 24, 2025
1308776
update: persist column ordering.
ItzNotABug Jul 24, 2025
eb436d2
update: persist column ordering and widths.
ItzNotABug Jul 25, 2025
b0e0074
fix: erratic bugs.
ItzNotABug Jul 26, 2025
38b8ff7
update: show filters anyway.
ItzNotABug Jul 26, 2025
f2cffb5
fix: index columns.
ItzNotABug Jul 26, 2025
c35582f
fix: order on update.
ItzNotABug Jul 26, 2025
6a3fe28
add: nice seekbar component, fake data logic, multi attribute deletion.
ItzNotABug Jul 28, 2025
2feb95c
fix: missing files.
ItzNotABug Jul 28, 2025
2071632
fix: missing files.
ItzNotABug Jul 28, 2025
db80830
misc: updates.
ItzNotABug Jul 28, 2025
3b1c98a
lint, fix margin bottom on filters.
ItzNotABug Jul 29, 2025
956c2cf
lint, fix margin bottom on filters.
ItzNotABug Jul 29, 2025
650227c
fix: viewport issues with header banners.
ItzNotABug Jul 29, 2025
803f4ea
fix: viewport issues with header banners.
ItzNotABug Jul 29, 2025
0c0e10f
ci: empty commit
ItzNotABug Jul 29, 2025
b5dbf59
ci: empty commit
ItzNotABug Jul 29, 2025
188241d
updates: as per discussions.
ItzNotABug Jul 29, 2025
72d7e33
fix: index and duplicates not working on the headers.
ItzNotABug Jul 29, 2025
76f20ee
remove: vite dev changes.
ItzNotABug Jul 29, 2025
cd27811
fix: very weird bug with column swap after creating a new one!
ItzNotABug Jul 29, 2025
a4c40c7
Merge branch 'main' into 'spreadsheet'.
ItzNotABug Jul 29, 2025
000e534
fix: misc stuff.
ItzNotABug Jul 29, 2025
5ed18eb
refactor: tables > grid api.
ItzNotABug Jul 30, 2025
033fc26
updates: what `Databases` and what legacy APIs? 👀
ItzNotABug Jul 30, 2025
ad97385
Partial branch merge - 'main' into '1.8.x'.
ItzNotABug Jul 30, 2025
83c8ef3
Branch merge - 'main' into '1.8.x'.
ItzNotABug Jul 30, 2025
6b029e0
fix: sdk bump and diagnostic check.
ItzNotABug Jul 30, 2025
86c82de
Merge branch '1.8.x' into 'spreadsheet' ‼️.
ItzNotABug Jul 30, 2025
d08f4cd
misc: fixes.
ItzNotABug Jul 30, 2025
94f045f
update: navigate directly to spreadsheet.
ItzNotABug Jul 30, 2025
ea904a1
Merge branch 'main' into 'spreadsheet'.
ItzNotABug Jul 31, 2025
ee8373f
lint: format
ItzNotABug Jul 31, 2025
a29f4db
update: improved empty sheet view; fix: empty spacing on mobile at top.
ItzNotABug Jul 31, 2025
800a3a3
update: improved empty sheet view;
ItzNotABug Jul 31, 2025
5932212
ci: empty commit
ItzNotABug Jul 31, 2025
5160156
ci: empty commit
ItzNotABug Jul 31, 2025
761dd9a
fix: potential 404?
ItzNotABug Jul 31, 2025
2a38587
fix: there's no 404 error. stage doesn't use grids api.
ItzNotABug Jul 31, 2025
d286bc1
fix: layout shifts!
ItzNotABug Aug 1, 2025
1cecf69
fix: edit row layout scroll;
ItzNotABug Aug 1, 2025
155aaa4
fix: created row not shown in sheet.
ItzNotABug Aug 1, 2025
abb7672
fix: icons looking squished;
ItzNotABug Aug 1, 2025
89bcb1e
fix: random data > sample data
ItzNotABug Aug 1, 2025
275cebb
fix: sample data is only 25 items!
ItzNotABug Aug 1, 2025
1a064a7
update: sequence as primary.
ItzNotABug Aug 1, 2025
3b2df2d
update: record > row.
ItzNotABug Aug 1, 2025
b147fe1
update: lint.
ItzNotABug Aug 1, 2025
ac75b78
Merge remote-tracking branch 'origin/spreadsheet' into dat-522
abnegate Aug 1, 2025
ec335a5
Merge pull request #2034 from appwrite/dat-522
abnegate Aug 1, 2025
9e8e3de
fix: overscroll scrollbars.
ItzNotABug Aug 1, 2025
f9047d4
fix: focus stealing 🤨.
ItzNotABug Aug 1, 2025
369ed0d
fix: count.
ItzNotABug Aug 1, 2025
6766d78
fix: insert > create.
ItzNotABug Aug 1, 2025
3d4b4b3
update: show total count.
ItzNotABug Aug 1, 2025
f8463e1
update: use `sequence`.
ItzNotABug Aug 1, 2025
2921432
fix: import realtime subscription.
ItzNotABug Aug 4, 2025
9b53144
add: in cell edit support.
ItzNotABug Aug 4, 2025
fedd01a
update: persist sorting.
ItzNotABug Aug 5, 2025
cc04b38
update: persist sorting icons state.
ItzNotABug Aug 5, 2025
98d0849
misc: comment.
ItzNotABug Aug 5, 2025
8790ac3
update: vlist.
ItzNotABug Aug 5, 2025
2b6fe21
fix: stateeeeeee issues!!!
ItzNotABug Aug 6, 2025
29f1331
add: missed update fix for waterfall requests.
ItzNotABug Aug 6, 2025
3f9ee4c
update: add delay to tooltips;
ItzNotABug Aug 8, 2025
1d551ff
update: revert cell's value on update failure.
ItzNotABug Aug 8, 2025
2ea0560
update: remove primary key;
ItzNotABug Aug 8, 2025
ade332b
fix: edge case on input positioning.
ItzNotABug Aug 8, 2025
5c2cd44
fix: columns footer;
ItzNotABug Aug 8, 2025
6875cdd
fix: sidebar double settings.
ItzNotABug Aug 9, 2025
d05248b
fix: `updatePrefs` calls using object params.
ItzNotABug Aug 9, 2025
3a38ca4
linting.
ItzNotABug Aug 9, 2025
81c5214
update: expand, collapse header on sheets screen.
ItzNotABug Aug 9, 2025
dbc0dab
fix: height resize.
ItzNotABug Aug 9, 2025
f4a2b8f
update: errors handling on forms.
ItzNotABug Aug 9, 2025
de129f9
feat: change Collection ID to Table ID in create table modal
HarshMN2345 Aug 11, 2025
98d5c65
fix: replace your existing rows with replace any existing rows
HarshMN2345 Aug 11, 2025
a258848
Merge pull request #2205 from appwrite/fix-SER-260-Simplify-Copy
ItzNotABug Aug 11, 2025
8815696
Merge pull request #2204 from appwrite/fix-SER-262-create-table-ui-sh…
ItzNotABug Aug 11, 2025
c2edbaa
updates.
ItzNotABug Aug 11, 2025
23278fa
Merge remote-tracking branch 'origin/spreadsheet' into spreadsheet
ItzNotABug Aug 11, 2025
f82bfec
fix: Index Creation Sidebar Closes on Validation Errors
HarshMN2345 Aug 11, 2025
e93d498
Merge pull request #2210 from appwrite/fix-SER-258-Index-creation-sid…
ItzNotABug Aug 11, 2025
4b65e7e
fix : replaced wrong names
HarshMN2345 Aug 12, 2025
2163f46
updates.
ItzNotABug Aug 12, 2025
07fc735
Update +page.svelte
HarshMN2345 Aug 12, 2025
9da66dc
Merge pull request #2213 from appwrite/feat-SER-259-change-insert-to-…
ItzNotABug Aug 12, 2025
57612be
updates: removed `$sequence`.
ItzNotABug Aug 12, 2025
89cf9b5
update: handle query on custom page as well.
ItzNotABug Aug 12, 2025
35db7c8
Merge remote-tracking branch 'origin/spreadsheet' into spreadsheet
ItzNotABug Aug 13, 2025
fcfab05
update: header expanded states on preferences.
ItzNotABug Aug 13, 2025
39a758f
qa: fixes, lesssgoooo!
ItzNotABug Aug 13, 2025
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
10 changes: 6 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@
},
"dependencies": {
"@ai-sdk/svelte": "^1.1.24",
"@appwrite.io/console": "^1.10.0",
"@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@e64a383",
"@appwrite.io/pink-icons": "0.25.0",
"@appwrite.io/pink-icons-svelte": "^2.0.0-RC.1",
"@appwrite.io/pink-legacy": "^1.0.3",
"@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@95bdb79",
"@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@0fed23b",
"@faker-js/faker": "^9.9.0",
"@popperjs/core": "^2.11.8",
"@sentry/sveltekit": "^8.38.0",
"@stripe/stripe-js": "^3.5.0",
Expand Down Expand Up @@ -55,6 +56,7 @@
"@sveltejs/adapter-static": "^3.0.8",
"@sveltejs/kit": "^2.20.2",
"@sveltejs/vite-plugin-svelte": "^5.0.3",
"@tanstack/svelte-virtual": "^3.13.12",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/svelte": "^5.2.8",
Expand Down Expand Up @@ -83,7 +85,7 @@
"tslib": "^2.8.1",
"typescript": "^5.8.2",
"typescript-eslint": "^8.30.1",
"vite": "^6.2.3",
"vite": "^7.0.6",
"vitest": "^3.0.0"
},
"pnpm": {
Expand All @@ -94,5 +96,5 @@
"svelte-preprocess"
]
},
"packageManager": "pnpm@10.13.1"
"packageManager": "pnpm@10.14.0"
}
398 changes: 340 additions & 58 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

33 changes: 17 additions & 16 deletions src/lib/actions/analytics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,9 @@ export enum Click {
ConnectRepositoryClick = 'click_connect_repository',
CreditsRedeemClick = 'click_credits_redeem',
CloudSignupClick = 'click_cloud_signup',
DatabaseAttributeDelete = 'click_attribute_delete',
DatabaseColumnDelete = 'click_column_delete',
DatabaseIndexDelete = 'click_index_delete',
DatabaseCollectionDelete = 'click_collection_delete',
DatabaseTableDelete = 'click_table_delete',
DatabaseDatabaseDelete = 'click_database_delete',
DatabaseImportCsv = 'click_database_import_csv',
DomainCreateClick = 'click_domain_create',
Expand Down Expand Up @@ -265,6 +265,7 @@ export enum Submit {
AuthSessionAlertsUpdate = 'submit_auth_session_alerts_update',
AuthMembershipPrivacyUpdate = 'submit_auth_membership_privacy_update',
AuthMockNumbersUpdate = 'submit_auth_mock_numbers_update',
AuthInvalidateSesssion = 'submit_auth_invalidate_session',
SessionsLengthUpdate = 'submit_sessions_length_update',
SessionsLimitUpdate = 'submit_sessions_limit_update',
SessionDelete = 'submit_session_delete',
Expand All @@ -273,22 +274,22 @@ export enum Submit {
DatabaseDelete = 'submit_database_delete',
DatabaseUpdateName = 'submit_database_update_name',
DatabaseImportCsv = 'submit_database_import_csv',
AttributeCreate = 'submit_attribute_create',
AttributeUpdate = 'submit_attribute_update',
AttributeDelete = 'submit_attribute_delete',
DocumentCreate = 'submit_document_create',
DocumentDelete = 'submit_document_delete',
DocumentUpdate = 'submit_document_update',
DocumentUpdatePermissions = 'submit_document_update_permissions',
ColumnCreate = 'submit_column_create',
ColumnUpdate = 'submit_column_update',
ColumnDelete = 'submit_column_delete',
RowCreate = 'submit_row_create',
RowDelete = 'submit_row_delete',
RowUpdate = 'submit_row_update',
RowUpdatePermissions = 'submit_row_update_permissions',
IndexCreate = 'submit_index_create',
IndexDelete = 'submit_index_delete',
CollectionCreate = 'submit_collection_create',
CollectionDelete = 'submit_collection_delete',
CollectionUpdateName = 'submit_collection_update_name',
CollectionUpdatePermissions = 'submit_collection_update_permissions',
CollectionUpdateSecurity = 'submit_collection_update_security',
CollectionUpdateEnabled = 'submit_collection_update_enabled',
CollectionUpdateDisplayNames = 'submit_collection_update_display_names',
TableCreate = 'submit_row_create',
TableDelete = 'submit_row_delete',
TableUpdateName = 'submit_row_update_name',
TableUpdatePermissions = 'submit_row_update_permissions',
TableUpdateSecurity = 'submit_row_update_security',
TableUpdateEnabled = 'submit_row_update_enabled',
TableUpdateDisplayNames = 'submit_row_update_display_names',
FunctionCreate = 'submit_function_create',
FunctionDelete = 'submit_function_delete',
FunctionUpdateName = 'submit_function_update_name',
Expand Down
6 changes: 3 additions & 3 deletions src/lib/commandCenter/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ const groups = [
'integrations',
'migrations',
'users',
'collections',
'attributes',
'tables',
'columns',
'indexes',
'documents',
'rows',
'teams',
'security',
'buckets',
Expand Down
2 changes: 1 addition & 1 deletion src/lib/commandCenter/panels/ai.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
const examples = [
'How to add platform in the console?',
'How can I manage users, permissions, and access control in Appwrite?',
'How can I set up database collections and documents in Appwrite?',
'How can I set up database tables and rows in Appwrite?',
'How do I configure and manage server-side functions in Appwrite?',
'How to add custom domain in the console?'
];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<script lang="ts">
import { initCreateAttribute } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte';
import { attributeOptions } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/attributes/store';
import { initCreateColumn } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte';
import { columnOptions } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/store';
import Template from './template.svelte';

let search = '';

let options = attributeOptions.map((option) => {
let options = columnOptions.map((option) => {
return {
label: option.name,
icon: option.icon,
callback() {
initCreateAttribute(option.name);
initCreateColumn(option.name);
}
};
});
Expand Down
16 changes: 8 additions & 8 deletions src/lib/commandCenter/panels/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,16 @@ export const DatabasesPanel: SubPanel = {
component: Databases
};

import Collections from './collections.svelte';
export const CollectionsPanel: SubPanel = {
name: 'Collections',
component: Collections
import Tables from './tables.svelte';
export const TablesPanel: SubPanel = {
name: 'Tables',
component: Tables
};

import CreateAttribute from './createAttribute.svelte';
export const CreateAttributePanel: SubPanel = {
name: 'Create Attribute',
component: CreateAttribute
import CreateColumn from './createColumn.svelte';
export const CreateColumnPanel: SubPanel = {
name: 'Create Column',
component: CreateColumn
};

import Users from './users.svelte';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<script lang="ts">
import { initSearcher } from '../commands';
import { collectionsSearcher } from '../searchers';
import { tablesSearcher } from '../searchers';
import Template from './template.svelte';

const { search, results } = initSearcher(collectionsSearcher);
const { search, results } = initSearcher(tablesSearcher);
</script>

<Template options={$results} bind:search={$search} />
29 changes: 0 additions & 29 deletions src/lib/commandCenter/searchers/collections.ts

This file was deleted.

2 changes: 1 addition & 1 deletion src/lib/commandCenter/searchers/databases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { page } from '$app/state';
export const dbSearcher = (async (query: string) => {
const { databases } = await sdk
.forProject(page.params.region, page.params.project)
.databases.list();
.grids.listDatabases();

return databases
.filter((db) => db.name.toLowerCase().includes(query.toLowerCase()))
Expand Down
2 changes: 1 addition & 1 deletion src/lib/commandCenter/searchers/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export * from './databases';
export * from './users';
export * from './organizations';
export * from './collections';
export * from './tables';
export * from './projects';
export * from './teams';
export * from './functions';
Expand Down
27 changes: 27 additions & 0 deletions src/lib/commandCenter/searchers/tables.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { goto } from '$app/navigation';
import type { Searcher } from '../commands';
import { sdk } from '$lib/stores/sdk';
import { base } from '$app/paths';
import { page } from '$app/state';

export const tablesSearcher = (async (query: string) => {
const databaseId = page.params.database;
const { tables } = await sdk
.forProject(page.params.region, page.params.project)
.grids.listTables(databaseId);

return tables
.filter((table) => table.name.toLowerCase().includes(query.toLowerCase()))
.map(
(table) =>
({
group: 'tables',
label: table.name,
callback: () => {
goto(
`${base}/project-${page.params.region}-${page.params.project}/databases/database-${databaseId}/table-${table.$id}`
);
}
}) as const
);
}) satisfies Searcher;
5 changes: 3 additions & 2 deletions src/lib/components/backupRestoreBox.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
}

function updateOrAddItem(payload: Payload) {
// todo: @itznotabug - might need a change to $table?
const { $id, status, $collection, policyId } = payload;
if ($collection === 'archives' && policyId !== null) {
return;
Expand Down Expand Up @@ -117,9 +118,9 @@
}

function backupName(item: BackupArchive | BackupRestoration, key: string) {
const attribute = key === 'archives' ? '$createdAt' : 'startedAt';
const column = key === 'archives' ? '$createdAt' : 'startedAt';

return toLocaleDate(item[attribute]);
return toLocaleDate(item[column]);
}

onMount(() => {
Expand Down
Loading