Skip to content
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

Add Astro presentation website #31

Merged
merged 52 commits into from
Feb 16, 2024
Merged

Add Astro presentation website #31

merged 52 commits into from
Feb 16, 2024

Conversation

SakuraIsayeki
Copy link
Member

No description provided.

- Added a project reference to the manifest project in the csproj file.
- Refactored VaultManifestGenerator to use IVault instead of FileSystemVault.
- Updated GenerateManifestAsync method to handle different versions of .NET.
- Removed unused namespaces from VaultManifestGenerator.
- Removed unused namespace from GenerateManifestCommand.
- Refactored the `SplitYamlFrontMatter` method to improve readability and maintainability.
- Added a new private method `TrimBom` to remove the Byte Order Mark (BOM) from the text.
- Updated the code to trim BOM from the first line of text if present.
This commit adds a new method `SplitByNewline` to the `ObsidianText` class. This method splits a specified string by newlines, handling different newline characters (`\r\n`, `\r`, `\n`). It returns an array of strings representing the split lines.

The purpose of this change is to improve the handling of line splitting in the `ObsidianText` class, providing more flexibility and compatibility with different newline formats.
- Updated the debug output in the GenerateStaticSiteCommand.cs file to use Markdown syntax for better readability.
- Modified the logic for writing files in the GenerateStaticSiteCommand.cs file to truncate existing files rather than byte-level overwrites.
- Added a new .gitignore file in the "vault" directory to ignore certain files except for specific ones.
- Added a new .gitignore file in the "pages/vault" directory to ignore all files except for ".gitignore" and ".astro".
- Updated the import URL for the Nunito font in "_global.scss" to use a protocol-relative URL.
- Removed the text-align property from the @mixin "font-styles" in "_mixins.scss".
This commit adds the necessary configuration files and dependencies to enable TypeScript support in the SSG Client library. The package.json file now includes a devDependency for typescript version 5.1.6, and the pnpm-lock.yaml file has been updated accordingly. Additionally, a tsconfig.json file has been added with compiler options set for ES2016 target and strict type-checking enabled.
- Added a new file `manifest-client.ts` which contains the implementation of the `VaultManifestClient` class.
- The `VaultManifestClient` class provides methods for resolving assets from a MoltenObsidian vault's manifest.
- Created two static methods in `VaultManifestClient`: `fromManifest()` and `fromPath()`.
- The `fromManifest()` method creates a new instance of `VaultManifestClient` from an existing manifest object.
- The `fromPath()` method fetches the manifest from a given URL or relative path, and returns a promise that resolves to a new instance of `VaultManifestClient`.
- Updated the package.json file with dependencies and devDependencies related to the project.
- Added the pnpm-lock.yaml file with dependency resolutions for '@types/mime-types' and 'typescript'.
- Created two new files: 'vault-manifest.ts' which defines the interfaces for VaultManifest and VaultFile. These interfaces represent the structure of a MoltenObsidian vault's manifest.

This commit adds support for working with MoltenObsidian vault manifests through the newly added classes and interfaces.
- Added a new class method `fromPath` to the `VaultManifestClient` class that fetches the manifest from a given URL or path.
- Updated the `fromManifest` method to remove unnecessary type annotations and return an instance of `VaultManifestClient`.
- Added a new protected property `_routingTable` to store the routing table as a map of file paths.
- Implemented the `buildRoutingTable` method to populate the routing table with file paths from the manifest.
- Implemented the `getAssetPath` method to retrieve asset paths based on provided parameters.
- Updated the Astro configuration in `astro.config.mjs` to enable experimental assets and set output directory to "static".
- Updated dependencies in `package.json`, added `"moltenobsidian-ssg-client": "link:..\\nodsoft_moltenobsidian_ssg_client"`.
- Created a new page `[...path].astro` under `/src/pages/` for dynamic routing using Astro framework, importing necessary modules and components.
- Deleted unused files `.gitignore`, `[...path].astro`, and updated `.gitignore`.
- Updated TypeScript configuration in `tsconfig.json`.
This commit adds the following changes:
- Import YAML library for parsing frontmatter properties
- Add `getFrontMatter` method to retrieve frontmatter from a file
- Add `getFrontMatterFilePath` method to get the path of the frontmatter file based on the asset path
- Update `getAssetPath` method to remove unnecessary parameter and simplify logic
- Modify `getStaticPaths` function to read and parse frontmatter files, and filter out paths with publish set to false in either obsidian or moltenobsidian property
- Update Astro page template to include CSS classes from frontmatter
- Added logic to add markdown files with names "index.md" or "readme.md" to the routing table.
- Updated the routing table with the appropriate file paths.

