Update packages (#155)

This commit is contained in:
Hakan Shehu
2025-07-23 10:10:23 +02:00
committed by GitHub
parent 170a801603
commit 6212e7c65e
12 changed files with 1709 additions and 1969 deletions

View File

@@ -31,9 +31,9 @@
"@tailwindcss/postcss": "^4.1.11",
"@types/better-sqlite3": "^7.6.13",
"@types/electron-squirrel-startup": "^1.0.2",
"@vitejs/plugin-react": "^4.6.0",
"electron": "^37.2.0",
"vite": "^7.0.2"
"@vitejs/plugin-react": "^4.7.0",
"electron": "^37.2.3",
"vite": "^7.0.5"
},
"dependencies": {
"@colanode/client": "*",

View File

@@ -19,7 +19,7 @@
},
"description": "",
"devDependencies": {
"@types/node": "^24.0.10",
"@types/node": "^24.1.0",
"@types/nodemailer": "^6.4.17",
"@types/pg": "^8.15.4",
"@types/ws": "^8.18.1",
@@ -28,31 +28,31 @@
"tsx": "^4.20.3"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.842.0",
"@aws-sdk/client-s3": "^3.850.0",
"@colanode/core": "*",
"@colanode/crdt": "*",
"@fastify/cors": "^11.0.1",
"@fastify/websocket": "^11.1.0",
"@langchain/core": "^0.3.62",
"@langchain/google-genai": "^0.2.14",
"@langchain/langgraph": "^0.3.6",
"@langchain/openai": "^0.5.16",
"@fastify/websocket": "^11.2.0",
"@langchain/core": "^0.3.66",
"@langchain/google-genai": "^0.2.15",
"@langchain/langgraph": "^0.3.11",
"@langchain/openai": "^0.6.2",
"@node-rs/argon2": "^2.0.2",
"bullmq": "^5.56.1",
"bullmq": "^5.56.5",
"diff": "^8.0.2",
"dotenv": "^17.0.1",
"dotenv": "^17.2.0",
"fastify": "^5.4.0",
"fastify-type-provider-zod": "^5.0.0",
"fastify-type-provider-zod": "^5.0.2",
"handlebars": "^4.7.8",
"js-sha256": "^0.11.0",
"ky": "^1.8.1",
"kysely": "^0.28.2",
"langchain": "^0.3.29",
"langfuse-langchain": "^3.38.1",
"nodemailer": "^7.0.4",
"ky": "^1.8.2",
"kysely": "^0.28.3",
"langchain": "^0.3.30",
"langfuse-langchain": "^3.38.4",
"nodemailer": "^7.0.5",
"pg": "^8.16.3",
"pino": "^9.7.0",
"redis": "^5.5.6",
"sharp": "^0.34.2"
"redis": "^5.6.0",
"sharp": "^0.34.3"
}
}

View File

@@ -12,14 +12,14 @@
"dependencies": {
"@colanode/client": "*",
"@colanode/ui": "*",
"@sqlite.org/sqlite-wasm": "^3.50.1-build1",
"@sqlite.org/sqlite-wasm": "^3.50.3-build1",
"comlink": "^4.4.2"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.11",
"@vitejs/plugin-react": "^4.6.0",
"@vitejs/plugin-react": "^4.7.0",
"tailwindcss": "^4.1.8",
"vite": "^7.0.2",
"vite": "^7.0.5",
"vite-plugin-pwa": "^1.0.1"
}
}

3486
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -28,15 +28,15 @@
"devDependencies": {
"@types/debug": "^4.1.12",
"@types/lodash-es": "^4.17.12",
"@typescript-eslint/eslint-plugin": "^8.35.1",
"@typescript-eslint/parser": "^8.35.0",
"@typescript-eslint/eslint-plugin": "^8.38.0",
"@typescript-eslint/parser": "^8.38.0",
"eslint": "^8.57.1",
"eslint-config-prettier": "^10.1.5",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-react": "^7.37.5",
"prettier": "^3.6.2",
"ts-node": "^10.9.2",
"turbo": "^2.5.4",
"turbo": "^2.5.5",
"typescript": "^5.8.3",
"vitest": "^3.2.4"
},

