Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
f7981be
Project setup
TBxy Apr 19, 2026
c7a3e81
Correct from, but no bitmaps
TBxy Apr 23, 2026
8c9bb63
Add node_modules
TBxy Apr 23, 2026
168084c
Frist time bitmap is shown
TBxy Apr 25, 2026
d2c8be1
Archive specs
TBxy Apr 25, 2026
3921fbb
Further improvbemetns, still not working
TBxy Apr 26, 2026
25d528a
Update analyse script
TBxy Apr 26, 2026
a9efb60
Update anaylse script, ready to run pipeline performance updates
TBxy Apr 26, 2026
135db0a
Moved opensepcs
TBxy Apr 26, 2026
526f5c9
Works with still soem missing tiles
TBxy Apr 29, 2026
77fe2c4
Working but with missing tiles (or tile write wrrors?)
TBxy Apr 30, 2026
37b546f
Improve raster writting, still some artifacts
TBxy Apr 30, 2026
c1735ef
Only minor white lines visible, still not good
TBxy May 1, 2026
3b4a3dd
Add logo
TBxy May 1, 2026
d0277ea
It finally works
TBxy May 1, 2026
ac4b0cf
Update scripts
TBxy May 1, 2026
5f3e1f7
Use rasterio
TBxy May 1, 2026
0d35b42
Improve tile processing
TBxy May 2, 2026
b9ba922
Synced specs
TBxy May 2, 2026
c2490dc
Optimize jpeg quality and fix size issue, but nw not all GMPs are cor…
TBxy May 4, 2026
20db61b
Quality parameter works!
TBxy May 4, 2026
8c1aedd
Add thread executor
TBxy May 6, 2026
a7cbbe3
Improrved gpsdevcie levels
TBxy May 8, 2026
3d78e8c
Update opensepc
TBxy May 9, 2026
bae03a8
Improved speed, hierarchy map
TBxy May 10, 2026
33e3d21
Archibed hierarchical change
TBxy May 10, 2026
ed5f0a1
Update docs
TBxy May 10, 2026
6637c4a
Update docu
TBxy May 10, 2026
6d7f708
Ignore external refs pdfs
TBxy May 10, 2026
38d2d6e
Add composition support
TBxy May 11, 2026
5b1a7df
Improved stac download
TBxy May 13, 2026
5ed8abf
Fix geotiff issues, not all yet
TBxy May 13, 2026
a556cfa
Improve geotiff and config
TBxy May 14, 2026
7cd801c
Add gpkg changes
TBxy May 14, 2026
6761bd9
Add vector stuff
TBxy May 15, 2026
66fb7d4
Working on refactoring layers
TBxy May 18, 2026
f7d3519
Refactor config
TBxy May 18, 2026
c65ca47
Improve unified config
TBxy May 18, 2026
0f9e2d2
Archived changes
TBxy May 18, 2026
4250e6d
Add watermark feature
TBxy May 21, 2026
5ded37f
Archive review opensepc
TBxy May 23, 2026
1508000
Imrproved docker buiild
TBxy May 23, 2026
e3ac13c
Minor bug fixes
TBxy May 25, 2026
a0b674d
Fixed not working on garmin
TBxy May 25, 2026
36fd40e
Add swisstopot stuff
TBxy May 26, 2026
f254259
Cleanup example files
TBxy May 26, 2026
4ef5e39
Update docu
TBxy May 26, 2026
2f28f8a
Update readme
TBxy Jun 12, 2026
8cffc76
Added openspecs
TBxy Jun 12, 2026
e613aca
Fixed types
TBxy Jun 12, 2026
bb114fb
Fixed types
TBxy Jun 12, 2026
b8748c7
Run ty fix
TBxy Jun 20, 2026
f15196f
Update ty
TBxy Jun 20, 2026
fd80071
Update check to include type checkng
TBxy Jun 20, 2026
9b770d8
Fixed tests
TBxy Jun 20, 2026
0402602
Removed not needed ci on develop
TBxy Jun 20, 2026
9049b5f
Improve tests
TBxy Jun 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[bumpversion]
current_version =
commit = False
tag = False
allow_dirty = True

