mirror of
https://github.com/kennethnym/aris.git
synced 2026-06-16 12:31:17 +01:00
Compare commits
6 Commits
feat/agent
...
fix/waitli
| Author | SHA1 | Date | |
|---|---|---|---|
|
bd68e6da82
|
|||
| fc82af3f55 | |||
| 9dc25dbc94 | |||
| 2b02c1a9d0 | |||
| fc443d967d | |||
| 9836d7499b |
@@ -1,4 +1,5 @@
|
|||||||
import { LocationSource } from "@freya/source-location"
|
import { LocationSource } from "@freya/source-location"
|
||||||
|
import { ReminderSource } from "@freya/source-reminders"
|
||||||
import { WebSearchSource } from "@freya/source-web-search"
|
import { WebSearchSource } from "@freya/source-web-search"
|
||||||
import { describe, expect, test } from "bun:test"
|
import { describe, expect, test } from "bun:test"
|
||||||
|
|
||||||
@@ -55,8 +56,12 @@ function createRecordingDb(): RecordingDb {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe("default user sources", () => {
|
describe("default user sources", () => {
|
||||||
test("defines location and web search as default enabled sources", () => {
|
test("defines default enabled sources", () => {
|
||||||
expect(DEFAULT_ENABLED_SOURCE_IDS).toEqual([LocationSource.id, WebSearchSource.id])
|
expect(DEFAULT_ENABLED_SOURCE_IDS).toEqual([
|
||||||
|
LocationSource.id,
|
||||||
|
ReminderSource.id,
|
||||||
|
WebSearchSource.id,
|
||||||
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
test("inserts default enabled source rows for a user", async () => {
|
test("inserts default enabled source rows for a user", async () => {
|
||||||
@@ -70,7 +75,7 @@ describe("default user sources", () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
expect(recording.table()).toBe(userSources)
|
expect(recording.table()).toBe(userSources)
|
||||||
expect(rows).toHaveLength(2)
|
expect(rows).toHaveLength(3)
|
||||||
expect(rows.map((row) => row.sourceId)).toEqual([...DEFAULT_ENABLED_SOURCE_IDS])
|
expect(rows.map((row) => row.sourceId)).toEqual([...DEFAULT_ENABLED_SOURCE_IDS])
|
||||||
expect(recording.conflictTarget()).toEqual([userSources.userId, userSources.sourceId])
|
expect(recording.conflictTarget()).toEqual([userSources.userId, userSources.sourceId])
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
import { LocationSource } from "@freya/source-location"
|
import { LocationSource } from "@freya/source-location"
|
||||||
|
import { ReminderSource } from "@freya/source-reminders"
|
||||||
import { WebSearchSource } from "@freya/source-web-search"
|
import { WebSearchSource } from "@freya/source-web-search"
|
||||||
|
|
||||||
import type { Database } from "../db/index.ts"
|
import type { Database } from "../db/index.ts"
|
||||||
|
|
||||||
import { userSources } from "../db/schema.ts"
|
import { userSources } from "../db/schema.ts"
|
||||||
|
|
||||||
export const DEFAULT_ENABLED_SOURCE_IDS = [LocationSource.id, WebSearchSource.id] as const
|
export const DEFAULT_ENABLED_SOURCE_IDS = [
|
||||||
|
LocationSource.id,
|
||||||
|
ReminderSource.id,
|
||||||
|
WebSearchSource.id,
|
||||||
|
] as const
|
||||||
|
|
||||||
export type DefaultEnabledSourceId = (typeof DEFAULT_ENABLED_SOURCE_IDS)[number]
|
export type DefaultEnabledSourceId = (typeof DEFAULT_ENABLED_SOURCE_IDS)[number]
|
||||||
|
|
||||||
|
|||||||
@@ -37,13 +37,13 @@ export function meta({}: Route.MetaArgs) {
|
|||||||
},
|
},
|
||||||
{ property: "og:title", content: PAGE_TITLE },
|
{ property: "og:title", content: PAGE_TITLE },
|
||||||
{ property: "og:description", content: PAGE_DESCRIPTION },
|
{ property: "og:description", content: PAGE_DESCRIPTION },
|
||||||
{ property: "og:image", content: "https://ael.is/social-media-preview.png" },
|
{ property: "og:image", content: "https://freya.chat/social-media-preview.jpg" },
|
||||||
{ property: "og:url", content: "https://ael.is" },
|
{ property: "og:url", content: "https://freya.chat" },
|
||||||
{ property: "og:type", content: "website" },
|
{ property: "og:type", content: "website" },
|
||||||
{ name: "twitter:card", content: "summary_large_image" },
|
{ name: "twitter:card", content: "summary_large_image" },
|
||||||
{ name: "twitter:title", content: PAGE_TITLE },
|
{ name: "twitter:title", content: PAGE_TITLE },
|
||||||
{ name: "twitter:description", content: PAGE_DESCRIPTION },
|
{ name: "twitter:description", content: PAGE_DESCRIPTION },
|
||||||
{ name: "twitter:image", content: "https://ael.is/social-media-preview.png" },
|
{ name: "twitter:image", content: "https://freya.chat/social-media-preview.jpg" },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ export async function action({ request }: Route.ActionArgs) {
|
|||||||
await new Promise((resolve) => setTimeout(resolve, 1000))
|
await new Promise((resolve) => setTimeout(resolve, 1000))
|
||||||
|
|
||||||
const emailRes = await resend.emails.send({
|
const emailRes = await resend.emails.send({
|
||||||
from: "Freya <no-reply@ael.is>",
|
from: "Freya <no-reply@freya.chat>",
|
||||||
to: email,
|
to: email,
|
||||||
template: {
|
template: {
|
||||||
id: "waitlist-confirmation",
|
id: "waitlist-confirmation",
|
||||||
@@ -380,7 +380,6 @@ function SystemMessageBubble({
|
|||||||
isAnimating={isStreaming}
|
isAnimating={isStreaming}
|
||||||
linkSafety={{ enabled: false }}
|
linkSafety={{ enabled: false }}
|
||||||
components={{
|
components={{
|
||||||
// @ts-expect-error
|
|
||||||
a: ({ className, ...props }) => <a className={`underline ${className}`} {...props} />,
|
a: ({ className, ...props }) => <a className={`underline ${className}`} {...props} />,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ const POLICY = `# Privacy Policy
|
|||||||
|
|
||||||
**Last updated:** March 5, 2026
|
**Last updated:** March 5, 2026
|
||||||
|
|
||||||
This Privacy Policy describes how **Freya** ("we", "us", or "our") collects, uses, and protects your personal information when you visit **https://ael.is** or interact with our services.
|
This Privacy Policy describes how **Freya** ("we", "us", or "our") collects, uses, and protects your personal information when you visit **https://freya.chat** or interact with our services.
|
||||||
|
|
||||||
If you do not agree with this Privacy Policy, please do not use the website.
|
If you do not agree with this Privacy Policy, please do not use the website.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
User-agent: *
|
User-agent: *
|
||||||
Allow: /
|
Allow: /
|
||||||
|
|
||||||
Sitemap: https://ael.is/sitemap.xml
|
Sitemap: https://freya.chat/sitemap.xml
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
<url>
|
<url>
|
||||||
<loc>https://ael.is/</loc>
|
<loc>https://freya.chat/</loc>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://ael.is/privacy</loc>
|
<loc>https://freya.chat/privacy</loc>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
||||||
|
|||||||
BIN
apps/waitlist-website/public/social-media-preview.jpg
Normal file
BIN
apps/waitlist-website/public/social-media-preview.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 68 KiB |
@@ -84,7 +84,9 @@ const ONE_DAY_MS = 24 * 60 * 60 * 1000
|
|||||||
* It owns recurrence expansion, edit-scope semantics, and feed item signals.
|
* It owns recurrence expansion, edit-scope semantics, and feed item signals.
|
||||||
*/
|
*/
|
||||||
export class ReminderSource implements FeedSource<ReminderFeedItem> {
|
export class ReminderSource implements FeedSource<ReminderFeedItem> {
|
||||||
readonly id = "freya.reminders"
|
static readonly id = "freya.reminders"
|
||||||
|
|
||||||
|
readonly id = ReminderSource.id
|
||||||
|
|
||||||
private readonly storage: ReminderStorage
|
private readonly storage: ReminderStorage
|
||||||
private readonly lookAheadMs: number
|
private readonly lookAheadMs: number
|
||||||
|
|||||||
Reference in New Issue
Block a user