Skip to content

chore: merge main into v2 #7641

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

Merged
merged 82 commits into from
May 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
4257092
draft
sreeisalso Apr 21, 2025
9935453
Merge remote-tracking branch 'upstream/main' into supabase-ssr
sreeisalso Apr 27, 2025
ad786be
working
sreeisalso Apr 27, 2025
ce80ac6
Merge remote-tracking branch 'upstream/main' into supabase-ssr
sreeisalso May 7, 2025
2964741
removed comment
sreeisalso May 7, 2025
b8aa6f5
Merge remote-tracking branch 'upstream/main' into supabase-ssr
sreeisalso May 11, 2025
329e188
fixed typo
sreeisalso May 12, 2025
58f438c
test(preloader): add https + counters to preloader-test for debugging
maiieul May 12, 2025
22a3239
chore: syncpack fix-mismatches
maiieul May 13, 2025
b2ffcbd
Merge pull request #7585 from maiieul/preloader-test-counters
wmertens May 15, 2025
e405476
fix(preloader): correctly init config
wmertens May 15, 2025
788b871
Merge pull request #7599 from QwikDev/fix-preloader
wmertens May 15, 2025
59e21a4
fix(prefetchSW): correct script path replace
wmertens May 15, 2025
915e7bb
Merge pull request #7602 from QwikDev/fix-prefetch
wmertens May 15, 2025
f7a4ed1
feat: disable font preloading option in qwikVite (#7297)
thejackshelton May 15, 2025
c50fda8
perf(preloader): preload preloader sooner
wmertens May 16, 2025
6bdea72
chore(docs): remove sdk-qwik use and copy 404 page
wmertens May 16, 2025
8c10268
Merge pull request #7605 from QwikDev/no-builder
wmertens May 16, 2025
f90e6a1
Merge pull request #7604 from QwikDev/eager-preloader
wmertens May 17, 2025
eabf124
perf(preloader): tweak probabilities
wmertens May 17, 2025
7527b80
perf(preloader): bundle at 100% => dynamic at 95%
wmertens May 17, 2025
adf20ca
Merge pull request #7607 from QwikDev/tweak-preloader
wmertens May 17, 2025
76c42a7
perf(preloader): listen to qwikloader for early preloading
wmertens May 18, 2025
c7f23d1
refactor(preloader): move into preloader-impl
wmertens May 18, 2025
3f49ff2
perf(preloader): init asap
wmertens May 18, 2025
8ef3aef
fix
sreeisalso May 19, 2025
bbdb967
Merge remote-tracking branch 'upstream/main' into supabase-ssr
sreeisalso May 19, 2025
d4c403e
pnpm fmt
sreeisalso May 19, 2025
d78d69d
fix(preloader): race condition on load + refactor
wmertens May 19, 2025
62f5aa8
fix(preloader): highly likely = likely
wmertens May 19, 2025
05cf787
fix(preloader): set user interaction max deps to 100
maiieul May 19, 2025
0dae1e2
fix(preloader): don't queue until initialization
wmertens May 19, 2025
a9e26cb
fix(qwik-city): Link onQVisible$ handling
maiieul May 19, 2025
b0b61a7
Merge pull request #7610 from QwikDev/tweak-preloader
shairez May 19, 2025
27c7bda
chore: changeset
maiieul May 19, 2025
f94d875
fix(docs): correct cloudflare _headers
wmertens May 19, 2025
8aec65f
Merge pull request #7615 from QwikDev/fix-cf-headers
wmertens May 19, 2025
971eb63
perf(preloader): start preloading slightly earlier
wmertens May 20, 2025
336a54d
Merge pull request #7618 from QwikDev/tweak-preloader
wmertens May 20, 2025
274d038
Merge pull request #7612 from maiieul/Link-onQVisible-handling
shairez May 20, 2025
2ff5773
Merge pull request #7544 from sreeisalso/supabase-ssr
wmertens May 21, 2025
ab88756
fix changesets prefixes
shairez May 21, 2025
e780e26
improved documentation of new buffering changelog
shairez May 21, 2025
fb921f2
Version Packages
github-actions[bot] May 21, 2025
19ad014
Merge pull request #7486 from QwikDev/changeset-release/upcoming
shairez May 21, 2025
40f098f
test-cli-e2e: fix pnpm pack
wmertens May 8, 2025
3754e08
test(create-cli): add test for preview
wmertens May 21, 2025
245b31e
chore(docs): fix cache control headers (#7622)
wmertens May 21, 2025
4a1ef4f
fix(starters): imports
wmertens May 21, 2025
c25555b
e2e cli tests for preview
wmertens May 21, 2025
ca1944c
Merge pull request #7626 from QwikDev/fix-cli-test
shairez May 21, 2025
b3e6f41
reverted supabase-auth-helpers-qwik version until we fix the publish …
shairez May 21, 2025
76290bb
Version Packages
github-actions[bot] May 21, 2025
9cd62bd
Merge pull request #7628 from QwikDev/changeset-release/upcoming
shairez May 21, 2025
7b7e0d7
Support rewrite request (Similarly to redirect) (#7562)
omerman May 22, 2025
33717a8
chore: first draft
maiieul May 19, 2025
c8a67d0
chore: more accuracy
maiieul May 20, 2025
1ceb966
chore: hero image
maiieul May 20, 2025
7687ae2
chore: console log
maiieul May 20, 2025
854fbd0
chore: three dots
maiieul May 20, 2025
eda7f68
docs: fix 1.14.0 blog post links and version
maiieul May 22, 2025
c60b776
1.14 blog post - clarified a few things
shairez May 23, 2025
b3d66bd
fix: qwik insights link
maiieul May 23, 2025
2720d12
refactor: one sentence for clarity
maiieul May 23, 2025
0f3fae6
Merge pull request #7614 from maiieul/blog-co-writers
shairez May 23, 2025
b5bb79c
feat: update to latest partytown version (#7629)
sreeisalso May 23, 2025
96152de
fix(blog): 1-14 release date (#7635)
maiieul May 23, 2025
fcc81d8
fixed unused import
shairez May 24, 2025
a310f92
Merge remote-tracking branch 'origin/main' into v2-merge-main
wmertens May 25, 2025
7a70b76
fixup
wmertens May 25, 2025
e208544
Merge remote-tracking branch 'origin/build/v2' into v2-merge-main
wmertens May 25, 2025
1494c33
chore: merge main into v2
wmertens May 26, 2025
b91be86
Merge remote-tracking branch 'origin/main' into v2-merge-main
wmertens May 26, 2025
6783157
chore: qwik packages renames
wmertens May 27, 2025
4a33b4c
fix(manifest): detect special bundles correctly
wmertens May 27, 2025
1c70c15
fix(e2e tests): better navigation
wmertens May 27, 2025
177c0cb
fix(e2e): correct partytown path
wmertens May 27, 2025
b9745b4
Merge remote-tracking branch 'origin/build/v2' into v2-merge-main
wmertens May 27, 2025
26884de
fix(build): --tsc-docs
wmertens May 28, 2025
77f1596
fix: insights types and auth_qwik patch
Varixo May 29, 2025
c28ef74
fix: e2e cli tests
Varixo May 29, 2025
126ca50
fix: insights app build
wmertens May 30, 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
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ body:
id: system-info
attributes:
label: System Info
description: Output of `npx envinfo --system --npmPackages '{vite,typescript,@builder.io/*}' --binaries --browsers`
description: Output of `npx envinfo --system --npmPackages '{vite,typescript,@builder.io/*,@qwik.dev/*}' --binaries --browsers`
render: shell
placeholder: System, Binaries, Browsers
validations:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ jobs:

- run: pnpm install --frozen-lockfile
- name: Build Qwik Docs
run: pnpm run build.packages.docs && echo ok > docs-build-completed.txt
run: pnpm build --tsc-docs && pnpm run build.packages.docs && echo ok > docs-build-completed.txt

- name: Save Docs Artifacts
uses: actions/upload-artifact@v4
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ bun create qwik@latest

## Related

- [Partytown](https://partytown.builder.io/): Relocate resource intensive third-party scripts off of the main thread and into a web worker 🎉.
- [Partytown](https://partytown.qwik.dev/): Relocate resource intensive third-party scripts off of the main thread and into a web worker 🎉.
- [Mitosis](https://github.com/BuilderIO/mitosis): Write components once, run everywhere. Compiles to Vue, React, Solid, Angular, Svelte, and more.
- [Builder](https://github.com/BuilderIO/builder): Drag and drop page builder and CMS for React, Vue, Angular, and more.

Expand Down
131 changes: 100 additions & 31 deletions e2e/qwik-cli-e2e/tests/serve.spec.ts
Original file line number Diff line number Diff line change
@@ -1,47 +1,116 @@
import { assert, test, beforeAll, expect } from 'vitest';
/* eslint-disable no-console */
import { existsSync, readFileSync, writeFileSync } from 'fs';
import { join } from 'path';
import { assert, beforeAll, beforeEach, describe, expect, test } from 'vitest';
import {
assertHostUnused,
DEFAULT_TIMEOUT,
getPageHtml,
promisifiedTreeKill,
killAllRegisteredProcesses,
log,
promisifiedTreeKill,
runCommandUntil,
scaffoldQwikProject,
DEFAULT_TIMEOUT,
type QwikProjectType,
} from '../utils';
import { existsSync, readFileSync, writeFileSync } from 'fs';
import { join } from 'path';

const SERVE_PORT = 3535;
beforeAll(() => {
const config = scaffoldQwikProject();
global.tmpDir = config.tmpDir;

return async () => {
await killAllRegisteredProcesses();
config.cleanupFn();
};
let SERVE_PORT = 3535;
beforeEach(() => {
// the port doesn't clear immediately after the previous test
SERVE_PORT++;
});
for (const type of ['empty', 'playground'] as QwikProjectType[]) {
describe(`template: ${type}`, () => {
beforeAll(() => {
const config = scaffoldQwikProject(type);
global.tmpDir = config.tmpDir;

return async () => {
try {
await killAllRegisteredProcesses();
} catch (e) {
log(`Error during process cleanup: ${e.message}`);
}
config.cleanupFn();
};
});

if (type === 'playground') {
test(
'Should serve the app in dev mode and update the content on hot reload',
{ timeout: DEFAULT_TIMEOUT },
async () => {
const host = `http://localhost:${SERVE_PORT}/`;
await assertHostUnused(host);
const p = await runCommandUntil(
`npm run dev -- --port ${SERVE_PORT}`,
global.tmpDir,
(output) => {
return output.includes(host);
}
);
assert.equal(existsSync(global.tmpDir), true);

test(
'Should serve the app in dev mode and update the content on hot reload',
{ timeout: DEFAULT_TIMEOUT },
async () => {
const host = `http://localhost:${SERVE_PORT}/`;
await assertHostUnused(host);
const p = await runCommandUntil(
`npm run dev -- --port ${SERVE_PORT}`,
global.tmpDir,
(output) => {
return output.includes(host);
await expectHtmlOnARootPage(host);

// Don't let process termination errors fail the test
try {
await promisifiedTreeKill(p.pid!, 'SIGKILL');
} catch (e) {
log(`Error terminating dev server: ${e.message}`);
}
}
);
}

test('Should preview the app', { timeout: DEFAULT_TIMEOUT }, async () => {
const host = `http://localhost:${SERVE_PORT}/`;
await assertHostUnused(host);

// First build the app
const buildProcess = await runCommandUntil(`npm run build`, global.tmpDir, (output) => {
return output.includes('dist/build') || output.includes('built in');
});

try {
await promisifiedTreeKill(buildProcess.pid!, 'SIGKILL');
} catch (e) {
log(`Error terminating build process: ${e.message}`);
}
);
assert.equal(existsSync(global.tmpDir), true);

await expectHtmlOnARootPage(host);
// Now run the preview
const p = await runCommandUntil(
`npm run preview -- --no-open --port ${SERVE_PORT}`,
global.tmpDir,
(output) => {
return output.includes(host);
}
);

assert.equal(existsSync(global.tmpDir), true);

// Wait a bit for the server to fully start
await new Promise((resolve) => setTimeout(resolve, 2000));

await promisifiedTreeKill(p.pid!, 'SIGKILL');
}
);
const res = await fetch(host, { headers: { accept: 'text/html' } }).then((r) => r.text());
console.log('** res', res);

// Check for the appropriate content based on template type
if (type === 'playground') {
expect(res).toContain('fantastic');
} else if (type === 'empty') {
expect(res).toContain('Hi');
expect(res).toContain('qwik');
}

try {
await promisifiedTreeKill(p.pid!, 'SIGKILL');
} catch (e) {
log(`Error terminating preview server: ${e.message}`);
}
});
});
}

async function expectHtmlOnARootPage(host: string) {
expect((await getPageHtml(host)).querySelector('.container h1')?.textContent).toBe(
Expand Down
26 changes: 18 additions & 8 deletions e2e/qwik-cli-e2e/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,14 @@ import treeKill from 'tree-kill';
import { promisify } from 'util';
import { createDocument } from '../../../packages/qwik/src/testing/document';

export function scaffoldQwikProject(): { tmpDir: string; cleanupFn: () => void } {
const tmpHostDirData = getTmpDirSync(process.env.TEMP_E2E_PATH);
export type QwikProjectType = 'playground' | 'library' | 'empty';
export function scaffoldQwikProject(type: QwikProjectType): {
tmpDir: string;
cleanupFn: () => void;
} {
const tmpHostDirData = getTmpDirSync(
process.env.TEMP_E2E_PATH ? `${process.env.TEMP_E2E_PATH}/${type}` : undefined
);
const cleanupFn = () => {
if (!tmpHostDirData.overridden) {
cleanup(tmpHostDirData.path);
Expand All @@ -17,7 +23,7 @@ export function scaffoldQwikProject(): { tmpDir: string; cleanupFn: () => void }
}
};
try {
const tmpDir = runCreateQwikCommand(tmpHostDirData.path);
const tmpDir = runCreateQwikCommand(tmpHostDirData.path, type);
log(`Created test application at "${tmpDir}"`);
replacePackagesWithLocalOnes(tmpDir);
return { cleanupFn, tmpDir };
Expand Down Expand Up @@ -52,10 +58,10 @@ function getTmpDirSync(tmpDirOverride?: string) {
return { path: dirSync({ prefix: 'qwik_e2e' }).name, overridden: false };
}

function runCreateQwikCommand(tmpDir: string): string {
function runCreateQwikCommand(tmpDir: string, type: 'playground' | 'library' | 'empty'): string {
const appDir = 'e2e-app';
execSync(
`node "${workspaceRoot}/packages/create-qwik/create-qwik.cjs" playground "${join(tmpDir, appDir)}"`
`node "${workspaceRoot}/packages/create-qwik/create-qwik.cjs" ${type} "${join(tmpDir, appDir)}"`
);
return join(tmpDir, appDir);
}
Expand Down Expand Up @@ -153,11 +159,15 @@ export async function assertHostUnused(host: string): Promise<void> {
// promisify fails to get the proper type overload, so manually enforcing the type
const _promisifiedTreeKill = promisify(treeKill) as (pid: number, signal: string) => Promise<void>;

export const promisifiedTreeKill = (pid: number, signal: string) => {
export const promisifiedTreeKill = async (pid: number, signal: string) => {
try {
return _promisifiedTreeKill(pid, signal);
return await _promisifiedTreeKill(pid, signal);
} catch (error) {
console.error('Failed to kill the process ' + pid, error);
// Don't treat process termination failures as test failures
// This is especially important on Windows where processes may already be gone
// or may not be properly terminated with tree-kill
log(`Process ${pid} could not be killed, but continuing: ${error.message}`);
return Promise.resolve();
}
};

Expand Down
22 changes: 18 additions & 4 deletions e2e/qwik-cli-e2e/vite.config.mts
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
import { existsSync, mkdirSync } from 'fs';
import { resolve } from 'path';
import { mkdirSync } from 'fs';
import tsconfigPaths from 'vite-tsconfig-paths';
import { defineConfig } from 'vitest/config';

// if we're running in github CI
if (process.env.CI) {
// Workaround for npm/pnpm crashing in scaffoldQwikProject because "name is too long"
const testPath = resolve(process.cwd(), 'e2e-test-tmp');
mkdirSync(testPath);

// Create base directory if it doesn't exist
if (!existsSync(testPath)) {
mkdirSync(testPath);
}

// Create subdirectories for each template type
const templateTypes = ['empty', 'playground'];
for (const type of templateTypes) {
const templatePath = resolve(testPath, type);
if (!existsSync(templatePath)) {
mkdirSync(templatePath);
}
}

process.env.TEMP_E2E_PATH = testPath;
}

Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@
"esbuild-plugin-raw": "^0.1.8"
},
"devDependencies": {
"@builder.io/partytown": "0.10.2",
"@changesets/cli": "2.29.3",
"@changesets/get-github-info": "0.6.0",
"@changesets/types": "6.1.0",
Expand All @@ -91,6 +90,7 @@
"@playwright/test": "1.50.1",
"@qwik.dev/core": "workspace:*",
"@qwik.dev/router": "workspace:*",
"@qwik.dev/partytown": "0.11.1",
"@types/brotli": "1.3.4",
"@types/bun": "1.1.6",
"@types/cross-spawn": "6.0.6",
Expand All @@ -103,6 +103,7 @@
"@types/tmp": "0.2.6",
"@types/which-pm-runs": "1.0.2",
"@vitest/coverage-v8": "3.1.1",
"@vitejs/plugin-basic-ssl": "2.0.0",
"all-contributors-cli": "6.26.1",
"brotli": "1.3.3",
"concurrently": "8.2.2",
Expand Down Expand Up @@ -160,8 +161,7 @@
"pnpm": {
"overrides": {
"typescript": "5.8.2",
"vfile": "6.0.2",
"@supabase/realtime-js": "2.8.4"
"vfile": "6.0.2"
},
"patchedDependencies": {
"[email protected]": "patches/[email protected]",
Expand Down
16 changes: 16 additions & 0 deletions packages/create-qwik/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,22 @@

## 2.0.0-alpha.0

## 1.14.1

### Patch Changes

- 🐞🩹 starter app missing package and added preview cli test (by [@wmertens](https://github.com/wmertens) in [#7626](https://github.com/QwikDev/qwik/pull/7626))

## 1.14.0

### Patch Changes

- 🐞🩹 create-qwik logAppCreated.ts now displays correct next steps for deno. (by [@LogProphet](https://github.com/LogProphet) in [#7566](https://github.com/QwikDev/qwik/pull/7566))

After using the create-qwik command, the logAppCreated.ts file was not displaying the correct next steps for deno. Prior to this fix it would display "deno start" instead of "deno task start". This would cause a failure to run, as deno requires the 'task' keyword. This fixes bug 7520

- 🐞🩹 linting errors which were previously being ignored across the monorepo. (by [@better-salmon](https://github.com/better-salmon) in [#7418](https://github.com/QwikDev/qwik/pull/7418))

## 1.13.0

## 1.12.1
Expand Down
2 changes: 1 addition & 1 deletion packages/create-qwik/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@ console.log(result);
## Related

- [Qwik](https://qwik.dev/)
- [Partytown](https://partytown.builder.io)
- [Partytown](https://partytown.qwik.dev)
- [Mitosis](https://github.com/BuilderIO/mitosis)
- [Builder.io](https://github.com/BuilderIO/)
5 changes: 3 additions & 2 deletions packages/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"devDependencies": {
"@algolia/autocomplete-core": "1.7.4",
"@algolia/client-search": "4.14.3",
"@builder.io/partytown": "0.10.2",
"@builder.io/qwik": "1.14.1",
"@emotion/react": "11.13.0",
"@emotion/styled": "11.13.0",
"@modular-forms/qwik": "0.23.1",
Expand All @@ -16,13 +16,14 @@
"@mui/x-data-grid": "6.20.4",
"@qwik-ui/headless": "0.6.3",
"@qwik.dev/core": "workspace:*",
"@qwik.dev/partytown": "0.11.1",
"@qwik.dev/react": "workspace:*",
"@qwik.dev/router": "workspace:*",
"@shikijs/colorized-brackets": "3.1.0",
"@shikijs/rehype": "3.1.0",
"@shikijs/transformers": "3.1.0",
"@shikijs/types": "3.1.0",
"@supabase/supabase-js": "2.44.4",
"@supabase/supabase-js": "2.49.4",
"@tailwindcss/vite": "4.0.12",
"@types/leaflet": "1.9.12",
"@types/prismjs": "1.26.4",
Expand Down
18 changes: 11 additions & 7 deletions packages/docs/public/_headers
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
/*
Cache-Control: public, max-age=3600, s-maxage=3600;

/assets/*
Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
! Cache-Control
Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable;

/build/*
Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
! Cache-Control
Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable;

/*.svg
Cache-Control: public, max-age=86400, s-maxage=86400
! Cache-Control
Cache-Control: public, max-age=86400, s-maxage=86400;

/favicon.ico
Cache-Control: public, max-age=604800, s-maxage=604800

/*
Cache-Control: public, max-age=3600, s-maxage=3600
! Cache-Control
Cache-Control: public, max-age=604800, s-maxage=604800;
1 change: 0 additions & 1 deletion packages/docs/public/docs/qwikcity/README.md

This file was deleted.

Loading