Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# Keep text files as LF across platforms.
* text=auto eol=lf

# Lockfiles still deserve security review, but their large diffs can stall IDE diff viewers.
# Keep the lockfile tracked; force a text diff when inspecting its contents.
pnpm-lock.yaml -diff
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: blob-report-${{ matrix.shardIndex }}
path: .vitest-reports/*
path: .vitest/blob/*
include-hidden-files: true
retention-days: 1

Expand All @@ -56,7 +56,7 @@ jobs:
- name: Download blob reports from GitHub Actions Artifacts
uses: actions/download-artifact@v4
with:
path: .vitest-reports
path: .vitest/blob
pattern: blob-report-*
merge-multiple: true

Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ All agents, such as Claude Code, should keep `**/AGENTS.md` in mind.

## Project Type

This is a **SolidJS SPA template** built with Vite. It builds HTTP(S)-hosted assets for GitHub Pages using clean History API URLs (`@solidjs/router`) and a SPA-bearing `404.html` entry for refresh and direct client-route loads. `file://` viewing is unsupported.
This is a **SolidJS SPA template** built with Vite. It builds assets for secure browser contexts (HTTPS in production or localhost for development) using clean History API URLs (`@solidjs/router`) and a SPA-bearing `404.html` entry for refresh and direct client-route loads. Remote plain HTTP and `file://` viewing are unsupported.

## Development Commands

Expand Down
16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,11 @@ This project follows specific conventions and rules for code style, data validat

## Static Hosting

Deploy the `dist/` output over HTTP(S), such as GitHub Pages or `pnpm preview`.
A plain `pnpm build` emits relative asset URLs, so the output serves correctly
from a domain root or a GitHub Pages project site subpath
Deploy the `dist/` output in a browser secure context: use HTTPS in production
or localhost for development and preview (for example, `pnpm preview`). Plain
HTTP on a remote origin and `file://` are unsupported. A plain `pnpm build`
emits relative asset URLs, so the output serves correctly from a domain root
or a GitHub Pages project site subpath
(`https://<user>.github.io/<repo>/`). For History API routing below the domain
root, rebuild with the site's absolute base path, e.g.
`pnpm build --base "/<repo>/"`; the included deploy workflow supplies this base
Expand All @@ -57,3 +59,11 @@ Unknown client routes render the application's `Page not found` view.
Vitest has separate Node (`tests/unit/`) and jsdom (`tests/browser/`) projects.
Browser fixtures use `@solidjs/testing-library` and exercise rendered user
behavior, including route navigation.

## Solid version

This template uses the stable Solid 1.x stack. Solid 2 is in release-candidate
status and requires a coordinated migration of the runtime, renderer, JSX
compiler, router, and Vite plugin; do not upgrade `solid-js` by itself. See the
[Solid 1.x to 2.0 migration guide](https://v2.solidjs.com/migration/from-solid-1)
before evaluating that migration.
5 changes: 2 additions & 3 deletions oxfmt.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import frontend from "@concertypin/config/oxfmt/frontend";
import { defineConfig } from "oxfmt";

import base from "@concertypin/config/oxfmt";

export default defineConfig(base);
export default defineConfig(frontend());
8 changes: 5 additions & 3 deletions oxlint.config.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import createFrontendOxlintConfig from "@concertypin/config/oxlint/frontend";
import { defineConfig } from "oxlint";
import frontendConfig from "@concertypin/config/oxlint/frontend";

import solidConfig from "./scripts/linter/oxlint-solid.ts";

export default defineConfig({
$schema: "./node_modules/oxlint/configuration_schema.json",
jsPlugins: ["oxlint-tailwindcss"],
plugins: ["typescript", "unicorn", "import", "vitest", "promise"],
env: {
builtin: true,
Expand All @@ -23,5 +24,6 @@ export default defineConfig({
typeAware: true,
typeCheck: true,
},
extends: [frontendConfig, solidConfig],
settings: { tailwindcss: { entryPoint: "src/index.css" } },
extends: [createFrontendOxlintConfig("src/index.css"), solidConfig],
});
43 changes: 22 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,31 +24,32 @@
"node": ">=26"
},
"dependencies": {
"@solidjs/router": "^0.16.1",
"solid-js": "^1.9.14"
"@solidjs/router": "^1.0.0",
"solid-js": "^1.9.15"
},
"devDependencies": {
"@concertypin/config": ">=0.3.0 <1.0.0",
"@concertypin/config": "^0.4.0",
"@solidjs/testing-library": "^0.8.10",
"@tailwindcss/postcss": "^4.3.2",
"@testing-library/jest-dom": "^7.0.0",
"@types/node": "^26.1.1",
"@vitest/coverage-v8": "^4.1.10",
"@tailwindcss/postcss": "^4.3.3",
"@testing-library/jest-dom": "^7.0.1",
"@types/node": "^26.6.4",
"@vitest/coverage-v8": "^5.0.3",
"cross-env": "^10.1.0",
"eslint-plugin-solid": "^0.14.5",
"globals": "^17.7.0",
"jsdom": "^30.0.1",
"oxfmt": "^0.62.0",
"oxlint": "^1.73.0",
"oxlint-tsgolint": "^0.24.0",
"postcss": "^8.5.16",
"simple-git-hooks": "^2.13.1",
"eslint-plugin-solid": "^0.18.1",
"globals": "^17.13.0",
"jsdom": "^30.1.2",
"oxfmt": "^0.72.0",
"oxlint": "^1.87.0",
"oxlint-tailwindcss": "^1.14.0",
"oxlint-tsgolint": "^7.0.2003",
"postcss": "^8.5.29",
"simple-git-hooks": "^2.14.0",
"solid-devtools": "^0.34.5",
"tailwindcss": "^4.3.2",
"typescript": "~7.0.2",
"vite": "^8.1.4",
"vite-plugin-solid": "^2.11.12",
"vitest": "^4.1.10"
"tailwindcss": "^4.3.3",
"typescript": "~6.0.3",
"vite": "^8.3.2",
"vite-plugin-solid": "^2.11.14",
"vitest": "^5.0.3"
},
"packageManager": "pnpm@10.17.1+sha512.17c560fca4867ae9473a3899ad84a88334914f379be46d455cbf92e5cf4b39d34985d452d2583baf19967fa76cb5c17bc9e245529d0b98745721aa7200ecaf7a"
"packageManager": "pnpm@12.9.1"
}
Loading
Loading