fix(pages): Update getStaticPaths function

- Fixed an issue where an empty path was not handled correctly in the getStaticPaths function.
- Updated the code to handle empty paths properly.

chore(pages): Remove index.astro file

- Removed the unused index.astro file from the project.
- Refactored `VaultManifestGenerator.ExtractManifestAsync` to `ExtractManifestInfoAsync`
- Updated `VaultManifestClient.getAssetPath` to `getSsgPath`
- Added base href tag in `BaseHead.astro`
- Updated regex pattern in `NavLink.astro` to handle special characters
- Added new component `VaultNavTree.astro` for rendering the navigation tree in the sidebar
- Updated styling in `Sidebar.astro.scss` and added new styles for the navigation tree
- Modified logic in `[...path].astro` to use updated methods from `VaultManifestClient`
This commit adds a temporary fix to the NavLink component in order to disable pointer events and set the cursor to default. This is achieved by adding the CSS properties `pointer-events: none` and `cursor: default` to the `.folder-title` class.
- Added a footer section to the Sidebar component in order to display additional information and links.
- The footer includes a title, badge, description, GitHub link, and copyright notice.
- Updated the styling of the Sidebar component to include overflow-y for the navigation section and added new styles for the footer section.
- Modified the LeafNode type in vault-utils.ts to include an optional `order` property.
- When building the vault tree, if a folder has an `order` value, it is added to its parent folder's current order score.
- This allows for custom sorting of folders based on their order values.

- Added `alt` attribute to the `<img>` tag in the Sidebar component to provide alternative text for screen readers.
- The alt text is set as "MoltenObsidian Logo".

fix(VaultNavTree): Sort folders with order property first

- Modified the `sortFoldersFirst` function in the VaultNavTree component.
- If both nodes have an `order` property, they are sorted based on their order values.
- If only one node has an `order` property, it is prioritized over the other node.
- This ensures that folders with an `order` property are displayed before other folders.

refactor([...path]): Adjust article margin

- Updated the styling of the `<article>` element in the `[...path]` page component.
- Added top and bottom margins of 4rem to create more spacing between content and surrounding elements.
This commit adds the ability to collapse and expand the sidebar in the Sidebar component. The "toggleSidebar" function is implemented to toggle the "collapsed" class on the aside element when the sidebar toggler button is clicked. Additionally, a click event listener is registered for the sidebar toggler button.

The Sidebar component's styling is also updated to include a new class "collapsed" that adjusts its height and hides certain elements when collapsed. The styling for the sidebar toggler button and its icon is added as well.

A new responsive mixin file "_responsive.scss" is introduced, which defines flex-direction changes based on different breakpoints. This allows for a responsive layout where the Sidebar component switches between column and row direction depending on screen size.

The global styles file "_global.scss" imports "_responsive.scss", ensuring that responsive styles are applied throughout the application.

The variables file "_variables.scss" now includes a map of responsive breakpoints, defining values for different screen sizes.
- Added .gitignore rule to ignore vault output files
- Added icon.png to public folder
- Added app.json, appearance.json, community-plugins.json, core-plugins.json, and hotkeys.json to the vault's .obsidian folder
- Created Index.md file with initial content for the MoltenObsidian website vault
- Updated the height and width of the sidebar to be slightly smaller
- Added a margin-top to the navigation section in the footer
- Reduced the right margin of the footer elements
- Modified sorting logic for folders in VaultNavTree component
- Refactored scrollbar styles to use mixins and added transition effects
- Added new styles for the landing page in `_content.scss`
- Updated the import of `_content.scss` in `_global.scss`
- Updated the values of responsive breakpoints in `_variables.scss`
- Updated the `Convert` method in `ObsidianHtmlConverter` to use the `Markdown.ToHtml` method instead of `Markdig.Markdown.ToHtml`.
- Added a summary comment for the `Convert` method in `ObsidianHtmlConverter`, describing its purpose.
- Removed unnecessary using statements in `ObsidianPipelineBuilder`.
- Updated the package references in the project file (`Nodsoft.MoltenObsidian.csproj`) to use newer versions of Markdig (0.32.0) and Nodsoft.Markdig.SyntaxHighlighting (1.0.8).
- Removed the unused package reference to Markdown.ColorCode.
- Added a new mixin `code-font()` to set the font family and size for code elements.
- Created a new mixin `code-block-syntax($lang)` to apply syntax highlighting styles based on the specified language.
- Updated `_content.scss` to include the `code-font()` mixin for `<pre>` and `<code>` elements, and added syntax highlighting support for C# code blocks.
- Modified `_mixins.scss` to define the `code-font()` and `code-block-syntax($lang)` mixins.
- Updated `_variables.scss` to add a list of supported syntaxes, including "csharp".
- Added `_csharp.scss` under the "syntax" folder to define color styles for different C# language symbols.