View File

@@ -30,8 +30,8 @@
"file-type": "^21.0.0",
"isomorphic-ws": "^5.0.0",
"js-sha256": "^0.11.1",
"ky": "^1.8.1",
"kysely": "^0.28.2",
"ky": "^1.8.2",
"kysely": "^0.28.3",
"ms": "^2.1.3",
"semver": "^7.7.2"
},

View File

@@ -20,6 +20,6 @@
"dependencies": {
"fractional-indexing-jittered": "^1.0.0",
"ulid": "^3.0.1",
"zod": "^3.25.72"
"zod": "^4.0.5"
}
}

View File

@@ -25,6 +25,6 @@
"diff": "^8.0.2",
"js-base64": "^3.7.7",
"yjs": "^13.6.27",
"zod": "^3.25.72"
"zod": "^4.0.5"
}
}

View File

@@ -44,7 +44,7 @@
"@radix-ui/react-tabs": "^1.1.12",
"@radix-ui/react-tooltip": "^1.2.7",
"@react-oauth/google": "^0.12.2",
"@tanstack/react-query": "^5.81.5",
"@tanstack/react-query": "^5.83.0",
"@tanstack/react-virtual": "^3.13.12",
"@tiptap/core": "^3.0.7",
"@tiptap/extension-blockquote": "^3.0.7",
@@ -71,16 +71,16 @@
"lucide-react": "^0.525.0",
"re-resizable": "^6.11.2",
"react": "^19.1.0",
"react-day-picker": "^9.7.0",
"react-day-picker": "^9.8.0",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "^19.1.0",
"react-hook-form": "^7.59.0",
"react-hook-form": "^7.60.0",
"react-intersection-observer": "^9.16.0",
"sonner": "^2.0.6",
"tailwind-merge": "^3.3.1",
"tiptap-extension-auto-joiner": "^0.1.3",
"ts-pattern": "^5.7.1",
"zod": "^3.25.72"
"zod": "^4.0.5"
}
}

View File

