dogsbay 0.2.0-beta.27 → 0.2.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -250,13 +250,18 @@ export async function siteBuild(cwd, options) {
250
250
  labels: raw.labels,
251
251
  };
252
252
  }
253
- // Pass the combined prefix as basePath to taxonomy — term URLs
254
- // need to include both urlBase (host subpath) and dogsbay
255
- // basePath so they resolve correctly under the served URL.
253
+ // Filesystem layout uses dogsbay basePath; URL composition uses
254
+ // the combined prefix (urlBase + basePath) so chip / term hrefs
255
+ // resolve under subpath-mounted deploys. Passing combined as
256
+ // `basePath` previously pushed taxonomy route files into
257
+ // src/pages/<urlBase>/<basePath>/<indexPath>/, which then
258
+ // double-prefixed once Astro's `base` config applied at request
259
+ // time (same family as the section-llms.txt bug fixed in 47db909).
256
260
  const taxoCombined = resolvePrefixes(config.site.url, config.site.basePath).combined;
257
261
  const emitted = emitTaxonomyRoutes(pages, outputDir, taxonomyConfigs, {
258
262
  section: config.content.section,
259
- basePath: taxoCombined,
263
+ basePath: config.site.basePath,
264
+ urlPrefix: taxoCombined,
260
265
  });
261
266
  if (emitted.length > 0) {
262
267
  console.log(` Emitted taxonomy routes: ${emitted.join(", ")}`);
@@ -247,6 +247,12 @@ function validateSite(site, sourcePath) {
247
247
  throw new Error(`site.brandKeywords entries must be non-empty strings in ${sourcePath}`);
248
248
  }
249
249
  }
250
+ if (s.noindex !== undefined && typeof s.noindex !== "boolean") {
251
+ throw new Error(`site.noindex must be a boolean in ${sourcePath}; got ${describe(s.noindex)}`);
252
+ }
253
+ if (s.nofollow !== undefined && typeof s.nofollow !== "boolean") {
254
+ throw new Error(`site.nofollow must be a boolean in ${sourcePath}; got ${describe(s.nofollow)}`);
255
+ }
250
256
  if (s.basePath !== undefined) {
251
257
  if (typeof s.basePath !== "string") {
252
258
  throw new Error(`site.basePath must be a string in ${sourcePath}; got ${describe(s.basePath)}`);
@@ -315,6 +321,9 @@ function validateContent(content, sourcePath) {
315
321
  `got ${JSON.stringify(v)}`);
316
322
  }
317
323
  }
324
+ if (c.diagrams !== undefined && typeof c.diagrams !== "boolean") {
325
+ throw new Error(`content.diagrams must be a boolean in ${sourcePath}; got ${JSON.stringify(c.diagrams)}`);
326
+ }
318
327
  // versions[] declarations + defaultVersion. When versions[] is
319
328
  // declared, every source's version (if set) must match one of
320
329
  // the ids; defaultVersion (if set) must also match. Sources
@@ -377,6 +386,7 @@ function validateContent(content, sourcePath) {
377
386
  sources: validatedSources,
378
387
  section: c.section,
379
388
  codeBlockTitle: c.codeBlockTitle,
389
+ diagrams: c.diagrams,
380
390
  versions,
381
391
  defaultVersion,
382
392
  locales,
@@ -18,6 +18,8 @@ export function configToAstroOptions(config) {
18
18
  editUri: config.site.editUri,
19
19
  copyright: config.site.copyright,
20
20
  brandKeywords: config.site.brandKeywords,
21
+ noindex: config.site.noindex,
22
+ nofollow: config.site.nofollow,
21
23
  theme: config.theme,
22
24
  plausibleDomain: config.analytics?.plausible?.domain,
23
25
  plausibleScriptUrl: config.analytics?.plausible?.scriptUrl,
@@ -383,6 +383,9 @@ function buildImportOptions(config, source) {
383
383
  if (config.content.codeBlockTitle !== undefined) {
384
384
  opts.codeBlockTitle = config.content.codeBlockTitle;
385
385
  }
386
+ if (config.content.diagrams !== undefined) {
387
+ opts.diagrams = config.content.diagrams;
388
+ }
386
389
  // MkDocs-specific
387
390
  if (source.mkdocs?.partialsDir) {
388
391
  opts.partialsDir = source.mkdocs.partialsDir;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dogsbay",
3
- "version": "0.2.0-beta.27",
3
+ "version": "0.2.0-beta.29",
4
4
  "description": "CLI for Dogsbay — scaffold, build, and serve documentation sites with markdown / MkDocs / Obsidian / OpenAPI sources",
5
5
  "type": "module",
6
6
  "bin": {
@@ -32,14 +32,14 @@
32
32
  "picocolors": "^1.1.0",
33
33
  "prompts": "^2.4.2",
34
34
  "yaml": "^2.8.3",
35
- "@dogsbay/format-mkdocs": "0.2.0-beta.27",
36
- "@dogsbay/format-obsidian": "0.2.0-beta.27",
37
- "@dogsbay/format-astro": "0.2.0-beta.27",
38
- "@dogsbay/format-mdx": "0.2.0-beta.27",
39
- "@dogsbay/format-starlight": "0.2.0-beta.27",
40
- "@dogsbay/format-dogsbay-md": "0.2.0-beta.27",
41
- "@dogsbay/format-openapi": "0.2.0-beta.27",
42
- "@dogsbay/types": "0.2.0-beta.27"
35
+ "@dogsbay/format-mkdocs": "0.2.0-beta.29",
36
+ "@dogsbay/format-astro": "0.2.0-beta.29",
37
+ "@dogsbay/format-mdx": "0.2.0-beta.29",
38
+ "@dogsbay/format-dogsbay-md": "0.2.0-beta.29",
39
+ "@dogsbay/format-obsidian": "0.2.0-beta.29",
40
+ "@dogsbay/format-openapi": "0.2.0-beta.29",
41
+ "@dogsbay/format-starlight": "0.2.0-beta.29",
42
+ "@dogsbay/types": "0.2.0-beta.29"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^22.0.0",
@@ -21,6 +21,43 @@ content
21
21
  Use `::::` (four colons) when the content itself contains `:::`
22
22
  (e.g., a directive nested inside another).
23
23
 
24
+ ### Nesting: outer fence must be longer
25
+
26
+ When a directive contains another directive, **the outer fence
27
+ must be longer (more colons) than the inner**. Same rule as
28
+ code fences. The parser closes a fence at the first matching
29
+ line of the same-or-shorter length, so an inner `:::` will
30
+ prematurely close a `:::` outer — leaving the rest of the
31
+ content stranded outside the directive.
32
+
33
+ ❌ Wrong — the inner `:::` closes the outer `:::steps`:
34
+
35
+ ```markdown
36
+ :::steps
37
+ 1. Install
38
+ :::warning
39
+ Don't skip this.
40
+ :::
41
+ 2. Configure
42
+ :::
43
+ ```
44
+
45
+ ✅ Right — the four-colon outer survives the three-colon inner:
46
+
47
+ ```markdown
48
+ ::::steps
49
+ 1. Install
50
+ :::warning
51
+ Don't skip this.
52
+ :::
53
+ 2. Configure
54
+ ::::
55
+ ```
56
+
57
+ Add another colon for each level of nesting (`:::::` for a
58
+ directive inside a `::::` outer, and so on). Most pages never
59
+ go past two levels.
60
+
24
61
  ## Callouts
25
62
 
26
63
  Two equivalent forms — pick whichever reads cleaner.