This commit enhances the styling of code blocks by introducing a consistent monospace font, applying background colors, adding padding, and enabling syntax highlighting specifically for C# code.
- Reduce the transition duration for background-color in NavLink component from 0.3s to 0.2s.
- Update the border color in Sidebar component to use rgba(white, .1) instead of a separate declaration.
- Add styling for table elements and their cells in _content.scss file.
- Added the `isIndex` property to the `LeafNode` interface in `vault-utils.ts`
- Updated the `VaultNavTree.astro` component to use the `isIndex` property when rendering folder and file links
- Removed leading slash from folder paths in `buildVaultTree()` function
- Updated the NavLink component to apply styles to anchor tags with href attribute
- Added color styles for item titles and folder titles in NavLink component
- Disabled pointer events and changed cursor style for item titles without href attribute
- Updated Sidebar component to hide items with data-index-note attribute
This commit adds the `text-decoration-color` property to the `pre` element in the `_content.scss` file. The color value is set to #e83e8c, matching the existing color property. This change enhances the visual styling of code blocks.

fix(syntax): Add stringCSharpVerbatim color

In the `_csharp.scss` file, this commit adds a new color definition for `stringCSharpVerbatim`. The color value is set to #ce9178, which matches the existing `string` color. This change ensures that C# verbatim strings are styled consistently with other string literals in syntax highlighting.
- Added a new file "Getting Started.md" to provide a guide on converting raw Markdown to HTML using the ObsidianText class
- Updated "Index.md" to include information about Molten Obsidian's extensibility and YAML frontmatter capabilities
- Added a new file "Tool/Index.md" to provide information about the Molten Obsidian CLI Tool for assisting with building solutions around Molten Obsidian
- Added a new file "Tool/Static Site Generation.md" to explain how to export a vault to static HTML files using the CLI Tool
- Added a new file "Tool/Vault Manifests.md" to explain how to generate a Vault Manifest for remote vaults that do not support directory listing
- Updated the version of Astro from 3.0.3 to 3.5.5
- Updated the version of Bootstrap Icons from 1.10.5 to 1.11.1
- Updated the version of Sass from 1.64.2 to 1.69.5
This commit adds two new run configurations, "Generate docs manifest" and "Generate site content", to the project. These configurations execute specific scripts using the MoltenObsidian tool to generate documentation manifest and site content respectively. The scripts are executed in the terminal with appropriate working directories and options set.

The added files `.run/Generate docs manifest.run.xml` and `.run/Generate site content.run.xml` contain the configuration details for each run configuration.
This commit adds a new workflow file `deploy-astro-website.yml` that triggers the deployment of the Astro website to GitHub Pages whenever changes are pushed to the `main` branch. The workflow includes steps for checking out the repository, setting up MoltenObsidian, generating Vault manifest and SSG assets, and installing, building, and uploading the site using Astro.

Additionally, this commit updates the `astro.config.mjs` file with a new `site` property set to `'https://nodsoft.github.io/moltenobsidian/'` and a `base` property set to `'/moltenobsidian/'`. It also modifies the `BaseHead.astro` component by importing the Astro configuration from `astro.config.mjs`, extracting title and description from Astro props, and setting the base href dynamically based on the value of `{base}`.
The commit fixes an issue where command line breaks were not properly escaped in the deploy-astro-website.yml file. The changes ensure that the "moltenobsidian ssg generate" command is correctly executed with the "--from-folder" and "--output-path" options.
This commit adds a new step in the deployment workflow to create the output directory recursively. This ensures that the necessary directory structure is in place for storing assets related to the vault.
This commit enables the use of the latest version of pnpm as the package manager for installing dependencies and building the Astro website during deployment. The package manager is normally automatically detected based on the lockfile.
Added a new step in the workflow to restore child package dependencies before installing, building, and uploading the Astro website. This step uses pnpm to install project dependencies for the nodsoft_moltenobsidian_ssg_client directory.
This commit adds a new step to the deployment workflow that installs PNPM, using the `pnpm/action-setup` action. This will ensure that PNPM is available for use in subsequent steps of the workflow.
- Updated the PNPM installation step to use `npm install -g pnpm` instead of the `pnpm/action-setup@v2` action.
- Modified the dependency installation step to change directory to "nodsoft_moltenobsidian_ssg_client" and run `pnpm recursive install --prod`.