@@ -24,16 +24,14 @@ import { cn } from '@colanode/ui/lib/utils';
const formSchema = z.object({
name: z.string().min(3, 'Name must be at least 3 characters long.'),
avatar: z.string().optional().nullable(),
email: z.string().email('Invalid email address'),
email: z.email('Invalid email address'),
});
type formSchemaType = z.infer<typeof formSchema>;
export const AccountUpdate = ({ account }: { account: Account }) => {
const { mutate: uploadAvatar, isPending: isUploadingAvatar } = useMutation();
const { mutate: updateAccount, isPending: isUpdatingAccount } = useMutation();
const form = useForm<formSchemaType>({
const form = useForm({
resolver: zodResolver(formSchema),
defaultValues: {
name: account.name,
@@ -45,7 +43,7 @@ export const AccountUpdate = ({ account }: { account: Account }) => {
const name = form.watch('name');
const avatar = form.watch('avatar');
const onSubmit = (values: formSchemaType) => {
const onSubmit = (values: z.output<typeof formSchema>) => {
if (isUpdatingAccount) {
return;
}

View File

@@ -21,7 +21,7 @@
"@colanode/crdt": "*",
"adm-zip": "^0.5.16",
"better-sqlite3": "^12.2.0",
"ky": "^1.8.1",
"ky": "^1.8.2",
"svg-sprite": "^2.0.4"
}
}

View File

@@ -6,7 +6,7 @@ import {
IdType,
NodeAttributes,
NodeRole,
generateNodeIndex,
generateFractionalIndex,
FieldAttributes,
SelectOptionAttributes,
DatabaseAttributes,
@@ -220,35 +220,35 @@ export class NodeGenerator {
id: generateId(IdType.SelectOption),
name: 'New',
color: 'gray',
index: generateNodeIndex(),
index: generateFractionalIndex(),
};
const activeStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Active',
color: 'blue',
index: generateNodeIndex(newStatusOption.index),
index: generateFractionalIndex(newStatusOption.index),
};
const toTestStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'To Test',
color: 'yellow',
index: generateNodeIndex(activeStatusOption.index),
index: generateFractionalIndex(activeStatusOption.index),
};
const closedStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Closed',
color: 'red',
index: generateNodeIndex(toTestStatusOption.index),
index: generateFractionalIndex(toTestStatusOption.index),
};
const statusField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'select',
name: 'Status',
index: generateNodeIndex(),
index: generateFractionalIndex(),
options: {
[newStatusOption.id]: newStatusOption,
[activeStatusOption.id]: activeStatusOption,
@@ -261,42 +261,42 @@ export class NodeGenerator {
id: generateId(IdType.SelectOption),
name: 'api',
color: 'blue',
index: generateNodeIndex(),
index: generateFractionalIndex(),
};
const devopsTeamSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'devops',
color: 'green',
index: generateNodeIndex(apiTeamSelectOption.index),
index: generateFractionalIndex(apiTeamSelectOption.index),
};
const frontendTeamSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'frontend',
color: 'purple',
index: generateNodeIndex(devopsTeamSelectOption.index),
index: generateFractionalIndex(devopsTeamSelectOption.index),
};
const aiTeamSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'ai',
color: 'pink',
index: generateNodeIndex(frontendTeamSelectOption.index),
index: generateFractionalIndex(frontendTeamSelectOption.index),
};
const otherTeamSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'other',
color: 'gray',
index: generateNodeIndex(aiTeamSelectOption.index),
index: generateFractionalIndex(aiTeamSelectOption.index),
};
const teamsField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'multi_select',
name: 'Teams',
index: generateNodeIndex(statusField.index),
index: generateFractionalIndex(statusField.index),
options: {
[apiTeamSelectOption.id]: apiTeamSelectOption,
[devopsTeamSelectOption.id]: devopsTeamSelectOption,
@@ -310,35 +310,35 @@ export class NodeGenerator {
id: generateId(IdType.Field),
type: 'collaborator',
name: 'Assigned',
index: generateNodeIndex(teamsField.index),
index: generateFractionalIndex(teamsField.index),
};
const priorityField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'number',
name: 'Priority',
index: generateNodeIndex(assignedField.index),
index: generateFractionalIndex(assignedField.index),
};
const approvedField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'boolean',
name: 'Approved',
index: generateNodeIndex(priorityField.index),
index: generateFractionalIndex(priorityField.index),
};
const releaseDateField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'date',
name: 'Release Date',
index: generateNodeIndex(approvedField.index),
index: generateFractionalIndex(approvedField.index),
};
const commentsField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'text',
name: 'Comment',
index: generateNodeIndex(releaseDateField.index),
index: generateFractionalIndex(releaseDateField.index),
};
const databaseAttributes: NodeAttributes = {
@@ -370,7 +370,7 @@ export class NodeGenerator {
type: 'database_view',
layout: 'table',
name: 'All Tasks',
index: generateNodeIndex(),
index: generateFractionalIndex(),
parentId: databaseId,
};
@@ -396,7 +396,7 @@ export class NodeGenerator {
filters: {
[activeTasksFilter.id]: activeTasksFilter,
},
index: generateNodeIndex(),
index: generateFractionalIndex(),
parentId: databaseId,
};
@@ -411,7 +411,7 @@ export class NodeGenerator {
type: 'database_view',
layout: 'board',
name: 'Kanban',
index: generateNodeIndex(),
index: generateFractionalIndex(),
parentId: databaseId,
groupBy: statusField.id,
};
@@ -433,49 +433,49 @@ export class NodeGenerator {
id: generateId(IdType.SelectOption),
name: 'New Lead',
color: 'gray',
index: generateNodeIndex(),
index: generateFractionalIndex(),
};
const contactedStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Contacted',
color: 'blue',
index: generateNodeIndex(newLeadStatusOption.index),
index: generateFractionalIndex(newLeadStatusOption.index),
};
const qualifiedStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Qualified',
color: 'yellow',
index: generateNodeIndex(contactedStatusOption.index),
index: generateFractionalIndex(contactedStatusOption.index),
};
const proposalSentStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Proposal Sent',
color: 'red',
index: generateNodeIndex(qualifiedStatusOption.index),
index: generateFractionalIndex(qualifiedStatusOption.index),
};
const negotiatingStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Negotiating',
color: 'orange',
index: generateNodeIndex(proposalSentStatusOption.index),
index: generateFractionalIndex(proposalSentStatusOption.index),
};
const convertedStatusOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Converted',
color: 'green',
index: generateNodeIndex(negotiatingStatusOption.index),
index: generateFractionalIndex(negotiatingStatusOption.index),
};
const statusField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'select',
name: 'Status',
index: generateNodeIndex(),
index: generateFractionalIndex(),
options: {
[newLeadStatusOption.id]: newLeadStatusOption,
[contactedStatusOption.id]: contactedStatusOption,
@@ -490,56 +490,56 @@ export class NodeGenerator {
id: generateId(IdType.SelectOption),
name: 'Tech',
color: 'blue',
index: generateNodeIndex(),
index: generateFractionalIndex(),
};
const financeSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Finance',
color: 'green',
index: generateNodeIndex(techSectorSelectOption.index),
index: generateFractionalIndex(techSectorSelectOption.index),
};
const marketingSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Marketing',
color: 'purple',
index: generateNodeIndex(financeSectorSelectOption.index),
index: generateFractionalIndex(financeSectorSelectOption.index),
};
const salesSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Sales',
color: 'pink',
index: generateNodeIndex(marketingSectorSelectOption.index),
index: generateFractionalIndex(marketingSectorSelectOption.index),
};
const educationSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Education',
color: 'purple',
index: generateNodeIndex(salesSectorSelectOption.index),
index: generateFractionalIndex(salesSectorSelectOption.index),
};
const nonprofitSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'Nonprofit',
color: 'gray',
index: generateNodeIndex(educationSectorSelectOption.index),
index: generateFractionalIndex(educationSectorSelectOption.index),
};
const otherSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'other',
color: 'gray',
index: generateNodeIndex(nonprofitSectorSelectOption.index),
index: generateFractionalIndex(nonprofitSectorSelectOption.index),
};
const sectorField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'multi_select',
name: 'Sector',
index: generateNodeIndex(statusField.index),
index: generateFractionalIndex(statusField.index),
options: {
[techSectorSelectOption.id]: techSectorSelectOption,
[financeSectorSelectOption.id]: financeSectorSelectOption,
@@ -555,35 +555,35 @@ export class NodeGenerator {
id: generateId(IdType.Field),
type: 'collaborator',
name: 'Assigned',
index: generateNodeIndex(sectorField.index),
index: generateFractionalIndex(sectorField.index),
};
const revenueField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'number',
name: 'Revenue',
index: generateNodeIndex(assignedField.index),
index: generateFractionalIndex(assignedField.index),
};
const archivedField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'boolean',
name: 'Archived',
index: generateNodeIndex(revenueField.index),
index: generateFractionalIndex(revenueField.index),
};
const startDateField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'date',
name: 'Start Date',
index: generateNodeIndex(archivedField.index),
index: generateFractionalIndex(archivedField.index),
};
const commentsField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'text',
name: 'Comment',
index: generateNodeIndex(startDateField.index),
index: generateFractionalIndex(startDateField.index),
};
const databaseAttributes: NodeAttributes = {
@@ -615,7 +615,7 @@ export class NodeGenerator {
type: 'database_view',
layout: 'table',
name: 'All Clients',
index: generateNodeIndex(),
index: generateFractionalIndex(),
parentId: databaseId,
};
@@ -641,7 +641,7 @@ export class NodeGenerator {
filters: {
[activeClientsFilter.id]: activeClientsFilter,
},
index: generateNodeIndex(),
index: generateFractionalIndex(),
parentId: databaseId,
};
@@ -656,7 +656,7 @@ export class NodeGenerator {
type: 'database_view',
layout: 'board',
name: 'Board',
index: generateNodeIndex(),
index: generateFractionalIndex(),
parentId: databaseId,
groupBy: statusField.id,
};
@@ -678,49 +678,49 @@ export class NodeGenerator {
id: generateId(IdType.SelectOption),
name: 'tech',
color: 'blue',
index: generateNodeIndex(),
index: generateFractionalIndex(),
};
const productTagSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'product',
color: 'green',
index: generateNodeIndex(techTagSelectOption.index),
index: generateFractionalIndex(techTagSelectOption.index),
};
const designTagSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'design (ui/ux)',
color: 'purple',
index: generateNodeIndex(productTagSelectOption.index),
index: generateFractionalIndex(productTagSelectOption.index),
};
const clientTagSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'client',
color: 'pink',
index: generateNodeIndex(designTagSelectOption.index),
index: generateFractionalIndex(designTagSelectOption.index),
};
const hiringSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'hiring',
color: 'purple',
index: generateNodeIndex(clientTagSelectOption.index),
index: generateFractionalIndex(clientTagSelectOption.index),
};
const otherSectorSelectOption: SelectOptionAttributes = {
id: generateId(IdType.SelectOption),
name: 'other',
color: 'gray',
index: generateNodeIndex(hiringSectorSelectOption.index),
index: generateFractionalIndex(hiringSectorSelectOption.index),
};
const tagsField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'multi_select',
name: 'Tags',
index: generateNodeIndex(),
index: generateFractionalIndex(),
options: {
[techTagSelectOption.id]: techTagSelectOption,
[productTagSelectOption.id]: productTagSelectOption,
@@ -735,14 +735,14 @@ export class NodeGenerator {
id: generateId(IdType.Field),
type: 'collaborator',
name: 'Attendees',
index: generateNodeIndex(tagsField.index),
index: generateFractionalIndex(tagsField.index),
};
const dateField: FieldAttributes = {
id: generateId(IdType.Field),
type: 'date',
name: 'Date',
index: generateNodeIndex(attendeesField.index),
index: generateFractionalIndex(attendeesField.index),
};
const databaseAttributes: NodeAttributes = {
@@ -769,7 +769,7 @@ export class NodeGenerator {
type: 'database_view',
layout: 'calendar',
name: 'Calendar',
index: generateNodeIndex(),
index: generateFractionalIndex(),
parentId: databaseId,
groupBy: dateField.id,
};
@@ -785,7 +785,7 @@ export class NodeGenerator {
type: 'database_view',
layout: 'table',
name: 'Table',
index: generateNodeIndex(calendarViewAttributes.index),
index: generateFractionalIndex(calendarViewAttributes.index),
parentId: databaseId,
};
@@ -916,7 +916,7 @@ export class NodeGenerator {
private buildMessageContent(messageId: string): Record<string, Block> {
const paragraphBlock = this.buildParagraphBlock(
messageId,
generateNodeIndex()
generateFractionalIndex()
);
return {
[paragraphBlock.id]: paragraphBlock,
@@ -927,7 +927,7 @@ export class NodeGenerator {
const nrOfParagraphs = Math.floor(Math.random() * 10) + 1;
const blocks: Record<string, Block> = {};
for (let i = 0; i < nrOfParagraphs; i++) {
const block = this.buildParagraphBlock(pageId, generateNodeIndex());
const block = this.buildParagraphBlock(pageId, generateFractionalIndex());
blocks[block.id] = block;
}