[bumpversion:file:pyproject.toml]
search = version = "{current_version}"
replace = version = "{new_version}"

[bumpversion:file:src/cartoload/__init__.py]
search = __version__ = "{current_version}"
replace = __version__ = "{new_version}"
3 changes: 3 additions & 0 deletions .claude/commands/opsx/apply.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@ Implement tasks from an OpenSpec change.
Always announce: "Using change: <name>" and how to override (e.g., `/opsx:apply <other>`).

2. **Check status to understand the schema**

```bash
openspec status --change "<name>" --json
```

Parse the JSON to understand:
- `schemaName`: The workflow being used (e.g., "spec-driven")
- Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)
Expand Down Expand Up @@ -135,6 +137,7 @@ What would you like to do?
```

**Guardrails**

- Keep going through tasks until done or blocked
- Always read context files before starting (from the apply instructions output)
- If task is ambiguous, pause and ask before implementing
Expand Down
2 changes: 2 additions & 0 deletions .claude/commands/opsx/archive.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ Archive a completed change in the experimental workflow.
5. **Perform the archive**

Create the archive directory if it doesn't exist:

```bash
mkdir -p openspec/changes/archive
```
Expand Down Expand Up @@ -148,6 +149,7 @@ Target archive directory already exists.
```

**Guardrails**

- Always prompt for change selection if not provided
- Use artifact graph (openspec status --json) for completion checking
- Don't block archive on warnings - just inform and confirm
Expand Down
22 changes: 15 additions & 7 deletions .claude/commands/opsx/explore.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Enter explore mode. Think deeply. Visualize freely. Follow the conversation wher
**This is a stance, not a workflow.** There are no fixed steps, no required sequence, no mandatory outputs. You're a thinking partner helping the user explore.

**Input**: The argument after `/opsx:explore` is whatever the user wants to think about. Could be:

- A vague idea: "real-time collaboration"
- A specific problem: "the auth system is getting unwieldy"
- A change name: "add-dark-mode" (to explore in context of that change)
Expand All @@ -36,24 +37,28 @@ Enter explore mode. Think deeply. Visualize freely. Follow the conversation wher
Depending on what the user brings, you might:

**Explore the problem space**

- Ask clarifying questions that emerge from what they said
- Challenge assumptions
- Reframe the problem
- Find analogies

**Investigate the codebase**

- Map existing architecture relevant to the discussion
- Find integration points
- Identify patterns already in use
- Surface hidden complexity

**Compare options**

- Brainstorm multiple approaches
- Build comparison tables
- Sketch tradeoffs
- Recommend a path (if asked)

**Visualize**

```
┌─────────────────────────────────────────┐
│ Use ASCII diagrams liberally │
Expand All @@ -72,6 +77,7 @@ Depending on what the user brings, you might:
```

**Surface risks and unknowns**

- Identify what could go wrong
- Find gaps in understanding
- Suggest spikes or investigations
Expand All @@ -85,11 +91,13 @@ You have full context of the OpenSpec system. Use it naturally, don't force it.
### Check for context

At the start, quickly check what exists:

```bash
openspec list --json
```

This tells you:

- If there are active changes
- Their names, schemas, and status
- What the user might be working on
Expand Down Expand Up @@ -119,14 +127,14 @@ If the user mentions a change or you detect one is relevant:

3. **Offer to capture when decisions are made**

| Insight Type | Where to Capture |
|--------------|------------------|
| Insight Type | Where to Capture |
| -------------------------- | ---------------------------- |
| New requirement discovered | `specs/<capability>/spec.md` |
| Requirement changed | `specs/<capability>/spec.md` |
| Design decision made | `design.md` |
| Scope changed | `proposal.md` |
| New work identified | `tasks.md` |
| Assumption invalidated | Relevant artifact |
| Requirement changed | `specs/<capability>/spec.md` |
| Design decision made | `design.md` |
| Scope changed | `proposal.md` |
| New work identified | `tasks.md` |
| Assumption invalidated | Relevant artifact |

Example offers:
- "That's a design decision. Capture it in design.md?"
Expand Down
48 changes: 28 additions & 20 deletions .claude/commands/opsx/propose.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ tags: [workflow, artifacts, experimental]
Propose a new change - create the change and generate all artifacts in one step.

I'll create a change with artifacts:

- proposal.md (what & why)
- design.md (how)
- tasks.md (implementation steps)
Expand All @@ -23,22 +24,27 @@ When ready to implement, run /opsx:apply
1. **If no input provided, ask what they want to build**

Use the **AskUserQuestion tool** (open-ended, no preset options) to ask:

> "What change do you want to work on? Describe what you want to build or fix."

From their description, derive a kebab-case name (e.g., "add user authentication" → `add-user-auth`).

**IMPORTANT**: Do NOT proceed without understanding what the user wants to build.

2. **Create the change directory**

```bash
openspec new change "<name>"
```

This creates a scaffolded change at `openspec/changes/<name>/` with `.openspec.yaml`.

3. **Get the artifact build order**

```bash
openspec status --change "<name>" --json
```

Parse the JSON to get:
- `applyRequires`: array of artifact IDs needed before implementation (e.g., `["tasks"]`)
- `artifacts`: list of all artifacts with their status and dependencies
Expand All @@ -50,30 +56,30 @@ When ready to implement, run /opsx:apply
Loop through artifacts in dependency order (artifacts with no pending dependencies first):

a. **For each artifact that is `ready` (dependencies satisfied)**:
- Get instructions:
```bash
openspec instructions <artifact-id> --change "<name>" --json
```
- The instructions JSON includes:
- `context`: Project background (constraints for you - do NOT include in output)
- `rules`: Artifact-specific rules (constraints for you - do NOT include in output)
- `template`: The structure to use for your output file
- `instruction`: Schema-specific guidance for this artifact type
- `outputPath`: Where to write the artifact
- `dependencies`: Completed artifacts to read for context
- Read any completed dependency files for context
- Create the artifact file using `template` as the structure
- Apply `context` and `rules` as constraints - but do NOT copy them into the file
- Show brief progress: "Created <artifact-id>"
- Get instructions:
```bash
openspec instructions <artifact-id> --change "<name>" --json
```
- The instructions JSON includes:
- `context`: Project background (constraints for you - do NOT include in output)
- `rules`: Artifact-specific rules (constraints for you - do NOT include in output)
- `template`: The structure to use for your output file
- `instruction`: Schema-specific guidance for this artifact type
- `outputPath`: Where to write the artifact
- `dependencies`: Completed artifacts to read for context
- Read any completed dependency files for context
- Create the artifact file using `template` as the structure
- Apply `context` and `rules` as constraints - but do NOT copy them into the file
- Show brief progress: "Created <artifact-id>"

b. **Continue until all `applyRequires` artifacts are complete**
- After creating each artifact, re-run `openspec status --change "<name>" --json`
- Check if every artifact ID in `applyRequires` has `status: "done"` in the artifacts array
- Stop when all `applyRequires` artifacts are done
- After creating each artifact, re-run `openspec status --change "<name>" --json`
- Check if every artifact ID in `applyRequires` has `status: "done"` in the artifacts array
- Stop when all `applyRequires` artifacts are done

c. **If an artifact requires user input** (unclear context):
- Use **AskUserQuestion tool** to clarify
- Then continue with creation
- Use **AskUserQuestion tool** to clarify
- Then continue with creation

5. **Show final status**
```bash
Expand All @@ -83,6 +89,7 @@ When ready to implement, run /opsx:apply
**Output**

After completing all artifacts, summarize:

- Change name and location
- List of artifacts created with brief descriptions
- What's ready: "All artifacts created! Ready for implementation."
Expand All @@ -99,6 +106,7 @@ After completing all artifacts, summarize:
- These guide what you write, but should never appear in the output

**Guardrails**

- Create ALL artifacts needed for implementation (as defined by schema's `apply.requires`)
- Always read dependency artifacts before creating a new one
- If context is critically unclear, ask the user - but prefer making reasonable decisions to keep momentum
Expand Down
3 changes: 3 additions & 0 deletions .claude/skills/openspec-apply-change/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@ Implement tasks from an OpenSpec change.
Always announce: "Using change: <name>" and how to override (e.g., `/opsx:apply <other>`).

2. **Check status to understand the schema**

```bash
openspec status --change "<name>" --json
```

Parse the JSON to understand:
- `schemaName`: The workflow being used (e.g., "spec-driven")
- Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)
Expand Down Expand Up @@ -139,6 +141,7 @@ What would you like to do?
```

**Guardrails**

- Keep going through tasks until done or blocked
- Always read context files before starting (from the apply instructions output)
- If task is ambiguous, pause and ask before implementing
Expand Down
2 changes: 2 additions & 0 deletions .claude/skills/openspec-archive-change/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ Archive a completed change in the experimental workflow.
5. **Perform the archive**

Create the archive directory if it doesn't exist:

```bash
mkdir -p openspec/changes/archive
```
Expand Down Expand Up @@ -105,6 +106,7 @@ All artifacts complete. All tasks complete.
```

**Guardrails**

- Always prompt for change selection if not provided
- Use artifact graph (openspec status --json) for completion checking
- Don't block archive on warnings - just inform and confirm
Expand Down
25 changes: 18 additions & 7 deletions .claude/skills/openspec-explore/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,28 @@ Enter explore mode. Think deeply. Visualize freely. Follow the conversation wher
Depending on what the user brings, you might:

**Explore the problem space**

- Ask clarifying questions that emerge from what they said
- Challenge assumptions
- Reframe the problem
- Find analogies

**Investigate the codebase**

- Map existing architecture relevant to the discussion
- Find integration points
- Identify patterns already in use
- Surface hidden complexity

**Compare options**

- Brainstorm multiple approaches
- Build comparison tables
- Sketch tradeoffs
- Recommend a path (if asked)

**Visualize**

```
┌─────────────────────────────────────────┐
│ Use ASCII diagrams liberally │
Expand All @@ -69,6 +73,7 @@ Depending on what the user brings, you might:
```

**Surface risks and unknowns**

- Identify what could go wrong
- Find gaps in understanding
- Suggest spikes or investigations
Expand All @@ -82,11 +87,13 @@ You have full context of the OpenSpec system. Use it naturally, don't force it.
### Check for context

At the start, quickly check what exists:

```bash
openspec list --json
```

This tells you:

- If there are active changes
- Their names, schemas, and status
- What the user might be working on
Expand Down Expand Up @@ -114,14 +121,14 @@ If the user mentions a change or you detect one is relevant:

3. **Offer to capture when decisions are made**

| Insight Type | Where to Capture |
|--------------|------------------|
| Insight Type | Where to Capture |
| -------------------------- | ---------------------------- |
| New requirement discovered | `specs/<capability>/spec.md` |
| Requirement changed | `specs/<capability>/spec.md` |
| Design decision made | `design.md` |
| Scope changed | `proposal.md` |
| New work identified | `tasks.md` |
| Assumption invalidated | Relevant artifact |
| Requirement changed | `specs/<capability>/spec.md` |
| Design decision made | `design.md` |
| Scope changed | `proposal.md` |
| New work identified | `tasks.md` |
| Assumption invalidated | Relevant artifact |

Example offers:
- "That's a design decision. Capture it in design.md?"
Expand All @@ -146,6 +153,7 @@ If the user mentions a change or you detect one is relevant:
## Handling Different Entry Points

**User brings a vague idea:**

```
User: I'm thinking about adding real-time collaboration

Expand All @@ -169,6 +177,7 @@ You: Real-time collab is a big space. Let me think about this...
```

**User brings a specific problem:**

```
User: The auth system is a mess

Expand Down Expand Up @@ -200,6 +209,7 @@ You: [reads codebase]
```

**User is stuck mid-implementation:**

```
User: /opsx:explore add-auth-system
The OAuth integration is more complex than expected
Expand All @@ -217,6 +227,7 @@ You: [reads change artifacts]
```

**User wants to compare options:**

```
User: Should we use Postgres or SQLite?

Expand Down
Loading
Loading