These changes ensure that PNPM is installed globally and dependencies are installed correctly for the project.
The base URL in the astro.config.mjs file has been updated from '/moltenobsidian/' to '/moltenobsidian'. This change ensures that the correct base URL is used for the website.
- Updated the code in BaseHead component to handle the base URL using import.meta.env.BASE_URL instead of AstroConfig.
- Removed unused imports and interface declarations.
- Improved code readability and removed unnecessary comments.
The commit moves the directory path for the Vault in the web application.

- Updated the checkout action to use version 4 of actions/checkout.
- Changed the output directory for generated SSG assets from "nodsoft_moltenobsidian_web/src/assets/vault" to "nodsoft_moltenobsidian_web/public/vault".
- Modified .gitignore file to ignore "public/vault/*" instead of "src/assets/vault/*".
- Updated import paths in Sidebar.astro and [...path].astro files to reference the new location of moltenobsidian.manifest.json in "../../public/vault/".
- Updated the relative vault path in vault-utils.ts to "../../public/vault/".
- Update astro dependency to version 4.4.0
- Update bootstrap-icons dependency to version 1.11.3
- Update sass dependency to version 1.71.0
- Add sharp dependency with version 0.33.2
- Updated the version of the GitHub Pages deployment action from v1 to v4 in the deploy-astro-website.yml workflow file.
- Fixed the base URL for the MoltenObsidian site in the astro.config.mjs file. Changed it from '/moltenobsidian/' to '/MoltenObsidian/'.
- Fixed the base URL in the BaseHead component of the MoltenObsidian website. Replaced hardcoded URLs with dynamic URLs using the `base` variable.
- Updated the version of the GitHub Pages deployment action from v4 to v3, due to artifact upload issues.
@SakuraIsayeki SakuraIsayeki self-assigned this Feb 16, 2024
This commit adds path filters to the existing workflows. The changes include:
- In the build workflow, paths `nodsoft_moltenobsidian_web/**` and `nodsoft_moltenobsidian_ssg_client/**` are ignored for push events.
- In the deploy-astro-website workflow, paths `nodsoft_moltenobsidian_web/**`, `nodsoft_moltenobsidian_ssg_client/**`, and `.github/workflows/deploy-astro-website.yml` are included for push events on branches `main` and `feature/web`.
- In the nuget-push workflow, paths `nodsoft_moltenobsidian_web/**`, `nodsoft_moltenobsidian_ssg_client/**`, and `Samples/**` are ignored for push events on branches `main` and tags starting with 'v'.
The Card component and its corresponding SCSS styles have been deleted. This commit removes the Card component, which consisted of a link card with a title, body, and href. The SCSS file for styling the Card component has also been removed.

This change was made to remove unused code and improve code organization.
This commit adds the `white-space: pre-wrap` property to the `pre` element in `_content.scss`. It also adjusts the font size for different screen sizes in `_global.scss`, using media queries.
- Changed the class name of `aside` to `nav` in `NavLink.astro.scss`
- Updated the structure and class names in `Sidebar.astro`
- Added ARIA attributes for accessibility in `Sidebar.astro`
- Adjusted font size and added font weight to `.navbar-brand` in `Sidebar.astro.scss`
- Removed unnecessary styles from `.navbar-brand` in `Sidebar.astro.scss`
- Added ARIA attributes for accessibility in footer section of `Sidebar.astro`
- Updated styles for unordered list in footer section of `Sidebar.astro.scss`
- Added role, aria-label, and aria-expanded attributes to the root div element in `VaultNavTree.astro`
- Passed level prop to child components recursively in `VaultNavTree.astro`
The commit removes the README file for the Astro Starter Kit Basics. The README provided an overview of the project structure, commands, and additional resources. This change was made to clean up unnecessary files in the repository.
@SakuraIsayeki SakuraIsayeki marked this pull request as ready for review February 16, 2024 16:38
@SakuraIsayeki SakuraIsayeki merged commit 1b6a245 into develop Feb 16, 2024
1 check passed
@SakuraIsayeki SakuraIsayeki deleted the feature/web branch February 16, 2024 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant